Commit Graph

2 Commits

Author SHA1 Message Date
kronic a74b761363 Dev tool: switch player class (Warrior/Ranger) at runtime for testing
Editor-only class swap via the existing scalar dev-RPC family (new DebugOp.SetClass): F1/F2 keybind (ClassSwitchHotkeySystem), DebugOverlay '- Class -' buttons, and DebugCommandSendSystem.SetWarrior/SetRanger/SetClass statics. Server (DebugCommandReceiveSystem) swaps class in place on the spawned player: strips+re-seeds the ClassTraits StatModifier seeds, swaps the AbilityRef Fire slot, resets the ability cooldown, and heals a LIVING player to the new max (dead players skip the heal so respawn isn't raced). Server-authoritative + prediction-correct (same buffer-mutation path as GrantUpgrade); wire type unchanged so the RpcCollection hash is unaffected.

ClassTraits gains a shared Seeds core (spawn + swap can't drift), ClassSeedCount, IsClassSeed, a DynamicBuffer AppendSeeds overload, and Reapply. +3 EditMode tests (exact-count round-trip, value-equality fold, boundary/foreign-mod preservation); 351/351 green; Warrior<->Ranger round-trip Play-validated (server+client agree).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 21:23:33 -07:00
kronic 0a3a39e3d2 Slice 2 (WIP): WarriorCone ability + class tests; Warrior path validated
Authored the WarriorCone AbilityDefinition (archetype Cone, dmg 22, range 2.2, ~130deg
arc, 22-tick cd) and added it to the gameplay subscene's AbilityDatabase (re-baked).
ClassTraitsTests cover the class->ability mapping + the asymmetric seed folds. 348/348.
Play-validated the Warrior end-to-end, server==client: AbilityRef=WarriorCone, 4 seeds,
eff MaxHP 130 / MoveSpd 5.1 / cone dmg 22 / coneRad 1.13; conns=1 (re-bake handshake
intact); zero runtime errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 00:36:21 -07:00