summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--apworld/player_logic.py2
-rw-r--r--apworld/static_logic.py4
-rw-r--r--data/connections.txtpb23
-rw-r--r--data/maps/the_between/connections.txtpb10
-rw-r--r--data/maps/the_between/doors.txtpb207
-rw-r--r--data/maps/the_between/rooms/B2 Room.txtpb4
-rw-r--r--data/maps/the_between/rooms/Control Center Side.txtpb24
-rw-r--r--data/maps/the_between/rooms/Main Area.txtpb209
-rw-r--r--data/maps/the_entry/rooms/Red Blue Halls.txtpb2
-rw-r--r--proto/common.proto3
-rw-r--r--proto/human.proto6
11 files changed, 490 insertions, 4 deletions
diff --git a/apworld/player_logic.py b/apworld/player_logic.py index 675c6ae..1efdbc1 100644 --- a/apworld/player_logic.py +++ b/apworld/player_logic.py
@@ -16,5 +16,5 @@ class Lingo2PlayerLogic:
16 self.locations_by_room = {} 16 self.locations_by_room = {}
17 17
18 for door in world.static_logic.objects.doors: 18 for door in world.static_logic.objects.doors:
19 if door.type == common_pb2.DoorType.STANDARD: 19 if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.LOCATION_ONLY]:
20 self.locations_by_room.setdefault(door.room_id, []).append(PlayerLocation(door.ap_id)) 20 self.locations_by_room.setdefault(door.room_id, []).append(PlayerLocation(door.ap_id))
diff --git a/apworld/static_logic.py b/apworld/static_logic.py index db2af82..1cab340 100644 --- a/apworld/static_logic.py +++ b/apworld/static_logic.py
@@ -18,11 +18,11 @@ class Lingo2StaticLogic:
18 self.objects.ParseFromString(bytearray(file)) 18 self.objects.ParseFromString(bytearray(file))
19 19
20 for door in self.objects.doors: 20 for door in self.objects.doors:
21 if door.type == common_pb2.DoorType.STANDARD: 21 if door.type in [common_pb2.DoorType.STANDARD, common_pb2.DoorType.LOCATION_ONLY]:
22 location_name = f"{self.objects.maps[door.map_id].name} - {door.name}" 22 location_name = f"{self.objects.maps[door.map_id].name} - {door.name}"
23 self.location_id_to_name[door.ap_id] = location_name 23 self.location_id_to_name[door.ap_id] = location_name
24 24
25 if door.type != common_pb2.DoorType.EVENT: 25 if door.type not in [common_pb2.DoorType.EVENT, common_pb2.DoorType.LOCATION_ONLY]:
26 item_name = f"{self.objects.maps[door.map_id].name} - {door.name}" 26 item_name = f"{self.objects.maps[door.map_id].name} - {door.name}"
27 self.item_id_to_name[door.ap_id] = item_name 27 self.item_id_to_name[door.ap_id] = item_name
28 28
diff --git a/data/connections.txtpb b/data/connections.txtpb index ab2db22..6aaf273 100644 --- a/data/connections.txtpb +++ b/data/connections.txtpb
@@ -9,6 +9,11 @@
9# the_bearer/Entry/UNYIELDING 9# the_bearer/Entry/UNYIELDING
10# the_bearer/Back Area/DAEDALUS 10# the_bearer/Back Area/DAEDALUS
11# the_bearer/Butterfly Room/BUTTERFLY 11# the_bearer/Butterfly Room/BUTTERFLY
12# the_between/Main Area/GREAT
13# the_between/Main Area/PLAZA
14# gallery -> between
15# the_between/Control Center Side/CC
16# the_between/Control Center Side/LIVELY
12connections { 17connections {
13 from { 18 from {
14 panel { 19 panel {
@@ -170,4 +175,20 @@ connections {
170 } 175 }
171 } 176 }
172 oneway: true 177 oneway: true
173} \ No newline at end of file 178}
179connections {
180 from {
181 painting {
182 map: "the_between"
183 room: "Control Center Side"
184 name: "EYE"
185 }
186 }
187 to {
188 room {
189 map: "the_entry"
190 name: "Eye Room"
191 }
192 }
193 oneway: true
194}
diff --git a/data/maps/the_between/connections.txtpb b/data/maps/the_between/connections.txtpb new file mode 100644 index 0000000..e2e7dc8 --- /dev/null +++ b/data/maps/the_between/connections.txtpb
@@ -0,0 +1,10 @@
1connections {
2 from_room: "Main Area"
3 to_room: "Control Center Side"
4 door { name: "Control Center Entrance" }
5}
6connections {
7 from_room: "Main Area"
8 to_room: "B2 Room"
9 door { name: "B2 Door" }
10}
diff --git a/data/maps/the_between/doors.txtpb b/data/maps/the_between/doors.txtpb new file mode 100644 index 0000000..a7270a8 --- /dev/null +++ b/data/maps/the_between/doors.txtpb
@@ -0,0 +1,207 @@
1doors {
2 name: "Red Puzzles"
3 type: LOCATION_ONLY
4 panels { room: "Main Area" name: "SUN" }
5 panels { room: "Main Area" name: "KOI" }
6 panels { room: "Main Area" name: "SUN KOI" }
7 location_room: "Main Area"
8}
9doors {
10 name: "Yellow Puzzles"
11 type: LOCATION_ONLY
12 panels { room: "Main Area" name: "CHOP" }
13 panels { room: "Main Area" name: "YOU" }
14 panels { room: "Main Area" name: "PLOT" }
15 panels { room: "Main Area" name: "CHOP YOU PLOT" }
16 location_room: "Main Area"
17}
18doors {
19 name: "Green Puzzles"
20 type: LOCATION_ONLY
21 panels { room: "Main Area" name: "OUT" }
22 panels { room: "Main Area" name: "SEW" }
23 panels { room: "Main Area" name: "NEAR" }
24 panels { room: "Main Area" name: "OUT SEW NEAR" }
25 location_room: "Main Area"
26}
27doors {
28 name: "Orange Puzzles"
29 type: LOCATION_ONLY
30 panels { room: "Main Area" name: "SHINE" }
31 panels { room: "Main Area" name: "CURTSY" }
32 panels { room: "Main Area" name: "SHINE CURTSY" }
33 location_room: "Main Area"
34}
35doors {
36 name: "Brown Puzzles"
37 type: LOCATION_ONLY
38 panels { room: "Main Area" name: "NEW" }
39 panels { room: "Main Area" name: "DOLLARS" }
40 panels { room: "Main Area" name: "NEW DOLLARS" }
41 location_room: "Main Area"
42}
43doors {
44 name: "Gray Puzzles"
45 type: LOCATION_ONLY
46 panels { room: "Main Area" name: "FOUR" }
47 panels { room: "Main Area" name: "CAUGHT" }
48 panels { room: "Main Area" name: "NET" }
49 panels { room: "Main Area" name: "FOUR CAUGHT NET" }
50 location_room: "Main Area"
51}
52doors {
53 name: "Purple Puzzles"
54 type: LOCATION_ONLY
55 panels { room: "Main Area" name: "GREEN" }
56 panels { room: "Main Area" name: "THINK" }
57 panels { room: "Main Area" name: "LION" }
58 panels { room: "Main Area" name: "GREEN THINK LION" }
59 location_room: "Main Area"
60}
61doors {
62 name: "Blue Puzzles"
63 type: LOCATION_ONLY
64 panels { room: "Main Area" name: "MOON" }
65 panels { room: "Main Area" name: "POWER" }
66 panels { room: "Main Area" name: "MOON POWER" }
67 location_room: "Main Area"
68}
69doors {
70 name: "Gallery Painting"
71 type: ITEM_ONLY
72 # TODO: How does this door move the painting in the gallery?
73 panels { room: "Main Area" name: "SUN" }
74 panels { room: "Main Area" name: "KOI" }
75 panels { room: "Main Area" name: "SUN KOI" }
76 panels { room: "Main Area" name: "CHOP" }
77 panels { room: "Main Area" name: "YOU" }
78 panels { room: "Main Area" name: "PLOT" }
79 panels { room: "Main Area" name: "CHOP YOU PLOT" }
80 panels { room: "Main Area" name: "OUT" }
81 panels { room: "Main Area" name: "SEW" }
82 panels { room: "Main Area" name: "NEAR" }
83 panels { room: "Main Area" name: "OUT SEW NEAR" }
84 panels { room: "Main Area" name: "SHINE" }
85 panels { room: "Main Area" name: "CURTSY" }
86 panels { room: "Main Area" name: "SHINE CURTSY" }
87 panels { room: "Main Area" name: "NEW" }
88 panels { room: "Main Area" name: "DOLLARS" }
89 panels { room: "Main Area" name: "NEW DOLLARS" }
90 panels { room: "Main Area" name: "FOUR" }
91 panels { room: "Main Area" name: "CAUGHT" }
92 panels { room: "Main Area" name: "NET" }
93 panels { room: "Main Area" name: "FOUR CAUGHT NET" }
94 panels { room: "Main Area" name: "GREEN" }
95 panels { room: "Main Area" name: "THINK" }
96 panels { room: "Main Area" name: "LION" }
97 panels { room: "Main Area" name: "GREEN THINK LION" }
98 panels { room: "Main Area" name: "MOON" }
99 panels { room: "Main Area" name: "POWER" }
100 panels { room: "Main Area" name: "MOON POWER" }
101 panels { room: "Control Center Side" name: "RIGHT" }
102 complete_at: 1
103}
104doors {
105 name: "Control Center Entrance"
106 type: ITEM_ONLY
107 receivers: "Components/Doors/entry_3"
108 panels { room: "Main Area" name: "SUN" }
109 panels { room: "Main Area" name: "KOI" }
110 panels { room: "Main Area" name: "SUN KOI" }
111 panels { room: "Main Area" name: "CHOP" }
112 panels { room: "Main Area" name: "YOU" }
113 panels { room: "Main Area" name: "PLOT" }
114 panels { room: "Main Area" name: "CHOP YOU PLOT" }
115 panels { room: "Main Area" name: "OUT" }
116 panels { room: "Main Area" name: "SEW" }
117 panels { room: "Main Area" name: "NEAR" }
118 panels { room: "Main Area" name: "OUT SEW NEAR" }
119 panels { room: "Main Area" name: "SHINE" }
120 panels { room: "Main Area" name: "CURTSY" }
121 panels { room: "Main Area" name: "SHINE CURTSY" }
122 panels { room: "Main Area" name: "NEW" }
123 panels { room: "Main Area" name: "DOLLARS" }
124 panels { room: "Main Area" name: "NEW DOLLARS" }
125 panels { room: "Main Area" name: "FOUR" }
126 panels { room: "Main Area" name: "CAUGHT" }
127 panels { room: "Main Area" name: "NET" }
128 panels { room: "Main Area" name: "FOUR CAUGHT NET" }
129 panels { room: "Main Area" name: "GREEN" }
130 panels { room: "Main Area" name: "THINK" }
131 panels { room: "Main Area" name: "LION" }
132 panels { room: "Main Area" name: "GREEN THINK LION" }
133 panels { room: "Main Area" name: "MOON" }
134 panels { room: "Main Area" name: "POWER" }
135 panels { room: "Main Area" name: "MOON POWER" }
136 panels { room: "Control Center Side" name: "RIGHT" }
137 complete_at: 10
138}
139doors {
140 name: "Plaza Entrance"
141 type: ITEM_ONLY
142 receivers: "Components/Doors/entry_4"
143 panels { room: "Main Area" name: "SUN" }
144 panels { room: "Main Area" name: "KOI" }
145 panels { room: "Main Area" name: "SUN KOI" }
146 panels { room: "Main Area" name: "CHOP" }
147 panels { room: "Main Area" name: "YOU" }
148 panels { room: "Main Area" name: "PLOT" }
149 panels { room: "Main Area" name: "CHOP YOU PLOT" }
150 panels { room: "Main Area" name: "OUT" }
151 panels { room: "Main Area" name: "SEW" }
152 panels { room: "Main Area" name: "NEAR" }
153 panels { room: "Main Area" name: "OUT SEW NEAR" }
154 panels { room: "Main Area" name: "SHINE" }
155 panels { room: "Main Area" name: "CURTSY" }
156 panels { room: "Main Area" name: "SHINE CURTSY" }
157 panels { room: "Main Area" name: "NEW" }
158 panels { room: "Main Area" name: "DOLLARS" }
159 panels { room: "Main Area" name: "NEW DOLLARS" }
160 panels { room: "Main Area" name: "FOUR" }
161 panels { room: "Main Area" name: "CAUGHT" }
162 panels { room: "Main Area" name: "NET" }
163 panels { room: "Main Area" name: "FOUR CAUGHT NET" }
164 panels { room: "Main Area" name: "GREEN" }
165 panels { room: "Main Area" name: "THINK" }
166 panels { room: "Main Area" name: "LION" }
167 panels { room: "Main Area" name: "GREEN THINK LION" }
168 panels { room: "Main Area" name: "MOON" }
169 panels { room: "Main Area" name: "POWER" }
170 panels { room: "Main Area" name: "MOON POWER" }
171 panels { room: "Control Center Side" name: "RIGHT" }
172 complete_at: 20
173}
174doors {
175 name: "B2 Door"
176 type: ITEM_ONLY
177 receivers: "Components/Doors/entry_1"
178 panels { room: "Main Area" name: "SUN" }
179 panels { room: "Main Area" name: "KOI" }
180 panels { room: "Main Area" name: "SUN KOI" }
181 panels { room: "Main Area" name: "CHOP" }
182 panels { room: "Main Area" name: "YOU" }
183 panels { room: "Main Area" name: "PLOT" }
184 panels { room: "Main Area" name: "CHOP YOU PLOT" }
185 panels { room: "Main Area" name: "OUT" }
186 panels { room: "Main Area" name: "SEW" }
187 panels { room: "Main Area" name: "NEAR" }
188 panels { room: "Main Area" name: "OUT SEW NEAR" }
189 panels { room: "Main Area" name: "SHINE" }
190 panels { room: "Main Area" name: "CURTSY" }
191 panels { room: "Main Area" name: "SHINE CURTSY" }
192 panels { room: "Main Area" name: "NEW" }
193 panels { room: "Main Area" name: "DOLLARS" }
194 panels { room: "Main Area" name: "NEW DOLLARS" }
195 panels { room: "Main Area" name: "FOUR" }
196 panels { room: "Main Area" name: "CAUGHT" }
197 panels { room: "Main Area" name: "NET" }
198 panels { room: "Main Area" name: "FOUR CAUGHT NET" }
199 panels { room: "Main Area" name: "GREEN" }
200 panels { room: "Main Area" name: "THINK" }
201 panels { room: "Main Area" name: "LION" }
202 panels { room: "Main Area" name: "GREEN THINK LION" }
203 panels { room: "Main Area" name: "MOON" }
204 panels { room: "Main Area" name: "POWER" }
205 panels { room: "Main Area" name: "MOON POWER" }
206 panels { room: "Control Center Side" name: "RIGHT" }
207}
diff --git a/data/maps/the_between/rooms/B2 Room.txtpb b/data/maps/the_between/rooms/B2 Room.txtpb new file mode 100644 index 0000000..d4e0afe --- /dev/null +++ b/data/maps/the_between/rooms/B2 Room.txtpb
@@ -0,0 +1,4 @@
1name: "B2 Room"
2display_name: "B2 Room"
3letters { key: "b" double: true }
4# Uhh idk if the paintings and door in here should be randomized.
diff --git a/data/maps/the_between/rooms/Control Center Side.txtpb b/data/maps/the_between/rooms/Control Center Side.txtpb new file mode 100644 index 0000000..81bae60 --- /dev/null +++ b/data/maps/the_between/rooms/Control Center Side.txtpb
@@ -0,0 +1,24 @@
1name: "Control Center Side"
2display_name: "Control Center Side"
3panels {
4 name: "RIGHT"
5 path: "Panels/Helpers/panel_1"
6 clue: "right"
7 answer: "right"
8}
9paintings {
10 name: "EYE"
11 path: "Components/Paintings/eyes5"
12 orientation: "north"
13 display_name: "Painting"
14}
15ports {
16 name: "CC"
17 path: "Components/Warps/worldport3"
18 orientation: "north"
19}
20ports {
21 name: "LIVELY"
22 path: "Components/Warps/worldport2"
23 orientation: "south"
24}
diff --git a/data/maps/the_between/rooms/Main Area.txtpb b/data/maps/the_between/rooms/Main Area.txtpb new file mode 100644 index 0000000..1e0e291 --- /dev/null +++ b/data/maps/the_between/rooms/Main Area.txtpb
@@ -0,0 +1,209 @@
1name: "Main Area"
2display_name: "Main Area"
3panels {
4 name: "NEW"
5 path: "Panels/Room 1/panel_1"
6 clue: "new"
7 answer: "knew"
8 symbols: "zero"
9}
10panels {
11 name: "DOLLARS"
12 path: "Panels/Room 1/panel_2"
13 clue: "dollars"
14 answer: "cents"
15 symbols: "pyramid"
16}
17panels {
18 name: "NEW DOLLARS"
19 path: "Panels/Room 1/panel_3"
20 clue: ""
21 answer: "nuisance"
22 symbols: "zero"
23 symbols: "lingo"
24}
25panels {
26 name: "SHINE"
27 path: "Panels/Room 1/panel_4"
28 clue: "shine"
29 answer: "rain"
30 symbols: "sun"
31}
32panels {
33 name: "CURTSY"
34 path: "Panels/Room 1/panel_5"
35 clue: "curtsy"
36 answer: "bow"
37 symbols: "sun"
38}
39panels {
40 name: "SHINE CURTSY"
41 path: "Panels/Room 1/panel_6"
42 clue: ""
43 answer: "rainbow"
44 symbols: "lingo"
45}
46panels {
47 name: "SUN"
48 path: "Panels/Room 1/panel_7"
49 clue: "sun"
50 answer: "star"
51 symbols: "example"
52}
53panels {
54 name: "KOI"
55 path: "Panels/Room 1/panel_8"
56 clue: "koi"
57 answer: "fish"
58 symbols: "example"
59}
60panels {
61 name: "SUN KOI"
62 path: "Panels/Room 1/panel_9"
63 clue: ""
64 answer: "starfish"
65 symbols: "lingo"
66}
67panels {
68 name: "MOON"
69 path: "Panels/Room 1/panel_10"
70 clue: "moon"
71 answer: "sun"
72 symbols: "sun"
73}
74panels {
75 name: "POWER"
76 path: "Panels/Room 1/panel_11"
77 clue: "power"
78 answer: "flower"
79 symbols: "zero"
80}
81panels {
82 name: "MOON POWER"
83 path: "Panels/Room 1/panel_12"
84 clue: ""
85 answer: "sunflower"
86 symbols: "lingo"
87}
88panels {
89 name: "FOUR"
90 path: "Panels/Room 1/panel_13"
91 clue: "four"
92 answer: "for"
93 symbols: "zero"
94}
95panels {
96 name: "CAUGHT"
97 path: "Panels/Room 1/panel_14"
98 clue: "caught"
99 answer: "got"
100 symbols: "zero"
101}
102panels {
103 name: "NET"
104 path: "Panels/Room 1/panel_15"
105 clue: "net"
106 answer: "ten"
107}
108panels {
109 name: "FOUR CAUGHT NET"
110 path: "Panels/Room 1/panel_16"
111 clue: ""
112 answer: "forgotten"
113 symbols: "lingo"
114}
115panels {
116 name: "OUT"
117 path: "Panels/Room 1/panel_17"
118 clue: "out"
119 answer: "in"
120 symbols: "sun"
121}
122panels {
123 name: "SEW"
124 path: "Panels/Room 1/panel_18"
125 clue: "sew"
126 answer: "so"
127 symbols: "zero"
128}
129panels {
130 name: "NEAR"
131 path: "Panels/Room 1/panel_19"
132 clue: "near"
133 answer: "far"
134 symbols: "sun"
135}
136panels {
137 name: "OUT SEW NEAR"
138 path: "Panels/Room 1/panel_20"
139 clue: ""
140 answer: "insofar"
141 symbols: "lingo"
142}
143panels {
144 name: "CHOP"
145 path: "Panels/Room 1/panel_21"
146 clue: "chop"
147 answer: "cop"
148 symbols: "sparkles"
149}
150panels {
151 name: "YOU"
152 path: "Panels/Room 1/panel_22"
153 clue: "you"
154 answer: "i"
155 symbols: "sun"
156}
157panels {
158 name: "PLOT"
159 path: "Panels/Room 1/panel_23"
160 clue: "plot"
161 answer: "lot"
162 symbols: "sparkles"
163}
164panels {
165 name: "CHOP YOU PLOT"
166 path: "Panels/Room 1/panel_24"
167 clue: ""
168 answer: "copilot"
169 symbols: "lingo"
170}
171panels {
172 name: "GREEN"
173 path: "Panels/Room 1/panel_25"
174 clue: "green"
175 answer: "red"
176 symbols: "sun"
177}
178panels {
179 name: "THINK"
180 path: "Panels/Room 1/panel_26"
181 clue: "think"
182 answer: "act"
183 symbols: "sun"
184}
185panels {
186 name: "LION"
187 path: "Panels/Room 1/panel_27"
188 clue: "lion"
189 answer: "ion"
190 symbols: "sparkles"
191}
192panels {
193 name: "GREEN THINK LION"
194 path: "Panels/Room 1/panel_28"
195 clue: ""
196 answer: "redaction"
197 symbols: "lingo"
198}
199ports {
200 name: "GREAT"
201 path: "Components/Warps/worldport"
202 orientation: "east"
203}
204ports {
205 name: "PLAZA"
206 path: "Components/Warps/worldport4"
207 orientation: "north"
208 required_door { name: "Plaza Entrance" }
209}
diff --git a/data/maps/the_entry/rooms/Red Blue Halls.txtpb b/data/maps/the_entry/rooms/Red Blue Halls.txtpb index 583a310..d5fb8d4 100644 --- a/data/maps/the_entry/rooms/Red Blue Halls.txtpb +++ b/data/maps/the_entry/rooms/Red Blue Halls.txtpb
@@ -21,6 +21,7 @@ panels {
21 answer: "noon" 21 answer: "noon"
22 symbols: "sun" 22 symbols: "sun"
23 symbols: "sparkles" 23 symbols: "sparkles"
24 symbols: "lingo"
24} 25}
25panels { 26panels {
26 name: "WANDER" 27 name: "WANDER"
@@ -49,6 +50,7 @@ panels {
49 clue: "" 50 clue: ""
50 answer: "scarf" 51 answer: "scarf"
51 symbols: "boxes" 52 symbols: "boxes"
53 symbols: "lingo"
52} 54}
53paintings { 55paintings {
54 name: "BLARE" 56 name: "BLARE"
diff --git a/proto/common.proto b/proto/common.proto index a066cae..03ad436 100644 --- a/proto/common.proto +++ b/proto/common.proto
@@ -26,4 +26,7 @@ enum DoorType {
26 26
27 // This door is never a location, and is an item as long as control center color shuffle is on. 27 // This door is never a location, and is an item as long as control center color shuffle is on.
28 CONTROL_CENTER_COLOR = 4; 28 CONTROL_CENTER_COLOR = 4;
29
30 // This door is never an item, and is a location as long as panelsanity is not on.
31 LOCATION_ONLY = 5;
29} 32}
diff --git a/proto/human.proto b/proto/human.proto index e8da304..3352518 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -67,7 +67,13 @@ message HumanDoor {
67 repeated string receivers = 2; 67 repeated string receivers = 2;
68 repeated PaintingIdentifier move_paintings = 8; 68 repeated PaintingIdentifier move_paintings = 8;
69 69
70 // The set of panels that must be solved to open this door.
70 repeated PanelIdentifier panels = 3; 71 repeated PanelIdentifier panels = 3;
72
73 // If set, the number of panels from the above set that need to be solved.
74 // Warning: this is a messy kind of OR logic! Consider if there's another way.
75 uint64 complete_at = 9;
76
71 string control_center_color = 6; 77 string control_center_color = 6;
72 repeated string switches = 7; 78 repeated string switches = 7;
73 79