Add merit node type (Scene 8 ceremony + achievement award)
A merit node awards a configured achievement (awards_flag) to the player the moment the playthrough arrives on it, with node provenance, then presents a ceremony. Migration 028 extends node_type + the component_key CHECK and adds awards_flag; the runtime grants the flag in advance/goto/ new-game write paths; MeritHost renders the ceremony (a component_key can supply a bespoke one, e.g. a 3D model). Verified: teleport to a merit node auto-grants its achievement. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
-- Merit nodes: a ceremony node that awards an achievement when the playthrough
|
||||
-- reaches it (Scene 8 — "The Barricelli Luggage"). The awarded flag is authored on
|
||||
-- the node; the runtime grants it on arrival with node provenance. Merit nodes may
|
||||
-- also carry a component_key for their ceremony presentation (e.g. a 3D model).
|
||||
|
||||
ALTER TABLE osint.story_nodes DROP CONSTRAINT story_nodes_node_type_check;
|
||||
ALTER TABLE osint.story_nodes ADD CONSTRAINT story_nodes_node_type_check
|
||||
CHECK (node_type IN ('cutscene','dialogue','level','det_gate','llm_gate','merit'));
|
||||
|
||||
-- Let a merit node carry a ceremony component_key (was cutscene/gate only).
|
||||
ALTER TABLE osint.story_nodes DROP CONSTRAINT story_nodes_check1;
|
||||
ALTER TABLE osint.story_nodes ADD CONSTRAINT story_nodes_check1
|
||||
CHECK (component_key IS NULL OR node_type IN ('cutscene','det_gate','llm_gate','merit'));
|
||||
|
||||
ALTER TABLE osint.story_nodes ADD COLUMN awards_flag TEXT
|
||||
CHECK (awards_flag IS NULL OR awards_flag ~ '^[a-z][a-z0-9_.-]{0,63}$');
|
||||
ALTER TABLE osint.story_nodes ADD CONSTRAINT story_nodes_awards_flag_type
|
||||
CHECK (awards_flag IS NULL OR node_type = 'merit');
|
||||
Reference in New Issue
Block a user