2023-11-23 23:35:37 +00:00
|
|
|
from ..generic.Rules import set_rule
|
|
|
|
from BaseClasses import MultiWorld, CollectionState
|
2022-03-22 22:30:10 +00:00
|
|
|
|
|
|
|
|
2023-11-23 23:35:37 +00:00
|
|
|
def _has_total(state: CollectionState, player: int, total: int):
|
|
|
|
return (state.count('Map Width', player) + state.count('Map Height', player) +
|
|
|
|
state.count('Map Bombs', player)) >= total
|
2022-03-22 22:30:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Sets rules on entrances and advancements that are always applied
|
|
|
|
def set_rules(world: MultiWorld, player: int):
|
2023-11-23 23:35:37 +00:00
|
|
|
set_rule(world.get_location("Tile 6", player), lambda state: _has_total(state, player, 1))
|
|
|
|
set_rule(world.get_location("Tile 7", player), lambda state: _has_total(state, player, 2))
|
|
|
|
set_rule(world.get_location("Tile 8", player), lambda state: _has_total(state, player, 3))
|
|
|
|
set_rule(world.get_location("Tile 9", player), lambda state: _has_total(state, player, 4))
|
|
|
|
set_rule(world.get_location("Tile 10", player), lambda state: _has_total(state, player, 5))
|
|
|
|
set_rule(world.get_location("Tile 11", player), lambda state: _has_total(state, player, 6))
|
|
|
|
set_rule(world.get_location("Tile 12", player), lambda state: _has_total(state, player, 7))
|
|
|
|
set_rule(world.get_location("Tile 13", player), lambda state: _has_total(state, player, 8))
|
|
|
|
set_rule(world.get_location("Tile 14", player), lambda state: _has_total(state, player, 9))
|
|
|
|
set_rule(world.get_location("Tile 15", player), lambda state: _has_total(state, player, 10))
|
|
|
|
set_rule(world.get_location("Tile 16", player), lambda state: _has_total(state, player, 11))
|
|
|
|
set_rule(world.get_location("Tile 17", player), lambda state: _has_total(state, player, 12))
|
|
|
|
set_rule(world.get_location("Tile 18", player), lambda state: _has_total(state, player, 13))
|
|
|
|
set_rule(world.get_location("Tile 19", player), lambda state: _has_total(state, player, 14))
|
|
|
|
set_rule(world.get_location("Tile 20", player), lambda state: _has_total(state, player, 15))
|
|
|
|
set_rule(world.get_location("Tile 21", player), lambda state: _has_total(state, player, 16))
|
|
|
|
set_rule(world.get_location("Tile 22", player), lambda state: _has_total(state, player, 17))
|
|
|
|
set_rule(world.get_location("Tile 23", player), lambda state: _has_total(state, player, 18))
|
|
|
|
set_rule(world.get_location("Tile 24", player), lambda state: _has_total(state, player, 19))
|
|
|
|
set_rule(world.get_location("Tile 25", player), lambda state: _has_total(state, player, 20))
|
2022-03-22 22:30:10 +00:00
|
|
|
|
|
|
|
|
|
|
|
# Sets rules on completion condition
|
|
|
|
def set_completion_rules(world: MultiWorld, player: int):
|
|
|
|
|
|
|
|
width_req = 10-5
|
|
|
|
height_req = 10-5
|
|
|
|
bomb_req = 20-5
|
|
|
|
completion_requirements = lambda state: \
|
|
|
|
state.has("Map Width", player, width_req) and \
|
|
|
|
state.has("Map Height", player, height_req) and \
|
|
|
|
state.has("Map Bombs", player, bomb_req)
|
|
|
|
world.completion_condition[player] = lambda state: completion_requirements(state)
|