Files
Project-M/Assets/_Project/Scripts/Simulation/Combat/Health.cs
T
kronic 589e712db3 Hygiene B2: dead-code removal
Delete (unreferenced in any scene, per operator decision):
- TrainingDummy* chain (authoring/spawner/system/components/prefab) + UpgradePickup* chain (authoring/spawner/systems/components/prefab); remove TrainingDummyTag from the 3 live combat queries (AbilityFire/Melee/HealthApplyDamage now key on EnemyTag) and repoint HealthApplyDamageSystemTests to EnemyTag.
- Dead RPC RegionTransitSystem + RegionTransitRequest (no sender, ungated) + its test.
- Heartbeat + HeartbeatSystem (no WorldSystemFilter, ran no-op every tick) + its test.
- BuildSendSystem dead conveyor/pylon dev hooks (s_ConveyorDir, [/] rotation, Place{Pylon,Harvester,Conveyor} statics).
- Deprecated CyclePhase alias consts (Expedition/Defend/Build/*Ticks); repoint WaveSystemTests to Siege/Calm.
- Unread FeelConfig fields (HitFlashDurationMs, RumbleHeavy) + dangling HudUi doc-comments + stale crefs.

451/451 EditMode tests pass. CLAUDE.md HeartbeatSystemTests example ref to be repointed in B7.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 23:16:53 -07:00

22 lines
1.0 KiB
C#

using Unity.Entities;
using Unity.NetCode;
namespace ProjectM.Simulation
{
/// <summary>
/// Hit points for any damageable ghost (players, training dummies). Server-authoritative:
/// only server systems write <see cref="Current"/>; clients receive it via the [GhostField]
/// for display and prediction reconciliation. <see cref="Max"/> is baked identically on both
/// worlds and is not replicated. Added by PlayerBaker.
/// </summary>
public struct Health : IComponentData
{
/// <summary>Current hit points. Replicated for display and reconciles the predicted value against the server's authoritative state.</summary>
[GhostField] public float Current;
/// <summary>Maximum hit points. Replicated so a client HUD bar reads a correct fraction even when Max is
/// modified server-side (boss x8; class/boon HP mods) — the boss bar + floating enemy HP bars depend on it (review: no player-bar surface reads Health.Max).</summary>
[GhostField] public float Max;
}
}