P06-01: Implement approved A06 finite Mana reserve (MP-01-r02 recommended)
Initial 100, capacity 300, world tree +20 per 10 game minutes. Each boundary pays registered upkeep demand before storing surplus; overflow is discarded and recorded, 0 stops the whole tower. Furnace offers are judged after generation and demand payment. New saves carry mana_reserve and Operations rollback includes it; legacy saves keep a 0..300 amount and reject others. Outage tests that relied on Mana 0 persisting now hold the outage with a disabled demand sink, since the world tree recovers at the next boundary. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c366012446
commit
ae0f998ff4
@@ -1,4 +1,5 @@
|
||||
extends SceneTree
|
||||
const ManaOutage = preload("res://tests/helpers/mana_outage.gd")
|
||||
|
||||
const FixtureCleanup := preload("res://tests/helpers/ui_audio_fixture_cleanup.gd")
|
||||
var _finishing := false
|
||||
@@ -128,7 +129,7 @@ func _verify_mid_ride() -> bool:
|
||||
_expect(_runtime.restore_snapshot(snapshot), "rewind depletion drill to original passenger state")
|
||||
for cell: Vector3i in shaft[&"stops"]:
|
||||
_runtime.path_service.configure_cell_traffic(cell, 4, 0, true)
|
||||
_state.set_resource(&"mana", 0)
|
||||
ManaOutage.hold(_runtime, _state)
|
||||
_clock.advance_minutes(1)
|
||||
for actor_id: StringName in riders:
|
||||
_expect(_runtime.elevators.get_actor_trip(actor_id).get(&"state") == PathService.ELEVATOR_REQUEST_BOARDED, "no safe landing retains boarded passenger instead of teleporting")
|
||||
@@ -140,7 +141,7 @@ func _verify_mid_ride() -> bool:
|
||||
_expect(_runtime.restore_snapshot(held_snapshot) and _runtime.create_snapshot() == held_snapshot, "no-landing outage preserves full Runtime save and passenger ownership")
|
||||
for cell: Vector3i in shaft[&"stops"]:
|
||||
_runtime.path_service.configure_cell_traffic(cell)
|
||||
_state.set_resource(&"mana", 100)
|
||||
ManaOutage.release(_runtime, _state)
|
||||
_clock.advance_minutes(45)
|
||||
for actor_id: StringName in riders:
|
||||
_expect(_runtime.elevators.get_actor_trip(actor_id).is_empty() and _runtime.path_service.get_active_elevator_request(actor_id).is_empty(), "landing repair and power restoration release held trip ownership")
|
||||
|
||||
Reference in New Issue
Block a user