Files
Project-M/Assets/_Project/Scripts/Simulation/Debug/TargetDummy.cs
T
kronic 2710d680b4 Sandbox target dummy: planted EnemyTag ghost + DevSandbox respawn spawner
GymSub bakes no WaveDirector (why sandbox enemies never spawned); the
sandbox's combat target is now a TargetDummyTag'd enemy ghost all five
EnemyAISystem passes exclude (planted; knockback stamps inert), spawned
at player+3m with 400 HP by an editor-only scene-gated server system,
dying through the normal Dying path and respawning 1.5s after the corpse.
EnemyTag-reuse audited: sandbox-only by design (cleared-checks would
count it elsewhere).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 00:13:47 -07:00

15 lines
1003 B
C#

using Unity.Entities;
namespace ProjectM.Simulation
{
/// <summary>07-20 sandbox combat testing: marks a server-spawned enemy ghost as a PLANTED target dummy —
/// every EnemyAISystem pass excludes it (no move, no attack, no knockback integration, no depenetration
/// nudge), so it stands at its anchor and just takes hits. Server-only (runtime-added at spawn, never
/// replicated); the client sees a normal interpolated enemy, so health bars, hit flash, damage, kill pop
/// and the death path all exercise the REAL pipeline. Spawned + respawned by TargetDummySpawnSystem in the
/// DevSandbox (GymSub bakes no WaveDirector — the sandbox's combat target is this dummy, by design).
/// ★ EnemyTag-reuse audit (CLAUDE.md): cleave/projectile damage MUST see it (the point); AI passes exclude
/// it; wave/room cleared-checks would count it — acceptable ONLY because the spawner is sandbox-gated.</summary>
public struct TargetDummyTag : IComponentData { }
}