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
|
|
@ -280,6 +280,51 @@ static func cremated_friend() -> Thought:
|
|||
return t
|
||||
|
||||
|
||||
## ── Phase 17 — Storyteller event thoughts ──────────────────────────────────
|
||||
|
||||
## Positive mood boost after surviving a full year. Applied colony-wide by the
|
||||
## "one_year_survived" milestone event.
|
||||
## modifier=+6, max_stacks=1, EVENT, ~2 in-game days (9600 ticks at 20 Hz).
|
||||
static func we_made_it() -> Thought:
|
||||
var t := Thought.new()
|
||||
t.id = &"we_made_it"
|
||||
t.label = "We made it through a year"
|
||||
t.modifier = 6
|
||||
t.lifetime = Thought.Lifetime.EVENT
|
||||
t.ticks_remaining = 9600
|
||||
t.max_stacks = 1
|
||||
return t
|
||||
|
||||
|
||||
## Negative mood penalty after the colony turned away refugees.
|
||||
## Applied colony-wide by the "refugee_family" wanderer event (refuse branch).
|
||||
## modifier=-4, max_stacks=1, EVENT, ~1 in-game day (4800 ticks at 20 Hz).
|
||||
static func refused_refugees() -> Thought:
|
||||
var t := Thought.new()
|
||||
t.id = &"refused_refugees"
|
||||
t.label = "We turned away the refugees"
|
||||
t.modifier = -4
|
||||
t.lifetime = Thought.Lifetime.EVENT
|
||||
t.ticks_remaining = 4800
|
||||
t.max_stacks = 1
|
||||
return t
|
||||
|
||||
|
||||
## Positive mood boost when a newcomer joins the colony.
|
||||
## Applied colony-wide (including the new pawn, after they are registered)
|
||||
## by wanderer-accept events.
|
||||
## modifier=+3, max_stacks=1, EVENT, ~1 in-game day (4800 ticks at 20 Hz).
|
||||
static func hopeful_newcomer() -> Thought:
|
||||
var t := Thought.new()
|
||||
t.id = &"hopeful_newcomer"
|
||||
t.label = "A new face among us"
|
||||
t.modifier = 3
|
||||
t.lifetime = Thought.Lifetime.EVENT
|
||||
t.ticks_remaining = 4800
|
||||
t.max_stacks = 1
|
||||
return t
|
||||
|
||||
|
||||
## Strong negative mood while a rotting corpse is present in the colony.
|
||||
## PERSISTENT: synced from World.corpses each tick by Pawn._process_thoughts.
|
||||
## Stacks up to 3 (severity scales with the number of rotting corpses, capped
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue