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")
|
||||
var checks := 0
|
||||
var failures := 0
|
||||
var runtime: Variant
|
||||
@@ -59,7 +60,7 @@ func run() -> void:
|
||||
var mid: Dictionary=runtime.create_snapshot()
|
||||
expect(runtime.restore_snapshot(mid), "real guest and in-progress premium service restore together")
|
||||
var elapsed: int=runtime.facility_service.get_service(service_id).elapsed_minutes
|
||||
state.set_resource(&"mana",0)
|
||||
ManaOutage.hold(runtime, state)
|
||||
clock.advance_minutes(15)
|
||||
var paused: ServiceInstance=runtime.facility_service.get_service(service_id)
|
||||
expect(paused.state==ServiceInstance.State.PAUSED and paused.elapsed_minutes==elapsed, "zero mana pauses actual guest lodging without consuming service time")
|
||||
@@ -70,7 +71,7 @@ func run() -> void:
|
||||
var saved := SaveService.load_snapshot(disk_path)
|
||||
expect(saved[&"ok"] and runtime.restore_snapshot(saved[&"snapshot"]), "restore real guest, paused service and empty mana from disk")
|
||||
SaveService.delete_save(disk_path)
|
||||
state.set_resource(&"mana",100)
|
||||
ManaOutage.release(runtime, state)
|
||||
|
||||
for minute in 370:
|
||||
clock.advance_one_minute()
|
||||
|
||||
Reference in New Issue
Block a user