blob: 9521422ab154a0c65a69e91445a8e4c258abad02 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
from enum import Enum, Flag, auto
from typing import List, NamedTuple, Optional
class RoomAndDoor(NamedTuple):
room: Optional[str]
door: str
class RoomAndPanel(NamedTuple):
room: Optional[str]
panel: str
class RoomAndPanelDoor(NamedTuple):
room: Optional[str]
panel_door: str
class EntranceType(Flag):
NORMAL = auto()
PAINTING = auto()
SUNWARP = auto()
WARP = auto()
CROSSROADS_ROOF_ACCESS = auto()
class RoomEntrance(NamedTuple):
room: str # source room
door: Optional[RoomAndDoor]
type: EntranceType
class Room(NamedTuple):
name: str
entrances: List[RoomEntrance]
class DoorType(Enum):
NORMAL = 1
SUNWARP = 2
SUN_PAINTING = 3
class Door(NamedTuple):
name: str
item_name: str
location_name: Optional[str]
panels: Optional[List[RoomAndPanel]]
skip_location: bool
skip_item: bool
has_doors: bool
painting_ids: List[str]
event: bool
door_group: Optional[str]
include_reduce: bool
type: DoorType
item_group: Optional[str]
class Panel(NamedTuple):
required_rooms: List[str]
required_doors: List[RoomAndDoor]
required_panels: List[RoomAndPanel]
colors: List[str]
check: bool
event: bool
exclude_reduce: bool
achievement: bool
non_counting: bool
panel_door: Optional[RoomAndPanelDoor] # This will always be fully specified.
location_name: Optional[str]
class PanelDoor(NamedTuple):
item_name: str
panel_group: Optional[str]
class Painting(NamedTuple):
id: str
room: str
enter_only: bool
exit_only: bool
required: bool
required_when_no_doors: bool
required_door: Optional[RoomAndDoor]
disable: bool
req_blocked: bool
req_blocked_when_no_doors: bool
class Progression(NamedTuple):
item_name: str
index: int
|