From 731b41bc748fdcf0b01b6438e5a8d30454a50fe7 Mon Sep 17 00:00:00 2001 From: Richard Snider Date: Mon, 29 Dec 2025 13:54:27 -0700 Subject: [PATCH] add support for different goals --- .../jungle/dng/tree-expo-space.json.patch | 28 +++++++++++++++++++ data/in/regions.json | 25 +++++++++++------ src/patches/event.ts | 10 ++++--- src/types/multiworld-model.ts | 2 ++ 4 files changed, 52 insertions(+), 13 deletions(-) create mode 100644 assets/data/maps/jungle/dng/tree-expo-space.json.patch diff --git a/assets/data/maps/jungle/dng/tree-expo-space.json.patch b/assets/data/maps/jungle/dng/tree-expo-space.json.patch new file mode 100644 index 0000000..fc73dfd --- /dev/null +++ b/assets/data/maps/jungle/dng/tree-expo-space.json.patch @@ -0,0 +1,28 @@ +[ + { + "type": "ENTER", + "index": ["entities"] + }, + { + "type": "ADD_ARRAY_ELEMENT", + "content": { + "type": "EventTrigger", + "x": 0, + "y": 0, + "level": 3, + "settings": { + "name": "Goal", + "eventType": "PARALLEL", + "triggerType": "ONCE_PER_ENTRY", + "startCondition": "true", + "endCondition": "false", + "event": [ + { + "type": "MW_GOAL_COMPLETED", + "goal": "monkey" + } + ] + } + } + } +] diff --git a/data/in/regions.json b/data/in/regions.json index 306d700..429cddc 100644 --- a/data/in/regions.json +++ b/data/in/regions.json @@ -247,7 +247,11 @@ ], "exclude": [ "1" ], "start": "2", - "goal": "32" + "goals": { + "creator": { + "region": "32" + } + } }, "open": { "connections": [ @@ -611,10 +615,13 @@ "condition": [ ["var", "vwPassage"] ] - }, - { - "from": "open16.1", - "to": "open19", + } + ], + "exclude": [ "open1" ], + "start": "open2", + "goals": { + "creator": { + "region": "open16.1", "condition": [ [ "item", "Heat", 1 ], [ "item", "Cold", 1 ], @@ -622,11 +629,11 @@ [ "item", "Wave", 1 ], [ "var", "vtShadeLock" ] ] + }, + "monkey": { + "region": "open15.3" } - ], - "exclude": [ "open1" ], - "start": "open2", - "goal": "open19" + } } } } diff --git a/src/patches/event.ts b/src/patches/event.ts index 5a2bbb5..bead794 100644 --- a/src/patches/event.ts +++ b/src/patches/event.ts @@ -57,13 +57,15 @@ export function patch(plugin: MwRandomizer) { ig.EVENT_STEP.MW_GOAL_COMPLETED = ig.EventStepBase.extend({ init(settings) { - // In the future, goal will only update client status if it checks off - // a specific goal specified by their yaml. For now, there's only one - // goal. this.goal = settings.goal; }, start() { - sc.multiworld.client.goal(); + if ( + sc.multiworld.options.goal === undefined && this.goal === "creator" || + sc.multiworld.options.goal === this.goal + ) { + sc.multiworld.client.goal(); + } } }); } diff --git a/src/types/multiworld-model.ts b/src/types/multiworld-model.ts index 739482e..b34d72d 100644 --- a/src/types/multiworld-model.ts +++ b/src/types/multiworld-model.ts @@ -78,8 +78,10 @@ declare global { } export type MultiworldOptions = { + goal: string, vtShadeLock: boolean | number, meteorPassage: boolean, + closedGaia: number, vtSkip: boolean, keyrings: number[], questRando: boolean,