Skip to content

Commit

Permalink
v1.3
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesbrq committed Mar 27, 2024
1 parent 4d6dbbf commit 399498f
Show file tree
Hide file tree
Showing 7 changed files with 153 additions and 296 deletions.
71 changes: 35 additions & 36 deletions worlds/mlss/Enemies.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,13 @@
class EnemyGroup:
def __init__(self, id: bytes, type: bytes, position: int, data: bytes, boss, group_type=0x64):
self.id = id
self.type = type
self.position = position
self.data = data
self.boss = boss
self.group_type = group_type

@property
def size(self):
return len(self.id)


class Enemy:
def __init__(self, id, type):
self.id = id
self.type = type


class StatCount:
def __init__(self, id):
self.id = id
self.count = 1
self.total = 0


class EnemyRandomize:
def __init__(self):
self.groups = []
self.stardustGroups = []
self.groupSizes = []
self.enemies = []
self.spikedEnemies = []
self.bossGroups = []
self.enemyCount = []
flying = [
0x14,
0x1D,
0x4C
]

pestnut = [
0x20,
0x34
]

enemies = [
0x5030EC,
Expand Down Expand Up @@ -206,3 +179,29 @@ def __init__(self):
0x5045EC,
0x50460C
]

bowsers = [
0x50404C,
0x50406C,
0x50408C,
0x5040AC,
0x5040CC,
0x5040EC,
0x50410C,
0x50412C,
0x50414C,
0x50416C,
0x50418C,
0x5041AC,
0x5041CC,
0x5041EC,
0x50420C,
0x50422C,
0x50424C,
0x50426C,
0x50428C,
0x5042AC,
0x5042CC,
0x5042EC,
0x50430C,
]
4 changes: 2 additions & 2 deletions worlds/mlss/Items.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class MLSSItem(Item):
ItemData(77771034, "Purple Chuckola Fruit", ItemClassification.progression, 0x37),
ItemData(77771035, "Hammers", ItemClassification.progression, 0x38),
ItemData(77771036, "Firebrand", ItemClassification.progression, 0x39),
ItemData(77771037, "Thunder Hand", ItemClassification.progression, 0x3A),
ItemData(77771037, "Thunderhand", ItemClassification.progression, 0x3A),
ItemData(77771038, "Membership Card", ItemClassification.progression, 0x40),
ItemData(77771039, "Winkle Card", ItemClassification.progression, 0x41),
ItemData(77771040, "Peach's Extra Dress", ItemClassification.progression, 0x42),
Expand Down Expand Up @@ -157,7 +157,7 @@ class MLSSItem(Item):
ItemData(77771139, "Great Force", ItemClassification.useful, 0xFB),
ItemData(77771140, "Power Grip", ItemClassification.useful, 0xFC),
ItemData(77771141, "Cobalt Necktie", ItemClassification.useful, 0xFD),
ItemData(77771142, "Gameboy Horror SP", ItemClassification.useful, 0xFE),
ItemData(77771142, "Game Boy Horror SP", ItemClassification.useful, 0xFE),
ItemData(77771143, "Dragohoho Defeated", ItemClassification.skip_balancing, 0x0),
ItemData(77771144, "Queen Bean Defeated", ItemClassification.skip_balancing, 0x0),
ItemData(77771145, "Chuckolator Defeated", ItemClassification.skip_balancing, 0x0),
Expand Down
23 changes: 11 additions & 12 deletions worlds/mlss/Options.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,6 @@
from dataclasses import dataclass


class IntroSkip(Toggle):
"""
Skip the intro sequence. Spawns you in pipe 1 on game start.
This does not affect any items.
"""
display_name = "Intro Skip"


class BowsersCastleSkip(Toggle):
"""
Skip straight from the entrance hall to bowletta in Bowser's Castle.
Expand Down Expand Up @@ -143,12 +135,20 @@ class LuigiPants(Choice):
default = 0


class RandomizeEnemies(Toggle):
class RandomizeEnemies(Choice):
"""
Randomize all normal enemy encounters in the game.
If Bowser's castle skip is enabled then enemies from Bowser's Castle will not be included.
disabled: Enemies will not be randomized
vanilla_groups: Vanilla enemy groups will be shuffled with each other. Custom enemy groups will not be made.
custom_groups: Custom enemy groups will be made and shuffled. Some enemy groups will only be semi-random.
(Groups including flying enemies or pestnuts)
"""
display_name = "Randomize Enemies"
option_disabled = 0
option_vanilla_groups = 1
option_custom_groups = 2
default = 0


class RandomizeBosses(Choice):
Expand All @@ -168,14 +168,14 @@ class RandomizeBosses(Choice):

class ScaleStats(Toggle):
"""
This scales enemy HP and XP according to the area of the game you are in scaling linearly.
This scales enemy HP and XP according to the area of the game you are in.
"""
display_name = "Scale Enemy Stats"


class ScalePow(Toggle):
"""
This scales enemy POW according to the area of the game you are in scaling linearly.
This scales enemy POW according to the area of the game you are in.
"""
display_name = "Scale Enemy POW"

Expand Down Expand Up @@ -250,7 +250,6 @@ class MLSSOptions(PerGameCommonOptions):
start_inventory_from_pool: StartInventoryPool
coins: Coins
difficult_logic: DifficultLogic
skip_intro: IntroSkip
castle_skip: BowsersCastleSkip
extra_pipes: ExtraPipes
skip_minecart: SkipMinecart
Expand Down
2 changes: 1 addition & 1 deletion worlds/mlss/Regions.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def connect_regions(world: "MLSSWorld"):
connect(world, names, "PostJokes", "Bowser's Castle")
connect(world, names, "Bowser's Castle", "Bowser's Castle Mini", lambda state: StateLogic.canMini(state, world.player) and StateLogic.thunder(state, world.player))
connect(world, names, "Chucklehuck Woods", "Winkle", lambda state: StateLogic.canDash(state, world.player))
connect(world, names, "Chucklehuck Woods", "Beanbean Castle Town", lambda state: StateLogic.fruits(state, world.player))
connect(world, names, "Chucklehuck Woods", "Beanbean Castle Town", lambda state: StateLogic.fruits(state, world.player) and (StateLogic.hammers(state, world.player) or StateLogic.fire(state, world.player) or StateLogic.thunder(state, world.player)))
if world.options.difficult_logic:
connect(world, names, "GwarharEntrance", "GwarharMain", lambda state: StateLogic.canDash(state, world.player))
connect(world, names, "JokesEntrance", "JokesMain", lambda state: StateLogic.canDig(state, world.player))
Expand Down
Loading

0 comments on commit 399498f

Please sign in to comment.