d9d67c4e78
Foundation for Two Classes (DR-037). New ids (CharacterId.Warrior/Ranger, AbilityId.WarriorCone, StatTarget.MeleeDamage/MeleeRange); CharacterStatsRef.Id -> [GhostField] so the owning client folds the right class stats; MeleeComboSystem folds per-player MeleeDamage/MeleeRange off the replicated StatModifier buffer (HasBuffer-guarded -> identity without class seeds, so behavior-preserving). 345/345 EditMode. Slice 2 design review + locked forks logged in the session note. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
17 lines
577 B
C#
17 lines
577 B
C#
using Unity.Entities;
|
|
using Unity.NetCode;
|
|
|
|
namespace ProjectM.Simulation
|
|
{
|
|
/// <summary>
|
|
/// Which authored character-stats definition this entity uses - a light key into the CharacterStats
|
|
/// blob, replacing M2's inlined PlayerMoveStats values. NOW a [GhostField] (Slice 2 classes) so the
|
|
/// server-written per-player class id replicates -> the owning client folds correct stats. <c>Id</c> stores a
|
|
/// <see cref="CharacterId"/>.
|
|
/// </summary>
|
|
public struct CharacterStatsRef : IComponentData
|
|
{
|
|
[GhostField] public byte Id;
|
|
}
|
|
}
|