mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 12:11:33 -06:00

Changelog: Features: - New Goal - Minigame Madness - Win a certain number of each type of Minigame Trap, then defeat the Finalhazard to win! - How many of each Minigame are required can be set by an Option - When the required amount of a Minigame has been received, that Minigame can be replayed in the Chao World Lobby - New optional Location Checks - Bigsanity - Go fishing with Big in each stage for a Location Check - Itemboxsanity - Either Extra Life Boxes or All Item Boxes - New Items - New Traps - Literature Trap - Controller Drift Trap - Poison Trap - Bee Trap - New Minigame Traps - Breakout Trap - Fishing Trap - Trivia Trap - Pokemon Trivia Trap - Pokemon Count Trap - Number Sequence Trap - Light Up Path Trap - Pinball Trap - Math Quiz Trap - Snake Trap - Input Sequence Trap - Trap Link - When you receive a trap, you send a copy of it to every other player with Trap Link enabled - Boss Gate Plando - Expert Logic Difficulty - Use at your own risk. This difficulty requires complete mastery of SA2. - Missions can now be enabled and disabled per-character, instead of just per-style - Minigame Difficulty can now be set to "Chaos", which selects a new difficulty randomly per-trap received Quality of Life: - Gate Stages and Mission Orders are now displayed in the spoiler log - Additional play stats are saved and displayed with the randomizer credits - Stage Locations progress UI now displays in multiple pages when Itemboxsanity is enabled - Current stage mission order and progress are now shown when paused in-level - Chaos Emeralds are now shown when paused in-level - Location Name Groups were created - Moved SA2B to the new Options system - Option Presets were created - Error Messages are more obvious Bug Fixes: - Added missing `Dry Lagoon - 12 Animals` location - Flying Dog boss should no longer crash when you have done at least 3 Intermediate Kart Races - Invincibility can no longer be received in the King Boom Boo fight, preventing a crash - Chaos Emeralds should no longer disproportionately end up in Cannon's Core or the final Level Gate - Going into submenus from the pause menu should no longer reset traps - `Sonic - Magic Gloves` are now plural - Junk items will no longer cause a crash when in a falling state - Chao Garden: - Prevent races from occasionally becoming uncompletable when using the "Prize Only" option - Properly allow Hero Chao to participate in Dark Races - Don't allow the Chao Garden to send locations when connected to an invalid server - Prevent the Chao Garden from resetting your life count - Fix Chao World Entrance Shuffle causing inaccessible Neutral Garden - Fix pressing the 'B' button to take you to the proper location in Chao World Entrance Shuffle - Prevent Chao Karate progress icon overflow - Prevent changing Chao Timescale while paused or while a Minigame is active - Logic Fixes: - `Mission Street - Chao Key 1` (Hard Logic) now requires no upgrades - `Mission Street - Chao Key 2` (Hard Logic) now requires no upgrades - `Crazy Gadget - Hidden 1` (Standard Logic) now requires `Sonic - Bounce Bracelet` instead of `Sonic - Light Shoes` - `Lost Colony - Hidden 1` (Standard Logic) now requires `Eggman - Jet Engine` - `Mad Space - Gold Beetle` (Standard Logic) now only requires `Rouge - Iron Boots` - `Cosmic Wall - Gold Beetle` (Standard and Hard Logic) now only requires `Eggman - Jet Engine`
396 lines
5.4 KiB
Python
396 lines
5.4 KiB
Python
|
|
chao_name_conversion = {
|
|
"!": 0x01,
|
|
"!": 0x02,
|
|
"#": 0x03,
|
|
"$": 0x04,
|
|
"%": 0x05,
|
|
"&": 0x06,
|
|
"\\": 0x07,
|
|
"(": 0x08,
|
|
")": 0x09,
|
|
"*": 0x0A,
|
|
"+": 0x0B,
|
|
",": 0x0C,
|
|
"-": 0x0D,
|
|
".": 0x0E,
|
|
"/": 0x0F,
|
|
|
|
"0": 0x10,
|
|
"1": 0x11,
|
|
"2": 0x12,
|
|
"3": 0x13,
|
|
"4": 0x14,
|
|
"5": 0x15,
|
|
"6": 0x16,
|
|
"7": 0x17,
|
|
"8": 0x18,
|
|
"9": 0x19,
|
|
":": 0x1A,
|
|
";": 0x1B,
|
|
"<": 0x1C,
|
|
"=": 0x1D,
|
|
">": 0x1E,
|
|
"?": 0x1F,
|
|
|
|
"@": 0x20,
|
|
"A": 0x21,
|
|
"B": 0x22,
|
|
"C": 0x23,
|
|
"D": 0x24,
|
|
"E": 0x25,
|
|
"F": 0x26,
|
|
"G": 0x27,
|
|
"H": 0x28,
|
|
"I": 0x29,
|
|
"J": 0x2A,
|
|
"K": 0x2B,
|
|
"L": 0x2C,
|
|
"M": 0x2D,
|
|
"N": 0x2E,
|
|
"O": 0x2F,
|
|
|
|
"P": 0x30,
|
|
"Q": 0x31,
|
|
"R": 0x32,
|
|
"S": 0x33,
|
|
"T": 0x34,
|
|
"U": 0x35,
|
|
"V": 0x36,
|
|
"W": 0x37,
|
|
"X": 0x38,
|
|
"Y": 0x39,
|
|
"Z": 0x3A,
|
|
"[": 0x3B,
|
|
"¥": 0x3C,
|
|
"]": 0x3D,
|
|
"^": 0x3E,
|
|
"_": 0x3F,
|
|
|
|
"`": 0x40,
|
|
"a": 0x41,
|
|
"b": 0x42,
|
|
"c": 0x43,
|
|
"d": 0x44,
|
|
"e": 0x45,
|
|
"f": 0x46,
|
|
"g": 0x47,
|
|
"h": 0x48,
|
|
"i": 0x49,
|
|
"j": 0x4A,
|
|
"k": 0x4B,
|
|
"l": 0x4C,
|
|
"m": 0x4D,
|
|
"n": 0x4E,
|
|
"o": 0x4F,
|
|
|
|
"p": 0x50,
|
|
"q": 0x51,
|
|
"r": 0x52,
|
|
"s": 0x53,
|
|
"t": 0x54,
|
|
"u": 0x55,
|
|
"v": 0x56,
|
|
"w": 0x57,
|
|
"x": 0x58,
|
|
"y": 0x59,
|
|
"z": 0x5A,
|
|
"{": 0x5B,
|
|
"|": 0x5C,
|
|
"}": 0x5D,
|
|
"~": 0x5E,
|
|
" ": 0x5F,
|
|
}
|
|
|
|
sample_chao_names = [
|
|
"Aginah",
|
|
"Biter",
|
|
"Steve",
|
|
"Ryley",
|
|
"Watcher",
|
|
"Acrid",
|
|
"Sheik",
|
|
"Lunais",
|
|
"Samus",
|
|
"The Kid",
|
|
"Jack",
|
|
"Sir Lee",
|
|
"Viridian",
|
|
"Rouhi",
|
|
"Toad",
|
|
"Merit",
|
|
"Ridley",
|
|
"Hornet",
|
|
"Carl",
|
|
"Raynor",
|
|
"Dixie",
|
|
"Wolnir",
|
|
"Mario",
|
|
"Gary",
|
|
"Wayne",
|
|
"Kevin",
|
|
"J.J.",
|
|
"Maxim",
|
|
"Redento",
|
|
"Caesar",
|
|
"Abigail",
|
|
"Link",
|
|
"Ninja",
|
|
"Roxas",
|
|
"Marin",
|
|
"Yorgle",
|
|
"DLC",
|
|
"Mina",
|
|
"Sans",
|
|
"Lan",
|
|
"Rin",
|
|
"Doomguy",
|
|
"Guide",
|
|
"May",
|
|
"Hubert",
|
|
"Corvus",
|
|
"Nigel",
|
|
"Benjamin",
|
|
"Gooey",
|
|
"Maddy",
|
|
"AFGNCAAP",
|
|
"Reinhardt",
|
|
"Claire",
|
|
"Yoshi",
|
|
"Peasley",
|
|
"Faux",
|
|
"Naija",
|
|
"Kaiba",
|
|
"Hat Kid",
|
|
"TzTokJad",
|
|
"Sora",
|
|
"WoodMan",
|
|
"Yachty",
|
|
"Grieve",
|
|
"Portia",
|
|
"Graves",
|
|
"Kaycee",
|
|
]
|
|
|
|
totally_real_item_names = [
|
|
"Mallet",
|
|
"Lava Rod",
|
|
"Master Knife",
|
|
"Slippers",
|
|
"Spade",
|
|
|
|
"Progressive Car Upgrade",
|
|
"Bonus Token",
|
|
|
|
"Shortnail",
|
|
"Runmaster",
|
|
|
|
"Courage Form",
|
|
"Auto Courage",
|
|
"Donald Defender",
|
|
"Goofy Blizzard",
|
|
"Ultimate Weapon",
|
|
|
|
"Song of the Sky Whale",
|
|
"Gryphon Shoes",
|
|
"Wing Key",
|
|
"Strength Anklet",
|
|
|
|
"Hairclip",
|
|
|
|
"Key of Wisdom",
|
|
|
|
"Baking",
|
|
"Progressive Block Mining",
|
|
|
|
"Jar",
|
|
"Whistle of Space",
|
|
"Rito Tunic",
|
|
|
|
"Kitchen Sink",
|
|
|
|
"Rock Badge",
|
|
"Key Card",
|
|
"Pikachu",
|
|
"Eevee",
|
|
"HM02 Strength",
|
|
|
|
"Progressive Astromancers",
|
|
"Progressive Chefs",
|
|
"The Living Safe",
|
|
"Lady Quinn",
|
|
|
|
"Dio's Worst Enemy",
|
|
|
|
"Pink Chaos Emerald",
|
|
"Black Chaos Emerald",
|
|
"Tails - Large Cannon",
|
|
"Eggman - Bazooka",
|
|
"Eggman - Booster",
|
|
"Knuckles - Shades",
|
|
"Sonic - Magic Shoes",
|
|
"Shadow - Bounce Bracelet",
|
|
"Rouge - Air Necklace",
|
|
"Big Key (Eggman's Pyramid)",
|
|
|
|
"Sensor Bunker",
|
|
"Phantom",
|
|
"Soldier",
|
|
|
|
"Plasma Suit",
|
|
"Gravity Beam",
|
|
"Hi-Jump Ball",
|
|
|
|
"Cannon Unlock LLL",
|
|
"Feather Cap",
|
|
|
|
"Progressive Yoshi",
|
|
"Purple Switch Palace",
|
|
"Cape Feather",
|
|
|
|
"Cane of Bryan",
|
|
|
|
"Van Repair",
|
|
"Autumn",
|
|
"Galaxy Knife",
|
|
"Green Cabbage Seeds",
|
|
|
|
"Timespinner Cog 1",
|
|
|
|
"Ladder",
|
|
|
|
"Visible Dots",
|
|
|
|
"CooCoo",
|
|
|
|
"Blueberry",
|
|
|
|
"Ear of Luigi",
|
|
|
|
"Mega Nut",
|
|
|
|
"DUELIST ALLIANCE",
|
|
"DUEL OVERLOAD",
|
|
"POWER OF THE ELEMENTS",
|
|
"S:P Little Knight",
|
|
"Red-Eyes Dark Dragoon",
|
|
|
|
"Fire Hat",
|
|
|
|
"Area: Taverly",
|
|
"Area: Meiyerditch",
|
|
"Fire Cape",
|
|
|
|
"Donald Zeta Flare",
|
|
|
|
"Category One of a Kind",
|
|
"Category Fuller House",
|
|
|
|
"Passive Camoflage",
|
|
|
|
"Earth Card",
|
|
]
|
|
|
|
all_exits = [
|
|
0x00, # Lobby to Neutral
|
|
0x01, # Lobby to Hero
|
|
0x02, # Lobby to Dark
|
|
0x03, # Lobby to Kindergarten
|
|
0x04, # Neutral to Lobby
|
|
0x05, # Neutral to Cave
|
|
0x06, # Neutral to Transporter
|
|
0x07, # Hero to Lobby
|
|
0x08, # Hero to Transporter
|
|
0x09, # Dark to Lobby
|
|
0x0A, # Dark to Transporter
|
|
0x0B, # Cave to Neutral
|
|
0x0C, # Cave to Race
|
|
0x0D, # Cave to Karate
|
|
0x0E, # Race to Cave
|
|
0x0F, # Karate to Cave
|
|
0x10, # Transporter to Neutral
|
|
#0x11, # Transporter to Hero
|
|
#0x12, # Transporter to Dark
|
|
0x13, # Kindergarten to Lobby
|
|
]
|
|
|
|
all_destinations = [
|
|
0x07, # Lobby
|
|
0x07,
|
|
0x07,
|
|
0x07,
|
|
0x01, # Neutral
|
|
0x01,
|
|
0x01,
|
|
0x02, # Hero
|
|
0x02,
|
|
0x03, # Dark
|
|
0x03,
|
|
0x09, # Cave
|
|
0x09,
|
|
0x09,
|
|
0x05, # Chao Race
|
|
0x0A, # Chao Karate
|
|
0x0C, # Transporter
|
|
#0x0C,
|
|
#0x0C,
|
|
0x06, # Kindergarten
|
|
]
|
|
|
|
multi_rooms = [
|
|
0x07,
|
|
0x01,
|
|
0x02,
|
|
0x03,
|
|
0x09,
|
|
]
|
|
|
|
single_rooms = [
|
|
0x05,
|
|
0x0A,
|
|
0x0C,
|
|
0x06,
|
|
]
|
|
|
|
room_to_exits_map = {
|
|
0x07: [0x00, 0x01, 0x02, 0x03],
|
|
0x01: [0x04, 0x05, 0x06],
|
|
0x02: [0x07, 0x08],
|
|
0x03: [0x09, 0x0A],
|
|
0x09: [0x0B, 0x0C, 0x0D],
|
|
0x05: [0x0E],
|
|
0x0A: [0x0F],
|
|
0x0C: [0x10],#, 0x11, 0x12],
|
|
0x06: [0x13],
|
|
}
|
|
|
|
exit_to_room_map = {
|
|
0x00: 0x07, # Lobby to Neutral
|
|
0x01: 0x07, # Lobby to Hero
|
|
0x02: 0x07, # Lobby to Dark
|
|
0x03: 0x07, # Lobby to Kindergarten
|
|
0x04: 0x01, # Neutral to Lobby
|
|
0x05: 0x01, # Neutral to Cave
|
|
0x06: 0x01, # Neutral to Transporter
|
|
0x07: 0x02, # Hero to Lobby
|
|
0x08: 0x02, # Hero to Transporter
|
|
0x09: 0x03, # Dark to Lobby
|
|
0x0A: 0x03, # Dark to Transporter
|
|
0x0B: 0x09, # Cave to Neutral
|
|
0x0C: 0x09, # Cave to Race
|
|
0x0D: 0x09, # Cave to Karate
|
|
0x0E: 0x05, # Race to Cave
|
|
0x0F: 0x0A, # Karate to Cave
|
|
0x10: 0x0C, # Transporter to Neutral
|
|
#0x11: 0x0C, # Transporter to Hero
|
|
#0x12: 0x0C, # Transporter to Dark
|
|
0x13: 0x06, # Kindergarten to Lobby
|
|
}
|
|
|
|
valid_kindergarten_exits = [
|
|
0x04, # Neutral to Lobby
|
|
0x05, # Neutral to Cave
|
|
0x07, # Hero to Lobby
|
|
0x09, # Dark to Lobby
|
|
]
|