Created
October 29, 2025 20:25
-
-
Save spacehare/931523d7fa1a487c7123ff88d03d030e to your computer and use it in GitHub Desktop.
a TrenchBroom set-up for Quake's Copper mod, where you need all 3 `func_door`s open at once in order to solve the puzzle.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // entity 0 | |
| { | |
| "classname" "func_group" | |
| "_tb_type" "_tb_group" | |
| "_tb_name" "puzzle" | |
| "_tb_id" "11" | |
| "_tb_linked_group_id" "{28fe2931-8379-4c35-8b5c-1ada671f40e7}" | |
| // brush 0 | |
| { | |
| ( -160 -64 -32 ) ( -160 -63 -32 ) ( -160 -64 -31 ) floor_orange_c [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( -160 -32 -32 ) ( -160 -32 -31 ) ( -159 -32 -32 ) floor_orange_c [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( -160 -64 -32 ) ( -159 -64 -32 ) ( -160 -63 -32 ) floor_orange_c [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( -144 64 -16 ) ( -144 65 -16 ) ( -143 64 -16 ) floor_orange_c [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( -144 224 -16 ) ( -143 224 -16 ) ( -144 224 -15 ) floor_orange_c [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 96 64 -16 ) ( 96 64 -15 ) ( 96 65 -16 ) floor_orange_c [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| // brush 1 | |
| { | |
| ( 96 64 -32 ) ( 96 65 -32 ) ( 96 64 -31 ) floor_grey_b [ 0 -1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 64 -32 ) ( 96 64 -31 ) ( 97 64 -32 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 64 -32 ) ( 97 64 -32 ) ( 96 65 -32 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 90 1 1 | |
| ( 128 96 16 ) ( 128 97 16 ) ( 129 96 16 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 96 0 ) ( 129 96 0 ) ( 128 96 1 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 128 96 0 ) ( 128 96 1 ) ( 128 97 0 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| } | |
| // brush 2 | |
| { | |
| ( 96 0 48 ) ( 96 1 48 ) ( 96 0 49 ) floor_grey_b [ 0 -1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 0 48 ) ( 96 0 49 ) ( 97 0 48 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 0 48 ) ( 97 0 48 ) ( 96 1 48 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 90 1 1 | |
| ( 128 32 80 ) ( 128 33 80 ) ( 129 32 80 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 32 64 ) ( 129 32 64 ) ( 128 32 65 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 128 32 64 ) ( 128 32 65 ) ( 128 33 64 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| } | |
| // brush 3 | |
| { | |
| ( 96 128 48 ) ( 96 129 48 ) ( 96 128 49 ) floor_grey_b [ 0 -1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 128 48 ) ( 96 128 49 ) ( 97 128 48 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 96 128 48 ) ( 97 128 48 ) ( 96 129 48 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 90 1 1 | |
| ( 128 160 80 ) ( 128 161 80 ) ( 129 160 80 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 160 64 ) ( 129 160 64 ) ( 128 160 65 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 128 160 64 ) ( 128 160 65 ) ( 128 161 64 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| } | |
| } | |
| // entity 1 | |
| { | |
| "classname" "target_lock" | |
| "origin" "8 168 24" | |
| "target" "puzzle.button" | |
| "targetname" "puzzle.buttonLocker" | |
| "spawnflags" "2" | |
| "_tb_group" "11" | |
| } | |
| // entity 2 | |
| { | |
| "classname" "target_state" | |
| "origin" "-88 168 24" | |
| "state" "0" | |
| "include" "puzzle.door_1" | |
| "targetname" "puzzle.door_state_1" | |
| "target" "puzzle.door_state_2" | |
| "spawnflags" "1" | |
| "_tb_group" "11" | |
| } | |
| // entity 3 | |
| { | |
| "classname" "target_state" | |
| "origin" "-72 168 56" | |
| "state" "0" | |
| "targetname" "puzzle.door_state_2" | |
| "target" "puzzle.door_state_3" | |
| "spawnflags" "1" | |
| "include" "puzzle.door_2" | |
| "_tb_group" "11" | |
| } | |
| // entity 4 | |
| { | |
| "classname" "target_state" | |
| "origin" "-56 168 88" | |
| "state" "0" | |
| "targetname" "puzzle.door_state_3" | |
| "target" "puzzle.onFinished" | |
| "spawnflags" "1" | |
| "include" "puzzle.door_3" | |
| "_tb_group" "11" | |
| } | |
| // entity 5 | |
| { | |
| "classname" "func_door" | |
| "targetname" "puzzle.door_3" | |
| "lip" "0" | |
| "angle" "-2" | |
| "target4" "" | |
| "wait" "0" | |
| "spawnflags" "16417" | |
| "target2" "puzzle.checker" | |
| "_tb_group" "11" | |
| // brush 0 | |
| { | |
| ( 112 0 16 ) ( 112 1 16 ) ( 112 0 17 ) wall_grey_c [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 0 16 ) ( 112 0 17 ) ( 113 0 16 ) wall_grey_c [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 0 16 ) ( 113 0 16 ) ( 112 1 16 ) wall_grey_c [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 32 48 ) ( 128 33 48 ) ( 129 32 48 ) wall_grey_c [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 32 32 ) ( 129 32 32 ) ( 128 32 33 ) wall_grey_c [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 128 32 32 ) ( 128 32 33 ) ( 128 33 32 ) wall_grey_c [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 6 | |
| { | |
| "classname" "func_door" | |
| "targetname" "puzzle.door_2" | |
| "lip" "0" | |
| "angle" "-1" | |
| "spawnflags" "16417" | |
| "wait" "0" | |
| "target2" "puzzle.checker" | |
| "_tb_group" "11" | |
| // brush 0 | |
| { | |
| ( 112 64 16 ) ( 112 65 16 ) ( 112 64 17 ) wall_grey_c [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 64 16 ) ( 112 64 17 ) ( 113 64 16 ) wall_grey_c [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 64 16 ) ( 113 64 16 ) ( 112 65 16 ) wall_grey_c [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 96 48 ) ( 128 97 48 ) ( 129 96 48 ) wall_grey_c [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 96 32 ) ( 129 96 32 ) ( 128 96 33 ) wall_grey_c [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 128 96 32 ) ( 128 96 33 ) ( 128 97 32 ) wall_grey_c [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 7 | |
| { | |
| "classname" "func_door" | |
| "targetname" "puzzle.door_1" | |
| "lip" "0" | |
| "angle" "-2" | |
| "spawnflags" "16417" | |
| "wait" "0" | |
| "target2" "puzzle.checker" | |
| "_tb_group" "11" | |
| // brush 0 | |
| { | |
| ( 112 128 16 ) ( 112 129 16 ) ( 112 128 17 ) wall_grey_c [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 128 16 ) ( 112 128 17 ) ( 113 128 16 ) wall_grey_c [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 112 128 16 ) ( 113 128 16 ) ( 112 129 16 ) wall_grey_c [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 160 48 ) ( 128 161 48 ) ( 129 160 48 ) wall_grey_c [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 128 160 32 ) ( 129 160 32 ) ( 128 160 33 ) wall_grey_c [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 128 160 32 ) ( 128 160 33 ) ( 128 161 32 ) wall_grey_c [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 8 | |
| { | |
| "classname" "func_door" | |
| "angle" "-1" | |
| "wait" "-1" | |
| "targetname" "puzzle.door_end" | |
| "_tb_group" "11" | |
| // brush 0 | |
| { | |
| ( -160 224 -32 ) ( -160 225 -32 ) ( -160 224 -31 ) floor_orange_c [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( -160 224 -32 ) ( -160 224 -31 ) ( -159 224 -32 ) floor_orange_c [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( -160 224 -32 ) ( -159 224 -32 ) ( -160 225 -32 ) floor_orange_c [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 96 256 96 ) ( 96 257 96 ) ( 97 256 96 ) floor_orange_c [ 1 0 0 0 ] [ 0 -1 0 0 ] 270 1 1 | |
| ( 96 256 0 ) ( 97 256 0 ) ( 96 256 1 ) floor_orange_c [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 96 256 0 ) ( 96 256 1 ) ( 96 257 0 ) floor_orange_c [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 9 | |
| { | |
| "classname" "func_button" | |
| "targetname" "puzzle.button" | |
| "target" "puzzle.relay_1" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "target" | |
| // brush 0 | |
| { | |
| ( 48 128 -16 ) ( 48 129 -16 ) ( 48 128 -15 ) +0_button [ 0 -1 0 0 ] [ 0 0 -1 -16 ] 0 1 1 | |
| ( 48 128 -16 ) ( 48 128 -15 ) ( 49 128 -16 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 48 128 -16 ) ( 49 128 -16 ) ( 48 129 -16 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 64 160 16 ) ( 64 161 16 ) ( 65 160 16 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 64 160 0 ) ( 65 160 0 ) ( 64 160 1 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 64 160 0 ) ( 64 160 1 ) ( 64 161 0 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 10 | |
| { | |
| "classname" "func_button" | |
| "targetname" "puzzle.button" | |
| "target" "puzzle.relay_2" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "target" | |
| // brush 0 | |
| { | |
| ( 48 64 -16 ) ( 48 65 -16 ) ( 48 64 -15 ) +0_button [ 0 -1 0 0 ] [ 0 0 -1 -16 ] 90 1 1 | |
| ( 48 64 -16 ) ( 48 64 -15 ) ( 49 64 -16 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 48 64 -16 ) ( 49 64 -16 ) ( 48 65 -16 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 90 1 1 | |
| ( 64 96 16 ) ( 64 97 16 ) ( 65 96 16 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 90 1 1 | |
| ( 64 96 0 ) ( 65 96 0 ) ( 64 96 1 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| ( 64 96 0 ) ( 64 96 1 ) ( 64 97 0 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1 | |
| } | |
| } | |
| // entity 11 | |
| { | |
| "classname" "func_button" | |
| "targetname" "puzzle.button" | |
| "target" "puzzle.relay_3" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "target" | |
| // brush 0 | |
| { | |
| ( 48 0 -16 ) ( 48 1 -16 ) ( 48 0 -15 ) +0_button [ 0 -1 0 0 ] [ 0 0 -1 -16 ] 0 1 1 | |
| ( 48 0 -16 ) ( 48 0 -15 ) ( 49 0 -16 ) floor_grey_b [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 48 0 -16 ) ( 49 0 -16 ) ( 48 1 -16 ) floor_grey_b [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 64 32 16 ) ( 64 33 16 ) ( 65 32 16 ) floor_grey_b [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 | |
| ( 64 32 0 ) ( 65 32 0 ) ( 64 32 1 ) floor_grey_b [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| ( 64 32 0 ) ( 64 32 1 ) ( 64 33 0 ) floor_grey_b [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 | |
| } | |
| } | |
| // entity 12 | |
| { | |
| "classname" "trigger_relay" | |
| "origin" "80 80 16" | |
| "target3" "puzzle.door_3" | |
| "target" "puzzle.door_1" | |
| "target2" "puzzle.door_2" | |
| "targetname" "puzzle.relay_2" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "targetname;target2;target" | |
| } | |
| // entity 13 | |
| { | |
| "classname" "trigger_relay" | |
| "origin" "80 16 16" | |
| "target" "puzzle.door_2" | |
| "target2" "puzzle.door_3" | |
| "targetname" "puzzle.relay_3" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "targetname;target2;target" | |
| } | |
| // entity 14 | |
| { | |
| "classname" "trigger_relay" | |
| "origin" "-136 168 24" | |
| "targetname" "puzzle.checker" | |
| "target" "puzzle.door_state_1" | |
| "delay" "0.1" | |
| "_tb_group" "11" | |
| } | |
| // entity 15 | |
| { | |
| "classname" "trigger_relay" | |
| "origin" "8 168 56" | |
| "targetname" "puzzle.onFinished" | |
| "target" "puzzle.buttonLocker" | |
| "target2" "puzzle.door_end" | |
| "_tb_group" "11" | |
| } | |
| // entity 16 | |
| { | |
| "classname" "trigger_relay" | |
| "origin" "80 144 16" | |
| "target" "puzzle.door_1" | |
| "target2" "puzzle.door_2" | |
| "targetname" "puzzle.relay_1" | |
| "_tb_group" "11" | |
| "_tb_protected_properties" "targetname;target2;target" | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment