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
|
|
@ -25,6 +25,7 @@ const KIND_TREAT: StringName = &"treat" # Multi-tick: apply medicine unt
|
|||
const KIND_CLEAN: StringName = &"clean" # Multi-tick: reduce dirt on a tile until clean (Phase 13 Cleaning category)
|
||||
const KIND_PICKUP_CORPSE: StringName = &"pickup_corpse" # Phase 14: pick up a Corpse entity at pawn.tile into pawn.carried_item
|
||||
const KIND_DEPOSIT_CORPSE: StringName = &"deposit_corpse" # Phase 14: deliver pawn.carried_item (Corpse) into a GraveSlot at pawn.tile
|
||||
const KIND_DEPOSIT_AT_WB: StringName = &"deposit_at_wb" # Multi-ingredient: stash pawn.carried_item into the workbench's deposited_inputs buffer
|
||||
|
||||
var kind: StringName = KIND_IDLE
|
||||
## Toil-specific params — all values must be int, float, bool, String, Dict, or Array.
|
||||
|
|
@ -225,6 +226,20 @@ static func deposit_corpse() -> Toil:
|
|||
return t
|
||||
|
||||
|
||||
## Stash pawn.carried_item into the workbench's deposited_inputs buffer.
|
||||
## Used as the first leg of a two-ingredient craft: pawn carries ingredient1
|
||||
## here, deposits it into the workbench's buffer, then fetches ingredient2.
|
||||
## `workbench_path` is the NodePath of the Workbench entity (String, JSON-safe).
|
||||
##
|
||||
## data keys:
|
||||
## "workbench" — String(workbench_path)
|
||||
static func deposit_at_wb(workbench_path: NodePath) -> Toil:
|
||||
var t := Toil.new()
|
||||
t.kind = KIND_DEPOSIT_AT_WB
|
||||
t.data = {"workbench": String(workbench_path)}
|
||||
return t
|
||||
|
||||
|
||||
## Timed crafting action at a Workbench.
|
||||
## `workbench_path` is the NodePath of the Workbench entity (stored as String for JSON safety).
|
||||
## `bill_index` is the index into workbench.bills that this toil should run.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue