fix(combat): Phase L.1c align attack type flags

This commit is contained in:
Erik 2026-04-28 10:59:29 +02:00
parent 25b9616703
commit 268af82e28
2 changed files with 31 additions and 14 deletions

View file

@ -34,20 +34,26 @@ public enum AttackHeight
[Flags]
public enum AttackType : uint
{
None = 0,
Punch = 0x0001,
Kick = 0x0002,
Thrust = 0x0004,
Slash = 0x0008,
DoubleSlash = 0x0010,
TripleSlash = 0x0020,
DoubleThrust = 0x0040,
TripleThrust = 0x0080,
Offhand = 0x0100,
OffhandSlash = 0x0200,
OffhandThrust = 0x0400,
ThrustSlash = 0x0800,
// more in r02 §2
None = 0,
Punch = 0x0001,
Thrust = 0x0002,
Slash = 0x0004,
Kick = 0x0008,
OffhandPunch = 0x0010,
DoubleSlash = 0x0020,
TripleSlash = 0x0040,
DoubleThrust = 0x0080,
TripleThrust = 0x0100,
OffhandThrust = 0x0200,
OffhandSlash = 0x0400,
OffhandDoubleSlash = 0x0800,
OffhandTripleSlash = 0x1000,
OffhandDoubleThrust = 0x2000,
OffhandTripleThrust = 0x4000,
Unarmed = Punch | Kick | OffhandPunch,
MultiStrike = DoubleSlash | TripleSlash | DoubleThrust | TripleThrust
| OffhandDoubleSlash | OffhandTripleSlash
| OffhandDoubleThrust | OffhandTripleThrust,
}
[Flags]

View file

@ -36,6 +36,17 @@ public sealed class CombatStateTests
Assert.Equal(8, (int)CombatMode.Magic);
}
[Fact]
public void AttackType_UsesNamedRetailBitValues()
{
Assert.Equal(0x0001u, (uint)AttackType.Punch);
Assert.Equal(0x0002u, (uint)AttackType.Thrust);
Assert.Equal(0x0004u, (uint)AttackType.Slash);
Assert.Equal(0x0008u, (uint)AttackType.Kick);
Assert.Equal(0x0010u, (uint)AttackType.OffhandPunch);
Assert.Equal(0x79E0u, (uint)AttackType.MultiStrike);
}
[Fact]
public void SetCombatMode_TracksCurrentMode_AndFiresEvent()
{