Archipelago/worlds/mlss/StateLogic.py

156 lines
3.8 KiB
Python
Raw Normal View History

Mario & Luigi: Superstar Saga: Implement New Game (#2754) * Commit for PR * Commit for PR * Update worlds/mlss/Client.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Update worlds/mlss/docs/setup_en.md Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> * Remove deprecated import. Updated settings and romfile syntax * Updated Options to new system. Changed all references from MultiWorld to World * Changed switch statements to if else * Update en_Mario & Luigi Superstar Saga.md * Updated client.py * Update Client.py * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Updated logic, Updated patch implementation, Removed unused imports, Cleaned up Code * Update __init__.py * Changed reference from world to mlssworld * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Fix merge conflict + update prep * v1.2 * Leftover print commands * Update basepatch.bsdiff * Update basepatch.bsdiff * v1.3 * Update Rom.py * Change tracker locations to serverside, no longer locations. Various code cleanup and logic changes. * Event removal continuation. * Partial Implementation of APPP (Incomplete)) * v1.4 Implemented APPP * Docs Updated * Update Rom.py * Update setup_en.md * Update Rom.py * Update Rules.py * Fix for APPP being broken on webhost * Update Rom.py * Update Rom.py * Location name fixes + pants color fixes * Update Rules.py * Fix for ultra hammer cutscene * Fixed compat. issues with python ver. 3.8 * Updated hidden block yaml option * pre-v1.5 * Update Client.py * Update basepatch.bsdiff * v1.5 * Update XP multiplier to have a minimum of 0 * Update 'Beanfruit' to 'Bean Fruit' * v1.6 * Update Rom.py * Update basepatch.bsdiff * Initial review refactor * Revert state logic changes. Continuation of refactor. * Fixed failed generations. Finished refactor. * Reworked colors. Removed all .txt files * Actually removed the .txt files this time * Update Rom.py * Update README.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Options.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Client.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/__init__.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/docs/en_Mario & Luigi Superstar Saga.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Data.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Review refactor. * Update README.md Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Update worlds/mlss/Rules.py Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com> * Add coin blocks to LocationName * Refactor. * Update Items.py * Delete mlss.apworld * Small asm bugfix * Update basepatch.bsdiff * Client sends less messages to server * Update basepatch.bsdiff --------- Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com> Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com> Co-authored-by: Exempt-Medic <60412657+Exempt-Medic@users.noreply.github.com>
2024-05-06 07:15:06 +00:00
def canDig(state, player):
return state.has("Green Goblet", player) and state.has("Hammers", player)
def canMini(state, player):
return state.has("Red Goblet", player) and state.has("Hammers", player)
def canDash(state, player):
return state.has("Red Pearl Bean", player) and state.has("Firebrand", player)
def canCrash(state, player):
return state.has("Green Pearl Bean", player) and state.has("Thunderhand", player)
def hammers(state, player):
return state.has("Hammers", player)
def super(state, player):
return state.has("Hammers", player, 2)
def ultra(state, player):
return state.has("Hammers", player, 3)
def fruits(state, player):
return (
state.has("Red Chuckola Fruit", player)
and state.has("Purple Chuckola Fruit", player)
and state.has("White Chuckola Fruit", player)
)
def pieces(state, player):
return (
state.has("Beanstar Piece 1", player)
and state.has("Beanstar Piece 2", player)
and state.has("Beanstar Piece 3", player)
and state.has("Beanstar Piece 4", player)
)
def neon(state, player):
return (
state.has("Blue Neon Egg", player)
and state.has("Red Neon Egg", player)
and state.has("Green Neon Egg", player)
and state.has("Yellow Neon Egg", player)
and state.has("Purple Neon Egg", player)
and state.has("Orange Neon Egg", player)
and state.has("Azure Neon Egg", player)
)
def spangle(state, player):
return state.has("Spangle", player)
def rose(state, player):
return state.has("Peasley's Rose", player)
def brooch(state, player):
return state.has("Beanbean Brooch", player)
def thunder(state, player):
return state.has("Thunderhand", player)
def fire(state, player):
return state.has("Firebrand", player)
def dressBeanstar(state, player):
return state.has("Peach's Extra Dress", player) and state.has("Fake Beanstar", player)
def membership(state, player):
return state.has("Membership Card", player)
def winkle(state, player):
return state.has("Winkle Card", player)
def beanFruit(state, player):
return (
state.has("Bean Fruit 1", player)
and state.has("Bean Fruit 2", player)
and state.has("Bean Fruit 3", player)
and state.has("Bean Fruit 4", player)
and state.has("Bean Fruit 5", player)
and state.has("Bean Fruit 6", player)
and state.has("Bean Fruit 7", player)
)
def surfable(state, player):
return ultra(state, player) and (
(canDig(state, player) and canMini(state, player)) or (membership(state, player) and fire(state, player))
)
def postJokes(state, player):
return (
surfable(state, player)
and canDig(state, player)
and dressBeanstar(state, player)
and pieces(state, player)
and fruits(state, player)
and brooch(state, player)
and rose(state, player)
and canDash(state, player)
)
def teehee(state, player):
return super(state, player) or canDash(state, player)
def castleTown(state, player):
return fruits(state, player) and brooch(state, player)
def fungitown(state, player):
return (
castleTown(state, player)
and thunder(state, player)
and rose(state, player)
and (super(state, player) or canDash(state, player))
)
def piranha_shop(state, player):
return state.can_reach("Shop Mom Piranha Flag", "Region", player)
def fungitown_shop(state, player):
return state.can_reach("Shop Enter Fungitown Flag", "Region", player)
def star_shop(state, player):
return state.can_reach("Shop Beanstar Complete Flag", "Region", player)
def birdo_shop(state, player):
return state.can_reach("Shop Birdo Flag", "Region", player)
def fungitown_birdo_shop(state, player):
return state.can_reach("Fungitown Shop Birdo Flag", "Region", player)