mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Initial files
This commit is contained in:
0
worlds/grinch/Client.py
Normal file
0
worlds/grinch/Client.py
Normal file
145
worlds/grinch/Items.py
Normal file
145
worlds/grinch/Items.py
Normal file
@@ -0,0 +1,145 @@
|
||||
from typing import NamedTuple, Optional
|
||||
|
||||
from BaseClasses import Item
|
||||
from BaseClasses import ItemClassification as IC
|
||||
|
||||
class GrinchItemData(NamedTuple):
|
||||
type: str
|
||||
code: Optional[int]
|
||||
classification: IC
|
||||
update_ram_addr: Optional[list[GrinchRamData]] = None
|
||||
value: Optional[int] = None #I can either set or add either hex or unsigned values through Client.py
|
||||
binary_bit_pos: Optional[int] = None
|
||||
bit_size: int = 1
|
||||
|
||||
|
||||
#Gadgets
|
||||
GADGETS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Binoculars": GrinchItemData("Gadgets", 100, IC.useful,
|
||||
[GrinchRamData(0x800102B6, value=0x40), GrinchRamData(0x800102B7, value=0x41),
|
||||
GrinchRamData(0x800102B8, value=0x44), GrinchRamData(0x800102B9, value=0x45)]),
|
||||
"Rotten Egg Launcher": GrinchItemData("Gadgets", 101, IC.progression,
|
||||
[GrinchRamData(0x800102BA, value=0x40), GrinchRamData(0x800102BB, value=0x41),
|
||||
GrinchRamData(0x800102BC, value=0x44), GrinchRamData(0x800102BD, value=0x45)]),
|
||||
"Rocket Spring": GrinchItemData("Gadgets", 102, IC.progression,
|
||||
[GrinchRamData(0x800102BE, value=0x40), GrinchRamData(0x800102BF, value=0x41),
|
||||
GrinchRamData(0x800102C0, value=0x42), GrinchRamData(0x800102C1, value=0x44),
|
||||
GrinchRamData(0x800102C2, value=0x45), GrinchRamData(0x800102C3, value=0x46),
|
||||
GrinchRamData(0x800102C4, value=0x48), GrinchRamData(0x800102C5, value=0x49),
|
||||
GrinchRamData(0x800102C6, value=0x4A)]),
|
||||
"Slime Shooter": GrinchItemData("Gadgets", 103, IC.progression,
|
||||
[GrinchRamData(0x800102C7, value=0x40), GrinchRamData(0x800102C8, value=0x41),
|
||||
GrinchRamData(0x800102C9, value=0x42), GrinchRamData(0x800102CA, value=0x44),
|
||||
GrinchRamData(0x800102CB, value=0x45), GrinchRamData(0x800102CC, value=0x46),
|
||||
GrinchRamData(0x800102CD, value=0x48), GrinchRamData(0x800102CE, value=0x49),
|
||||
GrinchRamData(0x800102CF, value=0x4A)]),
|
||||
"Octopus Climbing Device": GrinchItemData("Gadgets", 104, IC.progression,
|
||||
[GrinchRamData(0x800102D0, value=0x40), GrinchRamData(0x800102DA, value=0x41),
|
||||
GrinchRamData(0x800102DB, value=0x42), GrinchRamData(0x800102DC, value=0x44),
|
||||
GrinchRamData(0x800102DD, value=0x45), GrinchRamData(0x800102DE, value=0x46),
|
||||
GrinchRamData(0x800102DF, value=0x48), GrinchRamData(0x800102E0, value=0x49),
|
||||
GrinchRamData(0x800102E1, value=0x4A)]),
|
||||
"Marine Mobile": GrinchItemData("Gadgets", 105, IC.progression,
|
||||
[GrinchRamData(0x800102D9, value=0x40), GrinchRamData(0x800102DA, value=0x41),
|
||||
GrinchRamData(0x800102DB, value=0x42), GrinchRamData(0x800102DC, value=0x43),
|
||||
GrinchRamData(0x800102DD, value=0x43), GrinchRamData(0x800102DE, value=0x44),
|
||||
GrinchRamData(0x800102DF, value=0x44), GrinchRamData(0x800102E0, value=0x45),
|
||||
GrinchRamData(0x800102E1, value=0x46), GrinchRamData(0x800102E2, value=0x47),
|
||||
GrinchRamData(0x800102E3, value=0x48), GrinchRamData(0x800102E4, value=0x49),
|
||||
GrinchRamData(0x800102E5, value=0x4A), GrinchRamData(0x800102E6, value=0x4B),
|
||||
GrinchRamData(0x800102E7, value=0x4C), GrinchRamData(0x800102E8, value=0x4D)]),
|
||||
"Grinch Copter": GrinchItemData("Gadgets", 106, IC.progression,
|
||||
[GrinchRamData(0x800102E9, value=0x40), GrinchRamData(0x800102EA, value=0x41),
|
||||
GrinchRamData(0x800102EB, value=0x42), GrinchRamData(0x800102EC, value=0x43),
|
||||
GrinchRamData(0x800102ED, value=0x43), GrinchRamData(0x800102EE, value=0x44),
|
||||
GrinchRamData(0x800102EF, value=0x44), GrinchRamData(0x800102F0, value=0x45),
|
||||
GrinchRamData(0x800102F1, value=0x46), GrinchRamData(0x800102F2, value=0x47),
|
||||
GrinchRamData(0x800102F3, value=0x48), GrinchRamData(0x800102F4, value=0x49),
|
||||
GrinchRamData(0x800102F5, value=0x4A), GrinchRamData(0x800102F6, value=0x4B),
|
||||
GrinchRamData(0x800102F7, value=0x4C), GrinchRamData(0x800102F8, value=0x4D)])
|
||||
}
|
||||
|
||||
#Mission Specific Items
|
||||
MISSION_ITEMS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Who Cloak": GrinchItemData("Mission Specific Items", 200, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=1)]),
|
||||
"Painting Bucket": GrinchItemData("Mission Specific Items", 201, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=2)]),
|
||||
"Scissors": GrinchItemData("Mission Specific Items", 202, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=7)]),
|
||||
"Glue Bucket": GrinchItemData("Mission Specific Items", 203, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=5)]),
|
||||
"Cable Car Access Card": GrinchItemData("Mission Specific Items", 204, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=6)]),
|
||||
"Drill": GrinchItemData("Mission Specific Items", 205, IC.progression,
|
||||
[GrinchRamData(0x800101FA, binary_bit_pos=3)]),
|
||||
"Rope": GrinchItemData("Mission Specific Items", 206, IC.progression,
|
||||
[GrinchRamData(0x800101FA, binary_bit_pos=2)]),
|
||||
"Hook": GrinchItemData("Mission Specific Items", 207, IC.progression,
|
||||
[GrinchRamData(0x800101FA, binary_bit_pos=1)]),
|
||||
"Sculpting Tools": GrinchItemData("Mission Specific Items", 208, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=3)]),
|
||||
"Hammer": GrinchItemData("Mission Specific Items", 209, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=4)]),
|
||||
"Scout Clothes": GrinchItemData("Mission Specific Items", 210, IC.progression,
|
||||
[GrinchRamData(0x800101F9, binary_bit_pos=8)])
|
||||
}
|
||||
|
||||
#Sleigh Parts
|
||||
SLEIGH_PARTS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Exhaust Pipes": GrinchItemData("Sleigh Parts", 300, IC.progression_skip_balancing,
|
||||
[GrinchRamData(0x800101FB, binary_bit_pos=3), GrinchRamData(0x800100AA, binary_bit_pos=6)]),
|
||||
"GPS": GrinchItemData("Sleigh Parts", 301, IC.progression_skip_balancing,
|
||||
[GrinchRamData(0x800101FB, binary_bit_pos=6), GrinchRamData(0x800100AA, binary_bit_pos=6)]),
|
||||
"Tires": GrinchItemData("Sleigh Parts", 302, IC.progression_skip_balancing,
|
||||
[GrinchRamData(0x800101FB, binary_bit_pos=5), GrinchRamData(0x800100AA, binary_bit_pos=6)]),
|
||||
"Skis": GrinchItemData("Sleigh Parts", 303, IC.progression_skip_balancing,
|
||||
[GrinchRamData(0x800101FB, binary_bit_pos=4), GrinchRamData(0x800100AA, binary_bit_pos=6)]),
|
||||
"Twin-End Tuba": GrinchItemData("Sleigh Parts", 304, IC.progression_skip_balancing,
|
||||
[GrinchRamData(0x800101FB, binary_bit_pos=7), GrinchRamData(0x800100AA, binary_bit_pos=6)])
|
||||
}
|
||||
|
||||
#Access Keys
|
||||
KEYS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Whoville Vacuum Access": GrinchItemData("Vacuum Access", 400, IC.progression,
|
||||
[GrinchRamData()]),
|
||||
"Who Forest Vacuum Access": GrinchItemData("Vacuum Access", 401, IC.progression,
|
||||
[GrinchRamData(0x800100AA, binary_bit_pos=3)]),
|
||||
"Who Dump Vacuum Access": GrinchItemData("Vacuum Access", 402, IC.progression,
|
||||
[GrinchRamData(0x800100AA, binary_bit_pos=4)]),
|
||||
"Who Lake Vacuum Access": GrinchItemData("Vacuum Access", 403, IC.progression,
|
||||
[GrinchRamData(0x800100AA, binary_bit_pos=5)]),
|
||||
"Progressive Vacuum Access": GrinchItemData("Vacuum Access", 404, IC.progression,
|
||||
[GrinchRamData()]),
|
||||
"Spin N' Win Door Unlock": GrinchItemData("Supadow Door Unlocks", 405, IC.progression,
|
||||
[GrinchRamData()]),
|
||||
"Dankamania Door Unlock": GrinchItemData("Supadow Door Unlocks", 406, IC.progression,
|
||||
[GrinchRamData()]),
|
||||
"The Copter Race Contest Door Unlock": GrinchItemData("Supadow Door Unlocks", 407, IC.progression,
|
||||
[GrinchRamData()]),
|
||||
"Progressive Supadow Door Unlock": GrinchItemData("Supadow Door Unlocks", 408, IC.progression,
|
||||
[GrinchRamData()])
|
||||
}
|
||||
|
||||
#Misc Items
|
||||
MISC_ITEMS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Fully Healed Grinch": GrinchItemData("Health Items", 500, IC.filler, [GrinchRamData(0x800E8FDC, value=120)]),
|
||||
"Heart of Stones": GrinchItemData("Health Items", 501, IC.useful, [GrinchRamData(0x800100ED, value=1)]),
|
||||
"5 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 502, IC.filler, [GrinchRamData(0x80010058, value=5)]),
|
||||
"10 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 503, IC.filler, [GrinchRamData(0x80010058, value=10)]),
|
||||
"20 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 504, IC.filler, [GrinchRamData(0x80010058, value=20)])
|
||||
}
|
||||
|
||||
#Traps
|
||||
TRAPS_TABLE: dict[str, GrinchItemData] = {
|
||||
"Ice Trap": GrinchItemData("Traps", 600, IC.trap, [GrinchRamData()]),
|
||||
"Bee Trap": GrinchItemData("Traps", 601, IC.trap, [GrinchRamData()]),
|
||||
"Electric Trap": GrinchItemData("Traps", 602, IC.trap, [GrinchRamData()]),
|
||||
"Tip Toe Trap": GrinchItemData("Traps", 603, IC.trap, [GrinchRamData()]),
|
||||
"Damage Trap": GrinchItemData("Traps", 604, IC.trap, [GrinchRamData(0x800E8FDC, value=20)]),
|
||||
"Depletion Trap": GrinchItemData("Traps", 605, IC.trap, [GrinchRamData(0x80010058, value=0)]),
|
||||
"Dump it to Crumpit": GrinchItemData("Traps", 606, IC.trap,
|
||||
[GrinchRamData(0x80010000, value=0x05), GrinchRamData(0x8008FB94, value=1)]),
|
||||
"Rocket Spring Trap": GrinchItemData("Traps", 607, IC.trap, [GrinchRamData()]),
|
||||
"Who sent me here?": GrinchItemData("Traps", 608, IC.trap, [GrinchRamData(0x8008FB94, value=1)])
|
||||
}
|
130
worlds/grinch/Locations.py
Normal file
130
worlds/grinch/Locations.py
Normal file
@@ -0,0 +1,130 @@
|
||||
from BaseClasses import Location
|
||||
|
||||
class GrinchLocation(Location):
|
||||
region: str
|
||||
code: Optional[int]
|
||||
location_group: str
|
||||
update_ram_addr: Optional[list[GrinchRamData]]
|
||||
|
||||
grinch_locations = {
|
||||
#Visitsanity
|
||||
"Enter Whoville": GrinchLocationData("Visitsanity", 100, [GrinchRamData()]),
|
||||
"Enter the Post Office": GrinchLocationData("Visitsanity", 101, [GrinchRamData()]),
|
||||
"Enter the Town Hall": GrinchLocationData("Visitsanity", 102, [GrinchRamData()]),
|
||||
"Enter the Countdown-To-Xmas Clock Tower": GrinchLocationData("Visitsanity", 103, [GrinchRamData()]),
|
||||
"Enter Who Forest": GrinchLocationData("Visitsanity", 104, [GrinchRamData()]),
|
||||
"Enter the Ski Resort": GrinchLocationData("Visitsanity", 105, [GrinchRamData()]),
|
||||
"Enter the Civic Center": GrinchLocationData("Visitsanity", 106, [GrinchRamData()]),
|
||||
"Enter Who Dump": GrinchLocationData("Visitsanity", 107, [GrinchRamData()]),
|
||||
"Enter the Guardian's House Mine Field": GrinchLocationData("Visitsanity", 108, [GrinchRamData()]),
|
||||
"Enter the exterior of the Power Plant": GrinchLocationData("Visitsanity", 109, [GrinchRamData()]),
|
||||
"Enter the interior of the Power Plant": GrinchLocationData("Visitsanity", 110, [GrinchRamData()]),
|
||||
"Enter Who Lake": GrinchLocationData("Visitsanity", 111, [GrinchRamData()]),
|
||||
"Enter the Submarine World": GrinchLocationData("Visitsanity", 112, [GrinchRamData()]),
|
||||
"Enter the Scout's Hut": GrinchLocationData("Visitsanity", 113, [GrinchRamData()]),
|
||||
"Enter the North Shore": GrinchLocationData("Visitsanity", 114, [GrinchRamData()]),
|
||||
"Enter the Mayor's Villa": GrinchLocationData("Visitsanity", 115, [GrinchRamData()]),
|
||||
#Whoville Missions
|
||||
"Smashing Snowmen": GrinchLocationData("Whoville Missions", 200, [GrinchRamData()]),
|
||||
"Shuffling The Mail": GrinchLocationData("Whoville Missions", 201, [GrinchRamData()]),
|
||||
"Painting The Mayor's Posters": GrinchLocationData("Whoville Missions", 202, [GrinchRamData()]),
|
||||
"Launching Eggs Into Houses": GrinchLocationData("Whoville Missions", 203, [GrinchRamData()]),
|
||||
"Modifying The Mayor's Statue": GrinchLocationData("Whoville Missions", 204, [GrinchRamData()]),
|
||||
"Advancing The Countdown-To-Xmas Clock": GrinchLocationData("Whoville Missions", 205, [GrinchRamData()]),
|
||||
"Squashing All Gifts in Whoville": GrinchLocationData("Whoville Missions", 206, [GrinchRamData()]),
|
||||
#Who Forest Missions
|
||||
"Making Xmas Trees Droop": GrinchLocationData("Who Forest Missions", 300, [GrinchRamData()]),
|
||||
"Sabotaging Snow Cannon With Glue": GrinchLocationData("Who Forest Missions", 301, [GrinchRamData()]),
|
||||
"Putting Beehives In Cabins": GrinchLocationData("Who Forest Missions", 302, [GrinchRamData()]),
|
||||
"Sliming The Mayor's Skis": GrinchLocationData("Who Forest Missions", 303, [GrinchRamData()]),
|
||||
"Replacing The Candles On The Cake With Fireworks": GrinchLocationData("Who Forest Missions", 304, [GrinchRamData()]),
|
||||
"Squashing All Gifts in Who Forest": GrinchLocationData("Who Forest Missions", 305, [GrinchRamData()]),
|
||||
#Who Dump Missions
|
||||
"Stealing Food From Birds": GrinchLocationData("Who Dump Missions", 400, [GrinchRamData()]),
|
||||
"Feeding The Computer With Robot Parts": GrinchLocationData("Who Dump Missions", 401, [GrinchRamData()]),
|
||||
"Infesting The Mayor's House With Rats": GrinchLocationData("Who Dump Missions", 402, [GrinchRamData()]),
|
||||
"Conducting The Stinky Gas To Who-Bris' Shack": GrinchLocationData("Who Dump Missions", 403, [GrinchRamData()]),
|
||||
"Shaving Who Dump Guardian": GrinchLocationData("Who Dump Missions", 404, [GrinchRamData()]),
|
||||
"Short-Circuiting Power-Plant": GrinchLocationData("Who Dump Missions", 405, [GrinchRamData()]),
|
||||
"Squashing All Gifts in Who Dump": GrinchLocationData("Who Dump Missions", 406, [GrinchRamData()]),
|
||||
#Who Lake Missions
|
||||
"Putting Thistles In Shorts": GrinchLocationData("Who Lake Missions", 500, [GrinchRamData()]),
|
||||
"Sabotaging The Tents": GrinchLocationData("Who Lake Missions", 501, [GrinchRamData()]),
|
||||
"Drilling Holes In Canoes": GrinchLocationData("Who Lake Missions", 502, [GrinchRamData()]),
|
||||
"Modifying The Marine Mobile": GrinchLocationData("Who Lake Missions", 503, [GrinchRamData()]),
|
||||
"Hooking The Mayor's Bed To The Motorboat": GrinchLocationData("Who Lake Missions", 504, [GrinchRamData()]),
|
||||
"Squashing All Gifts in Who Lake": GrinchLocationData("Who Lake Missions", 505, [GrinchRamData()]),
|
||||
#Binoculars Blueprints
|
||||
"Binoculars Blueprint - Post Office Roof": GrinchLocationData("Binocular Blueprints", 600, [GrinchRamData()]),
|
||||
"Binoculars Blueprint - City Hall Library - Left Side": GrinchLocationData("Binocular Blueprints", 601, [GrinchRamData()]),
|
||||
"Binoculars Blueprint - City Hall Library - Front Side": GrinchLocationData("Binocular Blueprints", 602, [GrinchRamData()]),
|
||||
"Binoculars Blueprint - City Hall Library - Right Side": GrinchLocationData("Binocular Blueprints", 603, [GrinchRamData()]),
|
||||
#Rotten Egg Launcher Blueprints
|
||||
"Rotten Egg Launcher Blueprint - Outside City Hall": GrinchLocationData("Rotten Egg Launcher Blueprints", 700, [GrinchRamData()]),
|
||||
"Rotten Egg Launcher Blueprint - Outside Clock Tower": GrinchLocationData("Rotten Egg Launcher Blueprints", 701, [GrinchRamData()]),
|
||||
"Rotten Egg Launcher Blueprint - Post Office - Front of Silver Door": GrinchLocationData("Rotten Egg Launcher Blueprints", 702, [GrinchRamData()]),
|
||||
"Rotten Egg Launcher Blueprint - Post Office - After Mission Completion": GrinchLocationData("Rotten Egg Launcher Blueprints", 703, [GrinchRamData()]),
|
||||
#Rocket Spring Blueprints
|
||||
"Rocket Spring Blueprint - Behind Vacuum": GrinchLocationData("Rocket Spring Blueprints", 800, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Front of 2nd House near entrance": GrinchLocationData("Rocket Spring Blueprints", 801, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Near Tree House on Ground": GrinchLocationData("Rocket Spring Blueprints", 802, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Near Cable Car House": GrinchLocationData("Rocket Spring Blueprints", 804, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Near Who Snowball in Cave": GrinchLocationData("Rocket Spring Blueprints", 805, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Branch Platform Closest to Glue Cannon": GrinchLocationData("Rocket Spring Blueprints", 806, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Branch Platform Near Beast": GrinchLocationData("Rocket Spring Blueprints", 807, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - Branch Platform Ledge Grab House": GrinchLocationData("Rocket Spring Blueprints", 808, [GrinchRamData()]),
|
||||
"Rocket Spring Blueprint - On Tree House": GrinchLocationData("Rocket Spring Blueprints", 809, [GrinchRamData()]),
|
||||
#Slime Shooter Blueprints
|
||||
"Slime Shooter Blueprint - Branch Platform Elevated House": GrinchLocationData("Slime Shooter Blueprints", 900, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - Branch Platform House next to Beast": GrinchLocationData("Slime Shooter Blueprint", 901, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - House near Civic Center Cave": GrinchLocationData("Slime Shooter Blueprints", 902, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - House next to Tree House": GrinchLocationData("Slime Shooter Blueprints", 903, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - House across from Tree House": GrinchLocationData("Slime Shooter Blueprints", 904, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - 2nd House near entrance right side": GrinchLocationData("Slime Shooter Blueprints", 905, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - 2nd House near entrance left side": GrinchLocationData("Slime Shooter Blueprints", 906, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - 2nd House near entrance inbetween blueprints": GrinchLocationData("Slime Shooter Blueprints", 907, [GrinchRamData()]),
|
||||
"Slime Shooter Blueprint - House near entrance": GrinchLocationData("Slime Shooter Blueprints", 908, [GrinchRamData()]),
|
||||
#Octopus Climbing Device
|
||||
"Octopus Climbing Device Blueprint - Middle Pipe": GrinchLocationData("Octopus Climbing Device Blueprints", 1001, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Right Pipe": GrinchLocationData("Octopus Climbing Device Blueprints", 1002, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Mayor's House Vent Cage": GrinchLocationData("Octopus Climbing Device Blueprints", 1003, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Left Pipe": GrinchLocationData("Octopus Climbing Device Blueprints", 1004, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Near Power Plant Wall on left side": GrinchLocationData("Octopus Climbing Device Blueprints", 1005, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Near Who-Bris' Shack": GrinchLocationData("Octopus Climbing Device Blueprints", 1006, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Guardian's House - Left side of Guardian House": GrinchLocationData("Octopus Climbing Device Blueprints", 1007, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Guardian's House - Right side of Guardian House": GrinchLocationData("Octopus Climbing Device Blueprints", 1008, [GrinchRamData()]),
|
||||
"Octopus Climbing Device Blueprint - Inside Guardian's House": GrinchLocationData("Octopus Climbing Device Blueprints", 1009, [GrinchRamData()]),
|
||||
#Marine Mobile Blueprints
|
||||
"Marine Mobile Blueprint - South Shore - Bridge to Scout's Hut": GrinchLocationData("Marine Mobile Blueprints", 1100, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Tent near Porcupine": GrinchLocationData("Marine Mobile Blueprints", 1101, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Near Scout Shack": GrinchLocationData("Marine Mobile Blueprints", 1102, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Under a Hill Bridge": GrinchLocationData("Marine Mobile Blueprints", 1103, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Scout's Hut Roof": GrinchLocationData("Marine Mobile Blueprints", 1104, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Jump from Boulder": GrinchLocationData("Marine Mobile Blueprints", 1105, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Rope Swing by Beast": GrinchLocationData("Marine Mobile Blueprints", 1106, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - South Shore - Near Summer Beast": GrinchLocationData("Marine Mobile Blueprints", 1107, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Below Bridge": GrinchLocationData("Marine Mobile Blueprints", 1108, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Behind Skunk Hut": GrinchLocationData("Marine Mobile Blueprints", 1109, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Inside Skunk Hut": GrinchLocationData("Marine Mobile Blueprints", 1110, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Fenced in Area": GrinchLocationData("Marine Mobile Blueprints", 1111, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Boulder Box near Bridge": GrinchLocationData("Marine Mobile Blueprints", 1112, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Boulder Box behind Skunk Hut": GrinchLocationData("Marine Mobile Blueprints", 1113, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Inside Drill House": GrinchLocationData("Marine Mobile Blueprints", 1114, [GrinchRamData()]),
|
||||
"Marine Mobile Blueprint - North Shore - Crow Platform": GrinchLocationData("Marine Mobile Blueprints", 1115, [GrinchRamData()]),
|
||||
#Grinch Copter Blueprints
|
||||
"Grinch Copter Blueprint - Whoville City Hall - Safe Room": GrinchLocationData("Grinch Copter Blueprints", 1200, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Whoville City Hall - Statue Room": GrinchLocationData("Grinch Copter Blueprints", 1201, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Whoville Clock Tower - Before Bells": GrinchLocationData("Grinch Copter Blueprints", 1202, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Whoville Clock Tower - After Bells": GrinchLocationData("Grinch Copter Blueprints", 1203, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Forest Ski Resort - Inside Dog's Fence": GrinchLocationData("Grinch Copter Blueprints", 1204, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Forest Ski Resort - Max Cave": GrinchLocationData("Grinch Copter Blueprints", 1205, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Forest Civic Center - Climb across wall": GrinchLocationData("Grinch Copter Blueprints", 1206, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Forest Civic Center - Icicle": GrinchLocationData("Grinch Copter Blueprints", 1207, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Dump Outside of Power Plant - First": GrinchLocationData("Grinch Copter Blueprints", 1208, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Dump Outside of Power Plant - Second Gate": GrinchLocationData("Grinch Copter Blueprints", 1209, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Dump Inside of Power Plant - Before Mission": GrinchLocationData("Grinch Copter Blueprints", 1210, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Dump Inside of Power Plant - After Mission": GrinchLocationData("Grinch Copter Blueprints", 1211, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Lake South Shore - Submarine World - Above Surface": GrinchLocationData("Grinch Copter Blueprints", 1212, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Lake South Shore - Submarine World - Underwater": GrinchLocationData("Grinch Copter Blueprints", 1213, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Lake North Shore - Mayor's Villa - Tree Branch": GrinchLocationData("Grinch Copter Blueprints", 1214, [GrinchRamData()]),
|
||||
"Grinch Copter Blueprint - Who Lake North Shore - Mayor's Villa - Cave": GrinchLocationData("Grinch Copter Blueprints", 1215, [GrinchRamData()]),
|
37
worlds/grinch/Options.py
Normal file
37
worlds/grinch/Options.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from Options import FreeText, NumericOption, Toggle, DefaultOnToggle, Choice, TextChoice, Range, NamedRange, OptionList
|
||||
|
||||
class KeyType(Choice):
|
||||
"""Selects whether you want your access items to be separated or progressive"""
|
||||
display_name = "Key Type"
|
||||
option_separated = 0
|
||||
option_progressive = 1
|
||||
default = 0
|
||||
|
||||
# class StartingArea(Choice):
|
||||
# """
|
||||
# Here, you can select which area you'll start the game with. Whichever one you pick is the region you'll have access to at the start of the Multiworld.
|
||||
# """
|
||||
# option_whoville = 0
|
||||
# option_who_forest = 1
|
||||
# option_who_dump = 2
|
||||
# option_who_lake = 3
|
||||
# display_name = "Starting Area"
|
||||
|
||||
# class Supadow(Toggle):
|
||||
# """Enables completing minigames through the Supadows in Mount Crumpit as checks. (9 locations)"""
|
||||
# display_name = "Supadow Minigame Locations"
|
||||
#
|
||||
#
|
||||
# class Gifts(Toggle):
|
||||
# """Missions that require you to squash every present in a level. (4 locations)"""
|
||||
# display_name = "Gift Collection Locations"
|
||||
|
||||
|
||||
# class Movesanity(Toggle):
|
||||
# """Randomizes Grinch's moveset along with randomizing max into the pool. (Currently randomizes Max)"""
|
||||
# display_name = "Movesanity"
|
||||
|
||||
|
||||
class RottenEggs(Toggle):
|
||||
"""Determine whether or not you run out of rotten eggs when you utilize your gadgets."""
|
||||
display_name = "Unlimited Rotten Eggs"
|
0
worlds/grinch/RAMAddress.py
Normal file
0
worlds/grinch/RAMAddress.py
Normal file
26
worlds/grinch/Regions.py
Normal file
26
worlds/grinch/Regions.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from BaseClasses import Region, MultiWorld
|
||||
from .Locations import GrinchLocation, grinch_locations
|
||||
from .Options import GrinchOptions
|
||||
|
||||
def create_regions(player: int, world: World, options: GrinchOptions):
|
||||
mainareas_list = [
|
||||
"Whoville",
|
||||
"Who Forest",
|
||||
"Who Dump",
|
||||
"Who Lake"
|
||||
]
|
||||
|
||||
subareas_list = [
|
||||
"Post Office",
|
||||
"City Hall",
|
||||
"Countdown to X-Mas Tower",
|
||||
"Ski Resort",
|
||||
"Civic Center",
|
||||
"Minefield",
|
||||
"Outside Power Plant",
|
||||
"Inside Power Plant",
|
||||
"Submarine World",
|
||||
"Scout's Hut",
|
||||
"North Shore",
|
||||
"Mayor's Villa"
|
||||
]
|
64
worlds/grinch/Rules.py
Normal file
64
worlds/grinch/Rules.py
Normal file
@@ -0,0 +1,64 @@
|
||||
def set_rules(world: World, world: World, options: GrinchOptions, int):
|
||||
|
||||
rules_dict = {
|
||||
|
||||
}
|
||||
|
||||
access_rules_dict = {
|
||||
"Whoville": (
|
||||
"WV Key"
|
||||
"Post Office": (
|
||||
"Who Cloak"
|
||||
),
|
||||
"City Hall": (
|
||||
connect_region = "Whoville",
|
||||
"REL"
|
||||
),
|
||||
"Who Forest": (
|
||||
"WF Key",
|
||||
"Prog Access Key": 1
|
||||
),
|
||||
"Ski Resort": (
|
||||
connect_region = "Who Forest",
|
||||
"Cable Car Access Card"
|
||||
),
|
||||
"Civic Center": (
|
||||
connect_region = "Who Forest",
|
||||
"GC",
|
||||
"OCD"
|
||||
),
|
||||
"Who Dump": (
|
||||
"WD Key",
|
||||
"Prog Access Key": 2
|
||||
),
|
||||
"Minefield" (
|
||||
connect_region = "Who Dump",
|
||||
"REL+SS+RS",
|
||||
"REL+GC"
|
||||
),
|
||||
"Outside Power Plant": (
|
||||
connect_region = "Who Dump",
|
||||
"(REL|SS)+GC",
|
||||
"(REL|SS)+OCD+SS+RS"
|
||||
),
|
||||
"Inside Power Plant": (
|
||||
connect_region = "Outside Power Plant",
|
||||
"REL+GC",
|
||||
"REL+OCD+SS+RS"
|
||||
),
|
||||
"Who Lake": (
|
||||
"WL Key",
|
||||
"Prog Access Key": 3
|
||||
),
|
||||
"North Shore": (
|
||||
connect_region: "Who Lake",
|
||||
"Scout Clothes"
|
||||
),
|
||||
"Mayor's Villa": (
|
||||
connect_region = "North Shore"
|
||||
),
|
||||
"Submarine World": (
|
||||
connect_region = "Who Lake",
|
||||
"MM"
|
||||
)
|
||||
}
|
1
worlds/grinch/__init__.py
Normal file
1
worlds/grinch/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
class GrinchWorld(world):
|
21
worlds/grinch/docs/en_The Grinch.md
Normal file
21
worlds/grinch/docs/en_The Grinch.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# The Grinch
|
||||
|
||||
## Where is the options page?
|
||||
|
||||
The [player options page for this game](../player-options) contains all the
|
||||
options you need to configure and export a config file.
|
||||
|
||||
## What does randomization do to this game?
|
||||
|
||||
|
||||
|
||||
## What is the goal of The Grinch when randomized?
|
||||
|
||||
|
||||
|
||||
## Which items can be in another player's world?
|
||||
|
||||
|
||||
|
||||
## When the player receives an item, what happens?
|
||||
|
67
worlds/grinch/docs/setup_en.md
Normal file
67
worlds/grinch/docs/setup_en.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# The Grinch - Setup Guide
|
||||
|
||||
## Required Software
|
||||
- [Archipelago](https://github.com/ArchipelagoMW/Archipelago/releases). Please use version 0.6.2 or later for integrated
|
||||
BizHawk support.
|
||||
- Legally obtained NTSC Bin ROM file, probably named something like `Grinch, The (USA) (En,Fr,Es).bin`.
|
||||
- [BizHawk](https://tasvideos.org/BizHawk/ReleaseHistory) Version 2.9.1 is supported, but I can't promise if any version is stable or not.
|
||||
- The latest `thegrinch.apworld` file. You can find this on the [Releases page](https://github.com/MarioSpore/Grinch-AP/releases/latest). Put this in your `Archipelago/custom_worlds` folder.
|
||||
|
||||
## Configuring BizHawk
|
||||
|
||||
|
||||
|
||||
## Configuring your Config (.yaml) file
|
||||
|
||||
### What is a config file and why do I need one?
|
||||
|
||||
See the guide on setting up a basic YAML at the Archipelago setup
|
||||
guide: [Basic Multiworld Setup Guide](/tutorial/Archipelago/setup/en)
|
||||
|
||||
### Where do I get a config file?
|
||||
|
||||
The Player options page on the website allows you to configure your personal
|
||||
options and export a config file from them: [The Grinch Player Options Page](../player-options)
|
||||
|
||||
### Verifying your config file
|
||||
|
||||
If you would like to validate your config file to make sure it works, you may do
|
||||
so on the YAML Validator page: [YAML Validation page](/check)
|
||||
|
||||
## Joining a MultiWorld Game
|
||||
|
||||
### Obtain your patch file and create your ROM
|
||||
|
||||
When you join a multiworld game, you will be asked to provide your config file to whomever is
|
||||
hosting. Once that is done, the host will provide you with either a link to download your patch
|
||||
file, or with a zip file containing everyone's patch files. Your patch file should have a `.apgrinch`
|
||||
extension.
|
||||
|
||||
Put your patch file on your desktop or somewhere convenient, and double click it. This should
|
||||
automatically launch the client, and will also create your ROM in the same place as your patch file.
|
||||
|
||||
### Connect to the Multiserver
|
||||
|
||||
Once both the client and the emulator are started, they must be connected. **This should happen automatically.**
|
||||
However, if the lua script window doesn't appear, then within the emulator click
|
||||
on the "Tools" menu and select "Lua Console". Click the folder button or press Ctrl+O to open a Lua
|
||||
script. Navigate to your Archipelago install folder and open `data/lua/connector_bizhawk_generic.lua`.
|
||||
|
||||
To connect the client to the multiserver simply put `<address>:<port>` on the text field on top and
|
||||
press enter (if the server uses a password, type in the bottom text field
|
||||
`/connect <address>:<port> [password]`)
|
||||
|
||||
## Hosting a MultiWorld game
|
||||
|
||||
The recommended way to host a game is to use our hosting service. The process is relatively simple:
|
||||
|
||||
1. Collect config files from your players.
|
||||
2. Upload the config files to the Generate page above.
|
||||
- Generate page: [WebHost Seed Generation Page](/generate)
|
||||
3. Wait a moment while the seed is generated.
|
||||
4. When the seed is generated, you will be redirected to a "Seed Info" page.
|
||||
5. Click "Create New Room". This will take you to the server page. Provide the link to this page to
|
||||
your players, so they may download their patch files from there.
|
||||
6. Note that a link to a MultiWorld Tracker is at the top of the room page. The tracker shows the
|
||||
progress of all players in the game. Any observers may also be given the link to this page.
|
||||
7. Once all players have joined, you may begin playing.
|
Reference in New Issue
Block a user