Terminal dialogue and entities fix

This commit is contained in:
Marco 2025-06-24 11:06:33 +02:00
commit dd979fe50a
16 changed files with 1078 additions and 912 deletions

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -2690,25 +2690,21 @@
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "248 456 40" "origin" "248 456 40"
"targetname" "actor_elevator_test"
} }
// entity 27 // entity 27
{ {
"classname" "light_spot" "classname" "light_spot"
"origin" "136 408 40" "origin" "136 408 40"
"targetname" "actor_elevator_test"
} }
// entity 28 // entity 28
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "312 232 40" "origin" "312 232 40"
"targetname" "actor_elevator_test"
} }
// entity 29 // entity 29
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "408 280 40" "origin" "408 280 40"
"targetname" "actor_elevator_test"
} }
// entity 30 // entity 30
{ {
@ -2720,31 +2716,26 @@
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "504 184 40" "origin" "504 184 40"
"targetname" "actor_elevator_test"
} }
// entity 32 // entity 32
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "376 104 40" "origin" "376 104 40"
"targetname" "actor_elevator_test"
} }
// entity 33 // entity 33
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "488 264 40" "origin" "488 264 40"
"targetname" "actor_elevator_test"
} }
// entity 34 // entity 34
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "488 328 40" "origin" "488 328 40"
"targetname" "actor_elevator_test"
} }
// entity 35 // entity 35
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "488 408 40" "origin" "488 408 40"
"targetname" "actor_elevator_test"
} }
// entity 36 // entity 36
{ {
@ -3178,422 +3169,417 @@
} }
// entity 106 // entity 106
{ {
"classname" "actor_terminal"
"origin" "272 232 28"
"targetname" "actor_elevator_test"
}
// entity 107
{
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "304 188 24" "origin" "304 188 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 108 // entity 107
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "208 488 24" "origin" "208 488 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 109 // entity 108
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "208 440 24" "origin" "208 440 24"
"angle" "180" "angle" "180"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 110 // entity 109
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "328 472 20" "origin" "328 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 111 // entity 110
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "344 472 20" "origin" "344 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 112 // entity 111
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "344 488 20" "origin" "344 488 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 113 // entity 112
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "328 488 28" "origin" "328 488 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 114 // entity 113
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "328 440 28" "origin" "328 440 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 115 // entity 114
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "360 472 20" "origin" "360 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 116 // entity 115
{ {
"classname" "actor_capacitor" "classname" "actor_capacitor"
"origin" "528 136 28" "origin" "528 136 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 117 // entity 116
{ {
"classname" "actor_capacitor" "classname" "actor_capacitor"
"origin" "496 136 28" "origin" "496 136 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 118 // entity 117
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "248 712 20" "origin" "248 712 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 119 // entity 118
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 792 28" "origin" "244 792 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 120 // entity 119
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 792 20" "origin" "244 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 121 // entity 120
{ {
"classname" "actor_table" "classname" "actor_table"
"origin" "248 732 20" "origin" "248 732 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 122 // entity 121
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "280 792 20" "origin" "280 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 123 // entity 122
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "296 784 20" "origin" "296 784 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 124 // entity 123
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "312 760 20" "origin" "312 760 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 125 // entity 124
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "320 792 20" "origin" "320 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 126 // entity 125
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "248 712 28" "origin" "248 712 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 127 // entity 126
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 776 20" "origin" "244 776 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 128 // entity 127
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "252 792 20" "origin" "252 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 129 // entity 128
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "308 792 20" "origin" "308 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 130 // entity 129
{ {
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "284 708 24" "origin" "284 708 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 131 // entity 130
{ {
"classname" "actor_vendingmachine" "classname" "actor_vendingmachine"
"origin" "248 760 28" "origin" "248 760 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 132 // entity 131
{ {
"classname" "actor_terminal_big" "classname" "actor_terminal_big"
"origin" "168 532 28" "origin" "168 532 28"
} }
// entity 133 // entity 132
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "376 456 20" "origin" "376 456 20"
} }
// entity 134 // entity 133
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "376 456 28" "origin" "376 456 28"
} }
// entity 135 // entity 134
{ {
"classname" "actor_capacitor_mini" "classname" "actor_capacitor_mini"
"origin" "184 360 24" "origin" "184 360 24"
} }
// entity 136 // entity 135
{ {
"classname" "actor_capacitor_mini" "classname" "actor_capacitor_mini"
"origin" "168 360 24" "origin" "168 360 24"
} }
// entity 137 // entity 136
{ {
"classname" "actor_table" "classname" "actor_table"
"origin" "168 396 20" "origin" "168 396 20"
} }
// entity 138 // entity 137
{ {
"classname" "actor_terminal" "classname" "actor_terminal"
"origin" "168 396 28" "origin" "168 396 28"
"timeline" "computer1"
} }
// entity 139 // entity 138
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "168 376 20" "origin" "168 376 20"
"angle" "90" "angle" "90"
} }
// entity 140 // entity 139
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "136 456 28" "origin" "136 456 28"
} }
// entity 141 // entity 140
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "148 456 20" "origin" "148 456 20"
} }
// entity 142 // entity 141
{ {
"classname" "actor_tank_large" "classname" "actor_tank_large"
"origin" "336 544 32" "origin" "336 544 32"
} }
// entity 143 // entity 142
{ {
"classname" "actor_tank_large" "classname" "actor_tank_large"
"origin" "429.93 463.728 32" "origin" "429.93 463.728 32"
"angles" "0 90 0" "angles" "0 90 0"
} }
// entity 144 // entity 143
{ {
"classname" "actor_elevator_1" "classname" "actor_elevator_1"
"origin" "320 -1104 -10" "origin" "320 -1104 -10"
} }
// entity 145 // entity 144
{ {
"classname" "actor_tank_large" "classname" "actor_tank_large"
"origin" "144 -1072 8" "origin" "144 -1072 8"
} }
// entity 146 // entity 145
{ {
"classname" "actor_tank" "classname" "actor_tank"
"origin" "112 -936 0" "origin" "112 -936 0"
} }
// entity 147 // entity 146
{ {
"classname" "actor_tank" "classname" "actor_tank"
"origin" "112 -904 0" "origin" "112 -904 0"
} }
// entity 148 // entity 147
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "112 -960 0" "origin" "112 -960 0"
} }
// entity 149 // entity 148
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "112 -976 0" "origin" "112 -976 0"
} }
// entity 150 // entity 149
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "360 208 20" "origin" "360 208 20"
} }
// entity 151 // entity 150
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "360 208 28" "origin" "360 208 28"
} }
// entity 152 // entity 151
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -88 48" "origin" "336 -88 48"
} }
// entity 153 // entity 152
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -104 48" "origin" "336 -104 48"
} }
// entity 154 // entity 153
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -120 48" "origin" "336 -120 48"
} }
// entity 155 // entity 154
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -136 48" "origin" "336 -136 48"
} }
// entity 156 // entity 155
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -152 48" "origin" "336 -152 48"
} }
// entity 157 // entity 156
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -168 48" "origin" "336 -168 48"
} }
// entity 158 // entity 157
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -184 48" "origin" "336 -184 48"
} }
// entity 159 // entity 158
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -200 48" "origin" "336 -200 48"
} }
// entity 160 // entity 159
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -216 48" "origin" "336 -216 48"
} }
// entity 161 // entity 160
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -232 48" "origin" "336 -232 48"
} }
// entity 162 // entity 161
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -264 48" "origin" "336 -264 48"
} }
// entity 163 // entity 162
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -280 48" "origin" "336 -280 48"
} }
// entity 164 // entity 163
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -296 48" "origin" "336 -296 48"
} }
// entity 165 // entity 164
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -312 48" "origin" "336 -312 48"
} }
// entity 166 // entity 165
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -328 48" "origin" "336 -328 48"
} }
// entity 167 // entity 166
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -344 48" "origin" "336 -344 48"
} }
// entity 168 // entity 167
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "336 -360 48" "origin" "336 -360 48"
} }
// entity 169 // entity 168
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "336 -376 48" "origin" "336 -376 48"
} }
// entity 170 // entity 169
{ {
"classname" "actor_tube_junction" "classname" "actor_tube_junction"
"origin" "336 -248 48" "origin" "336 -248 48"
} }
// entity 171 // entity 170
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "352 -248 48" "origin" "352 -248 48"
"angle" "270" "angle" "270"
} }
// entity 172 // entity 171
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "368 -248 48" "origin" "368 -248 48"
"angle" "270" "angle" "270"
} }
// entity 173 // entity 172
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "384 -248 48" "origin" "384 -248 48"
"angle" "270" "angle" "270"
} }
// entity 174 // entity 173
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "400 -248 48" "origin" "400 -248 48"
"angle" "270" "angle" "270"
} }
// entity 175 // entity 174
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "416 -248 48" "origin" "416 -248 48"
"angle" "270" "angle" "270"
} }
// entity 176 // entity 175
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "432 -248 48" "origin" "432 -248 48"
"angle" "270" "angle" "270"
} }
// entity 177 // entity 176
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "448 -248 48" "origin" "448 -248 48"
"angle" "270" "angle" "270"
} }
// entity 178 // entity 177
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "464 -248 48" "origin" "464 -248 48"
"angle" "270" "angle" "270"
} }
// entity 179 // entity 178
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "480 -248 48" "origin" "480 -248 48"
"angle" "270" "angle" "270"
} }
// entity 180 // entity 179
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "496 -248 48" "origin" "496 -248 48"
"angle" "270" "angle" "270"
} }
// entity 181 // entity 180
{ {
"classname" "acid_area" "classname" "acid_area"
// brush 0 // brush 0
@ -3606,32 +3592,32 @@
( 504 -80 32 ) ( 504 -80 33 ) ( 504 -79 32 ) Manual/Acid [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 504 -80 32 ) ( 504 -80 33 ) ( 504 -79 32 ) Manual/Acid [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 182 // entity 181
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "408 -272 88" "origin" "408 -272 88"
} }
// entity 183 // entity 182
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "408 -152 88" "origin" "408 -152 88"
} }
// entity 184 // entity 183
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "408 -408 88" "origin" "408 -408 88"
} }
// entity 185 // entity 184
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "264 -416 88" "origin" "264 -416 88"
} }
// entity 186 // entity 185
{ {
"classname" "light_omni" "classname" "light_omni"
"origin" "536 -248 88" "origin" "536 -248 88"
} }
// entity 187 // entity 186
{ {
"classname" "acid_area" "classname" "acid_area"
// brush 0 // brush 0
@ -3644,7 +3630,7 @@
( 448 -16 32 ) ( 448 -16 33 ) ( 448 -15 32 ) Manual/Acid [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 448 -16 32 ) ( 448 -16 33 ) ( 448 -15 32 ) Manual/Acid [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 188 // entity 187
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3662,7 +3648,7 @@
( 288 348 16 ) ( 288 348 17 ) ( 288 349 16 ) Manual/Wall_Light_Test [ -6.049014748177263e-16 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1 ( 288 348 16 ) ( 288 348 17 ) ( 288 349 16 ) Manual/Wall_Light_Test [ -6.049014748177263e-16 1 0 -8 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 189 // entity 188
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3671,7 +3657,7 @@
"_tb_linked_group_id" "{4aa44f96-7631-4a72-89b8-8090e930ac25}" "_tb_linked_group_id" "{4aa44f96-7631-4a72-89b8-8090e930ac25}"
"_tb_transformation" "1 0 0 -80 0 1 0 188 0 0 1 0 0 0 0 1" "_tb_transformation" "1 0 0 -80 0 1 0 188 0 0 1 0 0 0 0 1"
} }
// entity 190 // entity 189
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3690,7 +3676,7 @@
( 128 448 20 ) ( 128 448 21 ) ( 128 449 20 ) Manual/Wall_Light_Test [ 0 1 0 0 ] [ 0 0 -1 0 ] 270 1 1 ( 128 448 20 ) ( 128 448 21 ) ( 128 449 20 ) Manual/Wall_Light_Test [ 0 1 0 0 ] [ 0 0 -1 0 ] 270 1 1
} }
} }
// entity 191 // entity 190
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3699,7 +3685,7 @@
"_tb_linked_group_id" "{4aa44f96-7631-4a72-89b8-8090e930ac25}" "_tb_linked_group_id" "{4aa44f96-7631-4a72-89b8-8090e930ac25}"
"_tb_transformation" "1 0 0 -80 0 1 0 204 0 0 1 0 0 0 0 1" "_tb_transformation" "1 0 0 -80 0 1 0 204 0 0 1 0 0 0 0 1"
} }
// entity 192 // entity 191
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3718,7 +3704,7 @@
( 128 464 20 ) ( 128 464 21 ) ( 128 465 20 ) Manual/Wall_Light_Test [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1 ( 128 464 20 ) ( 128 464 21 ) ( 128 465 20 ) Manual/Wall_Light_Test [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 1 1
} }
} }
// entity 193 // entity 192
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -3736,52 +3722,81 @@
( 204 268 20 ) ( 204 268 21 ) ( 204 269 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 0 1 1 ( 204 268 20 ) ( 204 268 21 ) ( 204 269 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 194 // entity 193
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "112 -992 16" "origin" "112 -992 16"
"angles" "0 -90 90" "angles" "0 -90 90"
} }
// entity 195 // entity 194
{ {
"classname" "actor_tube_straight" "classname" "actor_tube_straight"
"origin" "112 -992 32" "origin" "112 -992 32"
"angles" "0 -90 90" "angles" "0 -90 90"
} }
// entity 196 // entity 195
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "112 -992 48" "origin" "112 -992 48"
"angles" "0 0 -90" "angles" "0 0 -90"
} }
// entity 197 // entity 196
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "112 -992 0" "origin" "112 -992 0"
"angles" "90 0 0" "angles" "90 0 0"
} }
// entity 198 // entity 197
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "432 -216 64" "origin" "432 -216 64"
} }
// entity 199 // entity 198
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "432 -200 64" "origin" "432 -200 64"
} }
// entity 200 // entity 199
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "424 -384 64" "origin" "424 -384 64"
} }
// entity 201 // entity 200
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "408 -384 64" "origin" "408 -384 64"
} }
// entity 202 // entity 201
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "424 -368 64" "origin" "424 -368 64"
} }
// entity 202
{
"classname" "actor_elevator_1"
"origin" "368 56 15"
"targetname" "elevator_1"
}
// entity 203
{
"classname" "actor_controlpad"
"origin" "356 80 36"
"target" "elevator_1"
}
// entity 204
{
"classname" "light_omni"
"origin" "436 44 24"
}
// entity 205
{
"classname" "actor_controlpad"
"origin" "352 20 64"
"target" "elevator_1"
}
// entity 206
{
"classname" "actor_terminal"
"origin" "272 232 28"
"timeline" "computer2"
}

View file

@ -1,50 +1,27 @@
[gd_scene load_steps=7 format=3 uid="uid://dioiq4nb7kiet"] [gd_scene load_steps=5 format=3 uid="uid://dioiq4nb7kiet"]
[ext_resource type="Texture2D" uid="uid://gc24sjyj47x6" path="res://Sprites/Actors/ForceFieldHorizontal.png" id="2_4cotp"] [ext_resource type="Texture2D" uid="uid://6p28earvo6m2" path="res://textures/Manual/Forcefield/ForceField1.png" id="1_xl5wo"]
[sub_resource type="BoxShape3D" id="BoxShape3D_7axon"] [sub_resource type="BoxShape3D" id="BoxShape3D_7axon"]
size = Vector3(1.99927, 2.00482, 0.140869) size = Vector3(1.99927, 2.00482, 0.140869)
[sub_resource type="AtlasTexture" id="AtlasTexture_hfile"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4cotp"]
atlas = ExtResource("2_4cotp") transparency = 1
region = Rect2(0, 0, 32, 32) albedo_color = Color(1, 1, 1, 0.490196)
albedo_texture = ExtResource("1_xl5wo")
texture_filter = 0
[sub_resource type="AtlasTexture" id="AtlasTexture_2serc"] [sub_resource type="QuadMesh" id="QuadMesh_hfile"]
atlas = ExtResource("2_4cotp") material = SubResource("StandardMaterial3D_4cotp")
region = Rect2(32, 0, 32, 32) size = Vector2(2, 2)
[sub_resource type="AtlasTexture" id="AtlasTexture_nl1bd"] [node name="Forcefield" type="AnimatableBody3D" groups=["Solid"]]
atlas = ExtResource("2_4cotp")
region = Rect2(64, 0, 32, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_q44q4"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_hfile")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2serc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nl1bd")
}],
"loop": true,
"name": &"default",
"speed": 5.0
}]
[node name="Door3d" type="AnimatableBody3D" groups=["Solid"]]
collision_layer = 16 collision_layer = 16
collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00500488, 0.00234985, -0.00524902) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00500488, 0.00234985, -0.00524902)
shape = SubResource("BoxShape3D_7axon") shape = SubResource("BoxShape3D_7axon")
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="."] [node name="MeshInstance3D" type="MeshInstance3D" parent="."]
modulate = Color(1, 1, 1, 0.596) mesh = SubResource("QuadMesh_hfile")
pixel_size = 0.06
texture_filter = 0
sprite_frames = SubResource("SpriteFrames_q44q4")
autoplay = "default"
frame_progress = 0.581369

View file

@ -1,15 +1,26 @@
[gd_scene load_steps=3 format=3 uid="uid://hak5o0k5yhn1"] [gd_scene load_steps=5 format=3 uid="uid://hak5o0k5yhn1"]
[ext_resource type="PackedScene" uid="uid://bc0du3r4krgg1" path="res://3D/BlockbenchModels/Terminal/Terminal.gltf" id="1_7jsh0"] [ext_resource type="PackedScene" uid="uid://bc0du3r4krgg1" path="res://3D/BlockbenchModels/Terminal/Terminal.gltf" id="1_7jsh0"]
[ext_resource type="Script" uid="uid://duy020jwtwver" path="res://Scripts/Activables/Terminal3D.cs" id="1_sn7tt"]
[sub_resource type="SphereShape3D" id="SphereShape3D_2cx3w"]
[sub_resource type="BoxShape3D" id="BoxShape3D_hsg1w"] [sub_resource type="BoxShape3D" id="BoxShape3D_hsg1w"]
size = Vector3(0.405762, 0.402695, 0.405273) size = Vector3(0.405762, 0.402695, 0.405273)
[node name="BoxRed" type="StaticBody3D"] [node name="Terminal" type="Area3D" groups=["Interactable"]]
collision_layer = 32
collision_mask = 0
script = ExtResource("1_sn7tt")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_2cx3w")
[node name="Model" type="StaticBody3D" parent="." groups=["Solid"]]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Model"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00488285, -0.00800342, -0.00830072) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00488285, -0.00800342, -0.00830072)
shape = SubResource("BoxShape3D_hsg1w") shape = SubResource("BoxShape3D_hsg1w")
[node name="blockbench_export" parent="." instance=ExtResource("1_7jsh0")] [node name="blockbench_export" parent="Model" instance=ExtResource("1_7jsh0")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)

View file

@ -0,0 +1,23 @@
[gd_resource type="Resource" script_class="FuncGodotFGDBaseClass" load_steps=2 format=3 uid="uid://di5wnbv5icxtq"]
[ext_resource type="Script" uid="uid://6o4wbl0iau0v" path="res://addons/func_godot/src/fgd/func_godot_fgd_base_class.gd" id="1_h5gnk"]
[resource]
script = ExtResource("1_h5gnk")
classname = "Dialogue"
description = "Starts the dialogue associated to the named timeline"
func_godot_internal = false
base_classes = Array[Resource]([])
class_properties = {
"timeline": ""
}
class_property_descriptions = {
"timeline": "Name of the timeline to trigger"
}
auto_apply_to_matching_node_properties = false
meta_properties = {
"color": Color(0.8, 0.8, 0.8, 1),
"size": AABB(-8, -8, -8, 8, 8, 8)
}
node_class = ""
name_property = ""

View file

@ -5,11 +5,11 @@
[resource] [resource]
script = ExtResource("1_7j8c1") script = ExtResource("1_7j8c1")
classname = "Targetname" classname = "Targetname"
description = "" description = "Target name for event targeting purposes"
func_godot_internal = false func_godot_internal = false
base_classes = Array[Resource]([]) base_classes = Array[Resource]([])
class_properties = { class_properties = {
"targetname": null "targetname": ""
} }
class_property_descriptions = { class_property_descriptions = {
"targetname": "Adds this entity to a group with this targetname." "targetname": "Adds this entity to a group with this targetname."

View file

@ -1,7 +1,8 @@
[gd_resource type="Resource" script_class="FuncGodotFGDPointClass" load_steps=4 format=3 uid="uid://cvo11hahyoo4d"] [gd_resource type="Resource" script_class="FuncGodotFGDPointClass" load_steps=5 format=3 uid="uid://cvo11hahyoo4d"]
[ext_resource type="Resource" uid="uid://5bc1qysixhmh" path="res://3D/TrenchBroom/EntityDefinitions/base/actor_base.tres" id="1_f03df"] [ext_resource type="Resource" uid="uid://5bc1qysixhmh" path="res://3D/TrenchBroom/EntityDefinitions/base/actor_base.tres" id="1_f03df"]
[ext_resource type="PackedScene" uid="uid://hak5o0k5yhn1" path="res://3D/Scenes/Props/Terminal_3D.tscn" id="2_f03df"] [ext_resource type="PackedScene" uid="uid://hak5o0k5yhn1" path="res://3D/Scenes/Props/Terminal_3D.tscn" id="2_f03df"]
[ext_resource type="Resource" uid="uid://di5wnbv5icxtq" path="res://3D/TrenchBroom/EntityDefinitions/base/dialogue_base.tres" id="2_iuc81"]
[ext_resource type="Script" uid="uid://c83r7t467hm4m" path="res://addons/func_godot/src/fgd/func_godot_fgd_point_class.gd" id="3_q0k5x"] [ext_resource type="Script" uid="uid://c83r7t467hm4m" path="res://addons/func_godot/src/fgd/func_godot_fgd_point_class.gd" id="3_q0k5x"]
[resource] [resource]
@ -12,7 +13,7 @@ apply_scale_on_map_build = false
classname = "actor_terminal" classname = "actor_terminal"
description = "Red Box" description = "Red Box"
func_godot_internal = false func_godot_internal = false
base_classes = Array[Resource]([ExtResource("1_f03df")]) base_classes = Array[Resource]([ExtResource("1_f03df"), ExtResource("2_iuc81")])
class_properties = {} class_properties = {}
class_property_descriptions = {} class_property_descriptions = {}
auto_apply_to_matching_node_properties = false auto_apply_to_matching_node_properties = false

View file

@ -1,4 +1,4 @@
[gd_resource type="Resource" script_class="FuncGodotFGDFile" load_steps=9 format=3 uid="uid://onsfttdpojex"] [gd_resource type="Resource" script_class="FuncGodotFGDFile" load_steps=10 format=3 uid="uid://onsfttdpojex"]
[ext_resource type="Resource" uid="uid://kerywjgft7vh" path="res://3D/TrenchBroom/EntityDefinitions/base/target_base.tres" id="1_abw2p"] [ext_resource type="Resource" uid="uid://kerywjgft7vh" path="res://3D/TrenchBroom/EntityDefinitions/base/target_base.tres" id="1_abw2p"]
[ext_resource type="Script" uid="uid://cknmd0lgmorx2" path="res://addons/func_godot/src/fgd/func_godot_fgd_file.gd" id="1_p3xok"] [ext_resource type="Script" uid="uid://cknmd0lgmorx2" path="res://addons/func_godot/src/fgd/func_godot_fgd_file.gd" id="1_p3xok"]
@ -8,6 +8,7 @@
[ext_resource type="Resource" uid="uid://5bc1qysixhmh" path="res://3D/TrenchBroom/EntityDefinitions/base/actor_base.tres" id="5_mkw5g"] [ext_resource type="Resource" uid="uid://5bc1qysixhmh" path="res://3D/TrenchBroom/EntityDefinitions/base/actor_base.tres" id="5_mkw5g"]
[ext_resource type="Resource" uid="uid://bfjnt8q3l2p65" path="res://3D/TrenchBroom/EntityDefinitions/base/func_base.tres" id="6_1xsdl"] [ext_resource type="Resource" uid="uid://bfjnt8q3l2p65" path="res://3D/TrenchBroom/EntityDefinitions/base/func_base.tres" id="6_1xsdl"]
[ext_resource type="Resource" uid="uid://ermxog0n4mvn" path="res://3D/TrenchBroom/EntityDefinitions/base/trigger_base.tres" id="7_2isdf"] [ext_resource type="Resource" uid="uid://ermxog0n4mvn" path="res://3D/TrenchBroom/EntityDefinitions/base/trigger_base.tres" id="7_2isdf"]
[ext_resource type="Resource" uid="uid://di5wnbv5icxtq" path="res://3D/TrenchBroom/EntityDefinitions/base/dialogue_base.tres" id="8_2isdf"]
[resource] [resource]
script = ExtResource("1_p3xok") script = ExtResource("1_p3xok")
@ -15,5 +16,5 @@ export_file = false
target_map_editor = 1 target_map_editor = 1
fgd_name = "FuncGodot" fgd_name = "FuncGodot"
base_fgd_files = Array[Resource]([]) base_fgd_files = Array[Resource]([])
entity_definitions = Array[Resource]([ExtResource("1_abw2p"), ExtResource("2_entxp"), ExtResource("1_wfoxw"), ExtResource("5_mkw5g"), ExtResource("2_abw2p"), ExtResource("6_1xsdl"), ExtResource("7_2isdf")]) entity_definitions = Array[Resource]([ExtResource("1_abw2p"), ExtResource("2_entxp"), ExtResource("1_wfoxw"), ExtResource("5_mkw5g"), ExtResource("2_abw2p"), ExtResource("6_1xsdl"), ExtResource("7_2isdf"), ExtResource("8_2isdf")])
metadata/_custom_type_script = "uid://cknmd0lgmorx2" metadata/_custom_type_script = "uid://cknmd0lgmorx2"

View file

@ -1,10 +1,12 @@
using Cirno.Scripts.Resources.Events; using Cirno.Scripts.Interactables;
using Cirno.Scripts.Misc;
using Cirno.Scripts.Resources.Events;
using Godot; using Godot;
using Godot.Collections; using Godot.Collections;
namespace Cirno.Scripts.Activables; namespace Cirno.Scripts.Activables;
public partial class ScriptableArea3D : Area3D, IActivable public partial class ScriptableArea3D : Area3D, IActivable, IInteractable
{ {
[Export] public Array<EventResource> Events { get; set; } = []; [Export] public Array<EventResource> Events { get; set; } = [];
@ -71,4 +73,19 @@ public partial class ScriptableArea3D : Area3D, IActivable
{ {
return true; return true;
} }
public Vector2 GetGlobalPosition2D()
{
return new Vector2(this.GlobalPosition.X, this.GlobalPosition.Z);
}
public Vector2 GetScreenPosition()
{
if (CameraController3D.Instance is null)
{
return this.GetGlobalPosition2D();
}
return CameraController3D.Instance.UnprojectPosition(this.GlobalPosition);
}
} }

View file

@ -0,0 +1,55 @@
using Cirno.Scripts.Interactables;
using Cirno.Scripts.Misc;
using Cirno.Scripts.Utils;
using Godot;
using Godot.Collections;
namespace Cirno.Scripts.Activables;
[Tool]
public partial class Terminal3D : Area3D, IInteractable
{
[Export] public StringName TimelineName = "timeline";
private DialogueTools _dialogueInstance;
public override void _Ready()
{
if (Engine.IsEditorHint()) return;
_dialogueInstance = new DialogueTools();
_dialogueInstance.Init(this, TimelineName);
}
public void _func_godot_apply_properties(Dictionary<string, string> props)
{
TimelineName = props["timeline"];
}
public bool Activate(ActivationType activationType = ActivationType.Toggle)
{
if (Engine.IsEditorHint()) return false;
_dialogueInstance.Start(this);
return true;
}
public bool CanActivate()
{
if (Engine.IsEditorHint()) return false;
return true;
}
public Vector2 GetGlobalPosition2D()
{
return new Vector2(this.GlobalPosition.X, this.GlobalPosition.Z);
}
public Vector2 GetScreenPosition()
{
if (CameraController3D.Instance is null)
{
return this.GetGlobalPosition2D();
}
return CameraController3D.Instance.UnprojectPosition(this.GlobalPosition);
}
}

View file

@ -0,0 +1 @@
uid://duy020jwtwver

View file

@ -1,4 +1,5 @@
using Cirno.Scripts.Misc; using Cirno.Scripts.Misc;
using Cirno.Scripts.Utils;
using Godot; using Godot;
namespace Cirno.Scripts.Resources.Events; namespace Cirno.Scripts.Resources.Events;
@ -7,78 +8,18 @@ namespace Cirno.Scripts.Resources.Events;
public partial class DialogueStartEvent : EventResource public partial class DialogueStartEvent : EventResource
{ {
[Export] public StringName TimelineName = "timeline"; [Export] public StringName TimelineName = "timeline";
private Node _dialogic;
private bool _isComplete = false;
private DialogueSkipListener _listener; private DialogueTools _dialogueInstance;
public override void Init(Node parent) public override void Init(Node parent)
{ {
_dialogic = parent.GetNode("/root/Dialogic"); _dialogueInstance = new DialogueTools();
_dialogic.ProcessMode = Node.ProcessModeEnum.Always; _dialogueInstance.Init(parent, TimelineName);
} }
public override void Start(Node parent) public override void Start(Node parent)
{ {
if (GlobalState.Instance.SessionSettings.SkipDialogues) _dialogueInstance.Start(parent);
{
DialogueEndAction();
return;
}
CreateSkipListener(parent);
Hud.Instance?.HideHud();
_dialogic.Connect("timeline_ended", Callable.From(OnTimelineEnded));
var dialogicNode =_dialogic.Call("start", TimelineName.ToString());
((Node)dialogicNode).ProcessMode = Node.ProcessModeEnum.Always;
ChangeState(GameState.Dialogue);
}
private void ChangeState(GameState state)
{
if (GameManager.Instance is not null)
{
GameManager.Instance.ChangeState(state);
}
else if (GameController.Instance is not null)
{
GameController.Instance.ChangeState(state);
}
}
private void CreateSkipListener(Node parent)
{
_listener = new DialogueSkipListener();
parent.AddChild(_listener);
_listener.ProcessMode = Node.ProcessModeEnum.Always;
_listener.Skipped += ListenerOnSkipped;
}
private void ListenerOnSkipped()
{
_listener.Skipped -= ListenerOnSkipped;
_listener.QueueFree();
_dialogic.Call("end_timeline");
}
private void OnTimelineEnded()
{
Hud.Instance?.ShowHud();
ChangeState(GameState.Playing);
if (_dialogic.IsConnected("timeline_ended", Callable.From(OnTimelineEnded)))
{
_dialogic.Disconnect("timeline_ended", Callable.From(OnTimelineEnded));
}
DialogueEndAction();
}
private void DialogueEndAction()
{
_isComplete = true;
} }
public override void UpdateEvent(double delta) public override void UpdateEvent(double delta)
@ -87,6 +28,6 @@ public partial class DialogueStartEvent : EventResource
public override bool IsComplete() public override bool IsComplete()
{ {
return _isComplete; return _dialogueInstance.IsComplete;
} }
} }

View file

@ -0,0 +1,85 @@
using Cirno.Scripts.Misc;
using Godot;
namespace Cirno.Scripts.Utils;
public partial class DialogueTools : RefCounted
{
private Node _dialogic;
private bool _isComplete = false;
public bool IsComplete => _isComplete;
private DialogueSkipListener _listener;
private StringName TimelineName;
public void Init(Node parent, StringName timelineName)
{
_dialogic = parent.GetNode("/root/Dialogic");
_dialogic.ProcessMode = Node.ProcessModeEnum.Always;
TimelineName = timelineName;
}
public void Start(Node parent)
{
if (GlobalState.Instance.SessionSettings.SkipDialogues)
{
DialogueEndAction();
return;
}
CreateSkipListener(parent);
Hud.Instance?.HideHud();
_dialogic.Connect("timeline_ended", Callable.From(OnTimelineEnded));
var dialogicNode =_dialogic.Call("start", TimelineName.ToString());
((Node)dialogicNode).ProcessMode = Node.ProcessModeEnum.Always;
ChangeState(GameState.Dialogue);
}
private void ChangeState(GameState state)
{
if (GameManager.Instance is not null)
{
GameManager.Instance.ChangeState(state);
}
else if (GameController.Instance is not null)
{
GameController.Instance.ChangeState(state);
}
}
private void CreateSkipListener(Node parent)
{
_listener = new DialogueSkipListener();
parent.AddChild(_listener);
_listener.ProcessMode = Node.ProcessModeEnum.Always;
_listener.Skipped += ListenerOnSkipped;
}
private void ListenerOnSkipped()
{
_listener.Skipped -= ListenerOnSkipped;
_listener.QueueFree();
_dialogic.Call("end_timeline");
}
private void OnTimelineEnded()
{
Hud.Instance?.ShowHud();
ChangeState(GameState.Playing);
if (_dialogic.IsConnected("timeline_ended", Callable.From(OnTimelineEnded)))
{
_dialogic.Disconnect("timeline_ended", Callable.From(OnTimelineEnded));
}
DialogueEndAction();
}
private void DialogueEndAction()
{
_isComplete = true;
}
}

View file

@ -0,0 +1 @@
uid://dqe13b0edlud1