216 lines
10 KiB
Python
216 lines
10 KiB
Python
|
|
from BaseClasses import MultiWorld
|
||
|
|
from ..generic.Rules import set_rule
|
||
|
|
from .Options import CCCharlesOptions
|
||
|
|
|
||
|
|
# Go mode: Green Egg + Blue Egg + Red Egg + Temple Key + Bug Spray (+ Remote Explosive x8 but the base game ignores it)
|
||
|
|
|
||
|
|
def set_rules(world: MultiWorld, options: CCCharlesOptions, player: int) -> None:
|
||
|
|
# Tony Tiddle
|
||
|
|
set_rule(world.get_entrance("Barn Door", player),
|
||
|
|
lambda state: state.has("Barn Key", player))
|
||
|
|
|
||
|
|
# Candice
|
||
|
|
set_rule(world.get_entrance("Tutorial House Door", player),
|
||
|
|
lambda state: state.has("Candice's Key", player))
|
||
|
|
|
||
|
|
# Lizbeth Murkwater
|
||
|
|
set_rule(world.get_location("Swamp Lizbeth Murkwater Mission End", player),
|
||
|
|
lambda state: state.has("Dead Fish", player))
|
||
|
|
|
||
|
|
# Daryl
|
||
|
|
set_rule(world.get_location("Junkyard Area Chest Ancient Tablet", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Junkyard Area Daryl Mission End", player),
|
||
|
|
lambda state: state.has("Ancient Tablet", player))
|
||
|
|
|
||
|
|
# South House
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("South House Chest Scraps 6", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# South Mine
|
||
|
|
set_rule(world.get_entrance("South Mine Gate", player),
|
||
|
|
lambda state: state.has("South Mine Key", player))
|
||
|
|
|
||
|
|
set_rule(world.get_location("South Mine Inside Green Paint Can", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Theodore
|
||
|
|
set_rule(world.get_location("Middle Station Theodore Mission End", player),
|
||
|
|
lambda state: state.has("Blue Box", player))
|
||
|
|
|
||
|
|
# Watchtower
|
||
|
|
set_rule(world.get_location("Watchtower Pink Paint Can", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Sasha
|
||
|
|
set_rule(world.get_location("Haunted House Sasha Mission End", player),
|
||
|
|
lambda state: state.has("Page Drawing", player, 8))
|
||
|
|
|
||
|
|
# Santiago
|
||
|
|
set_rule(world.get_location("Port Santiago Mission End", player),
|
||
|
|
lambda state: state.has("Journal", player))
|
||
|
|
|
||
|
|
# Trench House
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Trench House Chest Scraps 6", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# East House
|
||
|
|
set_rule(world.get_location("East House Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("East House Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("East House Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("East House Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("East House Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Rocket Testing Bunker
|
||
|
|
set_rule(world.get_entrance("Stuck Bunker Door", player),
|
||
|
|
lambda state: state.has("Timed Dynamite", player))
|
||
|
|
|
||
|
|
# John Smith
|
||
|
|
set_rule(world.get_location("Workshop John Smith Mission End", player),
|
||
|
|
lambda state: state.has("Box of Rockets", player))
|
||
|
|
|
||
|
|
# Claire
|
||
|
|
set_rule(world.get_location("Lighthouse Claire Mission End", player),
|
||
|
|
lambda state: state.has("Breaker", player, 4))
|
||
|
|
|
||
|
|
# North Mine
|
||
|
|
set_rule(world.get_entrance("North Mine Gate", player),
|
||
|
|
lambda state: state.has("North Mine Key", player))
|
||
|
|
|
||
|
|
set_rule(world.get_location("North Mine Inside Blue Paint Can", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Paul
|
||
|
|
set_rule(world.get_location("Museum Paul Mission End", player),
|
||
|
|
lambda state: state.has("Remote Explosive x8", player))
|
||
|
|
# lambda state: state.has("Remote Explosive", player, 8)) # TODO: Add an option to split remote explosives
|
||
|
|
|
||
|
|
# West Beach
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("West Beach Chest Scraps 6", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Caravan
|
||
|
|
set_rule(world.get_location("Caravan Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Caravan Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Caravan Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Caravan Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Caravan Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Ronny
|
||
|
|
set_rule(world.get_location("Towers Ronny Mission End", player),
|
||
|
|
lambda state: state.has("Employment Contracts", player))
|
||
|
|
|
||
|
|
# North Beach
|
||
|
|
set_rule(world.get_location("North Beach Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("North Beach Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("North Beach Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("North Beach Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Mine Shaft
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 6", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Mine Shaft Chest Scraps 7", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Mob Camp
|
||
|
|
set_rule(world.get_entrance("Mob Camp Locked Door", player),
|
||
|
|
lambda state: state.has("Mob Camp Key", player))
|
||
|
|
|
||
|
|
set_rule(world.get_location("Mob Camp Locked Room Stolen Bob", player),
|
||
|
|
lambda state: state.has("Broken Bob", player))
|
||
|
|
|
||
|
|
# Mountain Ruin
|
||
|
|
set_rule(world.get_entrance("Mountain Ruin Gate", player),
|
||
|
|
lambda state: state.has("Mountain Ruin Key", player))
|
||
|
|
|
||
|
|
set_rule(world.get_location("Mountain Ruin Inside Red Paint Can", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Prism Temple
|
||
|
|
set_rule(world.get_location("Prism Temple Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Prism Temple Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Prism Temple Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Pickle Lady
|
||
|
|
set_rule(world.get_location("Pickle Val Jar of Pickles", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Pickle Val Pickle Lady Mission End", player),
|
||
|
|
lambda state: state.has("Jar of Pickles", player))
|
||
|
|
|
||
|
|
# Morse Bunker
|
||
|
|
set_rule(world.get_location("Morse Bunker Chest Scraps 1", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Morse Bunker Chest Scraps 2", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Morse Bunker Chest Scraps 3", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Morse Bunker Chest Scraps 4", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
set_rule(world.get_location("Morse Bunker Chest Scraps 5", player),
|
||
|
|
lambda state: state.has("Lockpicks", player))
|
||
|
|
|
||
|
|
# Add rules to reach the "Go mode"
|
||
|
|
set_rule(world.get_location("Final Boss", player),
|
||
|
|
lambda state: state.has("Temple Key", player)
|
||
|
|
and state.has("Green Egg", player)
|
||
|
|
and state.has("Blue Egg", player)
|
||
|
|
and state.has("Red Egg", player))
|
||
|
|
world.completion_condition[player] = lambda state: state.has("Victory", player)
|