mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

* MMBN3: Press program now has proper color index when received remotely * Initial commit of OSRS untangled from MMBN3 branch * Fixes some broken region connections * Removes some locations * Rearranges locations to fill in slots left by removed locations * Adds starting area rando * Moves Oak and Willow trees to resource regions * Fixes various PEP8 violations * Refactor of regions * Fixes variable capture issue with region rules * Partial completion of brutal grind logic * Finishes can_reach_skill function * Adds skill requirements to location rules, fixes regions rules * Adds documentation for OSRS * Removes match statement * Updates Data Version to test mode to prevent item name caching * Fixes starting spawn logic for east varrock * Fixes river lum crossing logic to not assume you can phase across water * Prevents equipping items when you haven't unlocked them * Changes canoe logic to not require huge levels * Skeletoning out some data I'll need for variable task system * Adds csvs and parser for logic * Adds Items parsing * Fixes the spawning logic to not default to Chunksanity when you didn't pick it * Begins adding generation rules for data-driven logic * Moves region handling and location creating to different methods * Adds logic limits to Options * Begun the location generation has * Randomly generates tasks for each skill until populated * Mopping up improper names, adding custom logic, and fixes location rolling * Drastically cleans up the location rolling loop * Modifies generation to properly use local variables and pass unit tests * Game is now generating, but rules don't seem to work * Lambda capture, my old nemesis. We meet again * Fixes issue with Corsair Cove item requirement causing logic loop * Okay one more fix, another variable capture * On second thought lets not have skull sceptre tasks. 'Tis a silly place * Removes QP from item pool (they're events not items) * Removes Stronghold floor tasks, no varbit to track them * Loads CSV with pkutil so it can be used in apworld * Fixes logic of skill tasks and adds QP requirements to long grinds * Fixes pathing in pkgutil call * Better handling for empty task categories, no longer throws errors * Fixes order for progressive tasks, removes un-checkable spider task * Fixes logic issues related to stew and the Blurite caves * Fixes issues generating causing tests to sporadically fail * Adds missing task that caused off-by-one error * Updates to new Options API * Updates generation to function properly with the Universal Tracker (Thanks Faris) * Replaces runtime CSV parsing with pre-made python files generated from CSVs * Switches to self.random and uses random.choice instead of doing it manually * Fixes to typing, variable names, iterators, and continue conditions * Replaces Name classes with Enums * Fixes parse error on region special rules * Skill requirements check now returns an accessrule instead of being one that checks options * Updates documentation and setup guide * Adjusts maximum numbers for combat and general tasks * Fixes region names so dictionary lookup works for chunksanity * Update worlds/osrs/docs/en_Old School Runescape.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Update worlds/osrs/docs/en_Old School Runescape.md Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com> * Updates readme.md and codeowners doc * Removes erroneous East Varrock -> Al Kharid connection * Changes to canoe logic to account for woodcutting level options * Fixes embarassing typo on 'Edgeville' * Moves Logic CSVs to separate repository, addresses suggested changes on PR * Fixes logic error in east/west lumbridge regions. Fixes incorrect List typing in main * Removes task types with weight 0 from the list of rollable tasks * Missed another place that the task type had to be removed if 0 weight * Prevents adding an empty task weight if levels are too restrictive for tasks to be added * Removes giant blank space in error message * Adds player name to error for not having enough available tasks --------- Co-authored-by: Nicholas Saylor <79181893+nicholassaylor@users.noreply.github.com>
213 lines
8.0 KiB
Python
213 lines
8.0 KiB
Python
from enum import Enum
|
|
|
|
|
|
class RegionNames(str, Enum):
|
|
Lumbridge = "Lumbridge"
|
|
Lumbridge_Swamp = "Lumbridge Swamp"
|
|
Lumbridge_Farms_East = "Lumbridge Farms East"
|
|
Lumbridge_Farms_West = "Lumbridge Farms West"
|
|
HAM_Hideout = "HAM Hideout"
|
|
Draynor_Village = "Draynor Village"
|
|
Draynor_Manor = "Draynor Manor"
|
|
Wizards_Tower = "Wizard Tower"
|
|
Al_Kharid = "Al Kharid"
|
|
Citharede_Abbey = "Citharede Abbey"
|
|
South_Of_Varrock = "South of Varrock"
|
|
Central_Varrock = "Central Varrock"
|
|
Varrock_Palace = "Varrock Palace"
|
|
East_Of_Varrock = "East Varrock"
|
|
West_Varrock = "West Varrock"
|
|
Edgeville = "Edgeville"
|
|
Barbarian_Village = "Barbarian Village"
|
|
Monastery = "Monastery"
|
|
Ice_Mountain = "Ice Mountain"
|
|
Dwarven_Mines = "Dwarven Mines"
|
|
Falador = "Falador"
|
|
Falador_Farm = "Falador Farms"
|
|
Crafting_Guild = "Crafting Guild"
|
|
Cooks_Guild = "Cook's Guild"
|
|
Rimmington = "Rimmington"
|
|
Port_Sarim = "Port Sarim"
|
|
Mudskipper_Point = "Mudskipper Point"
|
|
Karamja = "Karamja"
|
|
Corsair_Cove = "Corsair Cove"
|
|
Wilderness = "The Wilderness"
|
|
Crandor = "Crandor"
|
|
# Resource Regions
|
|
Egg = "Egg"
|
|
Sheep = "Sheep"
|
|
Milk = "Milk"
|
|
Wheat = "Wheat"
|
|
Windmill = "Windmill"
|
|
Spinning_Wheel = "Spinning Wheel"
|
|
Imp = "Imp"
|
|
Bronze_Ores = "Bronze Ores"
|
|
Clay_Rock = "Clay Ore"
|
|
Coal_Rock = "Coal Ore"
|
|
Iron_Rock = "Iron Ore"
|
|
Silver_Rock = "Silver Ore"
|
|
Gold_Rock = "Gold Ore"
|
|
Furnace = "Furnace"
|
|
Anvil = "Anvil"
|
|
Oak_Tree = "Oak Tree"
|
|
Willow_Tree = "Willow Tree"
|
|
Shrimp = "Shrimp Spot"
|
|
Fly_Fish = "Fly Fishing Spot"
|
|
Lobster = "Lobster Spot"
|
|
Mind_Runes = "Mind Runes"
|
|
Canoe_Tree = "Canoe Tree"
|
|
|
|
__str__ = str.__str__
|
|
|
|
|
|
class ItemNames(str, Enum):
|
|
Lumbridge = "Area: Lumbridge"
|
|
Lumbridge_Swamp = "Area: Lumbridge Swamp"
|
|
Lumbridge_Farms = "Area: Lumbridge Farms"
|
|
HAM_Hideout = "Area: HAM Hideout"
|
|
Draynor_Village = "Area: Draynor Village"
|
|
Draynor_Manor = "Area: Draynor Manor"
|
|
Wizards_Tower = "Area: Wizard Tower"
|
|
Al_Kharid = "Area: Al Kharid"
|
|
Citharede_Abbey = "Area: Citharede Abbey"
|
|
South_Of_Varrock = "Area: South of Varrock"
|
|
Central_Varrock = "Area: Central Varrock"
|
|
Varrock_Palace = "Area: Varrock Palace"
|
|
East_Of_Varrock = "Area: East Varrock"
|
|
West_Varrock = "Area: West Varrock"
|
|
Edgeville = "Area: Edgeville"
|
|
Barbarian_Village = "Area: Barbarian Village"
|
|
Monastery = "Area: Monastery"
|
|
Ice_Mountain = "Area: Ice Mountain"
|
|
Dwarven_Mines = "Area: Dwarven Mines"
|
|
Falador = "Area: Falador"
|
|
Falador_Farm = "Area: Falador Farms"
|
|
Crafting_Guild = "Area: Crafting Guild"
|
|
Rimmington = "Area: Rimmington"
|
|
Port_Sarim = "Area: Port Sarim"
|
|
Mudskipper_Point = "Area: Mudskipper Point"
|
|
Karamja = "Area: Karamja"
|
|
Crandor = "Area: Crandor"
|
|
Corsair_Cove = "Area: Corsair Cove"
|
|
Wilderness = "Area: Wilderness"
|
|
Progressive_Armor = "Progressive Armor"
|
|
Progressive_Weapons = "Progressive Weapons"
|
|
Progressive_Tools = "Progressive Tools"
|
|
Progressive_Range_Armor = "Progressive Range Armor"
|
|
Progressive_Range_Weapon = "Progressive Range Weapon"
|
|
Progressive_Magic = "Progressive Magic Spell"
|
|
Lobsters = "10 Lobsters"
|
|
Swordfish = "5 Swordfish"
|
|
Energy_Potions = "10 Energy Potions"
|
|
Coins = "5,000 Coins"
|
|
Mind_Runes = "50 Mind Runes"
|
|
Chaos_Runes = "25 Chaos Runes"
|
|
Death_Runes = "10 Death Runes"
|
|
Law_Runes = "10 Law Runes"
|
|
QP_Cooks_Assistant = "1 QP (Cook's Assistant)"
|
|
QP_Demon_Slayer = "3 QP (Demon Slayer)"
|
|
QP_Restless_Ghost = "1 QP (The Restless Ghost)"
|
|
QP_Romeo_Juliet = "5 QP (Romeo & Juliet)"
|
|
QP_Sheep_Shearer = "1 QP (Sheep Shearer)"
|
|
QP_Shield_of_Arrav = "1 QP (Shield of Arrav)"
|
|
QP_Ernest_the_Chicken = "4 QP (Ernest the Chicken)"
|
|
QP_Vampyre_Slayer = "3 QP (Vampyre Slayer)"
|
|
QP_Imp_Catcher = "1 QP (Imp Catcher)"
|
|
QP_Prince_Ali_Rescue = "3 QP (Prince Ali Rescue)"
|
|
QP_Dorics_Quest = "1 QP (Doric's Quest)"
|
|
QP_Black_Knights_Fortress = "3 QP (Black Knights' Fortress)"
|
|
QP_Witchs_Potion = "1 QP (Witch's Potion)"
|
|
QP_Knights_Sword = "1 QP (The Knight's Sword)"
|
|
QP_Goblin_Diplomacy = "5 QP (Goblin Diplomacy)"
|
|
QP_Pirates_Treasure = "2 QP (Pirate's Treasure)"
|
|
QP_Rune_Mysteries = "1 QP (Rune Mysteries)"
|
|
QP_Misthalin_Mystery = "1 QP (Misthalin Mystery)"
|
|
QP_Corsair_Curse = "2 QP (The Corsair Curse)"
|
|
QP_X_Marks_the_Spot = "1 QP (X Marks The Spot)"
|
|
QP_Below_Ice_Mountain = "1 QP (Below Ice Mountain)"
|
|
|
|
__str__ = str.__str__
|
|
|
|
|
|
class LocationNames(str, Enum):
|
|
Q_Cooks_Assistant = "Quest: Cook's Assistant"
|
|
Q_Demon_Slayer = "Quest: Demon Slayer"
|
|
Q_Restless_Ghost = "Quest: The Restless Ghost"
|
|
Q_Romeo_Juliet = "Quest: Romeo & Juliet"
|
|
Q_Sheep_Shearer = "Quest: Sheep Shearer"
|
|
Q_Shield_of_Arrav = "Quest: Shield of Arrav"
|
|
Q_Ernest_the_Chicken = "Quest: Ernest the Chicken"
|
|
Q_Vampyre_Slayer = "Quest: Vampyre Slayer"
|
|
Q_Imp_Catcher = "Quest: Imp Catcher"
|
|
Q_Prince_Ali_Rescue = "Quest: Prince Ali Rescue"
|
|
Q_Dorics_Quest = "Quest: Doric's Quest"
|
|
Q_Black_Knights_Fortress = "Quest: Black Knights' Fortress"
|
|
Q_Witchs_Potion = "Quest: Witch's Potion"
|
|
Q_Knights_Sword = "Quest: The Knight's Sword"
|
|
Q_Goblin_Diplomacy = "Quest: Goblin Diplomacy"
|
|
Q_Pirates_Treasure = "Quest: Pirate's Treasure"
|
|
Q_Rune_Mysteries = "Quest: Rune Mysteries"
|
|
Q_Misthalin_Mystery = "Quest: Misthalin Mystery"
|
|
Q_Corsair_Curse = "Quest: The Corsair Curse"
|
|
Q_X_Marks_the_Spot = "Quest: X Marks the Spot"
|
|
Q_Below_Ice_Mountain = "Quest: Below Ice Mountain"
|
|
QP_Cooks_Assistant = "Points: Cook's Assistant"
|
|
QP_Demon_Slayer = "Points: Demon Slayer"
|
|
QP_Restless_Ghost = "Points: The Restless Ghost"
|
|
QP_Romeo_Juliet = "Points: Romeo & Juliet"
|
|
QP_Sheep_Shearer = "Points: Sheep Shearer"
|
|
QP_Shield_of_Arrav = "Points: Shield of Arrav"
|
|
QP_Ernest_the_Chicken = "Points: Ernest the Chicken"
|
|
QP_Vampyre_Slayer = "Points: Vampyre Slayer"
|
|
QP_Imp_Catcher = "Points: Imp Catcher"
|
|
QP_Prince_Ali_Rescue = "Points: Prince Ali Rescue"
|
|
QP_Dorics_Quest = "Points: Doric's Quest"
|
|
QP_Black_Knights_Fortress = "Points: Black Knights' Fortress"
|
|
QP_Witchs_Potion = "Points: Witch's Potion"
|
|
QP_Knights_Sword = "Points: The Knight's Sword"
|
|
QP_Goblin_Diplomacy = "Points: Goblin Diplomacy"
|
|
QP_Pirates_Treasure = "Points: Pirate's Treasure"
|
|
QP_Rune_Mysteries = "Points: Rune Mysteries"
|
|
QP_Misthalin_Mystery = "Points: Misthalin Mystery"
|
|
QP_Corsair_Curse = "Points: The Corsair Curse"
|
|
QP_X_Marks_the_Spot = "Points: X Marks the Spot"
|
|
QP_Below_Ice_Mountain = "Points: Below Ice Mountain"
|
|
Guppy = "Prepare a Guppy"
|
|
Cavefish = "Prepare a Cavefish"
|
|
Tetra = "Prepare a Tetra"
|
|
Barronite_Deposit = "Crush a Barronite Deposit"
|
|
Oak_Log = "Cut an Oak Log"
|
|
Willow_Log = "Cut a Willow Log"
|
|
Catch_Lobster = "Catch a Lobster"
|
|
Mine_Silver = "Mine Silver"
|
|
Mine_Coal = "Mine Coal"
|
|
Mine_Gold = "Mine Gold"
|
|
Smelt_Silver = "Smelt a Silver Bar"
|
|
Smelt_Steel = "Smelt a Steel Bar"
|
|
Smelt_Gold = "Smelt a Gold Bar"
|
|
Cut_Sapphire = "Cut a Sapphire"
|
|
Cut_Emerald = "Cut an Emerald"
|
|
Cut_Ruby = "Cut a Ruby"
|
|
Cut_Diamond = "Cut a Diamond"
|
|
K_Lesser_Demon = "Kill a Lesser Demon"
|
|
K_Ogress_Shaman = "Kill an Ogress Shaman"
|
|
Bake_Apple_Pie = "Bake an Apple Pie"
|
|
Bake_Cake = "Bake a Cake"
|
|
Bake_Meat_Pizza = "Bake a Meat Pizza"
|
|
Total_XP_5000 = "5,000 Total XP"
|
|
Total_XP_10000 = "10,000 Total XP"
|
|
Total_XP_25000 = "25,000 Total XP"
|
|
Total_XP_50000 = "50,000 Total XP"
|
|
Total_XP_100000 = "100,000 Total XP"
|
|
Total_Level_50 = "Total Level 50"
|
|
Total_Level_100 = "Total Level 100"
|
|
Total_Level_150 = "Total Level 150"
|
|
Total_Level_200 = "Total Level 200"
|
|
Combat_Level_5 = "Combat Level 5"
|
|
Combat_Level_15 = "Combat Level 15"
|
|
Combat_Level_25 = "Combat Level 25"
|
|
Travel_on_a_Canoe = "Travel on a Canoe"
|
|
Q_Dragon_Slayer = "Quest: Dragon Slayer"
|
|
|
|
__str__ = str.__str__
|