fix six critical bugs from audit sprint
save/load round-trip: workbench bills, crop static-method, bed owner, wolf target now all survive reload via Bill.from_dict reconstruction, _spawn_crop using setup(), and a new _post_load_resolve_references pass. PlantProvider: sow path added; consumes 1 grain on a TILLED crop tile. CraftingProvider: ingredient2 supported via new KIND_DEPOSIT_AT_WB toil and Workbench.deposited_inputs buffer. Cremation pyre now actually consumes wood. HaulingProvider: per-item haul_retry_count + haul_rejected after 3 orphan passes; new EventBus.stockpile_layout_changed resets rejects on any player stockpile edit. Storyteller: 14 stubbed event effects implemented. New buff registry (add_buff/get_buff_multiplier/has_buff, day-prune, save/load) drives seasonal/resource events. New request_pawn_spawn signal + WANDERER table for arrivals. New SICK status + 3 mood thoughts. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
00cf8f445d
commit
d9638a4ea4
19 changed files with 711 additions and 101 deletions
|
|
@ -7,7 +7,7 @@ class_name StatusCatalog
|
|||
##
|
||||
## Phase 9 ships: bleeding(), downed().
|
||||
## Phase 12 ships: wet(), cold().
|
||||
## Phase 17 will add: sick(), infected().
|
||||
## Phase 17 ships: sick(). infected() is post-MVP.
|
||||
##
|
||||
## Usage pattern:
|
||||
## pawn.add_status(StatusCatalog.bleeding(2))
|
||||
|
|
@ -109,3 +109,21 @@ static func cold(severity: int = 1) -> Status:
|
|||
s.max_severity = 3
|
||||
s.lifetime = Status.Lifetime.PERSISTENT
|
||||
return s
|
||||
|
||||
|
||||
## Returns a Sick status at the given severity (1 = Mild, 2 = Moderate, 3 = Severe).
|
||||
## Severity is clamped to [1, 3]. Lifetime is EVENT — ticks_remaining drives
|
||||
## self-clear after the illness duration. Doctor treatment clears it early.
|
||||
## At severity 1: ~1 in-game day (4800 ticks at 20 Hz).
|
||||
## At severity 2: ~2 in-game days. At severity 3: ~3 in-game days.
|
||||
## Pawn._process_statuses() should apply a work-speed penalty while SICK is active.
|
||||
static func sick(severity: int = 1) -> Status:
|
||||
var s := Status.new()
|
||||
s.id = &"sick"
|
||||
s.kind = Status.Kind.SICK
|
||||
s.label = "Sick"
|
||||
s.severity = clampi(severity, 1, 3)
|
||||
s.max_severity = 3
|
||||
s.lifetime = Status.Lifetime.EVENT
|
||||
s.ticks_remaining = 4800 * s.severity # scales with severity
|
||||
return s
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue