add forgotten file (#378)
This commit is contained in:
parent
ae163319e0
commit
1a24a73ccd
|
@ -0,0 +1,57 @@
|
||||||
|
from ..generic.Rules import set_rule, add_rule
|
||||||
|
|
||||||
|
units = {
|
||||||
|
"egg": "RANCIDEGGS",
|
||||||
|
"grub": "GRUBS",
|
||||||
|
"essence": "ESSENCE",
|
||||||
|
"charm": "CHARMS",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def hk_set_rule(hk_world, location: str, rule):
|
||||||
|
count = hk_world.created_multi_locations[location]
|
||||||
|
if count:
|
||||||
|
locations = [f"{location}_{x}" for x in range(1, count+1)]
|
||||||
|
elif (location, hk_world.player) in hk_world.world._location_cache:
|
||||||
|
locations = [location]
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
for location in locations:
|
||||||
|
set_rule(hk_world.world.get_location(location, hk_world.player), rule)
|
||||||
|
|
||||||
|
|
||||||
|
def set_shop_prices(hk_world):
|
||||||
|
player = hk_world.player
|
||||||
|
for shop, unit in hk_world.shops.items():
|
||||||
|
for i in range(1, 1 + hk_world.created_multi_locations[shop]):
|
||||||
|
loc = hk_world.world.get_location(f"{shop}_{i}", hk_world.player)
|
||||||
|
add_rule(loc, lambda state, unit=units[unit], cost=loc.cost: state.count(unit, player) > cost)
|
||||||
|
|
||||||
|
|
||||||
|
def set_rules(hk_world):
|
||||||
|
player = hk_world.player
|
||||||
|
world = hk_world.world
|
||||||
|
|
||||||
|
# Events
|
||||||
|
{% for location, rule_text in event_rules.items() %}
|
||||||
|
hk_set_rule(hk_world, "{{location}}", lambda state: {{rule_text}})
|
||||||
|
{%- endfor %}
|
||||||
|
|
||||||
|
# Locations
|
||||||
|
{% for location, rule_text in location_rules.items() %}
|
||||||
|
hk_set_rule(hk_world, "{{location}}", lambda state: {{rule_text}})
|
||||||
|
{%- endfor %}
|
||||||
|
|
||||||
|
# Shop prices
|
||||||
|
set_shop_prices(hk_world)
|
||||||
|
|
||||||
|
# Connectors
|
||||||
|
{% for entrance, rule_text in connectors_rules.items() %}
|
||||||
|
rule = lambda state: {{rule_text}}
|
||||||
|
entrance = world.get_entrance("{{entrance}}", player)
|
||||||
|
entrance.access_rule = rule
|
||||||
|
{%- if entrance not in one_ways %}
|
||||||
|
world.get_entrance("{{entrance}}_R", player).access_rule = lambda state, entrance= entrance: \
|
||||||
|
rule(state) and entrance.can_reach(state)
|
||||||
|
{%- endif %}
|
||||||
|
{% endfor %}
|
Loading…
Reference in New Issue