mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-04-21 11:43:30 -07:00
* More control over progressive symbols! * Cleanup crew * lol * Make it configurable how second stage items act on their own * only let independent symbols work if they're not progressive * revert defaults * Better description * comment for reviewers * A complicated docstring for a complicated function * More accurate * This probably works more generically * Actually, this would cause other issues anyway, so no need to make this generic yet * :/ * oops * Change the system to use collect/remove override so that plando and start inventory work correctly * Vi stop doing that thing challenge * Make SecondStateSymbolsActIndependently an OptionSet * jank * oop * this is why we make unit tests I guess * More unit tests * More unit tests * Add note about the absence of Rotated Shapers from the independent symbols optionset * More verbose description * More verbose description * slight reword * Ruff ruff :3 I am a good puppy <3 * Remove invis dots * oops * Remove some unused symbols * display name * linecounting -> discard * Make all progressive chains always work * Unfortunately, this optimisation is now unsafe with plando :( * oops * This is now a possible optimisation * optimise optimise optimise * optimise optimise optimise * fix * ruff * oh * fixed frfr * mypy * Clean up the tests a bit * oop * I actually like this better now, so I'm doing it as default * Put stuff on the actual item class for faster collect/remove * giga oops * Make proguseful work * None item left beef * unnecessary change * formatting * add proguseful test to progressive symbols tests * add proguseful test to progressive symbols tests * clean up collect/remove a bit more * giga lmfao * Put stuff in option groups * Add the new symbol items to hint system * bump req client version * fix soft conflict in unit tests * fix more merge errors
60 lines
1.1 KiB
Python
60 lines
1.1 KiB
Python
from dataclasses import dataclass
|
|
from enum import Enum
|
|
from typing import Dict, List, Optional
|
|
|
|
from BaseClasses import ItemClassification
|
|
|
|
|
|
class ItemCategory(Enum):
|
|
SYMBOL = 0
|
|
DOOR = 1
|
|
LASER = 2
|
|
USEFUL = 3
|
|
FILLER = 4
|
|
TRAP = 5
|
|
JOKE = 6
|
|
EVENT = 7
|
|
|
|
|
|
CATEGORY_NAME_MAPPINGS: Dict[str, ItemCategory] = {
|
|
"Symbols:": ItemCategory.SYMBOL,
|
|
"Doors:": ItemCategory.DOOR,
|
|
"Lasers:": ItemCategory.LASER,
|
|
"Useful:": ItemCategory.USEFUL,
|
|
"Filler:": ItemCategory.FILLER,
|
|
"Traps:": ItemCategory.TRAP,
|
|
"Jokes:": ItemCategory.JOKE
|
|
}
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ItemDefinition:
|
|
local_code: int
|
|
category: ItemCategory
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ProgressiveItemDefinition(ItemDefinition):
|
|
pass
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class DoorItemDefinition(ItemDefinition):
|
|
panel_id_hexes: List[str]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class WeightedItemDefinition(ItemDefinition):
|
|
weight: int
|
|
|
|
|
|
@dataclass()
|
|
class ItemData:
|
|
"""
|
|
ItemData for an item in The Witness
|
|
"""
|
|
ap_code: Optional[int]
|
|
definition: ItemDefinition
|
|
classification: ItemClassification
|
|
local_only: bool = False
|