forked from mirror/Archipelago
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
237 lines
11 KiB
Python
237 lines
11 KiB
Python
"""Multiselector information."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from randomizer.Enums.Levels import Levels
|
|
|
|
|
|
class MultiselectorItem:
|
|
"""Quality of life multiselector information."""
|
|
|
|
def __init__(self, name: str, shift: int, tooltip: str = "") -> None:
|
|
"""Initialize with given data."""
|
|
self.name = name
|
|
self.shift = shift
|
|
self.tooltip = tooltip
|
|
|
|
|
|
QoLSelector = []
|
|
RemovedBarrierSelector = []
|
|
FasterCheckSelector = []
|
|
CBRandoSelector = []
|
|
|
|
# If you make changes to this list, make sure to change the corresponding
|
|
# MiscChangesSelected enum in randomizer.Enums.Settings.
|
|
QoLItems = [
|
|
MultiselectorItem(
|
|
"Auto Dance Skip",
|
|
4,
|
|
"Dances upon picking up some collectables, notably Golden Bananas, are removed (with some exceptions).",
|
|
),
|
|
MultiselectorItem("Fast Boot", 5, "The boot sequence is dramatically sped up."),
|
|
MultiselectorItem("Calm Caves", 12, "Crystal Caves will no longer rain rocks down periodically."),
|
|
MultiselectorItem(
|
|
"Animal Buddies grab Items",
|
|
13,
|
|
"Rambi and Enguarde will be able to pick up DK's and Lanky's Items respectively.",
|
|
),
|
|
MultiselectorItem("Reduced Lag", 0, "Lag is reduced where possible without hindering gameplay."),
|
|
MultiselectorItem("Remove Extraneous Cutscenes", 1, "A lot of cutscenes are removed, enabling a fast-paced game."),
|
|
MultiselectorItem(
|
|
"Hint Textbox Hold",
|
|
11,
|
|
"Hint Textboxes will not close automatically upon the game reaching the end of the text, requiring B to be pressed.",
|
|
),
|
|
MultiselectorItem(
|
|
"Remove Wrinkly Puzzles",
|
|
-1,
|
|
"Removes the Wrinkly Puzzles from the Angry Aztec, Fungi Forest and Crystal Caves lobbies",
|
|
),
|
|
MultiselectorItem(
|
|
"Fast Picture Taking",
|
|
-1,
|
|
"The picture taking sequence is heavily sped up, with lag being significantly reduced on BizHawk.",
|
|
),
|
|
MultiselectorItem(
|
|
"HUD Hotkey",
|
|
14,
|
|
"Pressing D-Pad Up will show the total amount of colored bananas acquired in the level, as well as the blueprint count for that Kong.",
|
|
),
|
|
MultiselectorItem(
|
|
"Ammo Swap",
|
|
7,
|
|
"Homing Ammo and Standard ammo can be swapped between (upon having Homing Ammo) by pressing D-Pad Down.",
|
|
),
|
|
MultiselectorItem("Homing Balloons", 15, "Homing Ammo homes in on Banana Balloons."),
|
|
MultiselectorItem("Fast Transform Animation", -1, "Transform barrels will not go through the morphing animation."),
|
|
MultiselectorItem(
|
|
"Troff n Scoff Audio Indicator",
|
|
8,
|
|
"A bell ding will play upon collecting enough colored bananas to unlock the level's boss.",
|
|
),
|
|
MultiselectorItem("Lowered Aztec Lobby Bonus", -1, "The bonus barrel in Aztec Lobby is lowered to make it easier to reach."),
|
|
MultiselectorItem(
|
|
"Quicker Galleon Star",
|
|
9,
|
|
"The star in Gloomy Galleon now only requires Enguarde to go through it once to open the Gold Tower Gate.",
|
|
),
|
|
MultiselectorItem("Vanilla Bug Fixes", 10, "Various bugs in the vanilla game have been fixed."),
|
|
MultiselectorItem(
|
|
"Save K Rool Progress",
|
|
16,
|
|
"Re-Entering K Rool after dying or pause exiting will spawn you in the latest phase you reached.",
|
|
),
|
|
MultiselectorItem(
|
|
"Small Bananas always visible",
|
|
-1,
|
|
"Small Bananas will always be visible regardless of whether you have the kong unlocked or not.",
|
|
),
|
|
MultiselectorItem(
|
|
"Fast Hints",
|
|
19,
|
|
"Wrinkly will appear faster out of her door. Additionally, pressing A during any text bubble growth will skip to it's fully grown state.",
|
|
),
|
|
MultiselectorItem(
|
|
"Brighten Mad Maze Maul Enemies",
|
|
-1,
|
|
"Enemies in Mad Maze Maul will be at full brightness, making them easier to see in dark areas.",
|
|
),
|
|
MultiselectorItem(
|
|
"Raise Fungi Dirt Patch",
|
|
-1,
|
|
"The Fungi Dirt Patch near the mill that was discovered in 2017 is slightly raised to make it visible.",
|
|
),
|
|
MultiselectorItem(
|
|
"Global Instrument",
|
|
21,
|
|
"Instrument Energy has been changed to be made global, to align it with the behavior of Ammo, Oranges and other consumables.",
|
|
),
|
|
MultiselectorItem("Fast Pause Transitions", 22, "Pause Menu transitions are greatly sped up."),
|
|
MultiselectorItem(
|
|
"Cannon Game Better Control",
|
|
23,
|
|
"Hold A during the Galleon Cannon Game to reduce the rotation speed of the cannon.",
|
|
),
|
|
MultiselectorItem(
|
|
"Better Fairy Camera",
|
|
-1,
|
|
"Fairy camera range has been increased, and the wall check has been removed to improve ease of taking photos.",
|
|
),
|
|
MultiselectorItem("Remove Enemy Cabin Timer", 24, "Removes the enemy 5-Door Cabin timer in Crystal Caves."),
|
|
MultiselectorItem(
|
|
"Remove Galleon Ship Timers",
|
|
6,
|
|
"The gates to the two shipwrecks in Galleon will be permanently opened after activating their respective switches.",
|
|
),
|
|
MultiselectorItem(
|
|
"Japes Bridge Permanently Extended",
|
|
2,
|
|
"The spiral bridge around Japes Mountain will be permanently extended as soon as you shoot the peanut switch.",
|
|
),
|
|
MultiselectorItem("Move Spring Cabin Rocketbarrel", -1, "Moves the rocketbarrel in the Spring 5-Door Cabin to prevent being able to enter it earlier than intended."),
|
|
]
|
|
RemovedBarrierItems = [
|
|
MultiselectorItem(
|
|
"Japes Coconut Gates",
|
|
5,
|
|
"The gates that block the tunnels from Japes main to its various tunnels will be opened.",
|
|
),
|
|
MultiselectorItem("Japes Shellhive Gate", 6, "The gate to the shellhive area in Japes is opened."),
|
|
MultiselectorItem("Aztec Tiny Temple Ice", -1, "The ice in Tiny Temple is pre-melted."),
|
|
MultiselectorItem("Aztec Tunnel Door", 7, "The door which blocks access to the back half of Aztec will be opened."),
|
|
MultiselectorItem("Aztec 5DTemple Switches", 0, "The switches on the Five-Door Temple in Aztec will be pre-spawned."),
|
|
MultiselectorItem("Aztec Llama Switches", 13, "The switches on the Llama Temple in Aztec will be pre-spawned."),
|
|
MultiselectorItem("Factory Production Room", 1, "The production room in Factory will be turned on."),
|
|
MultiselectorItem(
|
|
"Factory Testing Gate",
|
|
8,
|
|
"The gate from the starting area of Factory to the Block Tower tunnel will be opened.",
|
|
),
|
|
MultiselectorItem("Galleon Lighthouse Gate", 9, "The gate from the start of Galleon to the lighthouse portion will be opened."),
|
|
MultiselectorItem("Galleon Shipyard Area Gate", 12, "The gate from the start of Galleon to the shipyard portion will be opened."),
|
|
# MultiselectorItem("Galleon Shipwreck Gates", 4, "The gates to the two shipwrecks in Galleon will be permanently opened after activating their respective switches."),
|
|
MultiselectorItem("Galleon Seasick Ship", 2, "The seasick ship in the lighthouse side of Galleon will be spawned."),
|
|
MultiselectorItem("Galleon Treasure Room", -1, "The gate to treasure room in Galleon will be opened."),
|
|
MultiselectorItem("Forest Green Tunnel", 10, "The green tunnel at the start of Forest will have it's gates opened."),
|
|
MultiselectorItem("Forest Yellow Tunnel", 11, "The yellow tunnel to the owl tree area will have it's gate opened."),
|
|
MultiselectorItem("Caves Igloo Pads", 3, "The pads to gain access to the five igloo rooms in Caves will be spawned."),
|
|
MultiselectorItem("Caves Ice Walls", -1, "The various ice walls in Caves will be removed."),
|
|
MultiselectorItem("Castle Crypt Doors", -1, "The various doors in the crypt area of Creepy Castle will be removed."),
|
|
]
|
|
FasterCheckItems = [
|
|
MultiselectorItem("Factory Toy Monster Fight", -1, "The toy monster fight in Factory will remove the initial enemy killing phase."),
|
|
MultiselectorItem(
|
|
"Factory Piano Game",
|
|
0,
|
|
"The piano game in Factory will only require the 3, 5 and 7 long sequences to be recalled.",
|
|
),
|
|
MultiselectorItem("Factory Diddy RnD", 1, "Only one enemy wave will need to be completed in the pincode room."),
|
|
MultiselectorItem(
|
|
"Factory Arcade Round 1",
|
|
3,
|
|
"The item for beating Round 1 will be stored inside the Baboon Blast course instead.",
|
|
),
|
|
MultiselectorItem("Factory Car Race", -1, "The race will be shortened to 1 lap, instead of 2."),
|
|
MultiselectorItem("Galleon Seal Race", -1, "The race will be shortened to 1 lap, instead of 2."),
|
|
MultiselectorItem("Galleon Mech Fish", 2, "You will only need to shoot each target once, instead of 3 times."),
|
|
MultiselectorItem("Forest Mill Conveyor", -1, "The lever combination will consist of only 3 numbers instead of 5."),
|
|
MultiselectorItem("Forest Owl Race", -1, "The owl race will only require you to fly through 8 rings instead of 16."),
|
|
MultiselectorItem(
|
|
"Forest Rabbit Race",
|
|
4,
|
|
"You will only be tasked with beating the 2nd rabbit race. Beating that race will give you both the reward for the 1st and 2nd races.",
|
|
),
|
|
MultiselectorItem("Caves Ice Tomato Minigame", -1, "The tile flip minigame will only have a 30 second timer, instead of 60."),
|
|
MultiselectorItem("Castle Minecart", 5, "The Minecart ride will end once you reach the turnaround point on the track."),
|
|
MultiselectorItem("Castle Car Race", -1, "The race will be shortened to 1 lap, instead of 2."),
|
|
MultiselectorItem("Jetpac", -1, "Getting the rareware coin reward will only require 2500 points, instead of 5000."),
|
|
MultiselectorItem(
|
|
"Arcade",
|
|
6,
|
|
"DK Arcade will only consist of 2 screens rather than 4, with 75m being an excluded screen from appearing in the first two.",
|
|
),
|
|
]
|
|
|
|
|
|
def parseMultiselector(items: list[MultiselectorItem]) -> list:
|
|
"""Parse a list of multiselector items and feed them into a selector list of dictionaries."""
|
|
lst = []
|
|
for item in items:
|
|
lst.append(
|
|
{
|
|
"name": item.name,
|
|
"value": item.name.lower().replace(" ", "_"),
|
|
"tooltip": item.tooltip,
|
|
"shift": item.shift,
|
|
}
|
|
)
|
|
return lst
|
|
|
|
|
|
cb_levels = {
|
|
Levels.JungleJapes: "Jungle Japes",
|
|
Levels.AngryAztec: "Angry Aztec",
|
|
Levels.FranticFactory: "Frantic Factory",
|
|
Levels.GloomyGalleon: "Gloomy Galleon",
|
|
Levels.FungiForest: "Fungi Forest",
|
|
Levels.CrystalCaves: "Crystal Caves",
|
|
Levels.CreepyCastle: "Creepy Castle",
|
|
Levels.DKIsles: "DK Isles",
|
|
}
|
|
|
|
CBRandoSelector = [
|
|
{
|
|
"name": name,
|
|
"value": lvl.name,
|
|
"tooltip": name,
|
|
"shift": -1,
|
|
}
|
|
for lvl, name in cb_levels.items()
|
|
]
|
|
|
|
QoLSelector = parseMultiselector(QoLItems)
|
|
RemovedBarrierSelector = parseMultiselector(RemovedBarrierItems)
|
|
FasterCheckSelector = parseMultiselector(FasterCheckItems)
|