diff options
-rw-r--r-- | CHANGELOG.md | 22 | ||||
-rw-r--r-- | apworld/__init__.py | 10 | ||||
-rw-r--r-- | apworld/client/manager.gd | 16 | ||||
-rw-r--r-- | apworld/client/minimap.gd | 13 | ||||
-rw-r--r-- | apworld/regions.py | 6 | ||||
-rw-r--r-- | data/ids.yaml | 26 | ||||
-rw-r--r-- | data/maps/the_great/connections.txtpb | 4 | ||||
-rw-r--r-- | data/maps/the_great/doors.txtpb | 40 | ||||
-rw-r--r-- | data/maps/the_great/rooms/Back Area.txtpb | 86 | ||||
-rw-r--r-- | data/maps/the_great/rooms/The Landscapes.txtpb | 88 | ||||
-rw-r--r-- | data/maps/the_great/rooms/Whole Room.txtpb | 2 | ||||
-rw-r--r-- | data/metadata.txtpb | 4 |
12 files changed, 192 insertions, 125 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 83b6d35..131b8a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md | |||
@@ -1,5 +1,27 @@ | |||
1 | # lingo2-archipelago Releases | 1 | # lingo2-archipelago Releases |
2 | 2 | ||
3 | ## v7.1.0 - 2025-10-07 | ||
4 | |||
5 | - Added a "Get Path" button to the locations tracker. This shows you the path | ||
6 | you're currently expected to be able to take in order to reach that | ||
7 | location/worldport/goal. | ||
8 | - Worldport names in the spoiler log have been changed to be more descriptive. | ||
9 | - Jumping into The Graveyard from The Sun Temple is now in logic. | ||
10 | - Solving the FLIP panels above the Liberated and Literate entrances by looking | ||
11 | up is now in logic. | ||
12 | - Renamed some locations so that they're shorter. | ||
13 | - Fixed bug where White Ending would kick the player out of Archipelago. | ||
14 | - Fixed bug where the minimap would be completely white when a texture pack is | ||
15 | enabled. | ||
16 | - Generation failures while shuffling worldports should be significantly less | ||
17 | common. | ||
18 | |||
19 | Download: | ||
20 | [lingo2.apworld](https://files.fourisland.com/releases/lingo2-archipelago/apworld/v7.1.0/lingo2.apworld)<br/> | ||
21 | Template YAML: | ||
22 | [Lingo 2.yaml](https://files.fourisland.com/releases/lingo2-archipelago/apworld/v7.1.0/Lingo%202.yaml)<br/> | ||
23 | Source: [v7.1.0](https://code.fourisland.com/lingo2-archipelago/tag/?h=v7.1.0) | ||
24 | |||
3 | ## v7.0.2 - 2025-10-03 | 25 | ## v7.0.2 - 2025-10-03 |
4 | 26 | ||
5 | - Fixed issue connecting to password-protected slots. | 27 | - Fixed issue connecting to password-protected slots. |
diff --git a/apworld/__init__.py b/apworld/__init__.py index 9e445c7..e126fc0 100644 --- a/apworld/__init__.py +++ b/apworld/__init__.py | |||
@@ -4,6 +4,7 @@ Archipelago init file for Lingo 2 | |||
4 | from typing import ClassVar | 4 | from typing import ClassVar |
5 | 5 | ||
6 | from BaseClasses import ItemClassification, Item, Tutorial | 6 | from BaseClasses import ItemClassification, Item, Tutorial |
7 | from Options import OptionError | ||
7 | from settings import Group, UserFilePath | 8 | from settings import Group, UserFilePath |
8 | from worlds.AutoWorld import WebWorld, World | 9 | from worlds.AutoWorld import WebWorld, World |
9 | from .items import Lingo2Item, ANTI_COLLECTABLE_TRAPS | 10 | from .items import Lingo2Item, ANTI_COLLECTABLE_TRAPS |
@@ -82,9 +83,9 @@ class Lingo2World(World): | |||
82 | else: | 83 | else: |
83 | shuffle_entrances(self) | 84 | shuffle_entrances(self) |
84 | 85 | ||
85 | from Utils import visualize_regions | 86 | #from Utils import visualize_regions |
86 | 87 | ||
87 | visualize_regions(self.multiworld.get_region("Menu", self.player), "my_world.puml") | 88 | #visualize_regions(self.multiworld.get_region("Menu", self.player), "my_world.puml") |
88 | 89 | ||
89 | def create_items(self): | 90 | def create_items(self): |
90 | pool = [self.create_item(name) for name in self.player_logic.real_items] | 91 | pool = [self.create_item(name) for name in self.player_logic.real_items] |
@@ -109,6 +110,11 @@ class Lingo2World(World): | |||
109 | for i in range(0, item_difference): | 110 | for i in range(0, item_difference): |
110 | pool.append(self.create_item(self.get_filler_item_name())) | 111 | pool.append(self.create_item(self.get_filler_item_name())) |
111 | 112 | ||
113 | if not any(ItemClassification.progression in item.classification for item in pool): | ||
114 | raise OptionError(f"Lingo 2 player {self.player} has no progression items. Please enable at least one " | ||
115 | f"option that would add progression gating to your world, such as Shuffle Doors or " | ||
116 | f"Shuffle Letters.") | ||
117 | |||
112 | self.multiworld.itempool += pool | 118 | self.multiworld.itempool += pool |
113 | 119 | ||
114 | def create_item(self, name: str) -> Item: | 120 | def create_item(self, name: str) -> Item: |
diff --git a/apworld/client/manager.gd b/apworld/client/manager.gd index 4f5018f..dac09b2 100644 --- a/apworld/client/manager.gd +++ b/apworld/client/manager.gd | |||
@@ -75,6 +75,8 @@ var strict_cyan_ending = false | |||
75 | var strict_purple_ending = false | 75 | var strict_purple_ending = false |
76 | var victory_condition = -1 | 76 | var victory_condition = -1 |
77 | 77 | ||
78 | var color_by_material_path = {} | ||
79 | |||
78 | signal could_not_connect | 80 | signal could_not_connect |
79 | signal connect_status | 81 | signal connect_status |
80 | signal ap_connected | 82 | signal ap_connected |
@@ -112,6 +114,20 @@ func _init(): | |||
112 | if data.size() > 6: | 114 | if data.size() > 6: |
113 | show_minimap = data[6] | 115 | show_minimap = data[6] |
114 | 116 | ||
117 | # We need to create a mapping from material paths to the original colors of | ||
118 | # those materials. We force reload the materials, overwriting any custom | ||
119 | # textures, and create the mapping. We then reload the textures in case the | ||
120 | # player had a custom one enabled. | ||
121 | var directory = DirAccess.open("res://assets/materials") | ||
122 | for material_name in directory.get_files(): | ||
123 | var material = ResourceLoader.load( | ||
124 | "res://assets/materials/" + material_name, "", ResourceLoader.CACHE_MODE_REPLACE | ||
125 | ) | ||
126 | |||
127 | color_by_material_path[material.resource_path] = Color(material.albedo_color) | ||
128 | |||
129 | settings.load_user_textures() | ||
130 | |||
115 | 131 | ||
116 | func _ready(): | 132 | func _ready(): |
117 | client = SCRIPT_client.new() | 133 | client = SCRIPT_client.new() |
diff --git a/apworld/client/minimap.gd b/apworld/client/minimap.gd index 5640716..bf70114 100644 --- a/apworld/client/minimap.gd +++ b/apworld/client/minimap.gd | |||
@@ -126,6 +126,7 @@ func _process(_delta): | |||
126 | 126 | ||
127 | 127 | ||
128 | func _renderMap(gridmap): | 128 | func _renderMap(gridmap): |
129 | var ap = global.get_node("Archipelago") | ||
129 | var heights = {} | 130 | var heights = {} |
130 | 131 | ||
131 | var rendered = Image.create_empty(cell_width, cell_height, false, Image.FORMAT_RGBA8) | 132 | var rendered = Image.create_empty(cell_width, cell_height, false, Image.FORMAT_RGBA8) |
@@ -133,7 +134,7 @@ func _renderMap(gridmap): | |||
133 | 134 | ||
134 | var meshes_node = get_tree().get_root().get_node("scene/Meshes") | 135 | var meshes_node = get_tree().get_root().get_node("scene/Meshes") |
135 | if meshes_node != null: | 136 | if meshes_node != null: |
136 | _renderMeshNode(gridmap, meshes_node, rendered) | 137 | _renderMeshNode(ap, gridmap, meshes_node, rendered) |
137 | 138 | ||
138 | for pos in gridmap.get_used_cells(): | 139 | for pos in gridmap.get_used_cells(): |
139 | var in_plane = Vector2i(pos.x, pos.z) | 140 | var in_plane = Vector2i(pos.x, pos.z) |
@@ -146,20 +147,22 @@ func _renderMap(gridmap): | |||
146 | var cell_item = gridmap.get_cell_item(pos) | 147 | var cell_item = gridmap.get_cell_item(pos) |
147 | var mesh = gridmap.mesh_library.get_item_mesh(cell_item) | 148 | var mesh = gridmap.mesh_library.get_item_mesh(cell_item) |
148 | var material = mesh.surface_get_material(0) | 149 | var material = mesh.surface_get_material(0) |
149 | var color = material.albedo_color | 150 | var color = ap.color_by_material_path.get(material.resource_path, Color.TRANSPARENT) |
150 | 151 | ||
151 | rendered.set_pixel(pos.x - cell_left, pos.z - cell_top, color) | 152 | rendered.set_pixel(pos.x - cell_left, pos.z - cell_top, color) |
152 | 153 | ||
153 | return rendered | 154 | return rendered |
154 | 155 | ||
155 | 156 | ||
156 | func _renderMeshNode(gridmap, mesh, rendered): | 157 | func _renderMeshNode(ap, gridmap, mesh, rendered): |
157 | if mesh is MeshInstance3D: | 158 | if mesh is MeshInstance3D: |
158 | var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) | 159 | var local_tl = gridmap.map_to_local(Vector3i(cell_left, 0, cell_top)) |
159 | var global_tl = gridmap.to_global(local_tl) | 160 | var global_tl = gridmap.to_global(local_tl) |
160 | var mesh_material = mesh.get_surface_override_material(0) | 161 | var mesh_material = mesh.get_surface_override_material(0) |
161 | if mesh_material != null: | 162 | if mesh_material != null: |
162 | var mesh_color = mesh_material.albedo_color | 163 | var mesh_color = ap.color_by_material_path.get( |
164 | mesh_material.resource_path, Color.TRANSPARENT | ||
165 | ) | ||
163 | 166 | ||
164 | for y in range( | 167 | for y in range( |
165 | max(mesh.position.z - mesh.scale.z / 2 - global_tl.z, 0), | 168 | max(mesh.position.z - mesh.scale.z / 2 - global_tl.z, 0), |
@@ -172,4 +175,4 @@ func _renderMeshNode(gridmap, mesh, rendered): | |||
172 | rendered.set_pixel(x, y, mesh_color) | 175 | rendered.set_pixel(x, y, mesh_color) |
173 | 176 | ||
174 | for child in mesh.get_children(): | 177 | for child in mesh.get_children(): |
175 | _renderMeshNode(gridmap, child, rendered) | 178 | _renderMeshNode(ap, gridmap, child, rendered) |
diff --git a/apworld/regions.py b/apworld/regions.py index 1215f5a..0c3858d 100644 --- a/apworld/regions.py +++ b/apworld/regions.py | |||
@@ -132,6 +132,12 @@ def create_regions(world: "Lingo2World"): | |||
132 | reqs.simplify() | 132 | reqs.simplify() |
133 | reqs.remove_room(from_region) | 133 | reqs.remove_room(from_region) |
134 | 134 | ||
135 | if to_region in reqs.rooms: | ||
136 | # This connection can't ever increase access because you're required to have access to the other side in | ||
137 | # order for it to be usable. We will just not create the connection at all, in order to help GER figure out | ||
138 | # what regions are dead ends. | ||
139 | continue | ||
140 | |||
135 | connection = Entrance(world.player, connection_name, regions[from_region]) | 141 | connection = Entrance(world.player, connection_name, regions[from_region]) |
136 | connection.access_rule = make_location_lambda(reqs, world, regions) | 142 | connection.access_rule = make_location_lambda(reqs, world, regions) |
137 | 143 | ||
diff --git a/data/ids.yaml b/data/ids.yaml index be5c0f8..45c9ea0 100644 --- a/data/ids.yaml +++ b/data/ids.yaml | |||
@@ -1851,22 +1851,10 @@ maps: | |||
1851 | rooms: | 1851 | rooms: |
1852 | Back Area: | 1852 | Back Area: |
1853 | panels: | 1853 | panels: |
1854 | Left Landscape Bottom: 482 | ||
1855 | Left Landscape Left: 483 | ||
1856 | Left Landscape Right: 481 | ||
1857 | Left Landscape Top: 480 | ||
1858 | PAINTING: 474 | 1854 | PAINTING: 474 |
1859 | PLANT: 472 | 1855 | PLANT: 472 |
1860 | Right Landscape Bottom: 486 | ||
1861 | Right Landscape Left: 487 | ||
1862 | Right Landscape Right: 485 | ||
1863 | Right Landscape Top: 484 | ||
1864 | TOWEL: 475 | 1856 | TOWEL: 475 |
1865 | TREE: 473 | 1857 | TREE: 473 |
1866 | Top Landscape Bottom: 478 | ||
1867 | Top Landscape Left: 479 | ||
1868 | Top Landscape Right: 477 | ||
1869 | Top Landscape Top: 476 | ||
1870 | Behind Question Area: | 1858 | Behind Question Area: |
1871 | panels: | 1859 | panels: |
1872 | DEW: 488 | 1860 | DEW: 488 |
@@ -2024,6 +2012,20 @@ maps: | |||
2024 | Question Room Who: | 2012 | Question Room Who: |
2025 | panels: | 2013 | panels: |
2026 | QUESTION: 587 | 2014 | QUESTION: 587 |
2015 | The Landscapes: | ||
2016 | panels: | ||
2017 | Left Landscape Bottom: 482 | ||
2018 | Left Landscape Left: 483 | ||
2019 | Left Landscape Right: 481 | ||
2020 | Left Landscape Top: 480 | ||
2021 | Right Landscape Bottom: 486 | ||
2022 | Right Landscape Left: 487 | ||
2023 | Right Landscape Right: 485 | ||
2024 | Right Landscape Top: 484 | ||
2025 | Top Landscape Bottom: 478 | ||
2026 | Top Landscape Left: 479 | ||
2027 | Top Landscape Right: 477 | ||
2028 | Top Landscape Top: 476 | ||
2027 | Under Question Room: | 2029 | Under Question Room: |
2028 | panels: | 2030 | panels: |
2029 | QUESTION: 588 | 2031 | QUESTION: 588 |
diff --git a/data/maps/the_great/connections.txtpb b/data/maps/the_great/connections.txtpb index f1a7e25..171e809 100644 --- a/data/maps/the_great/connections.txtpb +++ b/data/maps/the_great/connections.txtpb | |||
@@ -256,3 +256,7 @@ connections { | |||
256 | to_room: "Zero Room" | 256 | to_room: "Zero Room" |
257 | door { name: "Lavender Cube" } | 257 | door { name: "Lavender Cube" } |
258 | } | 258 | } |
259 | connections { | ||
260 | from_room: "Back Area" | ||
261 | to_room: "The Landscapes" | ||
262 | } | ||
diff --git a/data/maps/the_great/doors.txtpb b/data/maps/the_great/doors.txtpb index 628715f..bf28421 100644 --- a/data/maps/the_great/doors.txtpb +++ b/data/maps/the_great/doors.txtpb | |||
@@ -124,6 +124,7 @@ doors { | |||
124 | panels { room: "Magnet Room" name: "SAW" } | 124 | panels { room: "Magnet Room" name: "SAW" } |
125 | panels { room: "Magnet Room" name: "BLENDER" } | 125 | panels { room: "Magnet Room" name: "BLENDER" } |
126 | location_room: "Magnet Room" | 126 | location_room: "Magnet Room" |
127 | location_name: "Gravestone" | ||
127 | } | 128 | } |
128 | doors { | 129 | doors { |
129 | name: "Hive Entrance" | 130 | name: "Hive Entrance" |
@@ -205,23 +206,25 @@ doors { | |||
205 | panels { room: "Jail Part 2" name: "GRIMACE" } | 206 | panels { room: "Jail Part 2" name: "GRIMACE" } |
206 | panels { room: "Jail Part 2" name: "COMMENCE" } | 207 | panels { room: "Jail Part 2" name: "COMMENCE" } |
207 | location_room: "Jail Part 2" | 208 | location_room: "Jail Part 2" |
209 | location_name: "Gravestone" | ||
208 | } | 210 | } |
209 | doors { | 211 | doors { |
210 | name: "The Landscapes Gravestone" | 212 | name: "The Landscapes Gravestone" |
211 | type: GRAVESTONE | 213 | type: GRAVESTONE |
212 | panels { room: "Back Area" name: "Top Landscape Top" } | 214 | panels { room: "The Landscapes" name: "Top Landscape Top" } |
213 | panels { room: "Back Area" name: "Top Landscape Right" } | 215 | panels { room: "The Landscapes" name: "Top Landscape Right" } |
214 | panels { room: "Back Area" name: "Top Landscape Bottom" } | 216 | panels { room: "The Landscapes" name: "Top Landscape Bottom" } |
215 | panels { room: "Back Area" name: "Top Landscape Left" } | 217 | panels { room: "The Landscapes" name: "Top Landscape Left" } |
216 | panels { room: "Back Area" name: "Left Landscape Top" } | 218 | panels { room: "The Landscapes" name: "Left Landscape Top" } |
217 | panels { room: "Back Area" name: "Left Landscape Right" } | 219 | panels { room: "The Landscapes" name: "Left Landscape Right" } |
218 | panels { room: "Back Area" name: "Left Landscape Bottom" } | 220 | panels { room: "The Landscapes" name: "Left Landscape Bottom" } |
219 | panels { room: "Back Area" name: "Left Landscape Left" } | 221 | panels { room: "The Landscapes" name: "Left Landscape Left" } |
220 | panels { room: "Back Area" name: "Right Landscape Top" } | 222 | panels { room: "The Landscapes" name: "Right Landscape Top" } |
221 | panels { room: "Back Area" name: "Right Landscape Right" } | 223 | panels { room: "The Landscapes" name: "Right Landscape Right" } |
222 | panels { room: "Back Area" name: "Right Landscape Bottom" } | 224 | panels { room: "The Landscapes" name: "Right Landscape Bottom" } |
223 | panels { room: "Back Area" name: "Right Landscape Left" } | 225 | panels { room: "The Landscapes" name: "Right Landscape Left" } |
224 | location_room: "Back Area" | 226 | location_room: "The Landscapes" |
227 | location_name: "Gravestone" | ||
225 | } | 228 | } |
226 | doors { | 229 | doors { |
227 | name: "Tower Entrance" | 230 | name: "Tower Entrance" |
@@ -318,6 +321,7 @@ doors { | |||
318 | panels { room: "Maze Up Area" name: "UP" } | 321 | panels { room: "Maze Up Area" name: "UP" } |
319 | panels { room: "Maze Wreck Area" name: "WRECK" } | 322 | panels { room: "Maze Wreck Area" name: "WRECK" } |
320 | location_room: "Maze Slice Area" | 323 | location_room: "Maze Slice Area" |
324 | location_name: "Gravestone" | ||
321 | } | 325 | } |
322 | doors { | 326 | doors { |
323 | name: "Courtyard Side Door" | 327 | name: "Courtyard Side Door" |
@@ -419,10 +423,10 @@ doors { | |||
419 | name: "Invisible Entrance" | 423 | name: "Invisible Entrance" |
420 | type: STANDARD | 424 | type: STANDARD |
421 | receivers: "Components/Doors/entry_36" | 425 | receivers: "Components/Doors/entry_36" |
422 | panels { room: "Back Area" name: "Right Landscape Top" answer: "tell" } | 426 | panels { room: "The Landscapes" name: "Right Landscape Top" answer: "tell" } |
423 | panels { room: "Back Area" name: "Right Landscape Left" answer: "eyes" } | 427 | panels { room: "The Landscapes" name: "Right Landscape Left" answer: "eyes" } |
424 | location_room: "Back Area" | 428 | location_room: "The Landscapes" |
425 | location_name: "Landscapes Room Alternate Answers" | 429 | location_name: "Alternate Answers" |
426 | } | 430 | } |
427 | doors { | 431 | doors { |
428 | name: "Nature Room Door" | 432 | name: "Nature Room Door" |
@@ -468,6 +472,7 @@ doors { | |||
468 | panels { room: "Whole Room" name: "CHIPS" } | 472 | panels { room: "Whole Room" name: "CHIPS" } |
469 | panels { room: "Whole Room" name: "TOWER" } | 473 | panels { room: "Whole Room" name: "TOWER" } |
470 | location_room: "Whole Room" | 474 | location_room: "Whole Room" |
475 | location_name: "Gravestone" | ||
471 | } | 476 | } |
472 | doors { | 477 | doors { |
473 | name: "Lavender Cube" | 478 | name: "Lavender Cube" |
@@ -494,6 +499,7 @@ doors { | |||
494 | panels { room: "Zero Room" name: "MANY" } | 499 | panels { room: "Zero Room" name: "MANY" } |
495 | panels { room: "Zero Room" name: "REMAINING" } | 500 | panels { room: "Zero Room" name: "REMAINING" } |
496 | location_room: "Zero Room" | 501 | location_room: "Zero Room" |
502 | location_name: "Panels" | ||
497 | } | 503 | } |
498 | doors { | 504 | doors { |
499 | name: "Spiral Painting" | 505 | name: "Spiral Painting" |
diff --git a/data/maps/the_great/rooms/Back Area.txtpb b/data/maps/the_great/rooms/Back Area.txtpb index c57a76f..33da394 100644 --- a/data/maps/the_great/rooms/Back Area.txtpb +++ b/data/maps/the_great/rooms/Back Area.txtpb | |||
@@ -28,92 +28,6 @@ panels { | |||
28 | answer: "tower" | 28 | answer: "tower" |
29 | symbols: SPARKLES | 29 | symbols: SPARKLES |
30 | } | 30 | } |
31 | panels { | ||
32 | name: "Top Landscape Top" | ||
33 | path: "Panels/Kiwi Room/kiwi_1" | ||
34 | clue: "" | ||
35 | answer: "one" | ||
36 | symbols: QUESTION | ||
37 | } | ||
38 | panels { | ||
39 | name: "Top Landscape Right" | ||
40 | path: "Panels/Kiwi Room/kiwi_2" | ||
41 | clue: "" | ||
42 | answer: "road" | ||
43 | symbols: QUESTION | ||
44 | } | ||
45 | panels { | ||
46 | name: "Top Landscape Bottom" | ||
47 | path: "Panels/Kiwi Room/kiwi_3" | ||
48 | clue: "" | ||
49 | answer: "many" | ||
50 | symbols: QUESTION | ||
51 | } | ||
52 | panels { | ||
53 | name: "Top Landscape Left" | ||
54 | path: "Panels/Kiwi Room/kiwi_4" | ||
55 | clue: "" | ||
56 | answer: "turns" | ||
57 | symbols: QUESTION | ||
58 | } | ||
59 | panels { | ||
60 | name: "Left Landscape Top" | ||
61 | path: "Panels/Kiwi Room/kiwi_5" | ||
62 | clue: "" | ||
63 | answer: "find" | ||
64 | symbols: QUESTION | ||
65 | } | ||
66 | panels { | ||
67 | name: "Left Landscape Right" | ||
68 | path: "Panels/Kiwi Room/kiwi_6" | ||
69 | clue: "" | ||
70 | answer: "keys" | ||
71 | symbols: QUESTION | ||
72 | } | ||
73 | panels { | ||
74 | name: "Left Landscape Bottom" | ||
75 | path: "Panels/Kiwi Room/kiwi_7" | ||
76 | clue: "" | ||
77 | answer: "write" | ||
78 | symbols: QUESTION | ||
79 | } | ||
80 | panels { | ||
81 | name: "Left Landscape Left" | ||
82 | path: "Panels/Kiwi Room/kiwi_8" | ||
83 | clue: "" | ||
84 | answer: "words" | ||
85 | symbols: QUESTION | ||
86 | } | ||
87 | panels { | ||
88 | name: "Right Landscape Top" | ||
89 | path: "Panels/Kiwi Room/kiwi_9" | ||
90 | clue: "" | ||
91 | answer: "hear" | ||
92 | symbols: QUESTION | ||
93 | proxies { answer: "tell" path: "Panels/Kiwi Proxies/kiwi_9_proxy_1" } | ||
94 | } | ||
95 | panels { | ||
96 | name: "Right Landscape Right" | ||
97 | path: "Panels/Kiwi Room/kiwi_10" | ||
98 | clue: "" | ||
99 | answer: "lies" | ||
100 | symbols: QUESTION | ||
101 | } | ||
102 | panels { | ||
103 | name: "Right Landscape Bottom" | ||
104 | path: "Panels/Kiwi Room/kiwi_11" | ||
105 | clue: "" | ||
106 | answer: "the" | ||
107 | symbols: QUESTION | ||
108 | } | ||
109 | panels { | ||
110 | name: "Right Landscape Left" | ||
111 | path: "Panels/Kiwi Room/kiwi_12" | ||
112 | clue: "" | ||
113 | answer: "ears" | ||
114 | symbols: QUESTION | ||
115 | proxies { answer: "eyes" path: "Panels/Kiwi Proxies/kiwi_12_proxy_1" } | ||
116 | } | ||
117 | paintings { | 31 | paintings { |
118 | name: "SPIRAL" | 32 | name: "SPIRAL" |
119 | path: "Components/Paintings/spiral" | 33 | path: "Components/Paintings/spiral" |
diff --git a/data/maps/the_great/rooms/The Landscapes.txtpb b/data/maps/the_great/rooms/The Landscapes.txtpb new file mode 100644 index 0000000..2912843 --- /dev/null +++ b/data/maps/the_great/rooms/The Landscapes.txtpb | |||
@@ -0,0 +1,88 @@ | |||
1 | name: "The Landscapes" | ||
2 | panel_display_name: "The Landscapes" | ||
3 | panels { | ||
4 | name: "Top Landscape Top" | ||
5 | path: "Panels/Kiwi Room/kiwi_1" | ||
6 | clue: "" | ||
7 | answer: "one" | ||
8 | symbols: QUESTION | ||
9 | } | ||
10 | panels { | ||
11 | name: "Top Landscape Right" | ||
12 | path: "Panels/Kiwi Room/kiwi_2" | ||
13 | clue: "" | ||
14 | answer: "road" | ||
15 | symbols: QUESTION | ||
16 | } | ||
17 | panels { | ||
18 | name: "Top Landscape Bottom" | ||
19 | path: "Panels/Kiwi Room/kiwi_3" | ||
20 | clue: "" | ||
21 | answer: "many" | ||
22 | symbols: QUESTION | ||
23 | } | ||
24 | panels { | ||
25 | name: "Top Landscape Left" | ||
26 | path: "Panels/Kiwi Room/kiwi_4" | ||
27 | clue: "" | ||
28 | answer: "turns" | ||
29 | symbols: QUESTION | ||
30 | } | ||
31 | panels { | ||
32 | name: "Left Landscape Top" | ||
33 | path: "Panels/Kiwi Room/kiwi_5" | ||
34 | clue: "" | ||
35 | answer: "find" | ||
36 | symbols: QUESTION | ||
37 | } | ||
38 | panels { | ||
39 | name: "Left Landscape Right" | ||
40 | path: "Panels/Kiwi Room/kiwi_6" | ||
41 | clue: "" | ||
42 | answer: "keys" | ||
43 | symbols: QUESTION | ||
44 | } | ||
45 | panels { | ||
46 | name: "Left Landscape Bottom" | ||
47 | path: "Panels/Kiwi Room/kiwi_7" | ||
48 | clue: "" | ||
49 | answer: "write" | ||
50 | symbols: QUESTION | ||
51 | } | ||
52 | panels { | ||
53 | name: "Left Landscape Left" | ||
54 | path: "Panels/Kiwi Room/kiwi_8" | ||
55 | clue: "" | ||
56 | answer: "words" | ||
57 | symbols: QUESTION | ||
58 | } | ||
59 | panels { | ||
60 | name: "Right Landscape Top" | ||
61 | path: "Panels/Kiwi Room/kiwi_9" | ||
62 | clue: "" | ||
63 | answer: "hear" | ||
64 | symbols: QUESTION | ||
65 | proxies { answer: "tell" path: "Panels/Kiwi Proxies/kiwi_9_proxy_1" } | ||
66 | } | ||
67 | panels { | ||
68 | name: "Right Landscape Right" | ||
69 | path: "Panels/Kiwi Room/kiwi_10" | ||
70 | clue: "" | ||
71 | answer: "lies" | ||
72 | symbols: QUESTION | ||
73 | } | ||
74 | panels { | ||
75 | name: "Right Landscape Bottom" | ||
76 | path: "Panels/Kiwi Room/kiwi_11" | ||
77 | clue: "" | ||
78 | answer: "the" | ||
79 | symbols: QUESTION | ||
80 | } | ||
81 | panels { | ||
82 | name: "Right Landscape Left" | ||
83 | path: "Panels/Kiwi Room/kiwi_12" | ||
84 | clue: "" | ||
85 | answer: "ears" | ||
86 | symbols: QUESTION | ||
87 | proxies { answer: "eyes" path: "Panels/Kiwi Proxies/kiwi_12_proxy_1" } | ||
88 | } | ||
diff --git a/data/maps/the_great/rooms/Whole Room.txtpb b/data/maps/the_great/rooms/Whole Room.txtpb index daa174c..989241a 100644 --- a/data/maps/the_great/rooms/Whole Room.txtpb +++ b/data/maps/the_great/rooms/Whole Room.txtpb | |||
@@ -1,5 +1,5 @@ | |||
1 | name: "Whole Room" | 1 | name: "Whole Room" |
2 | panel_display_name: "North Landscape" | 2 | panel_display_name: "Building Building" |
3 | panels { | 3 | panels { |
4 | name: "VAULT" | 4 | name: "VAULT" |
5 | path: "Panels/Whole Room/whole_1" | 5 | path: "Panels/Whole Room/whole_1" |
diff --git a/data/metadata.txtpb b/data/metadata.txtpb index 233a97e..c5c48c2 100644 --- a/data/metadata.txtpb +++ b/data/metadata.txtpb | |||
@@ -1,7 +1,7 @@ | |||
1 | version { | 1 | version { |
2 | major: 7 | 2 | major: 7 |
3 | minor: 0 | 3 | minor: 1 |
4 | patch: 2 | 4 | patch: 0 |
5 | } | 5 | } |
6 | # Filler item. | 6 | # Filler item. |
7 | special_names: "A Job Well Done" | 7 | special_names: "A Job Well Done" |