namespace ProjectM.Simulation { /// Stable, index-independent key for an authored ability definition in the AbilityDatabase blob. public enum AbilityId : byte { None = 0, Primary = 1, FastLight = 2, SlowHeavy = 3, WarriorCone = 4, // Slice 2: the Warrior's aim-directed short-range cone secondary (Fire slot) } /// Stable key for an authored character-stats definition in the AbilityDatabase blob. public enum CharacterId : byte { None = 0, Default = 1, Warrior = 2, // Slice 2: melee-anchor bruiser (tankier, slower, longer/harder melee) Ranger = 3, // Slice 2: ranged-anchor (squishier, faster, longer projectile range; weaker melee) } /// /// Which base stat a targets. Replicated as a raw byte on the modifier /// buffer to keep the generated ghost serializer trivial; mapped back to this enum only in StatMath. /// public enum StatTarget : byte { Damage = 0, CooldownTicks = 1, Range = 2, ProjectileSpeed = 3, AutoTargetRange = 4, AutoTargetConeRadians = 5, MoveSpeed = 6, TurnRate = 7, MaxHealth = 8, MeleeDamage = 9, // Slice 2: melee combo + Warrior cone damage axis (folded onto TuningConfig.MeleeDamage) MeleeRange = 10, // Slice 2: melee reach axis (Warrior longer, Ranger shorter) } /// How a combines into the effective stat. public enum ModOp : byte { Flat = 0, // additive: + Value PercentAdd = 1, // additive percent, pooled into (1 + sum Value) PercentMult = 2, // multiplicative percent, product of (1 + Value) } }