Repository navigation
01 Prototype 08 Shipments
Catalog orders from the friend's shop arrive as shipments on the shipment mat. The tinkerer does not use shipments (see 08-tinkerer.md).
Dependencies: Venue (08-venue.md), Shop (08-shop.md).
Persisted state.
class Shipment:
var id: StringName
var contents: Array[String] # item keys from the catalog
var arrive_at_unix: int # wall-clock ready-at
var opened: bool
signal shipment_arrived(shipment: Shipment)
func create(contents: Array[String], duration_seconds: int) -> StringName
func pending() -> Array[Shipment]Wall-clock timing: shipments tick while the game is closed. On resume, any shipment past its arrive_at_unix fires shipment_arrived during court scene ready.
The box lands on the ShipmentMat in court.tscn. The friend walks in from the shop, sets the box down, returns. Prototype uses a placeholder animation.
These items come from offshore: they are expensive and unique, and the wait reflects real shipping time. The timer runs both while the game is open and while it is closed, just like reality. Per-order timing can vary (a local supplier vs. an overseas specialist).
Shipments in flight continue ticking through a milestone; the box arrives on the shipment mat in its new dressing.
shipment_friend_catalog_seconds: int = 30 # default catalog-to-court time
offline_cap_seconds: int = 28800 # shared venue constant; see 08-venue.md
Per-item override: ItemDefinition.shipment_seconds_override (e.g. the bot ships slower as a narrative beat).
Not filing yet.
-
ShipmentManagerautoload: wall-clock persistence, offline catch-up, arrival signal. - Friend-delivers-box animation.
-
shipment_seconds_overrideonItemDefinition.
Contributing
The game
The Cast
Process
Reference