ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/compound/compound.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 20307 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 var int var_counter3 = 0;
8
9 ############
10 ### MAIN ###
11 ############
12
13 func void main(void)
14 {
15 gl_fog_red = 0
16 gl_fog_blue = 0
17 gl_fog_green = 0
18 gl_fog_start = .995
19 gs_farclipplane_set 5000
20 ui_suppress_prompt = 1
21 chr_auto_aim_dist = 0
22 start
23 }
24
25 #############
26 ### START ###
27 #############
28
29 func void start(string ai_name)
30 {
31 fork deactivate_stuff
32 if(save_point eq 0) save_point = 1
33 if(save_point eq 1) fork intro
34 if(save_point eq 2) restore_game
35 if(save_point eq 3) fork load_s3
36 if(save_point eq 4) fork grif
37 sleep 5
38 fork sp_all
39 }
40
41 func void deactivate_stuff(void)
42 {
43 #not used
44 trigvolume_enable trigger_volume_01 0
45 trigvolume_enable trigger_volume_01_copy 0
46 trigvolume_enable trigger_volume_01_copy2 0
47 trigvolume_enable trigger_volume_04 0
48 trigvolume_enable trigger_volume_04_copy 0
49 trigvolume_enable trigger_volume_04_copy_copy 0
50 trigvolume_enable trigger_volume_04_copy2 0
51 trigvolume_enable trigger_volume_09 0
52 trigvolume_enable trigger_volume_11 0
53 trigvolume_enable trigger_volume_15 0
54 trigvolume_enable trigger_volume_25 0
55 trigvolume_enable trigger_volume_26 0
56 trigvolume_enable trigger_volume_27 0
57 trigvolume_enable trigger_volume_44 0
58 trigvolume_enable trigger_volume_45 0
59 trigvolume_enable attack_1tv 0
60 door_lock 35
61 door_lock 36
62 door_lock 37
63 door_lock 39
64 door_lock 40
65 door_lock 41
66 #used
67 trigvolume_enable trigger_volume_10 0
68 trigvolume_enable trigger_volume_12 0
69 trigvolume_enable trigger_volume_21 0
70 trigvolume_enable trigger_volume_21_copy 0
71 trigvolume_enable trigger_volume_31 0
72 trigvolume_enable trigger_volume_33 0
73 trigvolume_enable attack_2tv 0
74 trigvolume_enable attack_3tv 0
75 trigvolume_enable attack_3tv_copy 0
76 trigvolume_enable attack_4tv 0
77 env_shade 912 913 .4 .4 .4
78 env_show 911 0
79 env_show 914 0
80 env_show 915 0
81 env_show 916 0
82 env_show 151 0
83 env_show 152 0
84 env_show 153 0
85 env_show 154 0
86 env_show 155 0
87 env_show 156 0
88 env_show 157 0
89 env_show 158 0
90 env_show 159 0
91 env_show 251 0
92 env_show 252 0
93 env_show 253 0
94 env_show 254 0
95 env_show 255 0
96 env_show 256 0
97 env_show 257 0
98 env_show 258 0
99 env_show 259 0
100 }
101
102 func void you_lose(string ai_name)
103 {
104 fade_out 0 0 0 30
105 sleep 30
106 lose
107 }
108
109 ####################################
110 ### SEVERAL TIMES USED FUNCTIONS ###
111 ####################################
112
113 func void sp_all(void)
114 {
115 co_message_display = 0
116 if(save_point eq 1) save_game 1 autosave
117 if(save_point eq 2) save_game 2 autosave
118 if(save_point eq 3) save_game 3 autosave
119 if(save_point eq 4) save_game 4 autosave
120 sleep 180
121 co_message_display = 1
122 }
123
124 func void remove_ai(void)
125 {
126 ai2_kill
127 sleep 60
128 weapon_reset
129 powerup_reset
130 sleep 240
131 corpse_reset
132 }
133
134 func void music_stop(void)
135 {
136 sound_music_stop mus_om01
137 sound_music_stop mus_main03_hd
138 sound_music_stop mus_asianb
139 }
140
141 #tv38 and tv40
142 func void deathfall(void)
143 {
144 cm_detach
145 sleep 30
146 chr_set_health 0 0
147 }
148
149 ##########
150 ### SP1 ###
151 ##########
152
153 func void intro(void)
154 {
155 particle snow1 do start
156 particle snow2 do start
157 particle snow3 do start
158 playback 0 IntroKonokoSet
159 chr_set_health 0 400
160 ai2_spawn A_S1
161 ai2_spawn A_S2
162 ai2_spawn A_E3
163 ai2_spawn A_E5
164 ai2_spawn A_E5b
165 ai2_dopath A_S1 patrol_01b
166 ai2_setjobstate A_S1
167 objective_set 1 silent
168 sleep 1
169 sound_music_start mus_om01 .9
170 }
171
172 #tv1 - from an imaginary line (from the end of the rigt fence to the left fence) to the fence behind you
173 # (enter func: snow1_start, leave func: snow1_stop); I've disabled it
174 #tv3 - after tv1, ends in front of door 2 (enter func: snow2_start, leave func: snow2_stop); I've disabled it
175 #tv2 - huge box right on tv3 (enter func: snow3_start, leave func: snow3_stop); I've disabled it
176
177 #tv39 - in front of the imaginary line of tv1
178 func void t38(string ai_name)
179 {
180 ai2_spawn A_E4
181 ai2_spawn A_Sb63
182 ai2_spawn A_E6
183 ai2_spawn A_Sb7
184 ai2_spawn new_2
185 }
186
187 #tv6 - in front of the truck entrance door with the blue lights (func: peak_start); I've disabled it
188 #tv4 - after the truck entrance door with the blue lights (func: peak_stop); I've disabled it
189 #tv5 - in front of the truck entrance door with the red lights (func: peak_start); I've disabled it
190 #tv7 - after the truck entrance door with the red lights (func: peak_stop); I've disabled it
191
192 #tv31 - after door 2
193 func void set_objective_2(string ai_name)
194 {
195 ai2_spawn B_Sr9
196 ai2_spawn B_Eb11
197 ai2_spawn B_Eb16
198 ai2_spawn B_Esb15
199 particle door12_locklight01 do start
200 objective_set 2 silent
201 target_set 558 30
202 music_stop
203 }
204
205 #hit func of A_Sb7
206 func void run1(string ai_name)
207 {
208 ai2_doalarm A_Sb7 1
209 ai2_dopath A_Sb7 patrol_00
210 }
211
212 func void patrolscript0054(string ai_name)
213 {
214 ai2_doalarm A_Sb7 1
215 }
216
217 #console1
218 func void run1_alarm(string ai_name)
219 {
220 fork do_alarm_sound
221 ai2_dopath A_E3 patrol_49
222 ai2_dopath A_E4 patrol_49
223 ai2_dopath A_E5 patrol_49
224 ai2_dopath A_E6 patrol_49
225 ai2_spawn B_Sr9
226 sleep 7
227 ai2_dopath B_Sr9 patrol_10
228 ai2_spawn B_Eb11
229 sleep 60
230 ai2_dopath B_Eb11 patrol_10
231 }
232
233 func void do_alarm_sound(void)
234 {
235 sound_ambient_start alarm_loop
236 sleep 900
237 sound_ambient_stop alarm_loop
238 }
239
240 func void patrolscript0080(string ai_name)
241 {
242 ai2_tripalarm 1 char_0
243 }
244
245 #tv9 - in front of console6, from the left wall trough the room to the right wall (func: t9); I've disabled it)
246
247 ##########
248 ### SP2 ###
249 ##########
250
251 #tv37 - after door 12
252 func void s2(string ai_name)
253 {
254 if(save_point eq 2)
255 {
256 objective_set 2 silent
257 target_set 558 30
258 }
259 else
260 {
261 fork remove_ai
262 save_game 2 autosave
263 particle snow1 do stop
264 particle snow2 do stop
265 particle snow3 do stop
266 }
267 ai2_spawn C_Sr17
268 ai2_spawn C_Sr18
269 ai2_spawn C_Sr19
270 ai2_spawn C_Sb75
271 ai2_spawn C_Sb76
272 ai2_spawn C_Sb78
273 ai2_dopath C_Sr17 patrol_17
274 ai2_setjobstate C_Sr17
275 ai2_dopath C_Sr18 patrol_18
276 ai2_setjobstate C_Sr18
277 }
278
279 #tv9 - after the left passageway
280 #tv27 - after door 13
281 func void t8(string ai_name)
282 {
283 particle door12_locklight01 do stop
284 door_lock 12
285 ai2_spawn C_Tb20
286 ai2_spawn C_Eb29
287 ai2_spawn C_Eb30
288 ai2_spawn C_Eb21
289 ai2_spawn C_Eb22
290 ai2_spawn C_N23
291 ai2_spawn C_N24
292 }
293
294 ### POSSIBILITY 1 - YOU FALL DOWN ###
295
296 #console4
297 func void unlock_stairs2(string ai_name)
298 {
299 unlock_stairs_both
300 ai2_spawn C_b74
301 ai2_spawn C_Eb73
302 chr_teleport C_b74 224
303 chr_teleport C_Eb73 237
304 ai2_dopath C_b74 patrol_80
305 ai2_dopath C_Eb73 patrol_80
306 }
307
308 func void unlock_stairs_both(string ai_name)
309 {
310 music_stop
311 particle stair_locklight01 do start
312 door_unlock 10
313 door_unlock 15
314 door_unlock 16
315 door_unlock 17
316 ai2_spawn S_Tr41
317 trigvolume_enable trigger_volume_10 1
318 trigvolume_enable trigger_volume_12 1
319 console_deactivate 3
320 console_deactivate 4
321 }
322
323 #tv26 - between door 16 and door 17, in the middle of the staircase (func: t27); I've disabled it
324
325 #tv11 - on the left side after door 17
326 func void t12(string ai_name)
327 {
328 t10
329 }
330
331 #tv24 - the complete way from after door 18 to the room with door 14 (no func); I've disabled it
332
333 ### POSSIBILITY 2 - YOU DON'T FALL DOWN ###
334
335 #tv23 - the complete way from after door 19 to the room with door 13 (no func); I've disabled it
336
337 #console5
338 func void unlock44(string ai_name)
339 {
340 ai2_spawn C_Er79
341 door_unlock 44
342 particle d1_locklight01 do start
343 sound_music_start mus_main03_hd
344 target_set 559 30
345 }
346
347 #console3
348 func void unlock_stairs(string ai_name)
349 {
350 unlock_stairs_both
351 target_set 1 0
352 }
353
354 #tv25 - after door 15
355 func void t11(string ai_name)
356 {
357 ai2_dopath C_Sb25 patrol_48
358 sleep 60
359 ai2_dopath C_Sb26 patrol_48
360 sleep 60
361 ai2_dopath C_Eb27 patrol_48
362 }
363
364 #t10 - on the right side after door 44
365 func void t10(string ai_name)
366 {
367 trigvolume_enable trigger_volume_10 0
368 trigvolume_enable trigger_volume_12 0
369 obj_create 51 59
370 env_anim 51 59
371 sleep 10
372 sound_ambient_start c05_26_17_trucka
373 sleep 270
374 env_setanim 51 truckbackstop
375 env_setanim 52 truckcabstop
376 env_setanim 53 truckdoorstop
377 env_setanim 54 truckdoor2stop
378 env_setanim 55 truckwheel03stop
379 env_setanim 56 truckwheel04stop
380 env_setanim 57 truckwheel05stop
381 env_setanim 58 truckwheel06stop
382 env_setanim 59 truckwheel07stop
383 ai2_spawn ParkStriker
384 chr_lock_active ParkStriker
385 chr_envanim ParkStriker ParkStrikeBox01 norotation
386 sleep 40
387 sound_ambient_start c05_31_21_brake_doorsa
388 sleep 60
389 chr_animate ParkStriker STRIKElev7_Park
390 ai2_spawn C_Sb25
391 ai2_spawn C_Sb26
392 ai2_spawn C_Eb27
393 playback C_Sb25 truckers
394 sleep 40
395 playback C_Sb26 truckers
396 sleep 30
397 playback C_Eb27 truckers
398 sleep 60
399 obj_kill 51 59
400 env_show 151 1
401 env_show 152 1
402 env_show 153 1
403 env_show 154 1
404 env_show 155 1
405 env_show 156 1
406 env_show 157 1
407 env_show 158 1
408 env_show 159 1
409 sound_music_start mus_asianb
410 particle obj1 create
411 target_set 511 30
412 objective_set 3 silent
413 sleep 480
414 ai2_dopath C_Sb25 patrol_48
415 sleep 60
416 ai2_dopath C_Sb26 patrol_48
417 sleep 60
418 ai2_dopath C_Eb27 patrol_48
419 }
420
421 #tv28 - the complete ground floor; used to count the enemies inside; see next func
422
423 #tv22 - in front of the driver's door of the truck
424 func void runTruck(string ai_name)
425 {
426 trigvolume_enable trigger_volume_23 0
427 if(chr_has_lsi(0) and trigvolume_count(29) eq 0)
428 {
429 music_stop
430 fade_out 0 0 0 30
431 sleep 30
432 fork remove_ai
433 particle obj1 kill
434 load_s3
435 playback 0 TruckExitKonoko
436 fade_in 30
437 if(save_point ne 3) save_game 3 autosave
438 }
439 else
440 {
441 sleep 60
442 trigvolume_enable trigger_volume_23 1
443 }
444 }
445
446 ##########
447 ### SP3 ###
448 ##########
449
450 func void load_s3(void)
451 {
452 if(save_point eq 3) restore_game
453 env_show 251 1
454 env_show 252 1
455 env_show 253 1
456 env_show 254 1
457 env_show 255 1
458 env_show 256 1
459 env_show 257 1
460 env_show 258 1
461 env_show 259 1
462 env_show 911 1
463 env_show 912 0
464 env_show 913 0
465 env_show 914 1
466 env_show 915 1
467 env_show 916 1
468 ai2_spawn D_R33
469 objective_set 4 silent
470 target_set 501 30
471 }
472
473 #tv12 - at the beginning of the stairs, which are in front of door 24
474 func void t13(string ai_name)
475 {
476 ai2_spawn E_Er34
477 sleep 60
478 door_unlock 24
479 particle purple_locklight01 do start
480 ai2_dopath E_Er34 patrol_34
481 ai2_setjobstate E_Er34
482 ai2_spawn E_Eb35
483 }
484
485 #tv15 - after door 24
486 func void t16(string ai_name)
487 {
488 ai2_spawn E_Nr36
489 ai2_spawn E_Nb37
490 ai2_spawn E_Nb38
491 ai2_spawn E_Nr39
492 door_unlock 22
493 particle purple3_locklight01 do start
494 target_set 1 0
495 }
496
497 ### 2ND FLOOR ###
498
499 #tv13 - in front of door 33
500 func void t14(string ai_name)
501 {
502 ai2_spawn E_N35
503 ai2_spawn E_Tr40
504 }
505
506 #tv14 - in front of door 30 (func: t15); I've disabled it
507 #tv44 - in front of door 25 (func: t45); I've disabled it
508 #tv45 - in front of door 27 (func: t45); I've disabled it
509
510 #console200 - room with door 30 (right side)
511 func void purple2_unlock(string ai_name)
512 {
513 particle purple2_locklight01 do start
514 door_unlock 20
515 door_unlock 21
516 door_unlock 22
517 door_unlock 23
518 door_unlock 24
519 door_unlock 25
520 door_unlock 26
521 door_unlock 27
522 door_unlock 28
523 trigvolume_enable trigger_volume_21 1
524 trigvolume_enable trigger_volume_21_copy 1
525 console_deactivate 100
526 console_deactivate 200
527 if(var_counter ne 10) target_set 556 30
528 }
529
530 #tv20 - after door 25
531 func void t21(string ai_name)
532 {
533 t22
534 }
535
536 #tv21 - after door 27
537 func void t22(string ai_name)
538 {
539 trigvolume_enable trigger_volume_21 0
540 trigvolume_enable trigger_volume_21_copy 0
541 sound_music_start mus_main03_hd
542 particle mainchamber_locklight01 do start
543 door_unlock 18
544 door_unlock 19
545 ai2_spawn D_R31
546 ai2_spawn D_R32
547 ai2_spawn D_E83
548 door_open 18
549 door_open 19
550 sleep 180
551 door_close 18
552 door_close 19
553 door_lock 18
554 door_lock 19
555 particle mainchamber_locklight01 do stop
556 sleep 420
557 music_stop
558 }
559
560 ### 3RD FLOOR ###
561
562 #tv18 - in front of door 34
563 func void t19(string ai_name)
564 {
565 ai2_spawn E_Er45
566 ai2_spawn E_N43
567 }
568
569 #tv16 - in front of door 31
570 func void t17(string ai_name)
571 {
572 ai2_spawn E_Nr46
573 }
574
575 ### 1ST FLOOR ###
576
577 #tv19 - in front of door 32
578 func void t20(string ai_name)
579 {
580 ai2_spawn E_N44
581 }
582
583 #tv17 - in front of door 29
584 func void t18(string ai_name)
585 {
586 ai2_spawn E_R46
587 }
588
589 #console100 - room with door 29 (right side)
590 func void purple2_unlock_b(string ai_name)
591 {
592 purple2_unlock
593 if(var_counter ne 1 or var_counter ne 11 or var_counter ne 101) target_set 555 30
594 trigvolume_enable trigger_volume_21 0
595 trigvolume_enable trigger_volume_21_copy 0
596 }
597
598 ### TEXT CONSOLES ###
599
600 #console301 - 3rd floor - room with door 34 (left side)
601 func void console301(string ai_name)
602 {
603 console300
604 }
605
606 #console300 - 3rd floor - room with door 31 (right side)
607 func void console300(string ai_name)
608 {
609 var_counter = var_counter + 1
610 if(var_counter eq 1 or var_counter eq 101) target_set 556 30
611 if(var_counter eq 11) target_set 555 30
612 if(var_counter eq 111) target_set 547 30
613 console_deactivate 300
614 console_deactivate 301
615 ConsoleText
616 }
617
618 #console201 - 2nd floor - room with door 33 (left side)
619 func void console200(string ai_name)
620 {
621 var_counter = var_counter + 10
622 if(var_counter eq 10 or var_counter eq 110) target_set 557 30
623 if(var_counter eq 11) target_set 555 30
624 if(var_counter eq 111) target_set 547 30
625 ConsoleText
626 }
627
628 #console101 - 1st floor - room with door 32 (left side)
629 func void console101(string ai_name)
630 {
631 var_counter = var_counter + 100
632 if(var_counter eq 100 or var_counter eq 101) target_set 556 30
633 if(var_counter eq 110) target_set 557 30
634 if(var_counter eq 111)
635 target_set 547 30
636 ConsoleText
637 }
638
639 func void ConsoleText(void)
640 {
641 if(var_counter eq 1 or var_counter eq 10 or var_counter eq 100)
642 {
643 text_console level_19a
644 sound_dialog_play c15_57_01konoko
645 }
646 if(var_counter eq 11 or var_counter eq 101 or var_counter eq 110)
647 {
648 text_console level_19b
649 sound_dialog_play c15_57_02konoko
650 }
651 if(var_counter eq 111)
652 {
653 text_console level_19c
654 sound_dialog_play c15_57_03konoko
655 trigvolume_enable attack_1tv 1
656 trigvolume_enable attack_2tv 1
657 trigvolume_enable attack_3tv 1
658 trigvolume_enable attack_3tv_copy 1
659 trigvolume_enable attack_4tv 1
660 objective_set 5 silent
661 sleep 60
662 sound_music_start mus_main03_hd
663 var_counter = 0
664 }
665 }
666
667 ### ALL CONSOLES ACTIVATED ###
668
669 #tv37 - 3rd floor - after door 34 (left side)
670 func void attack_4(string ai_name)
671 {
672 attack_3
673 }
674
675 #tv34 - floor 3 - after door 31 (right side)
676 func void attack_2(string ai_name)
677 {
678 attack_3
679 }
680
681 #tv33 - 1st floor - after door 29 (right side) (func: attack_1); I've disabled it
682
683 #tv46 - 2nd floor - after door 34 (left side)
684 #tv35 - 1st floor - after door 32 (left side)
685 func void attack_3(string ai_name)
686 {
687 trigvolume_enable attack_2tv 0
688 trigvolume_enable attack_3tv 0
689 trigvolume_enable attack_3tv_copy 0
690 trigvolume_enable attack_4tv 0
691 particle F_locklight01 do start
692 door_unlock 43
693 ai2_spawn F_Eb43
694 ai2_spawn F_Eb44
695 ai2_spawn F_Eb47
696 ai2_dopath F_Eb43 patrol_43
697 ai2_setjobstate F_Eb43
698 sleep 30
699 ai2_dopath F_Eb44 patrol_44
700 ai2_setjobstate F_Eb44
701 sleep 30
702 ai2_dopath F_Eb47 patrol_47
703 ai2_setjobstate F_Eb47
704 music_stop
705 ai2_dopath F_Eb43 patrol_43b
706 ai2_setjobstate F_Eb43
707 ai2_dopath F_Eb44 patrol_44b
708 ai2_setjobstate F_Eb44
709 ai2_dopath F_Eb47 patrol_47b
710 ai2_setjobstate F_Eb47
711 trigvolume_enable trigger_volume_33 1
712 }
713
714 #tv32 - in front of door 43
715 func void t33(string ai_name)
716 {
717 sound_dialog_play c15_57_04konoko
718 ai2_spawn F_Er86
719 ai2_spawn F_Nr87
720 target_set 258 30
721 }
722
723 #tv41 - in front of the 1st staircase
724 func void t41(string ai_name)
725 {
726 ai2_spawn F_Er59
727 }
728
729 #tv42 - after the 1st staircase
730 func void t42(string ai_name)
731 {
732 ai2_spawn F_Nr60
733 }
734
735 #tv43 - in front of the 2nd staircase
736 func void t43(string ai_name)
737 {
738 ai2_spawn F_R61
739 ai2_spawn F_Er88
740 ai2_spawn F_C62
741 ai2_makeignoreplayer F_C62 1
742 }
743
744 #tv29 - at the mezzanine of the 3rd staircase
745 func void t30(string ai_name)
746 {
747 ai2_makeignoreplayer F_C62 0
748 ai2_spawn F_Er89
749 }
750
751 #hit func of F_C62
752 func void comalarm(string ai_name)
753 {
754 ai2_tripalarm 2 char_0
755 }
756
757 #console2
758 func void fconsole_ok(string ai_name)
759 {
760 text_console level_19d
761 particle green create
762 particle green2 create
763 particle green3 create
764 trigvolume_enable trigger_volume_31 1
765 objective_set 6 silent
766 target_set 502 30
767 }
768
769 #tv30 - complete dish platform
770 func void t31(string ai_name)
771 {
772 target_set 1 0
773 fade_out 0 0 0 30
774 sleep 30
775 fork remove_ai
776 particle green kill
777 particle green2 kill
778 particle green3 kill
779 playback 0 GrifKonokoSet
780 grif
781 fade_in 30
782 if(save_point ne 4) save_game 4 autosave
783 }
784
785 ##########
786 ### SP4 ###
787 ##########
788
789 func void grif(void)
790 {
791 if(save_point eq 4) restore_game
792 env_show 301 0
793 env_show 302 0
794 env_show 303 0
795 env_show 304 0
796 env_show 305 0
797 env_show 306 0
798 env_show 307 0
799 env_show 308 0
800 env_show 309 0
801 env_show 401 1
802 env_show 402 1
803 env_show 403 1
804 env_show 404 1
805 env_show 405 1
806 env_show 406 1
807 env_show 407 1
808 env_show 408 1
809 env_show 409 1
810 ai2_spawn Muro
811 chr_boss_shield Muro
812 chr_set_health Muro 500
813 ai2_spawn GrifElite01
814 ai2_spawn GrifElite02
815 ai2_spawn GrifElite03
816 ai2_dopath GrifElite01 patrol_513
817 ai2_dopath GrifElite02 patrol_514
818 ai2_dopath GrifElite03 patrol_518
819 if(did_kill_griffen() eq 0)
820 {
821 ai2_boss_battle = 1
822 ai2_spawn Griffin
823 ai2_spawn GrifOps01
824 ai2_spawn GrifOps02
825 ai2_spawn GrifOps03
826 ai2_dopath GrifOps01 patrol_521
827 ai2_dopath GrifOps02 patrol_515
828 ai2_dopath GrifOps03 patrol_517
829 sleep 1
830 fork wait_to_help
831 }
832 if(did_kill_griffen() eq 1)
833 {
834 ai2_boss_battle = 0
835 sleep 1
836 fork heli
837 }
838 particle dishpulse do start
839 particle sturm_ambient do start
840 sound_ambient_start mc_dish_loop 0.6
841 sound_music_start mus_ot
842 objective_set 6 silent
843 }
844
845 func void heli(void)
846 {
847 sound_ambient_start c07_17_19heli
848 sleep 480
849 obj_create 901 906
850 env_anim 901 906
851 ai2_spawn GrifOps01
852 ai2_spawn GrifOps02
853 ai2_spawn GrifOps03
854 chr_envanim GrifOps01 GrifOps01Box01
855 chr_envanim GrifOps02 GrifOps02Box01
856 chr_envanim GrifOps03 GrifOps03Box01
857 chr_animate GrifOps01 STRIKEcrouch_idle 400
858 chr_animate GrifOps02 STRIKEcrouch_idle 400
859 chr_animate GrifOps03 STRIKEcrouch_idle 400
860 sleep 290
861 env_setanim 901 heli_doors_rt08
862 env_setanim 902 heli_doors_lt08
863 env_setanim 903 heli_rotorblades08
864 env_setanim 904 heli_body08
865 env_setanim 905 heli_canopy08
866 env_setanim 906 heli_interior08
867 chr_envanim GrifOps01 GrifOps01Box02 norotation
868 chr_envanim GrifOps02 GrifOps02Box02 norotation
869 chr_envanim GrifOps03 GrifOps03Box02 norotation
870 chr_animate GrifOps01 STRIKElev7_Ops01
871 chr_animate GrifOps02 STRIKElev7_Ops02
872 chr_animate GrifOps03 STRIKElev7_Ops03
873 chr_changeteam GrifOps01 Syndicate
874 chr_changeteam GrifOps02 Syndicate
875 chr_changeteam GrifOps03 Syndicate
876 ai2_attack GrifOps01 char_0
877 ai2_attack GrifOps02 char_0
878 ai2_attack GrifOps03 char_0
879 sleep 600
880 obj_kill 901 906
881 }
882
883 func void wait_to_help(void)
884 {
885 chr_wait_health Muro 200
886 ai2_boss_battle = 0
887 var_counter3 = 1
888 attack_konoko
889 }
890
891 #lose func of GrifOps01, GrifOps02, GrifOps03 and Griffin
892 func void swat_dies(void)
893 {
894 var_counter = var_counter + 1
895 if(var_counter eq 4) attack_konoko
896 }
897
898 func void attack_konoko(void)
899 {
900 ai2_attack GrifElite01 char_0
901 ai2_attack GrifElite02 char_0
902 ai2_attack GrifElite03 char_0
903 ai2_attack GrifElite04 char_0
904 ai2_attack GrifElite05 char_0
905 ai2_attack GrifElite06 char_0
906 }
907
908 #lose func of GrifElite03
909 func void check_death1a(string ai_name)
910 {
911 ai2_spawn GrifElite04
912 ai2_passive GrifElite04 1
913 playback_block GrifElite04 GrifWave2_Run1
914 ai2_passive GrifElite04 0
915 if(var_counter3 eq 1) ai2_attack GrifElite04 char_0
916 if(var_counter3 eq 0) ai2_makeaware GrifElite04 char_0
917 }
918
919 #lose func of GrifElite02
920 func void check_death1b(string ai_name)
921 {
922 ai2_spawn GrifElite05
923 ai2_passive GrifElite05 1
924 playback_block GrifElite05 GrifWave2_Run1
925 ai2_passive GrifElite05 0
926 if (var_counter3 eq 1) ai2_attack GrifElite05 char_0
927 if (var_counter3 eq 0) ai2_makeaware GrifElite05 char_0
928 }
929
930 #lose func of GrifElite04 and GrifElite05
931 func void final_round(string ai_name)
932 {
933 var_counter2 = var_counter2 + 1
934 if(var_counter2 eq 1)
935 {
936 ai2_spawn GrifElite06
937 ai2_passive GrifElite06 1
938 playback_block GrifElite06 GrifWave2_Run3
939 ai2_passive GrifElite06 0
940 if(var_counter3 eq 1) ai2_attack GrifElite06 char_0
941 if(var_counter3 eq 0) ai2_makeaware GrifElite06 char_0
942 }
943 }
944
945 #lose func of Muro
946 func void check_death2(string ai_name)
947 {
948 fade_out 0 0 0 30
949 sleep 30
950 win
951 }
952
953 #####################
954 ### TEXT CONSOLES ###
955 #####################
956
957 func void console_truckinfo(void)
958 {
959 text_console level_19e
960 console_reset 6
961 }