a482a9c4ed
SLICE A - rooms become places: ExpeditionBiome duplicated to sub-slot 1 (X+1500) - ground, 205 decor children, rim cliffs, ambience; collider ring + 3 landmark colliders duplicated in the subscene; NEW in-room cover at BOTH slots (4 collidable rocks each: Environment-layer box colliders in the subscene + matching Synty rock meshes in Game.unity, placed clear of the landing point, portal spot, spawn ring and boss spawn). Half of all rooms previously played on a literal void. SLICE C - owned FX wired: VFXConfig gains Portal + EnemySpawn slots (FX_Portal_Round_01 / FX_Dust_Big_01 from PolygonParticleFX); the portal beacon prefers the authored effect (procedural pillar stays as fallback); enemies get a spawn-emerge cue on the ghost add-edge (primed-scan guard skips the connect flood). SLICE D (teaching) - the two undiscoverable verbs are now taught: dash on the Move step, class ability + attack on the Rooms step (scheme-aware glyphs); How-to-Play Controls adds Class ability + Dash rows and fixes the wrong RT glyph; Loop step 1 mentions class pick + prep; the stale '50 starting Ore' now interpolates Tuning.StartingOre. 456/456 EditMode. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.7 KiB
C#
42 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace ProjectM.Client
|
|
{
|
|
/// <summary>
|
|
/// Client-side bridge that hands authored VFX prefabs (GabrielAguiar Shuriken systems) to
|
|
/// <see cref="CombatFeedbackSystem"/>. Mirrors the <see cref="PrototypeCameraRig"/> pattern: a MonoBehaviour
|
|
/// in the bootstrap scene exposes a static <see cref="Instance"/> the client presentation system reads.
|
|
/// Any field left null falls back to the procedural particle burst, so the game still runs without it.
|
|
/// </summary>
|
|
public class VFXConfig : MonoBehaviour
|
|
{
|
|
public static VFXConfig Instance { get; private set; }
|
|
|
|
[Header("Combat VFX (one-shot Shuriken prefabs)")]
|
|
[Tooltip("Spawned at the player muzzle on each shot.")]
|
|
public GameObject Muzzle;
|
|
[Tooltip("Follows each in-flight projectile ghost; destroyed when the projectile despawns.")]
|
|
public GameObject ProjectileTrail;
|
|
[Tooltip("Spawned at a damaged target on each hit.")]
|
|
public GameObject Hit;
|
|
[Tooltip("Spawned at a Husk's last position when it dies.")]
|
|
public GameObject EnemyDeath;
|
|
[Tooltip("Spawned when the local player drops to 0 HP (falls back to EnemyDeath if null).")]
|
|
public GameObject PlayerDeath;
|
|
[Tooltip("Looping portal effect anchored at the room-exit during RoomExplore (falls back to the procedural pillar if null).")]
|
|
public GameObject Portal;
|
|
[Tooltip("One-shot at each enemy's spawn position (first sighting of a fresh ghost).")]
|
|
public GameObject EnemySpawn;
|
|
|
|
void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
void OnDestroy()
|
|
{
|
|
if (Instance == this) Instance = null;
|
|
}
|
|
}
|
|
}
|