mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
LttP: Bombless Start and Options/Shops overhaul (#2357)
## What is this fixing or adding? Adds Bombless Start option, along with proper bomb logic. This involves updating `can_kill_most_things` to include checking how many bombs can be held. Many places where the ability to kill enemies was assumed, now have logic. This fixes some possible existing logic issues, for example: Mini Moldorm cave checks currently are always in logic despite the fact that on expert enemy health it would require 12 bombs to kill each mini moldorm. Overhauls options, pulling them out of core and in particular making large changes to how the shop options work. Co-authored-by: espeon65536 <81029175+espeon65536@users.noreply.github.com> Co-authored-by: black-sliver <59490463+black-sliver@users.noreply.github.com> Co-authored-by: Bondo <38083232+BadmoonzZ@users.noreply.github.com> Co-authored-by: espeon65536 <espeon65536@gmail.com> Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
This commit is contained in:
@@ -6,7 +6,7 @@ from typing import Optional, Union, List, Tuple, Callable, Dict, TYPE_CHECKING
|
||||
from Fill import FillError
|
||||
from .Options import LTTPBosses as Bosses
|
||||
from .StateHelpers import can_shoot_arrows, can_extend_magic, can_get_good_bee, has_sword, has_beam_sword, \
|
||||
has_melee_weapon, has_fire_source
|
||||
has_melee_weapon, has_fire_source, can_use_bombs
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from . import ALTTPWorld
|
||||
@@ -62,7 +62,8 @@ def MoldormDefeatRule(state, player: int) -> bool:
|
||||
|
||||
def HelmasaurKingDefeatRule(state, player: int) -> bool:
|
||||
# TODO: technically possible with the hammer
|
||||
return has_sword(state, player) or can_shoot_arrows(state, player)
|
||||
return (can_use_bombs(state, player, 5) or state.has("Hammer", player)) and (has_sword(state, player)
|
||||
or can_shoot_arrows(state, player))
|
||||
|
||||
|
||||
def ArrghusDefeatRule(state, player: int) -> bool:
|
||||
@@ -143,7 +144,7 @@ def GanonDefeatRule(state, player: int) -> bool:
|
||||
can_hurt = has_beam_sword(state, player)
|
||||
common = can_hurt and has_fire_source(state, player)
|
||||
# silverless ganon may be needed in anything higher than no glitches
|
||||
if state.multiworld.logic[player] != 'noglitches':
|
||||
if state.multiworld.glitches_required[player] != 'no_glitches':
|
||||
# need to light torch a sufficient amount of times
|
||||
return common and (state.has('Tempered Sword', player) or state.has('Golden Sword', player) or (
|
||||
state.has('Silver Bow', player) and can_shoot_arrows(state, player)) or
|
||||
|
||||
Reference in New Issue
Block a user