fix: spire combat 11 high-severity discrepancies (issue #333)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
D-01: Implement per-weapon cast progress (weaponCastProgress record) D-04: Bypass Executioner/Berserker discipline specials for golem attacks D-09: Fix lightning counter direction (lightning→water, not lightning→earth) D-10: Add full composite element counters (blackflame/radiantflames ↔ frost/water/light/dark) D-15: Fix Executioner to check per-enemy HP < 25% instead of floorHP ratio D-20: Fix dodge formula to match spec (min(0.55, floor × 0.003), starts at 0) D-22: Fix shield modifier to use flat HP pool instead of percentage barrier D-23: Wire up applyMageBarrierRecharge in the damage pipeline D-25: Move guardian regen from per-damage-event to once-per-tick D-26: Add guardian armor reduction to the guardian defensive pipeline D-31: Fix armor_corrode to be temporary (restore armor on effect expiry) D-38: Implement AoE damage distribution across enemies All 1069 tests pass. No files exceed 400 lines.
This commit is contained in:
@@ -72,6 +72,7 @@ export function advanceRoomOrFloor(get: GetFn, set: SetFn): void {
|
||||
floorHP: newFloorHP,
|
||||
floorMaxHP: newFloorHP,
|
||||
castProgress: 0,
|
||||
weaponCastProgress: {},
|
||||
});
|
||||
get().addActivityLog('floor_transition', `Descended to Floor ${newFloor}`);
|
||||
} else {
|
||||
@@ -84,6 +85,7 @@ export function advanceRoomOrFloor(get: GetFn, set: SetFn): void {
|
||||
floorHP: newFloorHP,
|
||||
floorMaxHP: newFloorHP,
|
||||
castProgress: 0,
|
||||
weaponCastProgress: {},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -110,6 +112,7 @@ export function advanceRoomOrFloor(get: GetFn, set: SetFn): void {
|
||||
floorHP: newFloorHP,
|
||||
floorMaxHP: newFloorHP,
|
||||
castProgress: 0,
|
||||
weaponCastProgress: {},
|
||||
});
|
||||
get().addActivityLog('floor_transition', `Ascending to Floor ${newFloor}`);
|
||||
} else {
|
||||
@@ -122,6 +125,7 @@ export function advanceRoomOrFloor(get: GetFn, set: SetFn): void {
|
||||
floorHP: newFloorHP,
|
||||
floorMaxHP: newFloorHP,
|
||||
castProgress: 0,
|
||||
weaponCastProgress: {},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -216,7 +220,7 @@ export function onEnterRoomDescend(get: GetFn, set: SetFn): void {
|
||||
|
||||
if (didReset) {
|
||||
const newRoom = generateSpireFloorState(s.currentFloor, s.currentRoomIndex, s.roomsPerFloor, s.runId);
|
||||
set({ currentRoom: newRoom, castProgress: 0 });
|
||||
set({ currentRoom: newRoom, castProgress: 0, weaponCastProgress: {} });
|
||||
get().addActivityLog('floor_transition',
|
||||
`Floor ${s.currentFloor} Room ${s.currentRoomIndex + 1} has reset — enemies respawned`);
|
||||
|
||||
@@ -263,6 +267,7 @@ export function createEnterSpireMode(get: GetFn, set: SetFn) {
|
||||
floorMaxHP: calcRoomHP(freshRoom),
|
||||
currentRoom: freshRoom,
|
||||
castProgress: 0,
|
||||
weaponCastProgress: {},
|
||||
climbDirection: 'up',
|
||||
isDescending: false,
|
||||
clearedFloors: {},
|
||||
|
||||
Reference in New Issue
Block a user