A Short Hike: Add new options and option groups (#3410)
* A Short Hike: New options and stuff * Add to slot data for poptracker * Address concerns * Address concerns * Fix indentations * Update option description * Address all issues * Group "or"s
This commit is contained in:
parent
be03dca774
commit
c554c3fdae
|
@ -10,15 +10,15 @@ class ItemDict(TypedDict):
|
|||
base_id = 82000
|
||||
|
||||
item_table: List[ItemDict] = [
|
||||
{"name": "Stick", "id": base_id + 1, "count": 8, "classification": ItemClassification.progression_skip_balancing},
|
||||
{"name": "Stick", "id": base_id + 1, "count": 0, "classification": ItemClassification.progression_skip_balancing},
|
||||
{"name": "Seashell", "id": base_id + 2, "count": 23, "classification": ItemClassification.progression_skip_balancing},
|
||||
{"name": "Golden Feather", "id": base_id + 3, "count": 0, "classification": ItemClassification.progression},
|
||||
{"name": "Silver Feather", "id": base_id + 4, "count": 0, "classification": ItemClassification.useful},
|
||||
{"name": "Bucket", "id": base_id + 5, "count": 0, "classification": ItemClassification.progression},
|
||||
{"name": "Bait", "id": base_id + 6, "count": 2, "classification": ItemClassification.filler},
|
||||
{"name": "Fishing Rod", "id": base_id + 7, "count": 2, "classification": ItemClassification.progression},
|
||||
{"name": "Progressive Fishing Rod", "id": base_id + 7, "count": 2, "classification": ItemClassification.progression},
|
||||
{"name": "Shovel", "id": base_id + 8, "count": 1, "classification": ItemClassification.progression},
|
||||
{"name": "Toy Shovel", "id": base_id + 9, "count": 5, "classification": ItemClassification.progression_skip_balancing},
|
||||
{"name": "Toy Shovel", "id": base_id + 9, "count": 0, "classification": ItemClassification.progression_skip_balancing},
|
||||
{"name": "Compass", "id": base_id + 10, "count": 1, "classification": ItemClassification.useful},
|
||||
{"name": "Medal", "id": base_id + 11, "count": 3, "classification": ItemClassification.filler},
|
||||
{"name": "Shell Necklace", "id": base_id + 12, "count": 1, "classification": ItemClassification.progression},
|
||||
|
@ -36,7 +36,7 @@ item_table: List[ItemDict] = [
|
|||
{"name": "Headband", "id": base_id + 24, "count": 1, "classification": ItemClassification.progression},
|
||||
{"name": "Running Shoes", "id": base_id + 25, "count": 1, "classification": ItemClassification.useful},
|
||||
{"name": "Camping Permit", "id": base_id + 26, "count": 1, "classification": ItemClassification.progression},
|
||||
{"name": "Walkie Talkie", "id": base_id + 27, "count": 1, "classification": ItemClassification.useful},
|
||||
{"name": "Walkie Talkie", "id": base_id + 27, "count": 0, "classification": ItemClassification.useful},
|
||||
|
||||
# Not in the item pool for now
|
||||
#{"name": "Boating Manual", "id": base_id + ~, "count": 1, "classification": ItemClassification.filler},
|
||||
|
@ -48,9 +48,9 @@ item_table: List[ItemDict] = [
|
|||
{"name": "21 Coins", "id": base_id + 31, "count": 2, "classification": ItemClassification.filler},
|
||||
{"name": "25 Coins", "id": base_id + 32, "count": 7, "classification": ItemClassification.filler},
|
||||
{"name": "27 Coins", "id": base_id + 33, "count": 1, "classification": ItemClassification.filler},
|
||||
{"name": "32 Coins", "id": base_id + 34, "count": 1, "classification": ItemClassification.filler},
|
||||
{"name": "33 Coins", "id": base_id + 35, "count": 6, "classification": ItemClassification.filler},
|
||||
{"name": "50 Coins", "id": base_id + 36, "count": 1, "classification": ItemClassification.filler},
|
||||
{"name": "32 Coins", "id": base_id + 34, "count": 1, "classification": ItemClassification.useful},
|
||||
{"name": "33 Coins", "id": base_id + 35, "count": 6, "classification": ItemClassification.useful},
|
||||
{"name": "50 Coins", "id": base_id + 36, "count": 1, "classification": ItemClassification.useful},
|
||||
|
||||
# Filler item determined by settings
|
||||
{"name": "13 Coins", "id": base_id + 37, "count": 0, "classification": ItemClassification.filler},
|
||||
|
|
|
@ -5,7 +5,7 @@ class LocationInfo(TypedDict):
|
|||
id: int
|
||||
inGameId: str
|
||||
needsShovel: bool
|
||||
purchase: bool
|
||||
purchase: int
|
||||
minGoldenFeathers: int
|
||||
minGoldenFeathersEasy: int
|
||||
minGoldenFeathersBucket: int
|
||||
|
@ -17,311 +17,311 @@ location_table: List[LocationInfo] = [
|
|||
{"name": "Start Beach Seashell",
|
||||
"id": base_id + 1,
|
||||
"inGameId": "PickUps.3",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beach Hut Seashell",
|
||||
"id": base_id + 2,
|
||||
"inGameId": "PickUps.2",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beach Umbrella Seashell",
|
||||
"id": base_id + 3,
|
||||
"inGameId": "PickUps.8",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sid Beach Mound Seashell",
|
||||
"id": base_id + 4,
|
||||
"inGameId": "PickUps.12",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sid Beach Seashell",
|
||||
"id": base_id + 5,
|
||||
"inGameId": "PickUps.11",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Shirley's Point Beach Seashell",
|
||||
"id": base_id + 6,
|
||||
"inGameId": "PickUps.18",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Shirley's Point Rock Seashell",
|
||||
"id": base_id + 7,
|
||||
"inGameId": "PickUps.17",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Beach Seashell",
|
||||
"id": base_id + 8,
|
||||
"inGameId": "PickUps.19",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "West River Seashell",
|
||||
"id": base_id + 9,
|
||||
"inGameId": "PickUps.10",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "West Riverbank Seashell",
|
||||
"id": base_id + 10,
|
||||
"inGameId": "PickUps.4",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Stone Tower Riverbank Seashell",
|
||||
"id": base_id + 11,
|
||||
"inGameId": "PickUps.23",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Beach Seashell",
|
||||
"id": base_id + 12,
|
||||
"inGameId": "PickUps.6",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Coast Seashell",
|
||||
"id": base_id + 13,
|
||||
"inGameId": "PickUps.7",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Boat Cliff Seashell",
|
||||
"id": base_id + 14,
|
||||
"inGameId": "PickUps.14",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Boat Isle Mound Seashell",
|
||||
"id": base_id + 15,
|
||||
"inGameId": "PickUps.22",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "East Coast Seashell",
|
||||
"id": base_id + 16,
|
||||
"inGameId": "PickUps.21",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "House North Beach Seashell",
|
||||
"id": base_id + 17,
|
||||
"inGameId": "PickUps.16",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Airstream Island North Seashell",
|
||||
"id": base_id + 18,
|
||||
"inGameId": "PickUps.13",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Airstream Island South Seashell",
|
||||
"id": base_id + 19,
|
||||
"inGameId": "PickUps.15",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Secret Island Beach Seashell",
|
||||
"id": base_id + 20,
|
||||
"inGameId": "PickUps.1",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Meteor Lake Seashell",
|
||||
"id": base_id + 126,
|
||||
"inGameId": "PickUps.20",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Good Creek Path Seashell",
|
||||
"id": base_id + 127,
|
||||
"inGameId": "PickUps.9",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Visitor's Center Shop
|
||||
{"name": "Visitor's Center Shop Golden Feather 1",
|
||||
"id": base_id + 21,
|
||||
"inGameId": "CampRangerNPC[0]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 40,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Shop Golden Feather 2",
|
||||
"id": base_id + 22,
|
||||
"inGameId": "CampRangerNPC[1]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 40,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Shop Hat",
|
||||
"id": base_id + 23,
|
||||
"inGameId": "CampRangerNPC[9]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Tough Bird Salesman
|
||||
{"name": "Tough Bird Salesman Golden Feather 1",
|
||||
"id": base_id + 24,
|
||||
"inGameId": "ToughBirdNPC (1)[0]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Tough Bird Salesman Golden Feather 2",
|
||||
"id": base_id + 25,
|
||||
"inGameId": "ToughBirdNPC (1)[1]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Tough Bird Salesman Golden Feather 3",
|
||||
"id": base_id + 26,
|
||||
"inGameId": "ToughBirdNPC (1)[2]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Tough Bird Salesman Golden Feather 4",
|
||||
"id": base_id + 27,
|
||||
"inGameId": "ToughBirdNPC (1)[3]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Tough Bird Salesman (400 Coins)",
|
||||
"id": base_id + 28,
|
||||
"inGameId": "ToughBirdNPC (1)[9]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 400,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Beachstickball
|
||||
{"name": "Beachstickball (10 Hits)",
|
||||
"id": base_id + 29,
|
||||
"inGameId": "VolleyballOpponent[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beachstickball (20 Hits)",
|
||||
"id": base_id + 30,
|
||||
"inGameId": "VolleyballOpponent[1]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beachstickball (30 Hits)",
|
||||
"id": base_id + 31,
|
||||
"inGameId": "VolleyballOpponent[2]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Misc Item Locations
|
||||
{"name": "Shovel Kid Trade",
|
||||
"id": base_id + 32,
|
||||
"inGameId": "Frog_StandingNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Compass Guy",
|
||||
"id": base_id + 33,
|
||||
"inGameId": "Fox_WalkingNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Hawk Peak Bucket Rock",
|
||||
"id": base_id + 34,
|
||||
"inGameId": "Tools.23",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands Bucket Rock",
|
||||
"id": base_id + 35,
|
||||
"inGameId": "Tools.42",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Bill the Walrus Fisherman",
|
||||
"id": base_id + 36,
|
||||
"inGameId": "SittingNPC (1)[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Catch 3 Fish Reward",
|
||||
"id": base_id + 37,
|
||||
"inGameId": "FishBuyer[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Catch All Fish Reward",
|
||||
"id": base_id + 38,
|
||||
"inGameId": "FishBuyer[1]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 7, "minGoldenFeathersEasy": 9, "minGoldenFeathersBucket": 7},
|
||||
{"name": "Permit Guy Bribe",
|
||||
"id": base_id + 39,
|
||||
"inGameId": "CamperNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Catch Fish with Permit",
|
||||
"id": base_id + 129,
|
||||
"inGameId": "Player[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Return Camping Permit",
|
||||
"id": base_id + 130,
|
||||
"inGameId": "CamperNPC[1]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Pickaxe Locations
|
||||
{"name": "Blocked Mine Pickaxe 1",
|
||||
"id": base_id + 40,
|
||||
"inGameId": "Tools.31",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Blocked Mine Pickaxe 2",
|
||||
"id": base_id + 41,
|
||||
"inGameId": "Tools.32",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Blocked Mine Pickaxe 3",
|
||||
"id": base_id + 42,
|
||||
"inGameId": "Tools.33",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Toy Shovel Locations
|
||||
{"name": "Blackwood Trail Lookout Toy Shovel",
|
||||
"id": base_id + 43,
|
||||
"inGameId": "PickUps.27",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Shirley's Point Beach Toy Shovel",
|
||||
"id": base_id + 44,
|
||||
"inGameId": "PickUps.30",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Beach Toy Shovel",
|
||||
"id": base_id + 45,
|
||||
"inGameId": "PickUps.29",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Blackwood Trail Rock Toy Shovel",
|
||||
"id": base_id + 46,
|
||||
"inGameId": "PickUps.26",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beach Hut Cliff Toy Shovel",
|
||||
"id": base_id + 128,
|
||||
"inGameId": "PickUps.28",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Stick Locations
|
||||
{"name": "Secret Island Beach Trail Stick",
|
||||
"id": base_id + 47,
|
||||
"inGameId": "PickUps.25",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Below Lighthouse Walkway Stick",
|
||||
"id": base_id + 48,
|
||||
"inGameId": "Tools.3",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beach Hut Rocky Pool Sand Stick",
|
||||
"id": base_id + 49,
|
||||
"inGameId": "Tools.0",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Cliff Overlooking West River Waterfall Stick",
|
||||
"id": base_id + 50,
|
||||
"inGameId": "Tools.2",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 2, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Trail to Tough Bird Salesman Stick",
|
||||
"id": base_id + 51,
|
||||
"inGameId": "Tools.8",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Beach Stick",
|
||||
"id": base_id + 52,
|
||||
"inGameId": "Tools.4",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Beachstickball Court Stick",
|
||||
"id": base_id + 53,
|
||||
"inGameId": "VolleyballMinigame.4",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Stick Under Sid Beach Umbrella",
|
||||
"id": base_id + 54,
|
||||
"inGameId": "Tools.1",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Boating
|
||||
|
@ -333,377 +333,377 @@ location_table: List[LocationInfo] = [
|
|||
{"name": "Boat Challenge Reward",
|
||||
"id": base_id + 56,
|
||||
"inGameId": "DeerKidBoat[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Not a location for now, corresponding with the Boating Manual
|
||||
# {"name": "Receive Boating Manual",
|
||||
# "id": base_id + 133,
|
||||
# "inGameId": "DadDeer[1]",
|
||||
# "needsShovel": False, "purchase": False,
|
||||
# "needsShovel": False, "purchase": 0,
|
||||
# "minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Map Locations
|
||||
{"name": "Outlook Point Dog Gift",
|
||||
"id": base_id + 57,
|
||||
"inGameId": "Dog_WalkingNPC_BlueEyed[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Clothes Locations
|
||||
{"name": "Collect 15 Seashells",
|
||||
"id": base_id + 58,
|
||||
"inGameId": "LittleKidNPCVariant (1)[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Return to Shell Kid",
|
||||
"id": base_id + 132,
|
||||
"inGameId": "LittleKidNPCVariant (1)[1]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Taylor the Turtle Headband Gift",
|
||||
"id": base_id + 59,
|
||||
"inGameId": "Turtle_WalkingNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sue the Rabbit Shoes Reward",
|
||||
"id": base_id + 60,
|
||||
"inGameId": "Bunny_WalkingNPC (1)[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Purchase Sunhat",
|
||||
"id": base_id + 61,
|
||||
"inGameId": "SittingNPC[0]",
|
||||
"needsShovel": False, "purchase": True,
|
||||
"needsShovel": False, "purchase": 100,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Golden Feather Locations
|
||||
{"name": "Blackwood Forest Golden Feather",
|
||||
"id": base_id + 62,
|
||||
"inGameId": "Feathers.3",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Ranger May Shell Necklace Golden Feather",
|
||||
"id": base_id + 63,
|
||||
"inGameId": "AuntMayNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sand Castle Golden Feather",
|
||||
"id": base_id + 64,
|
||||
"inGameId": "SandProvince.3",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Artist Golden Feather",
|
||||
"id": base_id + 65,
|
||||
"inGameId": "StandingNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor Camp Rock Golden Feather",
|
||||
"id": base_id + 66,
|
||||
"inGameId": "Feathers.8",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Outlook Cliff Golden Feather",
|
||||
"id": base_id + 67,
|
||||
"inGameId": "Feathers.2",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Meteor Lake Cliff Golden Feather",
|
||||
"id": base_id + 68,
|
||||
"inGameId": "Feathers.7",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Original Silver Feather Locations
|
||||
{"name": "Secret Island Peak",
|
||||
"id": base_id + 69,
|
||||
"inGameId": "PickUps.24",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 5, "minGoldenFeathersEasy": 7, "minGoldenFeathersBucket": 7},
|
||||
{"name": "Wristwatch Trade",
|
||||
"id": base_id + 70,
|
||||
"inGameId": "Goat_StandingNPC[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Golden Chests
|
||||
{"name": "Lighthouse Golden Chest",
|
||||
"id": base_id + 71,
|
||||
"inGameId": "Feathers.0",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 2, "minGoldenFeathersEasy": 3, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Outlook Golden Chest",
|
||||
"id": base_id + 72,
|
||||
"inGameId": "Feathers.6",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Stone Tower Golden Chest",
|
||||
"id": base_id + 73,
|
||||
"inGameId": "Feathers.5",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Cliff Golden Chest",
|
||||
"id": base_id + 74,
|
||||
"inGameId": "Feathers.4",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 3, "minGoldenFeathersEasy": 10, "minGoldenFeathersBucket": 10},
|
||||
|
||||
# Chests
|
||||
{"name": "Blackwood Cliff Chest",
|
||||
"id": base_id + 75,
|
||||
"inGameId": "Coins.22",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "White Coast Trail Chest",
|
||||
"id": base_id + 76,
|
||||
"inGameId": "Coins.6",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sid Beach Chest",
|
||||
"id": base_id + 77,
|
||||
"inGameId": "Coins.7",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sid Beach Buried Treasure Chest",
|
||||
"id": base_id + 78,
|
||||
"inGameId": "Coins.46",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Sid Beach Cliff Chest",
|
||||
"id": base_id + 79,
|
||||
"inGameId": "Coins.9",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Buried Chest",
|
||||
"id": base_id + 80,
|
||||
"inGameId": "Coins.94",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Visitor's Center Hidden Chest",
|
||||
"id": base_id + 81,
|
||||
"inGameId": "Coins.42",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Shirley's Point Chest",
|
||||
"id": base_id + 82,
|
||||
"inGameId": "Coins.10",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 1, "minGoldenFeathersEasy": 2, "minGoldenFeathersBucket": 2},
|
||||
{"name": "Caravan Cliff Chest",
|
||||
"id": base_id + 83,
|
||||
"inGameId": "Coins.12",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Caravan Arch Chest",
|
||||
"id": base_id + 84,
|
||||
"inGameId": "Coins.11",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "King Buried Treasure Chest",
|
||||
"id": base_id + 85,
|
||||
"inGameId": "Coins.41",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Good Creek Path Buried Chest",
|
||||
"id": base_id + 86,
|
||||
"inGameId": "Coins.48",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Good Creek Path West Chest",
|
||||
"id": base_id + 87,
|
||||
"inGameId": "Coins.33",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Good Creek Path East Chest",
|
||||
"id": base_id + 88,
|
||||
"inGameId": "Coins.62",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "West Waterfall Chest",
|
||||
"id": base_id + 89,
|
||||
"inGameId": "Coins.20",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Stone Tower West Cliff Chest",
|
||||
"id": base_id + 90,
|
||||
"inGameId": "PickUps.0",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Bucket Path Chest",
|
||||
"id": base_id + 91,
|
||||
"inGameId": "Coins.50",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Bucket Cliff Chest",
|
||||
"id": base_id + 92,
|
||||
"inGameId": "Coins.49",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 3, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 5},
|
||||
{"name": "In Her Shadow Buried Treasure Chest",
|
||||
"id": base_id + 93,
|
||||
"inGameId": "Feathers.9",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Meteor Lake Buried Chest",
|
||||
"id": base_id + 94,
|
||||
"inGameId": "Coins.86",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Meteor Lake Chest",
|
||||
"id": base_id + 95,
|
||||
"inGameId": "Coins.64",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "House North Beach Chest",
|
||||
"id": base_id + 96,
|
||||
"inGameId": "Coins.65",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "East Coast Chest",
|
||||
"id": base_id + 97,
|
||||
"inGameId": "Coins.98",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Fisherman's Boat Chest 1",
|
||||
"id": base_id + 99,
|
||||
"inGameId": "Boat.0",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Fisherman's Boat Chest 2",
|
||||
"id": base_id + 100,
|
||||
"inGameId": "Boat.7",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Airstream Island Chest",
|
||||
"id": base_id + 101,
|
||||
"inGameId": "Coins.31",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "West River Waterfall Head Chest",
|
||||
"id": base_id + 102,
|
||||
"inGameId": "Coins.34",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Old Building Chest",
|
||||
"id": base_id + 103,
|
||||
"inGameId": "Coins.104",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Old Building West Chest",
|
||||
"id": base_id + 104,
|
||||
"inGameId": "Coins.109",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Old Building East Chest",
|
||||
"id": base_id + 105,
|
||||
"inGameId": "Coins.8",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Hawk Peak West Chest",
|
||||
"id": base_id + 106,
|
||||
"inGameId": "Coins.21",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 3, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 5},
|
||||
{"name": "Hawk Peak East Buried Chest",
|
||||
"id": base_id + 107,
|
||||
"inGameId": "Coins.76",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 3, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 5},
|
||||
{"name": "Hawk Peak Northeast Chest",
|
||||
"id": base_id + 108,
|
||||
"inGameId": "Coins.79",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 3, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 5},
|
||||
{"name": "Northern East Coast Chest",
|
||||
"id": base_id + 109,
|
||||
"inGameId": "Coins.45",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 2, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Coast Chest",
|
||||
"id": base_id + 110,
|
||||
"inGameId": "Coins.28",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "North Coast Buried Chest",
|
||||
"id": base_id + 111,
|
||||
"inGameId": "Coins.47",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Small South Island Buried Chest",
|
||||
"id": base_id + 112,
|
||||
"inGameId": "Coins.87",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Secret Island Bottom Chest",
|
||||
"id": base_id + 113,
|
||||
"inGameId": "Coins.88",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Secret Island Treehouse Chest",
|
||||
"id": base_id + 114,
|
||||
"inGameId": "Coins.89",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 1, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 1},
|
||||
{"name": "Sunhat Island Buried Chest",
|
||||
"id": base_id + 115,
|
||||
"inGameId": "Coins.112",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands South Buried Chest",
|
||||
"id": base_id + 116,
|
||||
"inGameId": "Coins.119",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands West Chest",
|
||||
"id": base_id + 117,
|
||||
"inGameId": "Coins.121",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands North Buried Chest",
|
||||
"id": base_id + 118,
|
||||
"inGameId": "Coins.117",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 1, "minGoldenFeathersEasy": 1, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands East Chest",
|
||||
"id": base_id + 119,
|
||||
"inGameId": "Coins.120",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands South Hidden Chest",
|
||||
"id": base_id + 120,
|
||||
"inGameId": "Coins.124",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "A Stormy View Buried Treasure Chest",
|
||||
"id": base_id + 121,
|
||||
"inGameId": "Coins.113",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Orange Islands Ruins Buried Chest",
|
||||
"id": base_id + 122,
|
||||
"inGameId": "Coins.118",
|
||||
"needsShovel": True, "purchase": False,
|
||||
"needsShovel": True, "purchase": 0,
|
||||
"minGoldenFeathers": 2, "minGoldenFeathersEasy": 4, "minGoldenFeathersBucket": 0},
|
||||
|
||||
# Race Rewards
|
||||
{"name": "Lighthouse Race Reward",
|
||||
"id": base_id + 123,
|
||||
"inGameId": "RaceOpponent[0]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 2, "minGoldenFeathersEasy": 3, "minGoldenFeathersBucket": 1},
|
||||
{"name": "Old Building Race Reward",
|
||||
"id": base_id + 124,
|
||||
"inGameId": "RaceOpponent[1]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 1, "minGoldenFeathersEasy": 5, "minGoldenFeathersBucket": 0},
|
||||
{"name": "Hawk Peak Race Reward",
|
||||
"id": base_id + 125,
|
||||
"inGameId": "RaceOpponent[2]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 7, "minGoldenFeathersEasy": 9, "minGoldenFeathersBucket": 7},
|
||||
{"name": "Lose Race Gift",
|
||||
"id": base_id + 131,
|
||||
"inGameId": "RaceOpponent[9]",
|
||||
"needsShovel": False, "purchase": False,
|
||||
"needsShovel": False, "purchase": 0,
|
||||
"minGoldenFeathers": 0, "minGoldenFeathersEasy": 0, "minGoldenFeathersBucket": 0},
|
||||
]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from dataclasses import dataclass
|
||||
from Options import Choice, PerGameCommonOptions, Range, StartInventoryPool, Toggle
|
||||
from Options import Choice, OptionGroup, PerGameCommonOptions, Range, StartInventoryPool, Toggle, DefaultOnToggle
|
||||
|
||||
class Goal(Choice):
|
||||
"""Choose the end goal.
|
||||
|
@ -22,8 +22,10 @@ class CoinsInShops(Toggle):
|
|||
default = False
|
||||
|
||||
class GoldenFeathers(Range):
|
||||
"""Number of Golden Feathers in the item pool.
|
||||
(Note that for the Photo and Help Everyone goals, a minimum of 12 Golden Feathers is enforced)"""
|
||||
"""
|
||||
Number of Golden Feathers in the item pool.
|
||||
(Note that for the Photo and Help Everyone goals, a minimum of 12 Golden Feathers is enforced)
|
||||
"""
|
||||
display_name = "Golden Feathers"
|
||||
range_start = 0
|
||||
range_end = 20
|
||||
|
@ -43,6 +45,20 @@ class Buckets(Range):
|
|||
range_end = 2
|
||||
default = 2
|
||||
|
||||
class Sticks(Range):
|
||||
"""Number of Sticks in the item pool."""
|
||||
display_name = "Sticks"
|
||||
range_start = 1
|
||||
range_end = 8
|
||||
default = 8
|
||||
|
||||
class ToyShovels(Range):
|
||||
"""Number of Toy Shovels in the item pool."""
|
||||
display_name = "Toy Shovels"
|
||||
range_start = 1
|
||||
range_end = 5
|
||||
default = 5
|
||||
|
||||
class GoldenFeatherProgression(Choice):
|
||||
"""Determines which locations are considered in logic based on the required amount of golden feathers to reach them.
|
||||
Easy: Locations will be considered inaccessible until the player has enough golden feathers to easily reach them. A minimum of 10 golden feathers is recommended for this setting.
|
||||
|
@ -76,6 +92,40 @@ class FillerCoinAmount(Choice):
|
|||
option_50_coins = 9
|
||||
default = 1
|
||||
|
||||
class RandomWalkieTalkie(DefaultOnToggle):
|
||||
"""
|
||||
When enabled, the Walkie Talkie item will be placed into the item pool. Otherwise, it will be placed in its vanilla location.
|
||||
This item usually allows the player to locate Avery around the map or restart a race.
|
||||
"""
|
||||
display_name = "Randomize Walkie Talkie"
|
||||
|
||||
class EasierRaces(Toggle):
|
||||
"""When enabled, the Running Shoes will be added as a logical requirement for beating any of the races."""
|
||||
display_name = "Easier Races"
|
||||
|
||||
class ShopCheckLogic(Choice):
|
||||
"""Determines which items will be added as logical requirements to making certain purchases in shops."""
|
||||
display_name = "Shop Check Logic"
|
||||
option_nothing = 0
|
||||
option_fishing_rod = 1
|
||||
option_shovel = 2
|
||||
option_fishing_rod_and_shovel = 3
|
||||
option_golden_fishing_rod = 4
|
||||
option_golden_fishing_rod_and_shovel = 5
|
||||
default = 1
|
||||
|
||||
class MinShopCheckLogic(Choice):
|
||||
"""
|
||||
Determines the minimum cost of a shop item that will have the shop check logic applied to it.
|
||||
If the cost of a shop item is less than this value, no items will be required to access it.
|
||||
This is based on the vanilla prices of the shop item. The set cost multiplier will not affect this value.
|
||||
"""
|
||||
display_name = "Minimum Shop Check Logic Application"
|
||||
option_40_coins = 0
|
||||
option_100_coins = 1
|
||||
option_400_coins = 2
|
||||
default = 1
|
||||
|
||||
@dataclass
|
||||
class ShortHikeOptions(PerGameCommonOptions):
|
||||
start_inventory_from_pool: StartInventoryPool
|
||||
|
@ -84,6 +134,37 @@ class ShortHikeOptions(PerGameCommonOptions):
|
|||
golden_feathers: GoldenFeathers
|
||||
silver_feathers: SilverFeathers
|
||||
buckets: Buckets
|
||||
sticks: Sticks
|
||||
toy_shovels: ToyShovels
|
||||
golden_feather_progression: GoldenFeatherProgression
|
||||
cost_multiplier: CostMultiplier
|
||||
filler_coin_amount: FillerCoinAmount
|
||||
random_walkie_talkie: RandomWalkieTalkie
|
||||
easier_races: EasierRaces
|
||||
shop_check_logic: ShopCheckLogic
|
||||
min_shop_check_logic: MinShopCheckLogic
|
||||
|
||||
shorthike_option_groups = [
|
||||
OptionGroup("General Options", [
|
||||
Goal,
|
||||
FillerCoinAmount,
|
||||
RandomWalkieTalkie
|
||||
]),
|
||||
OptionGroup("Logic Options", [
|
||||
GoldenFeatherProgression,
|
||||
EasierRaces
|
||||
]),
|
||||
OptionGroup("Item Pool Options", [
|
||||
GoldenFeathers,
|
||||
SilverFeathers,
|
||||
Buckets,
|
||||
Sticks,
|
||||
ToyShovels
|
||||
]),
|
||||
OptionGroup("Shop Options", [
|
||||
CoinsInShops,
|
||||
CostMultiplier,
|
||||
ShopCheckLogic,
|
||||
MinShopCheckLogic
|
||||
])
|
||||
]
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from worlds.generic.Rules import forbid_items_for_player, add_rule
|
||||
from worlds.shorthike.Options import Goal, GoldenFeatherProgression, MinShopCheckLogic, ShopCheckLogic
|
||||
|
||||
def create_rules(self, location_table):
|
||||
multiworld = self.multiworld
|
||||
|
@ -11,11 +12,23 @@ def create_rules(self, location_table):
|
|||
forbid_items_for_player(multiworld.get_location(loc["name"], player), self.item_name_groups['Maps'], player)
|
||||
add_rule(multiworld.get_location(loc["name"], player),
|
||||
lambda state: state.has("Shovel", player))
|
||||
|
||||
# Shop Rules
|
||||
if loc["purchase"] and not options.coins_in_shops:
|
||||
forbid_items_for_player(multiworld.get_location(loc["name"], player), self.item_name_groups['Coins'], player)
|
||||
if loc["purchase"] >= get_min_shop_logic_cost(self) and options.shop_check_logic != ShopCheckLogic.option_nothing:
|
||||
if options.shop_check_logic in {ShopCheckLogic.option_fishing_rod, ShopCheckLogic.option_fishing_rod_and_shovel}:
|
||||
add_rule(multiworld.get_location(loc["name"], player),
|
||||
lambda state: state.has("Progressive Fishing Rod", player))
|
||||
if options.shop_check_logic in {ShopCheckLogic.option_golden_fishing_rod, ShopCheckLogic.option_golden_fishing_rod_and_shovel}:
|
||||
add_rule(multiworld.get_location(loc["name"], player),
|
||||
lambda state: state.has("Progressive Fishing Rod", player, 2))
|
||||
if options.shop_check_logic in {ShopCheckLogic.option_shovel, ShopCheckLogic.option_fishing_rod_and_shovel, ShopCheckLogic.option_golden_fishing_rod_and_shovel}:
|
||||
add_rule(multiworld.get_location(loc["name"], player),
|
||||
lambda state: state.has("Shovel", player))
|
||||
|
||||
# Minimum Feather Rules
|
||||
if options.golden_feather_progression != 2:
|
||||
if options.golden_feather_progression != GoldenFeatherProgression.option_hard:
|
||||
min_feathers = get_min_feathers(self, loc["minGoldenFeathers"], loc["minGoldenFeathersEasy"])
|
||||
|
||||
if options.buckets > 0 and loc["minGoldenFeathersBucket"] < min_feathers:
|
||||
|
@ -32,11 +45,11 @@ def create_rules(self, location_table):
|
|||
|
||||
# Fishing Rules
|
||||
add_rule(multiworld.get_location("Catch 3 Fish Reward", player),
|
||||
lambda state: state.has("Fishing Rod", player))
|
||||
lambda state: state.has("Progressive Fishing Rod", player))
|
||||
add_rule(multiworld.get_location("Catch Fish with Permit", player),
|
||||
lambda state: state.has("Fishing Rod", player))
|
||||
lambda state: state.has("Progressive Fishing Rod", player))
|
||||
add_rule(multiworld.get_location("Catch All Fish Reward", player),
|
||||
lambda state: state.has("Fishing Rod", player))
|
||||
lambda state: state.has("Progressive Fishing Rod", player, 2))
|
||||
|
||||
# Misc Rules
|
||||
add_rule(multiworld.get_location("Return Camping Permit", player),
|
||||
|
@ -59,15 +72,34 @@ def create_rules(self, location_table):
|
|||
lambda state: state.has("Stick", player))
|
||||
add_rule(multiworld.get_location("Beachstickball (30 Hits)", player),
|
||||
lambda state: state.has("Stick", player))
|
||||
|
||||
# Race Rules
|
||||
if options.easier_races:
|
||||
add_rule(multiworld.get_location("Lighthouse Race Reward", player),
|
||||
lambda state: state.has("Running Shoes", player))
|
||||
add_rule(multiworld.get_location("Old Building Race Reward", player),
|
||||
lambda state: state.has("Running Shoes", player))
|
||||
add_rule(multiworld.get_location("Hawk Peak Race Reward", player),
|
||||
lambda state: state.has("Running Shoes", player))
|
||||
|
||||
def get_min_feathers(self, min_golden_feathers, min_golden_feathers_easy):
|
||||
options = self.options
|
||||
|
||||
min_feathers = min_golden_feathers
|
||||
if options.golden_feather_progression == 0:
|
||||
if options.golden_feather_progression == GoldenFeatherProgression.option_easy:
|
||||
min_feathers = min_golden_feathers_easy
|
||||
if min_feathers > options.golden_feathers:
|
||||
if options.goal != 1 and options.goal != 3:
|
||||
if options.goal not in {Goal.option_help_everyone, Goal.option_photo}:
|
||||
min_feathers = options.golden_feathers
|
||||
|
||||
return min_feathers
|
||||
|
||||
def get_min_shop_logic_cost(self):
|
||||
options = self.options
|
||||
|
||||
if options.min_shop_check_logic == MinShopCheckLogic.option_40_coins:
|
||||
return 40
|
||||
elif options.min_shop_check_logic == MinShopCheckLogic.option_100_coins:
|
||||
return 100
|
||||
elif options.min_shop_check_logic == MinShopCheckLogic.option_400_coins:
|
||||
return 400
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
from collections import Counter
|
||||
from typing import ClassVar, Dict, Any, Type
|
||||
from BaseClasses import Region, Location, Item, Tutorial
|
||||
from BaseClasses import ItemClassification, Region, Location, Item, Tutorial
|
||||
from Options import PerGameCommonOptions
|
||||
from worlds.AutoWorld import World, WebWorld
|
||||
from .Items import item_table, group_table, base_id
|
||||
from .Locations import location_table
|
||||
from .Rules import create_rules, get_min_feathers
|
||||
from .Options import ShortHikeOptions
|
||||
from .Options import ShortHikeOptions, shorthike_option_groups
|
||||
|
||||
class ShortHikeWeb(WebWorld):
|
||||
theme = "ocean"
|
||||
|
@ -18,6 +17,7 @@ class ShortHikeWeb(WebWorld):
|
|||
"setup/en",
|
||||
["Chandler"]
|
||||
)]
|
||||
option_groups = shorthike_option_groups
|
||||
|
||||
class ShortHikeWorld(World):
|
||||
"""
|
||||
|
@ -47,9 +47,14 @@ class ShortHikeWorld(World):
|
|||
item_id: int = self.item_name_to_id[name]
|
||||
id = item_id - base_id - 1
|
||||
|
||||
return ShortHikeItem(name, item_table[id]["classification"], item_id, player=self.player)
|
||||
classification = item_table[id]["classification"]
|
||||
if self.options.easier_races and name == "Running Shoes":
|
||||
classification = ItemClassification.progression
|
||||
|
||||
return ShortHikeItem(name, classification, item_id, player=self.player)
|
||||
|
||||
def create_items(self) -> None:
|
||||
itempool = []
|
||||
for item in item_table:
|
||||
count = item["count"]
|
||||
|
||||
|
@ -57,18 +62,28 @@ class ShortHikeWorld(World):
|
|||
continue
|
||||
else:
|
||||
for i in range(count):
|
||||
self.multiworld.itempool.append(self.create_item(item["name"]))
|
||||
itempool.append(self.create_item(item["name"]))
|
||||
|
||||
feather_count = self.options.golden_feathers
|
||||
if self.options.goal == 1 or self.options.goal == 3:
|
||||
if feather_count < 12:
|
||||
feather_count = 12
|
||||
|
||||
junk = 45 - self.options.silver_feathers - feather_count - self.options.buckets
|
||||
self.multiworld.itempool += [self.create_item(self.get_filler_item_name()) for _ in range(junk)]
|
||||
self.multiworld.itempool += [self.create_item("Golden Feather") for _ in range(feather_count)]
|
||||
self.multiworld.itempool += [self.create_item("Silver Feather") for _ in range(self.options.silver_feathers)]
|
||||
self.multiworld.itempool += [self.create_item("Bucket") for _ in range(self.options.buckets)]
|
||||
itempool += [self.create_item("Golden Feather") for _ in range(feather_count)]
|
||||
itempool += [self.create_item("Silver Feather") for _ in range(self.options.silver_feathers)]
|
||||
itempool += [self.create_item("Bucket") for _ in range(self.options.buckets)]
|
||||
itempool += [self.create_item("Stick") for _ in range(self.options.sticks)]
|
||||
itempool += [self.create_item("Toy Shovel") for _ in range(self.options.toy_shovels)]
|
||||
|
||||
if self.options.random_walkie_talkie:
|
||||
itempool.append(self.create_item("Walkie Talkie"))
|
||||
else:
|
||||
self.multiworld.get_location("Lose Race Gift", self.player).place_locked_item(self.create_item("Walkie Talkie"))
|
||||
|
||||
junk = len(self.multiworld.get_unfilled_locations(self.player)) - len(itempool)
|
||||
itempool += [self.create_item(self.get_filler_item_name()) for _ in range(junk)]
|
||||
|
||||
self.multiworld.itempool += itempool
|
||||
|
||||
def create_regions(self) -> None:
|
||||
menu_region = Region("Menu", self.player, self.multiworld)
|
||||
|
@ -92,20 +107,23 @@ class ShortHikeWorld(World):
|
|||
self.multiworld.completion_condition[self.player] = lambda state: state.has("Golden Feather", self.player, 12)
|
||||
elif self.options.goal == "races":
|
||||
# Races
|
||||
self.multiworld.completion_condition[self.player] = lambda state: (state.has("Golden Feather", self.player, get_min_feathers(self, 7, 9))
|
||||
or (state.has("Bucket", self.player) and state.has("Golden Feather", self.player, 7)))
|
||||
self.multiworld.completion_condition[self.player] = lambda state: state.can_reach_location("Hawk Peak Race Reward", self.player)
|
||||
elif self.options.goal == "help_everyone":
|
||||
# Help Everyone
|
||||
self.multiworld.completion_condition[self.player] = lambda state: (state.has("Golden Feather", self.player, 12)
|
||||
and state.has("Toy Shovel", self.player) and state.has("Camping Permit", self.player)
|
||||
and state.has("Motorboat Key", self.player) and state.has("Headband", self.player)
|
||||
and state.has("Wristwatch", self.player) and state.has("Seashell", self.player, 15)
|
||||
and state.has("Shell Necklace", self.player))
|
||||
self.multiworld.completion_condition[self.player] = lambda state: (state.can_reach_location("Collect 15 Seashells", self.player)
|
||||
and state.has("Golden Feather", self.player, 12)
|
||||
and state.can_reach_location("Tough Bird Salesman (400 Coins)", self.player)
|
||||
and state.can_reach_location("Ranger May Shell Necklace Golden Feather", self.player)
|
||||
and state.can_reach_location("Sue the Rabbit Shoes Reward", self.player)
|
||||
and state.can_reach_location("Wristwatch Trade", self.player)
|
||||
and state.can_reach_location("Return Camping Permit", self.player)
|
||||
and state.can_reach_location("Boat Challenge Reward", self.player)
|
||||
and state.can_reach_location("Shovel Kid Trade", self.player)
|
||||
and state.can_reach_location("Purchase Sunhat", self.player)
|
||||
and state.can_reach_location("Artist Golden Feather", self.player))
|
||||
elif self.options.goal == "fishmonger":
|
||||
# Fishmonger
|
||||
self.multiworld.completion_condition[self.player] = lambda state: (state.has("Golden Feather", self.player, get_min_feathers(self, 7, 9))
|
||||
or (state.has("Bucket", self.player) and state.has("Golden Feather", self.player, 7))
|
||||
and state.has("Fishing Rod", self.player))
|
||||
self.multiworld.completion_condition[self.player] = lambda state: state.can_reach_location("Catch All Fish Reward", self.player)
|
||||
|
||||
def set_rules(self):
|
||||
create_rules(self, location_table)
|
||||
|
@ -117,6 +135,9 @@ class ShortHikeWorld(World):
|
|||
"goal": int(options.goal),
|
||||
"logicLevel": int(options.golden_feather_progression),
|
||||
"costMultiplier": int(options.cost_multiplier),
|
||||
"shopCheckLogic": int(options.shop_check_logic),
|
||||
"minShopCheckLogic": int(options.min_shop_check_logic),
|
||||
"easierRaces": bool(options.easier_races),
|
||||
}
|
||||
|
||||
slot_data = {
|
||||
|
|
Loading…
Reference in New Issue