1 |
################# |
2 |
### VARIABLES ### |
3 |
################# |
4 |
|
5 |
var int var_counter = 0; |
6 |
|
7 |
############ |
8 |
### MAIN ### |
9 |
############ |
10 |
|
11 |
func void main(void) |
12 |
{ |
13 |
gl_fog_red = 0 |
14 |
gl_fog_blue = 0 |
15 |
gl_fog_green = 0 |
16 |
gl_fog_start = .995 |
17 |
gs_farclipplane_set 5000 |
18 |
ui_suppress_prompt = 1 |
19 |
chr_auto_aim_dist = 0 |
20 |
start |
21 |
} |
22 |
|
23 |
############# |
24 |
### START ### |
25 |
############# |
26 |
|
27 |
func void start(string ai_name) |
28 |
{ |
29 |
fork deactivate_stuff |
30 |
if(save_point eq 0) fork intro |
31 |
if(save_point eq 1) restore_game |
32 |
if(save_point eq 2) fork save_point_2 |
33 |
if(save_point eq 3) restore_game |
34 |
sleep 5 |
35 |
fork sp_all |
36 |
} |
37 |
|
38 |
func void deactivate_stuff(void) |
39 |
{ |
40 |
#not used |
41 |
trigvolume_enable crossfire 0 |
42 |
trigvolume_enable open_ambush_1 0 |
43 |
trigvolume_enable save2 0 |
44 |
trigvolume_enable save_point3 0 |
45 |
trigvolume_enable setobjective_4 0 |
46 |
trigvolume_enable setobjective_5 0 |
47 |
trigvolume_enable strikerguards 0 |
48 |
trigvolume_enable room1_copy_copy 0 |
49 |
trigvolume_enable room1_copy2 0 |
50 |
trigvolume_enable room2 0 |
51 |
trigvolume_enable room2_copy 0 |
52 |
trigvolume_enable room2_stop 0 |
53 |
trigvolume_enable room2_stop_copy2 0 |
54 |
trigvolume_enable room2_stop_copy_copy 0 |
55 |
trigvolume_enable room2_stop_copy 0 |
56 |
trigvolume_enable room3_stop 0 |
57 |
trigvolume_enable room3_stop_copy 0 |
58 |
trigvolume_enable room3_particle_control 0 |
59 |
trigvolume_enable room4_copy 0 |
60 |
trigvolume_enable room4_copy_copy 0 |
61 |
trigvolume_enable trigger_volume_07 0 |
62 |
trigvolume_enable trigger_volume_11_copy 0 |
63 |
trigvolume_enable trigger_volume_16_copy3 0 |
64 |
trigvolume_enable trigger_volume_16_copy_copy2 0 |
65 |
trigvolume_enable trigger_volume_16_copy2_copy2 0 |
66 |
trigvolume_enable trigger_volume_16_copy_copy_copy2 0 |
67 |
trigvolume_enable trigger_volume_16_copy2_copy_copy 0 |
68 |
trigvolume_enable trigger_volume_16_copy_copy_copy_copy 0 |
69 |
trigvolume_enable trigger_volume_36 0 |
70 |
trigvolume_enable trigger_volume_39 0 |
71 |
#used |
72 |
obj_create 81 82 |
73 |
env_shade 777 777 .4 .4 .4 |
74 |
env_show 778 0 |
75 |
chr_delete ShinShin |
76 |
} |
77 |
|
78 |
func void you_lose(string ai_name) |
79 |
{ |
80 |
fade_out 0 0 0 30 |
81 |
sleep 30 |
82 |
lose |
83 |
} |
84 |
|
85 |
#################################### |
86 |
### SEVERAL TIMES USED FUNCTIONS ### |
87 |
#################################### |
88 |
|
89 |
func void sp_all(void) |
90 |
{ |
91 |
co_message_display = 0 |
92 |
if(save_point eq 1) save_game 1 autosave |
93 |
if(save_point eq 2) save_game 2 autosave |
94 |
if(save_point eq 3) save_game 3 autosave |
95 |
sleep 180 |
96 |
co_message_display = 1 |
97 |
} |
98 |
|
99 |
func void remove_ai(void) |
100 |
{ |
101 |
ai2_kill |
102 |
sleep 60 |
103 |
powerup_reset |
104 |
weapon_reset |
105 |
sleep 240 |
106 |
corpse_reset |
107 |
} |
108 |
|
109 |
func void music_stop(void) |
110 |
{ |
111 |
sound_music_stop mus_trt |
112 |
sound_music_stop atm_cl09 |
113 |
sound_music_stop atm_cl10 |
114 |
sound_music_stop atm_cl11 |
115 |
sound_music_stop atm_cl12 |
116 |
sound_music_stop mus_amasian |
117 |
} |
118 |
|
119 |
#tv66, tv67 and tv68 - called up, if you fall from a pipe |
120 |
func void dont_even_try_it(string ai_name) |
121 |
{ |
122 |
chr_set_health 0 0 |
123 |
} |
124 |
|
125 |
########## |
126 |
### SP0 ### |
127 |
########## |
128 |
|
129 |
func void intro(void) |
130 |
{ |
131 |
particle room1 do start |
132 |
particle room2 do start |
133 |
particle room3 do start |
134 |
ai2_spawn ambush_striker_10 |
135 |
ai2_spawn ambush_striker_11 |
136 |
playback 0 IntroKonoko01 |
137 |
objective_set 1 silent |
138 |
sleep 1 |
139 |
sound_music_start mus_trt |
140 |
} |
141 |
|
142 |
#tv1 - big long box around the railing and the beginning of the stairway |
143 |
func void p1(string ai_name) |
144 |
{ |
145 |
music_stop |
146 |
sound_music_start atm_cl09 1.0 |
147 |
ai2_spawn A1_sr01 |
148 |
ai2_spawn A1_t02 |
149 |
ai2_lookatme A1_sr01 |
150 |
ai2_lookatme A1_t02 |
151 |
sleep 120 |
152 |
door_lock 1 |
153 |
door_lock 2 |
154 |
} |
155 |
|
156 |
#lose func of A1_t02 |
157 |
func void backup_1(string ai_name) |
158 |
{ |
159 |
ai2_spawn backup_striker1 |
160 |
particle blast1_locklight01 do start |
161 |
door_unlock 1 |
162 |
door_open 1 |
163 |
} |
164 |
|
165 |
#lose func of A1_sr01 |
166 |
func void backup_2(string ai_name) |
167 |
{ |
168 |
ai2_spawn backup_striker2 |
169 |
particle blast2_locklight01 do start |
170 |
door_unlock 2 |
171 |
door_open 2 |
172 |
} |
173 |
|
174 |
#tv41 - long box in middle of the 1st hall (proceed from the left to the right side); not used, or better: does not work |
175 |
|
176 |
#tv2 - after door 1 and door 2 |
177 |
func void p2(string ai_name) |
178 |
{ |
179 |
ai2_spawn A2_r03 |
180 |
playback A2_r03 redjump |
181 |
ai2_lookatme A2_r03 |
182 |
ai2_spawn aerial_red_2 |
183 |
ai2_passive aerial_red_2 1 |
184 |
playback aerial_red_2 redjump2 |
185 |
ai2_passive aerial_red_2 0 |
186 |
ai2_lookatme aerial_red_2 |
187 |
ai2_spawn red_guard_1 |
188 |
ai2_dopath A1_sr01 patrol_31 |
189 |
ai2_dopath A1_t02 patrol_31 |
190 |
ai2_setjobstate A1_sr01 |
191 |
ai2_setjobstate A1_t02 patrol_31 |
192 |
ai2_spawn ShinShin force |
193 |
playback ShinShin ShinShinSet |
194 |
ai2_setmovementmode ShinShin creep |
195 |
ai2_passive ShinShin 1 |
196 |
ai2_makeblind ShinShin 1 |
197 |
ai2_makedeaf ShinShin 1 |
198 |
chr_lock_active ShinShin |
199 |
chr_unstoppable ShinShin 1 |
200 |
chr_invincible ShinShin 1 |
201 |
chr_nocollision ShinShin 1 |
202 |
} |
203 |
|
204 |
#tv34 - complete volume of the 2nd hall - enter func |
205 |
func void t43(string ai_name) |
206 |
{ |
207 |
var_counter = 1 |
208 |
} |
209 |
|
210 |
#tv34 - complete volume of the 2nd hall - leave func |
211 |
func void t43b(string ai_name) |
212 |
{ |
213 |
var_counter = 0 |
214 |
} |
215 |
|
216 |
#tv63 - long box in middle of the 2nd hall (proceed from the left to the right side) |
217 |
func void come_to_me(string ai_name) |
218 |
{ |
219 |
ai2_dopath ambush_striker1 come_to_me 1 |
220 |
ai2_dopath ambush_striker2 come_to_me 1 |
221 |
ai2_dopath A1_t02 come_to_me 1 |
222 |
ai2_dopath A1_sr01 come_to_me 1 |
223 |
} |
224 |
|
225 |
#tv65 - complete second half of the 2nd hall; only used to check, if there are still enemies in it or not; see next func |
226 |
|
227 |
#tv3 - big field around shinatama |
228 |
func void shin_check(string ai_name) |
229 |
{ |
230 |
trigvolume_enable trigger_volume_03 0 |
231 |
if(trigvolume_count(32) eq 0) Shin |
232 |
else |
233 |
{ |
234 |
sleep 60 |
235 |
trigvolume_enable trigger_volume_03 1 |
236 |
} |
237 |
} |
238 |
|
239 |
#tv54 - complete volume of the 2nd hall too; used to delete all enemies inside; see next func |
240 |
|
241 |
func void Shin(void) |
242 |
{ |
243 |
music_stop |
244 |
sound_music_start atm_cl10 0.0 |
245 |
sound_music_volume atm_cl10 1 5 |
246 |
objective_set 2 silent |
247 |
target_set 7020 60 |
248 |
particle blast1_locklight01 do stop |
249 |
particle blast2_locklight01 do stop |
250 |
door_lock 1 |
251 |
door_lock 2 |
252 |
particle room1 do stop |
253 |
particle room2 do stop |
254 |
particle Shindoor_locklight01 do start |
255 |
door_unlock 3 |
256 |
particle room4 do start |
257 |
ai2_spawn A2_sb04 |
258 |
sound_dialog_play c09_31_27shinatama |
259 |
sound_dialog_play_block pause |
260 |
sleep 600 |
261 |
sound_dialog_play c09_31_28shinatama |
262 |
sleep 600 |
263 |
sound_dialog_play c09_31_29shinatama |
264 |
sleep 330 |
265 |
sound_dialog_play_block pause |
266 |
sleep 15 |
267 |
music_stop |
268 |
sound_ambient_start c06_45_04_explo |
269 |
sleep 10 |
270 |
particle ShinBomb do explode |
271 |
trigvolume_kill 64 |
272 |
if(var_counter ne 0) chr_set_health 0 0 |
273 |
else |
274 |
{ |
275 |
fade_out 1 1 1 30 |
276 |
sleep 2 |
277 |
fade_in 30 |
278 |
door_lock 3 |
279 |
particle Shindoor_locklight01 do stop |
280 |
objective_set 3 silent |
281 |
target_set 0 0 |
282 |
} |
283 |
} |
284 |
|
285 |
#tv4 - in front of door 3 |
286 |
func void p5(string ai_name) |
287 |
{ |
288 |
ai2_spawn A3_n05 |
289 |
ai2_spawn A3_sb06 |
290 |
} |
291 |
|
292 |
########## |
293 |
### SP1 ### |
294 |
########## |
295 |
|
296 |
#tv69 - in some distance afer door 3 |
297 |
func void new_save1(string ai_name) |
298 |
{ |
299 |
if(save_point eq 1) |
300 |
{ |
301 |
p5 |
302 |
particle room4 do start |
303 |
objective_set 3 silent |
304 |
} |
305 |
else save_game 1 autosave |
306 |
particle Shindoor_locklight01 do stop |
307 |
door_close 3 |
308 |
door_lock 3 |
309 |
particle room3 do stop |
310 |
} |
311 |
|
312 |
#called up, after you've talked to the guy |
313 |
func void do_console_1(string ai_name) |
314 |
{ |
315 |
ai2_doalarm A3_n05 1 |
316 |
} |
317 |
|
318 |
#console1 |
319 |
func void pipe1a(string ai_name) |
320 |
{ |
321 |
ai2_passive A3_n05 1 |
322 |
particle room4 do stop |
323 |
timer_start 30 pipe1b |
324 |
sound_music_start atm_cl11 |
325 |
} |
326 |
|
327 |
func void pipe1b(void) |
328 |
{ |
329 |
particle room4 do start |
330 |
console_reset 1 |
331 |
music_stop |
332 |
} |
333 |
|
334 |
#tv29 - on the pipe, in some distance after door 4 (func: p36); I've disabled it |
335 |
|
336 |
#tv28 - after door 9 |
337 |
func void killmuro(string ai_name) |
338 |
{ |
339 |
music_stop |
340 |
ai2_spawn A4_n07 |
341 |
} |
342 |
|
343 |
#tv5 - in front of door 10 |
344 |
func void p6(string ai_name) |
345 |
{ |
346 |
ai2_spawn A4_sr08 |
347 |
ai2_spawn B1_c07 |
348 |
} |
349 |
|
350 |
#tv6 - after door 13 and door 14, not used (func: p7) |
351 |
|
352 |
#tv7 - in the middle of the stairs from 1st floor to 2nd floor |
353 |
func void p8(string ai_name) |
354 |
{ |
355 |
trigvolume_enable trigger_volume_08 0 |
356 |
ai2_spawn B2_sb09 |
357 |
ai2_spawn B2_n10 |
358 |
} |
359 |
|
360 |
#tv49 - after door 11 and door 12 |
361 |
func void p9(string ai_name) |
362 |
{ |
363 |
ai2_spawn C1_c16 |
364 |
ai2_spawn C1_t11 |
365 |
ai2_spawn C1_sb12 |
366 |
ai2_spawn C1_t13 |
367 |
ai2_spawn C2_sg15 |
368 |
ai2_spawn C2_sr17 |
369 |
ai2_spawn C2_sb14 |
370 |
ai2_spawn C2_t19 |
371 |
} |
372 |
|
373 |
#console6 |
374 |
func void zap_cinematic(string ai_name) |
375 |
{ |
376 |
particle doorA_locklight01 do start |
377 |
particle doorB_locklight01 do start |
378 |
door_unlock 15 |
379 |
ai2_spawn vat_bot_1 |
380 |
ai2_spawn vat_bot_2 |
381 |
ai2_spawn vat_bot_3 |
382 |
ai2_spawn vat_bot_4 |
383 |
ai2_spawn vat_bot_5 |
384 |
chr_weapon_immune vat_bot_1 |
385 |
chr_weapon_immune vat_bot_2 |
386 |
chr_weapon_immune vat_bot_3 |
387 |
chr_weapon_immune vat_bot_4 |
388 |
chr_weapon_immune vat_bot_5 |
389 |
particle vatroom1 do start |
390 |
particle zap1 create |
391 |
particle zap2 create |
392 |
particle zap3 create |
393 |
trigvolume_enable save2 1 |
394 |
sleep 1 |
395 |
sound_music_start atm_cl12 0.75 |
396 |
} |
397 |
|
398 |
########## |
399 |
### SP2 ### |
400 |
########## |
401 |
|
402 |
#tv25 - after door 15 |
403 |
func void save_point_2(string ai_name) |
404 |
{ |
405 |
if(save_point eq 2) |
406 |
{ |
407 |
restore_game |
408 |
zap_cinematic |
409 |
objective_set 4 silent |
410 |
} |
411 |
else save_game 2 autosave |
412 |
particle doorA_locklight01 do stop |
413 |
door_close 15 |
414 |
door_lock 15 |
415 |
particle room4 do stop |
416 |
} |
417 |
|
418 |
#tv64 - complete volume of the vat room (from the floor, where Konoko stands nearly to the ceiling) |
419 |
func void zap_start(string ai_name) |
420 |
{ |
421 |
trigvolume_enable zap1 0 |
422 |
if(var_counter eq 0) |
423 |
{ |
424 |
particle zap1 do start |
425 |
sleep 120 |
426 |
particle zap1 do stop |
427 |
} |
428 |
if(var_counter eq 0) |
429 |
{ |
430 |
particle zap2 do start |
431 |
sleep 120 |
432 |
particle zap2 do stop |
433 |
} |
434 |
if(var_counter eq 0) |
435 |
{ |
436 |
particle zap3 do start |
437 |
sleep 120 |
438 |
particle zap3 do stop |
439 |
} |
440 |
sleep 60 |
441 |
trigvolume_enable zap1 1 |
442 |
} |
443 |
|
444 |
#1st console 4 |
445 |
func void zap_timer_1(string ai_name) |
446 |
{ |
447 |
var_counter = 1 |
448 |
timer_start 15 zap_start_again |
449 |
} |
450 |
|
451 |
#tv60 - passage to the 1st console 4 |
452 |
func void change_patrol_1(string ai_name) |
453 |
{ |
454 |
ai2_dopath vat_bot_2 vat_bot_2b 1 |
455 |
} |
456 |
|
457 |
#2nd console 4 |
458 |
func void zap_timer_2(string ai_name) |
459 |
{ |
460 |
var_counter = 1 |
461 |
timer_start 10 zap_start_again |
462 |
} |
463 |
|
464 |
#tv61 - passage to the 2nd console 4 |
465 |
func void change_patrol_2(string ai_name) |
466 |
{ |
467 |
ai2_dopath vat_bot_3 vat_bot_3b 1 |
468 |
} |
469 |
|
470 |
#3rd console 4 |
471 |
func void zap_timer_3(string ai_name) |
472 |
{ |
473 |
var_counter = 1 |
474 |
timer_start 5 zap_start_again |
475 |
} |
476 |
|
477 |
#tv62 - passage to the 3rd console 4 |
478 |
func void change_patrol_3(string ai_name) |
479 |
{ |
480 |
ai2_dopath vat_bot_5 vat_bot_5b 1 |
481 |
} |
482 |
|
483 |
func void zap_start_again(string ai_name) |
484 |
{ |
485 |
var_counter = 0 |
486 |
console_reset 4 |
487 |
} |
488 |
|
489 |
#tv35 to tv40 - called up, if a chara falls into the acid |
490 |
func void splash(string character) |
491 |
{ |
492 |
if(chr_is_player(character) eq 1) |
493 |
{ |
494 |
cm_detach |
495 |
chr_animate 0 KONOKOacid |
496 |
sleep 10 |
497 |
sound_impulse_play konoko_gruesome_death |
498 |
chr_set_health 0 0 |
499 |
} |
500 |
else |
501 |
{ |
502 |
chr_animate(character, KONOKOacid); |
503 |
sleep 10 |
504 |
chr_set_health(character, 0); |
505 |
} |
506 |
} |
507 |
|
508 |
#after door 16 |
509 |
func void red_ambush(string ai_name) |
510 |
{ |
511 |
music_stop |
512 |
ai2_spawn ambush_red_1 |
513 |
} |
514 |
|
515 |
#tv10 - after door 19 and door 20 |
516 |
func void p10(string ai_name) |
517 |
{ |
518 |
ai2_spawn D1_sr20 |
519 |
ai2_spawn D1_sb21 |
520 |
particle doorB_locklight01 do stop |
521 |
door_lock 16 |
522 |
particle zap1 kill |
523 |
particle zap2 kill |
524 |
particle zap3 kill |
525 |
particle vatroom1 do stop |
526 |
trigvolume_enable strikerguards 1 |
527 |
} |
528 |
|
529 |
#tv9 - long box (from the left side to the right side) in some distance in front of door 21 |
530 |
func void striker_guards(string ai_name) |
531 |
{ |
532 |
ai2_spawn striker_guard_1 |
533 |
ai2_spawn striker_guard_2 |
534 |
particle room6 do start |
535 |
} |
536 |
|
537 |
#tv51 - in front of door 21 (func: striker_guards); I've disabled it |
538 |
#tv31 - in front of door 21 too (func: p11); I've disabled it too |
539 |
#tv50 - after door 21 (func: cross_fire); I've disabled it |
540 |
|
541 |
#tv10 - after door 22 |
542 |
func void p12(string ai_name) |
543 |
{ |
544 |
ai2_spawn D2_sg24 |
545 |
ai2_spawn D2_f25 |
546 |
ai2_spawn D2_sb26 |
547 |
playback D2_sb26 piperun |
548 |
ai2_spawn pipe_guard_1 |
549 |
ai2_spawn pipe_guard_2 |
550 |
} |
551 |
|
552 |
#console8 |
553 |
func void pipe2a(void) |
554 |
{ |
555 |
particle room6 do stop |
556 |
timer_start 30 pipe2b |
557 |
sound_music_start atm_cl11 |
558 |
} |
559 |
|
560 |
func void pipe2b(void) |
561 |
{ |
562 |
music_off |
563 |
particle room6 do start |
564 |
console_reset 8 |
565 |
} |
566 |
|
567 |
#tv58 - after door 27 |
568 |
func void pipe2_music_off(void) |
569 |
{ |
570 |
music_stop |
571 |
particle save3_locklight01 do start |
572 |
} |
573 |
|
574 |
#tv11 - in front of door 28 |
575 |
func void p13(string ai_name) |
576 |
{ |
577 |
ai2_spawn E1_sr28 |
578 |
ai2_spawn E1_sb29 |
579 |
ai2_spawn E1_sr30 |
580 |
ai2_spawn ambush_comguy_1 |
581 |
ai2_spawn E1_n31 |
582 |
ai2_spawn E1_n32 |
583 |
ai2_spawn E1_n37 |
584 |
particle pipe3 do create |
585 |
particle pipe3 do start |
586 |
} |
587 |
|
588 |
#tv33 - after door 33 (funcs: p11 and save_point_3); I've disabled it |
589 |
|
590 |
########## |
591 |
### SP3 ### |
592 |
########## |
593 |
|
594 |
#tv 32 - in some distance after door 28 |
595 |
func void p11b(string ai_name) |
596 |
{ |
597 |
trigvolume_enable p11b_vol 0 |
598 |
if(save_point eq 3) p13 |
599 |
else save_game 3 autosave |
600 |
particle save3_locklight01 do stop |
601 |
door_close 28 |
602 |
door_lock 28 |
603 |
objective_set 5 silent |
604 |
particle room6 do stop |
605 |
} |
606 |
|
607 |
#lose func of E1_sr30 |
608 |
func void warnbigroom(string ai_name) |
609 |
{ |
610 |
ai2_makeaware E1_sr28 char_0 |
611 |
ai2_makeaware E1_sb29 char_0 |
612 |
} |
613 |
|
614 |
#tv48 - 1st floor, at the beginning of the stairs to the 2nd floor |
615 |
func void spawn_EC_guards(string ai_name) |
616 |
{ |
617 |
ai2_spawn E1_sb29 |
618 |
ai2_spawn E1_c33 |
619 |
ai2_spawn E1_c40 |
620 |
ai2_spawn E1_f34 |
621 |
ai2_spawn E1_f40 |
622 |
ai2_spawn E1_f35 |
623 |
} |
624 |
|
625 |
#tv53 - at the same place as tv48 (func: set_objective_5); I've disabled it |
626 |
|
627 |
#tv59 - 3rd floor, at the beginning of the stairs to the 4th floor |
628 |
func void final_guards(string ai_name) |
629 |
{ |
630 |
ai2_spawn final_guard_1 |
631 |
ai2_spawn final_guard_2 |
632 |
} |
633 |
|
634 |
#console14 |
635 |
func void tctf_control(string ai_name) |
636 |
{ |
637 |
sound_music_start mus_amasian 1.0 |
638 |
particle elev1_locklight01 do start |
639 |
particle elev2_locklight01 do start |
640 |
door_unlock 37 |
641 |
door_unlock 38 |
642 |
ai2_spawn E2_sr38 |
643 |
ai2_spawn E2_sr39 |
644 |
} |
645 |
|
646 |
#tv30 - in front of door 37 (func: p39); I've disabled it |
647 |
|
648 |
#tv12 - after door 37 |
649 |
func void elevator(void) |
650 |
{ |
651 |
fade_out 0 0 0 30 |
652 |
sleep 30 |
653 |
fork_rmove_ai |
654 |
env_show 778 1 |
655 |
env_shade 778 778 .3 .3 .3 |
656 |
ai2_spawn F_r40 |
657 |
playback 0 ElevatorTop |
658 |
fade_in 30 |
659 |
fork wait_for_help |
660 |
} |
661 |
|
662 |
func void wait_for_help(void) |
663 |
{ |
664 |
chr_wait_health F_r40 70 |
665 |
ai2_spawn TCTF1051 |
666 |
ai2_spawn TCTF1052 |
667 |
ai2_spawn TCTF1053 |
668 |
ai2_spawn TCTF1054 |
669 |
chr_lock_active 1051 |
670 |
chr_lock_active 1052 |
671 |
chr_lock_active 1053 |
672 |
chr_lock_active 1054 |
673 |
chr_changeteam TCTF1051 TCTF |
674 |
chr_changeteam TCTF1052 TCTF |
675 |
chr_changeteam TCTF1053 TCTF |
676 |
chr_changeteam TCTF1054 TCTF |
677 |
playback TCTF1051 OutroSwatEnter |
678 |
ai2_attack TCTF1053 char_0 |
679 |
sleep 60 |
680 |
playback TCTF1052 OutroSwatEnter |
681 |
ai2_attack TCTF1054 char_0 |
682 |
sleep 50 |
683 |
playback TCTF1053 OutroLiteEnter |
684 |
ai2_attack TCTF1051 char_0 |
685 |
sleep 70 |
686 |
playback TCTF1054 OutroLiteEnter |
687 |
ai2_attack TCTF1052 char_0 |
688 |
} |
689 |
|
690 |
#console15 |
691 |
func void pipe3(void) |
692 |
{ |
693 |
sound_music_volume mus_amasian 0 2 |
694 |
music_stop |
695 |
particle pipe3 kill |
696 |
sound_music_start atm_cl11 |
697 |
timer_start 20 pipe3b |
698 |
} |
699 |
|
700 |
func void pipe3b(void) |
701 |
{ |
702 |
music_stop |
703 |
particle pipe3 do create |
704 |
particle pipe3 do start |
705 |
console_reset 15 |
706 |
} |
707 |
|
708 |
#tv13 - after door 39; circa after a quarter of the lenght of the pipe |
709 |
func void outro(void) |
710 |
{ |
711 |
fade_out 0 0 0 30 |
712 |
sleep 30 |
713 |
win |
714 |
} |
715 |
|
716 |
##################### |
717 |
### TEXT CONSOLES ### |
718 |
##################### |
719 |
|
720 |
func void level10a(string chr_index) |
721 |
{ |
722 |
text_console level_10a |
723 |
console_reset 2 |
724 |
} |
725 |
|
726 |
func void level10b(string chr_index) |
727 |
{ |
728 |
text_console level_10b |
729 |
console_reset 7 |
730 |
} |