Skip to content

Commit cd1ef1d

Browse files
committed
Add both directions, make the name more consistent, add schema
1 parent e76184b commit cd1ef1d

File tree

3 files changed

+41
-6
lines changed

3 files changed

+41
-6
lines changed

schemas/Manual.regions.schema.json

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,32 @@
3939
"type":"boolean",
4040
"default": false
4141
},
42+
"exit_requires": {
43+
"description": "(Optional) Additional requirements to use a specific exit from this region.",
44+
"type": "object",
45+
"patternProperties": {
46+
"^[^$].*$": {
47+
"type": ["string", "array"],
48+
"items": {
49+
"$ref": "#/definitions/Require"
50+
}
51+
}
52+
},
53+
"uniqueItems": true
54+
},
55+
"entrance_requires": {
56+
"description": "(Optional) Additional requirements to use a specific entrance into this region. This is the same as exit_requires, but from the other side.",
57+
"type": "object",
58+
"patternProperties": {
59+
"^[^$].*$": {
60+
"type": ["string", "array"],
61+
"items": {
62+
"$ref": "#/definitions/Require"
63+
}
64+
}
65+
},
66+
"uniqueItems": true
67+
},
4268
"_comment": {"$ref": "#/definitions/comment"}
4369
}
4470
}
@@ -69,4 +95,4 @@
6995
}
7096
}
7197
}
72-
}
98+
}

src/Rules.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,15 @@ def fullLocationOrRegionCheck(state: CollectionState, area: dict):
234234
def fullRegionCheck(state: CollectionState, region=regionMap[region]):
235235
return fullLocationOrRegionCheck(state, region)
236236

237-
add_rule(world.get_entrance(exitRegion.name, player), fullRegionCheck)
238-
entrance_rules = regionMap[region].get("entrance_rules", [])
237+
add_rule(world.get_entrance(exitRegion.name), fullRegionCheck)
238+
entrance_rules = regionMap[region].get("entrance_requires", {})
239239
for e in entrance_rules:
240-
entrance = world.get_entrance(f'{e}To{region}', player)
240+
entrance = world.get_entrance(f'{e}To{region}')
241241
add_rule(entrance, lambda state, rule={"requires": entrance_rules[e]}: fullLocationOrRegionCheck(state, rule))
242-
242+
exit_rules = regionMap[region].get("exit_requires", {})
243+
for e in exit_rules:
244+
exit = world.get_entrance(f'{region}To{e}')
245+
add_rule(exit, lambda state, rule={"requires": exit_rules[e]}: fullLocationOrRegionCheck(state, rule))
243246

244247
# Location access rules
245248
for location in world.location_table:

src/data/regions.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@
66
},
77
"Second Region": {
88
"requires": "|@Characters:1|",
9+
"connects_to": ["Third Region"],
10+
"exit_requires": {
11+
"Third Region": "|@Characters:5|"
12+
}
13+
},
14+
"Third Region": {
915
"connects_to": []
1016
}
11-
}
17+
}

0 commit comments

Comments
 (0)