about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--data/ids.yaml7
-rw-r--r--data/maps/control_center/doors.txtpb13
-rw-r--r--data/maps/control_center/rooms/Partial Entrance.txtpb2
-rw-r--r--data/maps/control_center/rooms/Perceptive Entrance.txtpb2
-rw-r--r--data/maps/control_center/rooms/Repetitive Entrance.txtpb2
-rw-r--r--data/maps/control_center/rooms/Tenacious Entrance.txtpb2
-rw-r--r--data/maps/control_center/rooms/Unkempt Entrance.txtpb2
-rw-r--r--data/maps/the_entry/rooms/Repetitive Entrance.txtpb3
-rw-r--r--data/maps/the_partial/doors.txtpb6
-rw-r--r--data/maps/the_partial/rooms/Control Center Entrance.txtpb2
-rw-r--r--data/maps/the_perceptive/rooms/Main Area.txtpb2
-rw-r--r--data/maps/the_repetitive/rooms/Entry Connector.txtpb3
-rw-r--r--data/maps/the_repetitive/rooms/Main Room.txtpb2
-rw-r--r--data/maps/the_tenacious/doors.txtpb2
-rw-r--r--data/maps/the_tenacious/rooms/Control Center Entrance.txtpb2
-rw-r--r--data/maps/the_unkempt/doors.txtpb2
-rw-r--r--data/maps/the_unkempt/rooms/Control Center Entrance.txtpb2
-rw-r--r--proto/data.proto1
-rw-r--r--proto/human.proto5
-rw-r--r--tools/assign_ids/main.cpp2
-rw-r--r--tools/datapacker/main.cpp4
-rw-r--r--tools/validator/validator.cpp2
22 files changed, 35 insertions, 35 deletions
diff --git a/data/ids.yaml b/data/ids.yaml index 45c9ea0..a2762a7 100644 --- a/data/ids.yaml +++ b/data/ids.yaml
@@ -53,7 +53,10 @@ maps:
53 Between Door: 2716 53 Between Door: 2716
54 Desert Door: 2717 54 Desert Door: 2717
55 Front Door: 2709 55 Front Door: 2709
56 Hidden Door: 2840
56 Partial Door: 2713 57 Partial Door: 2713
58 Perceptive From Inside: 2842
59 Perceptive From Outside: 2841
57 Repetitive Entrance: 2714 60 Repetitive Entrance: 2714
58 Shop Door: 2718 61 Shop Door: 2718
59 Stormy Entrance: 2710 62 Stormy Entrance: 2710
@@ -2466,8 +2469,8 @@ maps:
2466 FINCH: 886 2469 FINCH: 886
2467 FOUR: 885 2470 FOUR: 885
2468 doors: 2471 doors:
2469 Control Center Entrance: 865
2470 F Door: 866 2472 F Door: 866
2473 L Entered: 2843
2471 Main Room Puzzles: 863 2474 Main Room Puzzles: 863
2472 P Door: 864 2475 P Door: 864
2473 the_plaza: 2476 the_plaza:
@@ -3207,6 +3210,7 @@ maps:
3207 panels: 3210 panels:
3208 WISDOM: 2459 3211 WISDOM: 2459
3209 doors: 3212 doors:
3213 K Entered: 2844
3210 Paintings Door: 2453 3214 Paintings Door: 2453
3211 the_three_doors: 3215 the_three_doors:
3212 rooms: 3216 rooms:
@@ -3458,6 +3462,7 @@ maps:
3458 Control Center Orange Door: 2582 3462 Control Center Orange Door: 2582
3459 East Door: 2580 3463 East Door: 2580
3460 Honor Our Hint: 2585 3464 Honor Our Hint: 2585
3465 I Entered: 2845
3461 Let Untrue Tie: 2583 3466 Let Untrue Tie: 2583
3462 Routine Out Chute: 2584 3467 Routine Out Chute: 2584
3463 W2 Room Door: 2581 3468 W2 Room Door: 2581
diff --git a/data/maps/control_center/doors.txtpb b/data/maps/control_center/doors.txtpb index 08476a7..cac1937 100644 --- a/data/maps/control_center/doors.txtpb +++ b/data/maps/control_center/doors.txtpb
@@ -15,6 +15,8 @@ doors {
15doors { 15doors {
16 name: "Hidden Door" 16 name: "Hidden Door"
17 type: EVENT 17 type: EVENT
18 latch: true
19 receivers: "Components/Doors/entry_12"
18 keyholders { room: "Main Area" name: "1" key: "h" } 20 keyholders { room: "Main Area" name: "1" key: "h" }
19 keyholders { room: "Main Area" name: "2" key: "i" } 21 keyholders { room: "Main Area" name: "2" key: "i" }
20 keyholders { room: "Main Area" name: "3" key: "d" } 22 keyholders { room: "Main Area" name: "3" key: "d" }
@@ -103,6 +105,7 @@ doors {
103doors { 105doors {
104 name: "Repetitive Entrance" 106 name: "Repetitive Entrance"
105 type: STANDARD 107 type: STANDARD
108 latch: true
106 receivers: "Components/Doors/entry_7" 109 receivers: "Components/Doors/entry_7"
107 keyholders { room: "Main Area" name: "1" key: "m" } 110 keyholders { room: "Main Area" name: "1" key: "m" }
108 keyholders { room: "Main Area" name: "2" key: "o" } 111 keyholders { room: "Main Area" name: "2" key: "o" }
@@ -113,20 +116,26 @@ doors {
113} 116}
114doors { 117doors {
115 name: "Perceptive From Outside" 118 name: "Perceptive From Outside"
116 type: EVENT 119 type: STANDARD
120 latch: true
121 receivers: "Components/Doors/entry_26"
117 keyholders { room: "Main Area" name: "1" key: "p" } 122 keyholders { room: "Main Area" name: "1" key: "p" }
118 keyholders { room: "Main Area" name: "2" key: "a" } 123 keyholders { room: "Main Area" name: "2" key: "a" }
119 keyholders { room: "Main Area" name: "3" key: "r" } 124 keyholders { room: "Main Area" name: "3" key: "r" }
120 keyholders { room: "Main Area" name: "4" key: "t" } 125 keyholders { room: "Main Area" name: "4" key: "t" }
126 location_room: "Main Area"
127 location_name: "Keyword PART"
121} 128}
122doors { 129doors {
123 name: "Perceptive From Inside" 130 name: "Perceptive From Inside"
124 type: EVENT 131 type: LOCATION_ONLY
125 panels { room: "Perceptive Entrance" name: "PART" } 132 panels { room: "Perceptive Entrance" name: "PART" }
133 location_room: "Perceptive Entrance"
126} 134}
127doors { 135doors {
128 name: "Ancient Entrance" 136 name: "Ancient Entrance"
129 type: STANDARD 137 type: STANDARD
138 latch: true
130 receivers: "Components/Doors/entry_20" 139 receivers: "Components/Doors/entry_20"
131 keyholders { room: "Main Area" name: "1" key: "z" } 140 keyholders { room: "Main Area" name: "1" key: "z" }
132 keyholders { room: "Main Area" name: "2" key: "e" } 141 keyholders { room: "Main Area" name: "2" key: "e" }
diff --git a/data/maps/control_center/rooms/Partial Entrance.txtpb b/data/maps/control_center/rooms/Partial Entrance.txtpb index 5771afc..de5d91a 100644 --- a/data/maps/control_center/rooms/Partial Entrance.txtpb +++ b/data/maps/control_center/rooms/Partial Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport4" 12 path: "Components/Warps/worldport4"
13 destination { x: 21 y: 0 z: -41 } 13 destination { x: 21 y: 0 z: -41 }
14 rotation: 270 14 rotation: 270
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/data/maps/control_center/rooms/Perceptive Entrance.txtpb b/data/maps/control_center/rooms/Perceptive Entrance.txtpb index cf5a82c..99b100b 100644 --- a/data/maps/control_center/rooms/Perceptive Entrance.txtpb +++ b/data/maps/control_center/rooms/Perceptive Entrance.txtpb
@@ -20,6 +20,4 @@ ports {
20 path: "Components/Warps/worldport12" 20 path: "Components/Warps/worldport12"
21 destination { x: -23 y: 0 z: -11 } 21 destination { x: -23 y: 0 z: -11 }
22 rotation: 0 22 rotation: 0
23 # TODO: shuffle entrances with dependent keyholders
24 no_shuffle: true
25} 23}
diff --git a/data/maps/control_center/rooms/Repetitive Entrance.txtpb b/data/maps/control_center/rooms/Repetitive Entrance.txtpb index 6e242f3..0767e2c 100644 --- a/data/maps/control_center/rooms/Repetitive Entrance.txtpb +++ b/data/maps/control_center/rooms/Repetitive Entrance.txtpb
@@ -5,6 +5,4 @@ ports {
5 path: "Components/Warps/worldport14" 5 path: "Components/Warps/worldport14"
6 destination { x: -16 y: 0 z: -17.5 } 6 destination { x: -16 y: 0 z: -17.5 }
7 rotation: 0 7 rotation: 0
8 # TODO: shuffle entrances with dependent keyholders
9 no_shuffle: true
10} 8}
diff --git a/data/maps/control_center/rooms/Tenacious Entrance.txtpb b/data/maps/control_center/rooms/Tenacious Entrance.txtpb index 2689589..093e4fc 100644 --- a/data/maps/control_center/rooms/Tenacious Entrance.txtpb +++ b/data/maps/control_center/rooms/Tenacious Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport13" 12 path: "Components/Warps/worldport13"
13 destination { x: 56 y: 0 z: -38 } 13 destination { x: 56 y: 0 z: -38 }
14 rotation: 180 14 rotation: 180
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/data/maps/control_center/rooms/Unkempt Entrance.txtpb b/data/maps/control_center/rooms/Unkempt Entrance.txtpb index 5e65254..a89cceb 100644 --- a/data/maps/control_center/rooms/Unkempt Entrance.txtpb +++ b/data/maps/control_center/rooms/Unkempt Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport3" 12 path: "Components/Warps/worldport3"
13 destination { x: 34 y: 0 z: -38.5 } 13 destination { x: 34 y: 0 z: -38.5 }
14 rotation: 90 14 rotation: 90
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/data/maps/the_entry/rooms/Repetitive Entrance.txtpb b/data/maps/the_entry/rooms/Repetitive Entrance.txtpb index 25c3307..a83eea4 100644 --- a/data/maps/the_entry/rooms/Repetitive Entrance.txtpb +++ b/data/maps/the_entry/rooms/Repetitive Entrance.txtpb
@@ -6,7 +6,4 @@ ports {
6 path: "Components/Warps/worldport7" 6 path: "Components/Warps/worldport7"
7 destination { x: -20 y: 0 z: -16 } 7 destination { x: -20 y: 0 z: -16 }
8 rotation: 180 8 rotation: 180
9 # TODO: this is part of what makes the keyholder dependent connection from CC
10 # safe in vanilla doors
11 no_shuffle: true
12} 9}
diff --git a/data/maps/the_partial/doors.txtpb b/data/maps/the_partial/doors.txtpb index c51062a..b6445cd 100644 --- a/data/maps/the_partial/doors.txtpb +++ b/data/maps/the_partial/doors.txtpb
@@ -43,17 +43,15 @@ doors {
43doors { 43doors {
44 name: "L Entered" 44 name: "L Entered"
45 type: EVENT 45 type: EVENT
46 # It does this in vanilla, but I'm specifying it so that the Control Center 46 latch: true
47 # Entrance door doesn't override it.
48 receivers: "Components/Doors/controlDoor" 47 receivers: "Components/Doors/controlDoor"
49 keyholders { room: "Obverse Side" name: "L" key: "l" } 48 keyholders { room: "Obverse Side" name: "L" key: "l" }
50} 49}
51doors { 50doors {
52 name: "Control Center Entrance" 51 name: "Control Center Entrance"
53 type: LOCATION_ONLY 52 type: EVENT
54 #receivers: "Components/Doors/controlDoor" 53 #receivers: "Components/Doors/controlDoor"
55 panels { room: "Control Center Entrance" name: "RETURN" } 54 panels { room: "Control Center Entrance" name: "RETURN" }
56 location_room: "Control Center Entrance"
57} 55}
58doors { 56doors {
59 name: "F Door" 57 name: "F Door"
diff --git a/data/maps/the_partial/rooms/Control Center Entrance.txtpb b/data/maps/the_partial/rooms/Control Center Entrance.txtpb index 02f3e69..faccd50 100644 --- a/data/maps/the_partial/rooms/Control Center Entrance.txtpb +++ b/data/maps/the_partial/rooms/Control Center Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport2" 12 path: "Components/Warps/worldport2"
13 destination { x: -19 y: 0 z: 8 } 13 destination { x: -19 y: 0 z: 8 }
14 rotation: 180 14 rotation: 180
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/data/maps/the_perceptive/rooms/Main Area.txtpb b/data/maps/the_perceptive/rooms/Main Area.txtpb index 90bfb41..ebf511d 100644 --- a/data/maps/the_perceptive/rooms/Main Area.txtpb +++ b/data/maps/the_perceptive/rooms/Main Area.txtpb
@@ -5,6 +5,4 @@ ports {
5 path: "Components/Warps/worldport" 5 path: "Components/Warps/worldport"
6 destination { x: 3 y: 0 z: 13 } 6 destination { x: 3 y: 0 z: 13 }
7 rotation: 90 7 rotation: 90
8 # TODO: shuffle entrances with dependent keyholders
9 no_shuffle: true
10} 8}
diff --git a/data/maps/the_repetitive/rooms/Entry Connector.txtpb b/data/maps/the_repetitive/rooms/Entry Connector.txtpb index 16dc116..d953ecc 100644 --- a/data/maps/the_repetitive/rooms/Entry Connector.txtpb +++ b/data/maps/the_repetitive/rooms/Entry Connector.txtpb
@@ -5,7 +5,4 @@ ports {
5 path: "Components/Warps/worldport2" 5 path: "Components/Warps/worldport2"
6 destination { x: -11 y: 0 z: 13 } 6 destination { x: -11 y: 0 z: 13 }
7 rotation: 0 7 rotation: 0
8 # TODO: this is part of what makes the keyholder dependent connection form CC
9 # safe in vanilla doors
10 no_shuffle: true
11} 8}
diff --git a/data/maps/the_repetitive/rooms/Main Room.txtpb b/data/maps/the_repetitive/rooms/Main Room.txtpb index 3e624a7..623204c 100644 --- a/data/maps/the_repetitive/rooms/Main Room.txtpb +++ b/data/maps/the_repetitive/rooms/Main Room.txtpb
@@ -142,6 +142,4 @@ ports {
142 path: "Components/Warps/worldport3" 142 path: "Components/Warps/worldport3"
143 destination { x: -5.5 y: 0 z: 56 } 143 destination { x: -5.5 y: 0 z: 56 }
144 rotation: 90 144 rotation: 90
145 # TODO: shuffle entrances with dependent keyholders
146 no_shuffle: true
147} 145}
diff --git a/data/maps/the_tenacious/doors.txtpb b/data/maps/the_tenacious/doors.txtpb index 8fe8bd5..4c454c1 100644 --- a/data/maps/the_tenacious/doors.txtpb +++ b/data/maps/the_tenacious/doors.txtpb
@@ -6,6 +6,8 @@ doors {
6doors { 6doors {
7 name: "K Entered" 7 name: "K Entered"
8 type: EVENT 8 type: EVENT
9 latch: true
10 receivers: "Components/Doors/entry_6"
9 keyholders { room: "Main Area" name: "K" key: "k" } 11 keyholders { room: "Main Area" name: "K" key: "k" }
10} 12}
11doors { 13doors {
diff --git a/data/maps/the_tenacious/rooms/Control Center Entrance.txtpb b/data/maps/the_tenacious/rooms/Control Center Entrance.txtpb index 873fabe..05a3af3 100644 --- a/data/maps/the_tenacious/rooms/Control Center Entrance.txtpb +++ b/data/maps/the_tenacious/rooms/Control Center Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport" 12 path: "Components/Warps/worldport"
13 destination { x: 0 y: 0 z: 10 } 13 destination { x: 0 y: 0 z: 10 }
14 rotation: 0 14 rotation: 0
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/data/maps/the_unkempt/doors.txtpb b/data/maps/the_unkempt/doors.txtpb index 29065ec..10165ee 100644 --- a/data/maps/the_unkempt/doors.txtpb +++ b/data/maps/the_unkempt/doors.txtpb
@@ -48,6 +48,8 @@ doors {
48doors { 48doors {
49 name: "I Entered" 49 name: "I Entered"
50 type: EVENT 50 type: EVENT
51 latch: true
52 receivers: "Components/Doors/entry_4"
51 keyholders { room: "Main Area" name: "I" key: "i" } 53 keyholders { room: "Main Area" name: "I" key: "i" }
52} 54}
53doors { 55doors {
diff --git a/data/maps/the_unkempt/rooms/Control Center Entrance.txtpb b/data/maps/the_unkempt/rooms/Control Center Entrance.txtpb index 847b8ad..7971cf7 100644 --- a/data/maps/the_unkempt/rooms/Control Center Entrance.txtpb +++ b/data/maps/the_unkempt/rooms/Control Center Entrance.txtpb
@@ -12,6 +12,4 @@ ports {
12 path: "Components/Warps/worldport2" 12 path: "Components/Warps/worldport2"
13 destination { x: -4.5 y: 0 z: 7 } 13 destination { x: -4.5 y: 0 z: 7 }
14 rotation: 0 14 rotation: 0
15 # TODO: shuffle entrances with dependent keyholders
16 no_shuffle: true
17} 15}
diff --git a/proto/data.proto b/proto/data.proto index a9e1d0d..4b3cf1f 100644 --- a/proto/data.proto +++ b/proto/data.proto
@@ -148,6 +148,7 @@ message Door {
148 repeated string senders = 19; 148 repeated string senders = 19;
149 149
150 optional DoorType type = 8; 150 optional DoorType type = 8;
151 optional bool latch = 20;
151 152
152 optional string location_name = 17; 153 optional string location_name = 17;
153} 154}
diff --git a/proto/human.proto b/proto/human.proto index c8d653f..ee59bab 100644 --- a/proto/human.proto +++ b/proto/human.proto
@@ -114,6 +114,11 @@ message HumanDoor {
114 optional DoorType type = 4; 114 optional DoorType type = 4;
115 optional string location_room = 5; 115 optional string location_room = 5;
116 optional string location_name = 14; 116 optional string location_name = 14;
117
118 // Non-item doors that are latched will stay open once opened, even if the
119 // opening trigger is deactivated. This applies to EVENT/LOCATION_ONLY doors,
120 // as well as item-locked doors when not shuffling doors.
121 optional bool latch = 17;
117} 122}
118 123
119message HumanDoors { 124message HumanDoors {
diff --git a/tools/assign_ids/main.cpp b/tools/assign_ids/main.cpp index 3e16f78..357566a 100644 --- a/tools/assign_ids/main.cpp +++ b/tools/assign_ids/main.cpp
@@ -111,7 +111,7 @@ class AssignIds {
111 111
112 void ProcessDoor(const HumanDoor& h_door, 112 void ProcessDoor(const HumanDoor& h_door,
113 const std::string& current_map_name) { 113 const std::string& current_map_name) {
114 if (h_door.type() == DoorType::EVENT) { 114 if (h_door.type() == DoorType::EVENT && !h_door.latch()) {
115 return; 115 return;
116 } 116 }
117 117
diff --git a/tools/datapacker/main.cpp b/tools/datapacker/main.cpp index 9b487e4..fe520aa 100644 --- a/tools/datapacker/main.cpp +++ b/tools/datapacker/main.cpp
@@ -431,6 +431,10 @@ class DataPacker {
431 if (h_door.has_double_letters()) { 431 if (h_door.has_double_letters()) {
432 door.set_double_letters(h_door.double_letters()); 432 door.set_double_letters(h_door.double_letters());
433 } 433 }
434
435 if (h_door.has_latch()) {
436 door.set_latch(h_door.latch());
437 }
434 } 438 }
435 439
436 void ProcessConnectionsFile(std::filesystem::path path, 440 void ProcessConnectionsFile(std::filesystem::path path,
diff --git a/tools/validator/validator.cpp b/tools/validator/validator.cpp index c048bab..d651e04 100644 --- a/tools/validator/validator.cpp +++ b/tools/validator/validator.cpp
@@ -234,7 +234,7 @@ class Validator {
234 << std::endl; 234 << std::endl;
235 } 235 }
236 236
237 bool needs_id = (h_door.type() != DoorType::EVENT); 237 bool needs_id = (h_door.type() != DoorType::EVENT || h_door.latch());
238 if (door_info.has_id != needs_id) { 238 if (door_info.has_id != needs_id) {
239 if (needs_id) { 239 if (needs_id) {
240 std::cout << "Door " << door_identifier.ShortDebugString() 240 std::cout << "Door " << door_identifier.ShortDebugString()