Combat: ability archetype byte (MC-6 dispatch spike)
byte Archetype on AbilityDefBlob (AbilityArchetype enum: Projectile/Hitscan/Cone/Aoe), authored on AbilityDefinition + baked in AbilityDatabaseAuthoring, read at dispatch in AbilityFireSystem -- NOT folded through EffectiveAbilityStats/StatRecomputeSystem (static identity, not a tunable stat; MC-4 review BURST-1). All current abilities are Projectile (0) -> zero behaviour change; the dispatch read-point is the de-risk spike for MC-6 hitscan/cone/aoe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,10 +3,21 @@ using Unity.Entities;
|
||||
|
||||
namespace ProjectM.Simulation
|
||||
{
|
||||
/// <summary>Ability KIND for the AbilityFireSystem dispatch (MC-4 spike for MC-6). Backed by <c>byte</c> so the
|
||||
/// baked blob stores a byte (the Burst cross-assembly enum rule); the runtime switch compares the byte value.</summary>
|
||||
public enum AbilityArchetype : byte
|
||||
{
|
||||
Projectile = 0, // today's path: spawn a projectile ghost
|
||||
Hitscan = 1, // MC-6
|
||||
Cone = 2, // MC-6 (melee-style cone via the ability system)
|
||||
Aoe = 3, // MC-6
|
||||
}
|
||||
|
||||
/// <summary>One authored ability definition, baked immutable into the AbilityDatabase blob.</summary>
|
||||
public struct AbilityDefBlob
|
||||
{
|
||||
public byte Id; // AbilityId
|
||||
public byte Archetype; // AbilityArchetype (0 = Projectile); read at dispatch in AbilityFireSystem (MC-6 spike)
|
||||
public float Damage;
|
||||
public float ProjectileSpeed;
|
||||
public float Range;
|
||||
|
||||
Reference in New Issue
Block a user