ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/tctf/tctf.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 23276 byte(s)
Log Message:

File Contents

# Content
1 #################
2 ### VARIABLES ###
3 #################
4
5 var int var_counter = 0;
6 var int var_counter2 = 0;
7
8 ############
9 ### MAIN ###
10 ############
11
12 func void main(void)
13 {
14 gl_fog_red = 0
15 gl_fog_blue = 0
16 gl_fog_green = 0
17 gl_fog_start = .995
18 gs_farclipplane_set 5000
19 ui_suppress_prompt = 1
20 chr_auto_aim_dist = 0
21 start
22 }
23
24 #############
25 ### START ###
26 #############
27
28 func void start(string ai_name)
29 {
30 fork deactivate_stuff
31 if(save_point eq 0) save_point = 1
32 if(save_point eq 1) fork intro
33 if(save_point eq 2) restore_game
34 if(save_point eq 3) restore_game
35 if(save_point eq 4) restore_game
36 sleep 5
37 fork sp_all
38 }
39
40 func void deactivate_stuff(void)
41 {
42 #not used
43 trigvolume_enable t86 0
44 trigvolume_enable trigger_volume_99 0
45 #used
46 env_show 97 0
47 env_show 98 0
48 env_show 321 0
49 env_show 322 0
50 env_show 323 0
51 env_show 324 0
52 env_show 325 0
53 env_show 398 0
54 env_show 601 0
55 env_show 602 0
56 trig_deactivate 1
57 trig_deactivate 2
58 trig_deactivate 3
59 trig_deactivate 4
60 trig_deactivate 5
61 trig_deactivate 6
62 trig_deactivate 7
63 trig_deactivate 8
64 trig_deactivate 9
65 trig_deactivate 10
66 trig_deactivate 60
67 trig_deactivate 61
68 trig_deactivate 62
69 trig_deactivate 63
70 trig_deactivate 64
71 trig_deactivate 65
72 trig_deactivate 70
73 trig_deactivate 71
74 trig_deactivate 72
75 trig_deactivate 73
76 trig_deactivate 74
77 trig_deactivate 75
78 trig_deactivate 98
79 trig_deactivate 99
80 trig_deactivate 100
81 trig_deactivate 101
82 trig_deactivate 302
83 trig_deactivate 303
84 trig_deactivate 310
85 trig_deactivate 320
86 trig_deactivate 400
87 trig_deactivate 500
88 trig_deactivate 501
89 trig_deactivate 502
90 trig_deactivate 503
91 trig_deactivate 510
92 trig_deactivate 511
93 trig_deactivate 512
94 trig_deactivate 520
95 trig_deactivate 521
96 trig_deactivate 522
97 trigvolume_enable z_40t 0
98 trigvolume_enable zz_40t 0
99 trigvolume_enable zzz_40t 0
100 trigvolume_enable zzzz_40t 0
101 trigvolume_enable tv_61t 0
102 trigvolume_enable trigger_volume_81 0
103 }
104
105 func void you_lose(string ai_name)
106 {
107 fade_out 0 0 0 30
108 sleep 30
109 lose
110 }
111
112 ####################################
113 ### SEVERAL TIMES USED FUNCTIONS ###
114 ####################################
115
116 func void sp_all(void)
117 {
118 co_message_display = 0
119 if(save_point eq 1) save_game 1 autosave
120 if(save_point eq 2) save_game 2 autosave
121 if(save_point eq 3) save_game 3 autosave
122 if(save_point eq 4) save_game 4 autosave
123 sleep 180
124 co_message_display = 1
125 }
126
127 func void remove_ai(void)
128 {
129 ai2_kill
130 sleep 60
131 powerup_reset
132 weapon_reset
133 sleep 240
134 corpse_reset
135 }
136
137 func void music_stop(void)
138 {
139 sound_music_stop mus_asianb
140 sound_music_stop mus_pursuit
141 sound_music_stop mus_om01
142 }
143
144 #tv86 to tv97
145 func void fire_damage(string ai_name)
146 {
147 chr_poison(ai_name, 5, 30, 30);
148 }
149
150 ##########
151 ### SP1 ###
152 ##########
153
154 ### GARAGE - GROUND FLOOR ###
155
156 func void intro(void)
157 {
158 env_show 99 1
159 env_show 101 1
160 env_show 103 1
161 env_show 104 1
162 env_show 105 1
163 env_show 106 1
164 env_show 107 1
165 env_show 108 1
166 env_show 110 1
167 env_show 111 1
168 env_show 112 1
169 env_show 321 1
170 env_show 322 1
171 env_show 323 1
172 env_show 324 1
173 env_show 325 1
174 env_shade 321 325 .6 .6 .6
175 env_show 444 1
176 ai2_spawn lobby_striker_01
177 ai2_spawn lobby_striker_02
178 ai2_spawn lobby_striker_03
179 playback 0 IntroKonoko
180 particle smoke do start
181 particle security_locklight01 do start
182 particle LobbyWall do explode
183 objective_set 1 silent
184 target_set 323 30
185 sleep 1
186 sound_dialog_play c07_22_01konoko
187 sound_music_start mus_asianb
188 }
189
190 #tv9 - left ramp between ground floor and 1st floor
191 func void spawnG3_11(string ai_name)
192 {
193 ai2_spawn garage_striker_07
194 ai2_passive garage_striker_07 1
195 ai2_spawn garage_striker_08
196 playback garage_striker_07 garage_taunt
197 ai2_passive garage_striker_07 0
198 }
199
200 #tv12 - left ramp between ground floor and 1st floor, after tv9
201 func void killG2_08(string ai_name)
202 {
203 trigvolume_enable trigger_volume_G2_08 0
204 }
205
206 #tv7 - right ramp between ground floor and 1st floor
207 func void spawnG2_7(string ai_name)
208 {
209 ai2_spawn garage_striker_01
210 ai2_spawn garage_striker_02
211 }
212
213 #tv13 - right ramp between ground floor and 1st floor, after tv7
214 func void killG2_10(string ai_name)
215 {
216 trigvolume_enable trigger_volume_G2_10 0
217 }
218
219 #tv50 - ground floor, crossing from garage to building (big box in front of door 4 and 7)
220 func void tv_50(string ai_name)
221 {
222 ai2_spawn l_s99
223 ai2_spawn l_s98
224 music_stop
225 }
226
227 ### GARAGE - 1ST FLOOR ###
228
229 #tv10 - left ramp between 1st floor and 2nd floor
230 func void spawnG3_12(string ai_name)
231 {
232 if (var_counter eq 0)
233 {
234 ai2_spawn garage_striker_09
235 ai2_spawn garage_striker_10
236 }
237 if (var_counter ne 0)
238 {
239 ai2_spawn garage_striker_09
240 }
241 }
242
243 #tv15 - left ramp between 1st floor and 2nd floor, after tv10
244 func void killG3_12(string ai_name)
245 {
246 trigvolume_enable trigger_volume_G3_12 0
247 }
248
249 #tv8 - right ramp between 1st floor and 2nd floor
250 func void spawnG3_8(string ai_name)
251 {
252 if (var_counter eq 0)
253 {
254 ai2_spawn garage_striker_03
255 ai2_makeignoreplayer garage_striker_03 1
256 ai2_spawn garage_striker_04
257 ai2_spawn garage_striker_05
258 ai2_lookatme garage_striker_04
259 ai2_lookatme garage_striker_05
260 playback_block garage_striker_03 garage_jump
261 ai2_makeignoreplayer garage_striker_03 0
262 }
263 if (var_counter ne 0)
264 {
265 ai2_spawn garage_striker_03
266 ai2_makeignoreplayer garage_striker_03 1
267 playback_block garage_striker_03 garage_jump
268 ai2_makeignoreplayer garage_striker_03 0
269 }
270 }
271
272 #tv14 - right ramp between 1st floor and 2nd floor, after tv8
273 func void killG3_11(string ai_name)
274 {
275 trigvolume_enable trigger_volume_G3_11 0
276 }
277
278 #tv21 - 1st floor, crossing from garage to building (big box in front of door 5 and 8)
279 func void g_23(string ai_name)
280 {
281 ai2_spawn L2s_01
282 ai2_spawn L2s_02
283 ai2_spawn L2s_03
284 ai2_spawn L2tctf_01
285 ai2_spawn L2tctf_02
286 music_stop
287 trigvolume_enable trigger_volume_w_39 0
288 }
289
290 ##tv31 - 1st floor, crossing from garage to building (box in front of door 2)
291 func void p_31(string ai_name)
292 {
293 trigvolume_enable trigger_volume_L2_4 1
294 }
295
296 ### GARAGE - 2ND FLOOR ###
297
298 #tv11 - 2nd floor, crossing from garage to building (big box in front of door 6 and 9)
299 func void c_13(string ai_name)
300 {
301 ai2_spawn lobby_striker_20
302 ai2_spawn lobby_striker_21
303 ai2_spawn lobby_fodder01
304 ai2_spawn lobby_striker_05
305 trigvolume_enable vv_38t 0
306 trigvolume_enable a_18t 0
307 music_stop
308 }
309
310 ### ENTRANCE HALL - GROUND FLOOR ###
311
312 #tv6 - in front of door 10
313 func void spawnL1_6(string ai_name)
314 {
315 ai2_spawn lobby_striker_06
316 trigvolume_enable tv_50t 0
317 }
318
319 #tv38 - after the passageway to the entrance hall with the van
320 func void x_05(string ai_name)
321 {
322 ai2_spawn l_c01
323 ai2_lookatme l_c01
324 ai2_passive l_c01 1
325 playback l_c01 lobby_runout
326 ai2_passive l_c01 0
327 trigvolume_enable trigger_volume_L1_6_9 0
328 }
329
330 #tv39 - in the passageway from the entrance hall with the van (near door 19)
331 func void y_32(string ai_name)
332 {
333 ai2_spawn l_t01
334 playback l_t01 lobby_backroll
335 sleep 15
336 ai2_spawn l_s02
337 ai2_spawn l_s03
338 trigvolume_enable tv_47t 0
339 }
340
341 #tv46 - after door 29
342 func void tv_46(string ai_name)
343 {
344 ai2_spawn l_s24
345 ai2_spawn l_t23
346 trigvolume_enable tv_47t 1
347 ai2_dopath l_t01 l_t01_06
348 ai2_setjobstate l_t01
349 }
350
351 #tv47 - in some distance after door 22
352 func void tv_47(string ai_name)
353 {
354 ai2_spawn l_s27
355 }
356
357 #tv66 - near door 26 and 31
358 func void room1_stop(string ai_name)
359 {
360 particle room1 do stop
361 }
362
363 #tv67 - near door 26 and 31, after tv66
364 func void room1_start(string ai_name)
365 {
366 particle room1 do start
367 particle smoke do start
368 }
369
370 #tv45 - after door 31
371 func void tv_45(string ai_name)
372 {
373 ai2_spawn a_v1
374 ai2_spawn l_s22
375 ai2_spawn l_s23
376 ai2_dopath l_t01 l_t01_03
377 ai2_setjobstate l_t01
378 ai2_dopath l_t23 l_t23_05
379 ai2_setjobstate l_t23
380 }
381
382 #tv44 - after door 26
383 func void tv_44(string ai_name)
384 {
385 ai2_spawn l_c10
386 ai2_dopath l_t01 l_t01_02
387 ai2_setjobstate l_t01
388 ai2_dopath l_t23 l_t23_03
389 ai2_setjobstate l_t23
390 }
391
392 #console1
393 func void goAttack(string ai_name)
394 {
395 music_stop
396 trigvolume_enable tv_57t 1
397 chr_delete l_c01
398 chr_delete l_s98
399 chr_delete l_s99
400 chr_delete lobby_striker_01
401 chr_delete lobby_striker_02
402 chr_delete garage_striker_01
403 chr_delete garage_striker_02
404 chr_delete garage_striker_03
405 chr_delete garage_striker_04
406 chr_delete garage_striker_05
407 chr_delete garage_striker_06
408 chr_delete garage_striker_07
409 chr_delete garage_striker_08
410 chr_delete garage_striker_09
411 chr_delete garage_striker_10
412 ai2_spawn tanker_stairdoor
413 particle stair_lock_locklight01 do start
414 objective_set 2 silent
415 target_set 1111 30
416 sound_dialog_play c00_01_27shinatama
417 }
418
419 #tv57 - huge box after door 19, 20 and 24
420 func void tv57(string ai_name)
421 {
422 sound_music_start mus_pursuit 0
423 sound_music_volume mus_pursuit 0.75 3.0
424 target_set 59 30
425 sleep 180
426 sound_dialog_play c00_01_105shinatama
427 }
428
429 ### Pathfinding ###
430
431 #lose func of l_s02 and l_s03
432 func void unlock_follow(void)
433 {
434 var_counter2 = var_counter2 + 1
435 if(var_counter2 eq 2)
436 {
437 trigvolume_enable z_40t 1
438 trigvolume_enable zz_40t 1
439 trigvolume_enable zzz_40t 1
440 trigvolume_enable zzzz_40t 1
441 trigvolume_enable tv_61t 1
442 }
443 }
444
445 func void patrolscript2222(void)
446 {
447 ai2_lookatchar l_t01 char_0
448 ai2_lookatchar l_t23 char_0
449 }
450
451 #tv42 - in front of door 19
452 func void z04(string ai_name)
453 {
454 ai2_dopath l_t01 l_t01_06
455 ai2_setjobstate l_t01
456 ai2_dopath l_t23 l_t23_06
457 ai2_setjobstate l_t23
458 }
459
460 #tv41 - after door 22
461 func void z02(string ai_name)
462 {
463 ai2_dopath l_t01 l_t01_04
464 ai2_setjobstate l_t01
465 ai2_dopath l_t23 l_t23_02
466 ai2_setjobstate l_t23
467 }
468
469 #tv40 - near door 29
470 func void z03(string ai_name)
471 {
472 ai2_dopath l_t01 l_t01_05
473 ai2_setjobstate l_t01
474 ai2_dopath l_t23 l_t23_01
475 ai2_setjobstate l_t23
476 }
477
478 #tv43 - in front of door 26 and 31, after tv67
479 func void z01(string ai_name)
480 {
481 ai2_dopath l_t01 l_t01_01
482 ai2_setjobstate l_t01
483 ai2_dopath l_t23 l_t23_04
484 ai2_setjobstate l_t23
485 }
486
487 #tv101 - staircase, between ground floor and 1st floor
488 func void z05(string ai_name)
489 {
490 ai2_dopath l_t01 l_t01_07
491 ai2_setjobstate l_t01
492 ai2_dopath l_t23 l_t23_07
493 ai2_setjobstate l_t23
494 }
495
496 ### ENTRANCE HALL - 1ST FLOOR ###
497
498 #tv37 - after door 20
499 func void w_39(string ai_name)
500 {
501 ai2_spawn s2_t01
502 ai2_spawn s2_t02
503 ai2_spawn s2_s01
504 ai2_spawn s2_s02
505 ai2_spawn s2_s03
506 ai2_spawn s2_s05
507 ai2_spawn s2_t05
508 trigvolume_enable g_23t 0
509 }
510
511 #tv34 - after the passageway to the footbridge (left side after door 20)
512 func void u_36(string ai_name)
513 {
514 ai2_spawn cat1_02
515 trigvolume_enable trigger_volume_L2_4 0
516 }
517
518 #tv5 - other side of the footbridge
519 func void spawnL2_4(string ai_name)
520 {
521 ai2_spawn lobby_striker_04
522 playback lobby_striker_04 lobbystriker_roll
523 trigvolume_enable u_36t 0
524 }
525
526 #tv30 - next to tv5, staircase between 1st floor and 2nd floor (func: p_31t); not used
527
528 #tv23 - in some distance after door 98
529 func void i_24(string ai_name)
530 {
531 trigvolume_enable j_25t 0
532 trigvolume_enable h_06t 0
533 }
534
535 #tv24 - after tv23
536 func void j_25(string ai_name)
537 {
538 ai2_spawn L2s_11
539 }
540
541 #tv22 - after tv24
542 func void h_06(string ai_name)
543 {
544 ai2_spawn L2s_10
545 ai2_spawn Ls_15
546 ai2_spawn Ltctf_55
547 ai2_dopath L2tctf_01 patrol_L2_13
548 ai2_dopath L2tctf_02 patrol_L2_13
549 }
550
551 #tv33 - in some distance near door 33
552 func void t_35(string ai_name)
553 {
554 trigvolume_enable s_34t 0
555 }
556
557 #tv32 - after tv 33
558 func void s_34(string ai_name)
559 {
560 ai2_spawn Lcom_01
561 }
562
563 #tv27 - after door 33
564 func void m_28(string ai_name)
565 {
566 ai2_spawn Lv_40
567 ai2_spawn Lv_41
568 ai2_spawn Lc_43
569 ai2_spawn Ls_44
570 trigvolume_enable s_34t 1
571 }
572
573 #called up, after you've talked to the female cop
574 func void femcop_holster(string ai_name)
575 {
576 chr_forceholster Lc_43 1
577 }
578
579 #tv29 - after door 37
580 func void o_30(string ai_name)
581 {
582 ai2_spawn Ls_60
583 ai2_spawn a_v2
584 }
585
586 #tv28 - after door 32
587 func void n_29(string ai_name)
588 {
589 ai2_spawn Lc_50
590 ai2_spawn Ls_51
591 ai2_spawn Ls_12
592 }
593
594 ### Pathfinding ###
595
596 #tv61 - big box in front of door 98
597 func void z06(string ai_name)
598 {
599 ai2_dopath l_t01 l_t01_08
600 ai2_setjobstate l_t01
601 ai2_dopath l_t23 l_t23_08
602 ai2_setjobstate l_t23
603 }
604
605 ### ENTRANCE HALL - 2ND FLOOR ###
606
607 #tv20 - in front of door 24
608 func void f_22(string ai_name)
609 {
610 ai2_spawn lobby_striker_05
611 trigvolume_enable vv_38t 0
612 ai2_spawn lobby_striker_20
613 ai2_spawn lobby_fodder01
614 ai2_spawn lobby_striker_21
615 }
616
617 #tv18 - after door 24
618 func void d_20(string ai_name)
619 {
620 ai2_spawn l2_s46
621 ai2_spawn l2_s44
622 playback_block l2_s44 lobby_roll3
623 }
624
625 #tv35 - after the passageway to the footbridge (left side after door 24)
626 func void v_37(string ai_name)
627 {
628 ai2_spawn cat1_01
629 trigvolume_enable vv_38t 0
630 }
631
632 #tv36 - other side of the footbridge
633 func void vv_38(string ai_name)
634 {
635 ai2_spawn lobby_striker_05
636 ai2_spawn lobby_striker_20
637 ai2_spawn lobby_striker_21
638 ai2_spawn lobby_fodder01
639 trigvolume_enable v_37t 0
640 }
641
642 #tv19 - entrance to the room on the right side near door 24
643 func void e_21(string ai_name)
644 {
645 ai2_spawn lobby_striker_34
646 ai2_spawn lobby_victim05
647 ai2_spawn lobby_victim06
648 trigvolume_enable l_27t 0
649 }
650
651 #tv25 - in the room, around the place where the female civ gives you the w6_vdg
652 func void k_26(string ai_name)
653 {
654 trigvolume_enable l_27t 1
655 }
656
657 #tv26 - at the same place as tv19 (entrance to the room)
658 func void l_27(string ai_name)
659 {
660 ai2_spawn L3s_40
661 ai2_spawn L3s_41
662 }
663
664 #tv68 - in front of door 99
665 func void a_18(string ai_name)
666 {
667 trigvolume_enable b_19t 0
668 trigvolume_enable c_13t 0
669 }
670
671 #tv17 - after door 99, after tv68
672 func void b_19(string ai_name)
673 {
674 ai2_spawn lobby_striker_30
675 ai2_spawn lobby_striker_31
676 playback lobby_striker_31 lobby_roll2
677 trigvolume_enable d_20t 0
678 }
679
680 #tv69 - near door 40, in front of tv16
681 func void room2_stop(string ai_name)
682 {
683 particle room2 stop
684 }
685
686 #tv16 - near door 40, after tv69
687 func void room2_start(string ai_name)
688 {
689 particle room2 start
690 }
691
692 #tv49 - after door 40
693 func void tv_49(string ai_name)
694 {
695 ai2_spawn l2_s47
696 }
697
698 #tv71 - near door 38, in front of tv70
699 func void room3_stop(string ai_name)
700 {
701 particle room3 stop
702 }
703
704 #tv70 - near door 38, after tv71
705 func void room3_start(string ai_name)
706 {
707 particle room3 start
708 }
709
710 #tv48 - after door 38
711 func void tv_48(string ai_name)
712 {
713 ai2_spawn l2_s46
714 }
715
716 #console2
717 func void floor4_lock(void)
718 {
719 music_stop
720 particle floor4_lock_locklight01 do start
721 target_set 60 30
722 sound_dialog_play c00_01_28shinatama
723 }
724
725 ### ENTRANCE HALL - 3RD FLOOR ###
726
727 #tv51 - after door 28
728 func void tv_51(string ai_name)
729 {
730 ai2_spawn l4_red1
731 ai2_spawn l4_t1
732 ai2_spawn l4_s1
733 ai2_spawn l4_s67
734 ai2_spawn l4_t2
735 ai2_spawn l4_s2
736 ai2_spawn l4_s3
737 ai2_spawn l4_f1
738 ai2_spawn l4_f2
739 ai2_spawn l4_f3
740 ai2_spawn l4_c66
741 ai2_kill l4_f1
742 ai2_kill l4_f2
743 ai2_kill l4_f3
744 ai2_kill l4_c66
745 }
746
747 #tv79 - after door 41
748 func void music_kidnap(void)
749 {
750 sleep 1
751 sound_music_start mus_om01 0.0
752 sound_music_volume mus_om01 0.75 3.0
753 #this music stopped in ta2_54 script
754 }
755
756 ##########
757 ### SP2 ###
758 ##########
759
760 ### GROUND FLOOR ###
761
762 #tv58 - after the end of the stairs
763 func void tv_58(string ai_name)
764 {
765 if(save_point eq 2) music_kidnap
766 else save_game 2 autosave
767 fork remove_ai
768 trigvolume_enable tv_58t 0
769 trigvolume_enable trigger_volume_80 0
770 door_lock 41
771 particle security_locklight01 do stop
772 objective_set 3 silent
773 target_set 60 30
774 var_counter = 0
775 }
776
777 #tv52 - in front of door 42
778 func void tv_52(string ai_name)
779 {
780 particle smoke do stop
781 ai2_spawn a_t03
782 ai2_passive a_t03 1
783 playback a_t03 atrium_run
784 sleep 7
785 ai2_spawn a_t06
786 sleep 7
787 ai2_spawn a_s02
788 sleep 7
789 ai2_spawn a_s03
790 sleep 7
791 ai2_spawn a_red1
792 ai2_passive a_t03 0
793 chr_set_health a_t05 900
794 chr_set_health a_t06 900
795 chr_set_health a_s02 900
796 chr_set_health a_s03 900
797 }
798
799 #tv72 - at the beginning of the stairs to the 2nd floor
800 func void room4_start(string ai_name)
801 {
802 particle room4 start
803 }
804
805 ### 2ND FLOOR ###
806
807 #tv53 - at the end of the stairs to the 2nd floor
808 func void ta_53(string ai_name)
809 {
810 ai2_spawn a_t05
811 ai2_dopath a_s03 patrol_7043
812 ai2_setjobstate a_s03
813 ai2_dopath a_s02 patrol_7030
814 ai2_setjobstate a_s02
815 ai2_dopath a_t06 patrol_7034
816 ai2_setjobstate a_t06
817 ai2_dopath a_t05 patrol_7042
818 ai2_setjobstate a_t05
819 chr_set_health a_t05 40
820 chr_set_health a_t06 30
821 chr_set_health a_s02 80
822 chr_set_health a_s03 80
823 }
824
825 ### 1ST FLOOR ###
826
827 #tv56 - at the end of the gangway from the 2nd floor to the 1st floor
828 func void ta_53b(string ai_name)
829 {
830 chr_set_health a_t05 80
831 chr_set_health a_t06 60
832 chr_set_health a_s02 70
833 chr_set_health a_s03 80
834 }
835
836 #tv75 - after the end of the gangway from the 2nd floor to the 1st floor
837 func void room6_start(string ai_name)
838 {
839 particle room6 do start
840 }
841
842 #tv83 - after the middle of the floor, in front of tv73
843 func void room4_stop(string ai_name)
844 {
845 particle room4 do stop
846 }
847
848 #tv73 - after tv83 (func: room3_stop, already used above)
849
850 ### 3RD FLOOR ###
851
852 #tv59 - after the end of the gangway from the 2nd floor to the 3rd floor
853 func void room5_stop(string ai_name)
854 {
855 particle room5 stop
856 }
857
858 #tv81 - in front of tv74
859 func void room5_start(string ai_name)
860 {
861 particle room5 start
862 }
863
864 #tv74 - in front of tv
865 func void room6_stop(string ai_name)
866 {
867 particle room6 stop
868 }
869
870 #tv82 - in front of the beginning of the gangway from the 3rd floor to the 4th floor (func: room4_stop, already used above)
871
872 ### 4TH FLOOR ###
873
874 #tv98 - after the end of the gangway from the 3rd floor to the 4th floor
875 func void new_atrium(string ai_name)
876 {
877 ai2_spawn a_s07
878 ai2_spawn a_s05
879 ai2_spawn a_v3
880 }
881
882 #tv77 - complete room, which contains the console8 (func: check_death); I've disabled it
883
884 ### 5TH FLOOR ###
885
886 #tv54 - after the end of the gangway from the 4th floor to the 5th floor
887 func void ta2_54(string ai_name)
888 {
889 ai2_spawn a2_t1
890 ai2_spawn a2_red1
891 ai2_spawn LSI
892 ai2_kill LSI
893 sleep 240
894 corpse_reset
895 music_stop
896 }
897
898 #tv103 - the complete room, where you get the laser torch
899 func void t103(string ai_name)
900 {
901 trigvolume_enable trigger_volume_103 0
902 if (chr_has_lsi(0))
903 {
904 trigvolume_enable trigger_volume_81 1
905 objective_set 4 silent
906 particle obj1 create
907 target_set 9999 30
908 }
909 else
910 {
911 sleep 60
912 trigvolume_enable trigger_volume_103 1
913 }
914 }
915
916 #tv80 - small flat box on the roof of the elevator
917 func void ta_62(string ai_name)
918 {
919 trigvolume_enable trigger_volume_81 0
920 particle obj1 kill
921 ai2_kill
922 fade_out 0 0 0 30
923 sleep 30
924 playback 0 ElevatorEndSet
925 fade_in 30
926 }
927
928 ##########
929 ### SP3 ###
930 ##########
931
932 ### GROUND FLOOR ###
933
934 #tv55 - after the elevator shaft
935 func void tsh_55(string ai_name)
936 {
937 if(save_point ne 3) save_game 3 autosave
938 trigvolume_enable tsh_55t 0
939 ai2_spawn sh_tank1
940 ai2_spawn sh_red1
941 ai2_spawn sh_s3
942 ai2_spawn sh_s4
943 ai2_spawn sh_s4b
944 objective_set 5 silent
945 target_set 58 30
946 env_show 501 0
947 env_show 502 0
948 env_show 503 0
949 env_show 504 0
950 env_show 601 1
951 env_show 602 1
952 sleep 120
953 ai2_attack sh_s3 char_0
954 }
955
956 #tv85 - at the same place as tv55 (func: s3; I've moved the save_game command to tv55, so this tv isn't any longer in use)
957
958 #console3
959 func void shin_lock(void)
960 {
961 particle shin_lock_locklight01 do start
962 particle roof_locklight01 do start
963 }
964
965 #tv104 - on the balustrade, near door 14
966 func void t102(string ai_name)
967 {
968 ai2_spawn mbo_sniper
969 ai2_spawn mbo_target
970 }
971
972 #tv76 - staircase, platform between ground floor and 1st floor
973 func void t62(string ai_name)
974 {
975 ai2_spawn sh_s1
976 ai2_spawn sh_s2
977 ai2_spawn sh_s6
978 }
979
980 ### 1ST FLOOR ###
981
982 #tv78 - staircase, platform between 1st floor and 2nd floor
983 func void t72(string ai_name)
984 {
985 ai2_spawn sh_com1
986 ai2_spawn sh_tank2
987 ai2_spawn sh_s9
988 }
989
990 ### 2ND FLOOR ###
991
992 #tv101 - after door 56
993 func void t98(string ai_name)
994 {
995 ai2_spawn a_v4
996 }
997
998 #tv60 - staircase, platform between 2nd floor and roof, in front of tv100
999 func void tsh_60(string ai_name)
1000 {
1001 ai2_spawn sh_s12
1002 ai2_spawn sh_s12b
1003 helicopter
1004 }
1005
1006 func void helicopter(void)
1007 {
1008 obj_create 901 906
1009 particle EndDust create
1010 }
1011
1012 #tv100 - after tv60
1013 func void t100(string ai_name)
1014 {
1015 ai2_spawn roof_tctf1
1016 ai2_spawn sh_s12c
1017 }
1018
1019 ##########
1020 ### SP4 ###
1021 ##########
1022
1023 #tv63, if you leave the building on the right side
1024 func void tr_65(string ai_name)
1025 {
1026 tr_67
1027 }
1028
1029 #tv62, if you leave the building on the left side
1030 func void tr_64(string ai_name)
1031 {
1032 tr_67
1033 }
1034
1035 #tv64 - after the window, which is behind the tctf cop
1036 func void tr_66(string ai_name)
1037 {
1038 tr_67
1039 }
1040
1041 #tv65 - after the other window on this side
1042 func void tr_67(string ai_name)
1043 {
1044 trigvolume_enable tsh_60t 0
1045 trigvolume_enable tr_64t 0
1046 trigvolume_enable tr_65t 0
1047 trigvolume_enable tr_66t 0
1048 trigvolume_enable tr_67t 0
1049 if(save_point eq 4) helicopter
1050 else save_game 4 autosave
1051 objective_set 5 silent
1052 target_set 1 0
1053 sleep 1
1054 sound_ambient_start c08_heli 1.0
1055 fork helicopter_sound_stop
1056 chr_create 1019 start
1057 chr_create 1020 start
1058 chr_create 1021 start
1059 chr_changeteam 1019 Syndicate
1060 chr_changeteam 1020 Syndicate
1061 chr_changeteam 1021 Syndicate
1062 chr_envanim 1019 HeliOutroShinBox01
1063 chr_envanim 1020 HeliOutroStrBox01
1064 chr_envanim 1021 HeliOutroStrBox02
1065 chr_animate 1019 SHINATstand_heli 1000
1066 chr_animate 1020 STRIKEstand_heli 1000
1067 chr_animate 1021 STRIKEcrouch_idle 1000
1068 env_anim 901 906
1069 particle EndDust kill
1070 ai2_spawn barabus
1071 chr_boss_shield barabus
1072 ai2_lookatchar barabus 0
1073 sound_music_start mus_asianb 0
1074 sound_music_volume mus_asianb 2
1075 sleep 600
1076 chr_delete 1019
1077 chr_delete 1020
1078 chr_delete 1021
1079 sleep 600
1080 obj_kill 901 906
1081 sound_ambient_stop c08_heli
1082 }
1083
1084 func void helicopter_sound_stop(void)
1085 {
1086 sleep 680
1087 sound_ambient_volume c08_heli 0.0 12
1088 }
1089
1090 #tv1 and tv84 - the side after the window, which is behind the tctf cop
1091 func void BarabasSouth(string barabas)
1092 {
1093 sound_ambient_start c11_10_14bar_jet
1094 playback barabus BarabasSouth
1095 ai2_barabbas_retrievegun barabus
1096 sleep 60
1097 chr_envanim barabus BarabasSouthBox norotation
1098 chr_animate barabus BARABsouth
1099 }
1100
1101 #tv4 - the next side, if you go anticlockwise
1102 func void BarabasEast(string barabas)
1103 {
1104 sound_ambient_start c11_10_14bar_jet
1105 playback barabus BarabasEast
1106 ai2_barabbas_retrievegun barabus
1107 sleep 60
1108 chr_envanim barabus BarabasEastBox norotation
1109 chr_animate barabus BARABeast
1110 }
1111
1112 #tv2 - the next side, if you go anticlockwise
1113 func void BarabasNorth(string barabas)
1114 {
1115 sound_ambient_start c11_10_14bar_jet
1116 playback barabus BarabasNorth
1117 ai2_barabbas_retrievegun barabus
1118 sleep 60
1119 chr_envanim barabus BarabasNorthBox norotation
1120 chr_animate barabus BARABnorth
1121 }
1122
1123 #tv3 - the next side, if you go anticlockwise
1124 func void BarabasWest(string barabas)
1125 {
1126 sound_ambient_start c11_10_14bar_jet
1127 playback barabus BarabasWest
1128 ai2_barabbas_retrievegun barabus
1129 sleep 60
1130 chr_envanim barabus BarabasWestBox norotation
1131 chr_animate barabus BARABwest
1132 }
1133
1134 #lose func of barabus
1135 func void final(void)
1136 {
1137 fade_out 0 0 0 30
1138 sleep 30
1139 win
1140 }
1141
1142 #####################
1143 ### TEXT CONSOLES ###
1144 #####################
1145
1146 func void level_8a(void)
1147 {
1148 text_console level_8a
1149 console_reset 17
1150 }
1151
1152 func void level_8b(void)
1153 {
1154 text_console level_8b
1155 console_reset 12
1156 }
1157
1158 func void level_8c(void)
1159 {
1160 text_console level_8c
1161 console_reset 14
1162 }
1163
1164 func void level_8d(void)
1165 {
1166 text_console level_8d
1167 console_reset 16
1168 }
1169
1170 func void level_8e(void)
1171 {
1172 text_console level_8e
1173 console_reset 15
1174 }
1175
1176 func void level_8f(void)
1177 {
1178 text_console level_8f
1179 console_reset 13
1180 }