source: nikanabo/current/bsl/original/IGMD/roof/roof.bsl @ 185

Last change on this file since 185 was 185, checked in by geyser, 14 years ago
File size: 16.0 KB
Line 
1#       rooftop
2#       scripts for level 12 by wu
3#       
4#       LEGEND
5#
6#       character naming convention: X_Yx
7#       where X = area letter (A=first area, B=second area, etc.)
8#             Y = character type (N=ninja, T=tanker, S=striker, R=red, etc.)
9#               x = character number, usually same as character's initial patrol id
10#
11#       trigger volume scripts: t##, where ## refers to trigger volume id
12#       
13#       CONTENTS
14#       
15#       1.variables defined
16#       1b.music scripts
17#       2.start and objectives scripts
18#       3.save game scripts
19#       4.cut scene scripts
20#       5.console scripts
21#       6.trigger volume scripts
22
23###############################
24#       variables defined       #
25###############################
26
27var int my_save_point=0;
28var int ninja1=0;
29var int ninja2=0;
30var int strike1=0;
31var int strike1b=0;
32var int strike2=0;
33var int strike3=0;
34#var int elv1_check=0;
35var int invading_counter=3;
36var int done_with_intro_cutscene = 0;
37var int go_hide;
38var int go_hide2;
39
40###############################
41#               music                   #
42###############################
43
44func void music_first(void)
45{
46        sound_music_start mus_cool19 0.0
47        sound_music_volume mus_cool19 0.75 3.0
48#       stopped at tanker death or timer
49}
50
51func void music_first_timer(void)
52{
53        sleep 1800
54        music_stop
55}
56
57func void music_gauntlet(void)
58{
59        sound_music_start mus_atm_cl12lp 0.0
60        sound_music_volume mus_atm_cl12lp 0.75 3.0
61#       this music stopped in t14
62}
63
64func void music_billboard(void)
65{
66        sound_music_start mus_low1 0.0
67        sound_music_start mus_low1 0.75 3
68#       this music stopped in ta2_54 script
69}
70
71func void music_battle(void)
72{
73        sound_music_start mus_fitec
74#       this music stopped in outro
75}
76
77func void music_stop(void)
78{
79        dprint STOP_THE_MUSIC
80        sound_music_stop mus_cool19
81        sound_music_stop mus_atm_cl12lp
82        sound_music_stop mus_low1
83        sound_music_stop mus_fitec
84}
85
86###############################
87#       start and objectives    #
88###############################
89func void start(string ai_name)
90{
91        dprint start   
92       
93        particle el1_locklight01 do start
94        door_lock 6
95
96        my_save_point = save_point;
97
98        if (my_save_point eq 0)
99        {
100                set_objective_1
101                powerup_spawn lsi 605
102        }
103
104        if (my_save_point eq 1)
105        {
106                dprint restore1
107                set_objective_1
108                done_with_intro_cutscene = 1;
109                fork intro_taunt
110                restore_game
111                powerup_spawn lsi 605
112        }
113
114        if (my_save_point eq 2)
115        {
116                done_with_intro_cutscene = 1;
117                dprint restore2
118                set_objective_1
119                chr_delete A_Sr9
120                chr_delete A_N1
121                chr_delete IntroNinja
122                ai2_spawn C_T16
123                ai2_spawn C_Sr15
124                ai2_spawn C_R55
125                ai2_spawn C_N57
126                trigvolume_enable trigger_volume_13 0
127                door_lock 3
128                restore_game
129                powerup_spawn lsi 605
130        }
131
132        if (my_save_point eq 3)
133        {
134                done_with_intro_cutscene = 1;
135                dprint restore3
136                set_objective_3
137                chr_delete A_Sr9
138                chr_delete A_N1
139                chr_delete IntroNinja
140                trigvolume_enable trigger_volume_79 0
141                restore_game
142        }
143
144        if (my_save_point eq 4)
145        {
146                done_with_intro_cutscene = 1;
147                dprint restore4
148                chr_delete A_Sr9
149                chr_delete A_N1
150                chr_delete IntroNinja
151                trigvolume_enable trigger_volume_28 0
152                ai2_spawn OutroNinja
153                chr_boss_shield OutroNinja
154                music_battle
155                gs_farclipplane_set 500
156                door_lock 2
157                restore_game
158        }
159}
160
161func void you_lose(string ai_name)
162{
163        sleep 240
164        fade_out 0 0 0 180
165        sleep 240
166        lose
167}
168
169func void you_win(int char_index)
170{
171        outro
172        win
173}
174
175func void set_objective_1(string ai_name)
176{
177        dprint set_objective_1
178        objective_set(1)
179        target_set (7006,0.0)
180}
181
182func void set_objective_2(string ai_name)
183{
184        dprint set_objective_2
185        objective_set(2)
186        target_set (7006,0.0)
187}
188
189func void set_objective_3(string ai_name)
190{
191        dprint set_objective_3
192        objective_set(3)
193        target_set (7006,0.0)
194}
195
196###################
197#       save game       #
198###################
199
200func void s1(string ai_name)
201{
202        dprint SAVEDGAME1       
203
204        if (my_save_point ne 1)
205        {
206                save_game 1 autosave
207        }
208}
209
210func void s2(string ai_name)
211{
212        dprint SAVEDGAME2       
213
214        if (my_save_point ne 2)
215        {
216                save_game 2 autosave
217        }
218}
219
220func void s3(string ai_name)
221{
222        dprint SAVEDGAME3       
223
224        if (my_save_point ne 3)
225        {
226                save_game 3 autosave
227        }
228}
229
230func void s4(string ai_name)
231{
232        dprint SAVEDGAME4       
233
234        if (my_save_point ne 4)
235        {
236                save_game 4 autosave
237        }
238}
239
240##########################
241#       cut scene scripts  #
242##########################
243
244func void t12(string ai_name)
245{
246        dprint t12_elevator
247        if (trigvolume_count(62) eq 0)
248        {
249                trigvolume_enable trigger_volume_12 0
250                sleep 7
251                trigvolume_corpse 62
252                dprint delete_oldAI
253                chr_delete B_R11
254                chr_delete B_R12a
255                chr_delete B_Sr10
256                chr_delete B_Sr10a
257                chr_delete B_T13
258                chr_delete B_Sr12
259                chr_delete B_N17
260                chr_delete B_N18       
261                chr_delete A_N8
262                chr_delete A_T4
263                chr_delete A_Sr3
264                chr_delete C_N17
265                chr_delete C_N18
266                Elevator
267                target_set(47,0.0)
268                ai2_spawn C_Sr15
269                ai2_spawn C_T16
270                ai2_spawn C_R55
271                ai2_spawn C_N57
272        }
273}
274
275func void t17(string ai_name)
276{
277        dprint t17_KonokoZip
278        if (chr_has_lsi(0))
279        {
280                KonokoZip
281                chr_delete D_C19
282                chr_delete D_C60
283                chr_delete D_N25
284                chr_delete D_R21
285                chr_delete D_Sb20
286                chr_delete D_Sb22
287                chr_delete D_Sb23
288                chr_delete D_Sr24
289                chr_delete D_Sr26
290                chr_delete D_Sr27
291                chr_delete D_Sr38
292                chr_delete D_T28
293                set_objective_3
294        }
295}
296
297func void t27(string ai_name)
298{
299        dprint t27_ElevatorFinalFight
300        ai2_spawn SuperNinja
301#       Elevator cut scene
302#       I'm backing him into a corner.  This isn't going to be pretty..."
303
304        chr_teleport 0 96
305
306}
307
308
309###################
310#       console #
311###################
312
313#########################
314#  trigger volume stuff #
315#########################
316
317func void t28(string ai_name)
318{
319        chr_wait_animtype char_0 Pickup_Object
320        particle obj_zip create
321}
322
323func void runup(void)
324{
325        ai2_dopath B_Sr10 patrol_10z
326        ai2_setjobstate B_Sr10
327}
328
329func void t1(string ai_name)
330{
331        dprint t1
332        ai2_dopath A_N1 patrol_02
333        ai2_setjobstate A_N1
334        ai2_dopath IntroNinja patrol_40
335        ai2_setjobstate IntroNinja
336        if (strike1b eq 1)
337        {       
338                dprint strike1b
339                ai2_dopath A_Sr9 patrol_09
340                ai2_setjobstate A_Sr9
341        }
342        sleep 300
343        if (ninja1 ne 0)
344        {
345                dprint ninja1_failed_trying_again
346                ai2_dopath IntroNinja patrol_40
347                ai2_setjobstate IntroNinja
348        }
349
350        if (ninja2 ne 0)
351        {
352                dprint ninja2_failed_trying_again
353                ai2_dopath A_N1 patrol_02
354                ai2_setjobstate A_N1
355        }
356}
357
358func void patrolscript0001(string ai_name)
359{
360        dprint patrolscript0001_t1
361        playback_block IntroNinja ninja_jump5 interp 30
362#       ai2_makeignoreplayer A_N1 0
363}
364
365func void patrolscript0002(string ai_name)
366{
367        dprint patrolscript0002_t1
368        playback_block A_N1 ninja_jump interp 30
369#       ai2_makeignoreplayer A_N1 0
370}
371
372func void t2(string ai_name)
373{
374        dprint t2
375        trigvolume_enable trigger_volume_03 0
376        ai2_spawn A_C5
377}
378
379func void t3(string ai_name)
380{
381        dprint t3
382        trigvolume_enable trigger_volume_02 0
383        ai2_spawn A_Sr3
384}
385
386func void t4(string ai_name)
387{
388        dprint t4       
389        trigvolume_enable trigger_volume_05 0
390        ai2_spawn A_T6
391        chr_delete A_Sr9
392        chr_delete A_N1
393        chr_delete IntroNinja
394
395}
396
397func void patrolscript0004(string ai_name)
398{
399        dprint patrolscript0004
400        playback_block A_T6 tanker2 interp 20
401
402}
403
404func void t5(string ai_name)
405{
406        dprint t5       
407        trigvolume_enable trigger_volume_04 0
408        ai2_spawn A_T4
409        chr_delete A_Sr9
410        chr_delete A_N1
411        chr_delete IntroNinja
412
413}
414
415func void patrolscript0005(string ai_name)
416{
417        dprint patrolscript0005
418        playback_block A_T4 tanker1 interp 20
419
420}
421
422func void t6(string ai_name)
423{
424        dprint t6
425        ai2_spawn A_N7
426        trigvolume_enable trigger_volume_07_copy 0
427
428}
429
430func void t7(string ai_name)
431{
432        dprint t7
433        ai2_spawn A_N8
434        trigvolume_enable trigger_volume_06 0
435}
436
437func void t8(string ai_name)
438{
439        dprint t8
440        ai2_spawn B_Sr10
441        ai2_spawn B_Sr10a
442        ai2_spawn B_R11
443        ai2_spawn B_R12a
444        ai2_dopath A_T6 patrol_42
445        ai2_setjobstate A_T6
446        ai2_dopath A_T4 patrol_42
447        ai2_setjobstate A_T4
448#       ai2_dopath A_Sr3 patrol_44
449        ai2_setjobstate A_Sr3
450#       ai2_dopath A_C5 patrol_44
451        ai2_setjobstate A_C5
452        ai2_dopath A_N7 patrol_45
453        ai2_setjobstate A_N7
454        ai2_dopath A_N8 patrol_45
455        ai2_setjobstate A_N8
456}
457
458func void t9(string ai_name)
459{
460        dprint t9
461        ai2_spawn E_N37
462        ai2_makeignoreplayer E_N37 1
463        playback_block E_N37 ninja_jump2
464        ai2_makeignoreplayer E_N37 0
465        ai2_attack E_N37 char_0
466}
467
468func void t10(string ai_name)
469{
470        dprint t10
471        # "I lost him. Wait! There he is."
472        sound_dialog_play c11_39_03konoko
473        ai2_spawn B_Sr12
474        ai2_spawn B_T13
475        ai2_spawn B_SuperNinja
476        chr_boss_shield B_SuperNinja
477        chr_unstoppable B_SuperNinja 1
478        chr_neutral B_SuperNinja 1
479        playback_block B_SuperNinja superninja1 interp 20
480        sleep 60
481        chr_delete B_SuperNinja
482
483}
484
485func void t11(string ai_name)
486{
487        dprint t11
488        ai2_spawn C_N17
489        ai2_spawn C_N18
490        ai2_dopath B_T13 patrol_41
491        ai2_setjobstate B_T13
492}
493
494func void patrolscript0011(string ai_name)
495{
496        dprint patrolscript0011
497        playback_block B_T13 tanker_jump interp 30
498
499}
500
501func void t14(string ai_name)
502{
503        dprint t14
504        music_stop
505        target_set (1,0.0)
506        chr_delete C_N57
507        chr_delete C_Sr15
508        chr_delete C_T16
509        chr_delete C_R55
510        ai2_dopath D_Sb20 patrol_35
511        ai2_spawn D_Sr38
512        ai2_spawn D_C60
513}
514
515func void patrolscript0014(string ai_name)
516{
517        dprint patrolscript0014
518        playback_block D_Sb20 striker_jump interp 20
519}
520
521func void t15(string ai_name)
522{
523        dprint t15
524        ai2_spawn E_N14
525        ai2_spawn E_N14a
526        ai2_passive E_N14 1
527        #ai2_passive E_N14a 1
528        ai2_spawn NinjaZip
529        ai2_passive NinjaZip 1
530        chr_unstoppable NinjaZip 1
531        playback NinjaZip NinjaZipSet
532        playback E_N14 Ninja02Set
533
534}
535
536#func void patrolscript0016(string ai_name)
537#{
538#       dprint patrolscript0016
539#       playback_block E_N14 LSIninja interp 20
540#}
541
542func void t18(string ai_name)
543{
544        dprint t18
545        music_gauntlet
546        ai2_spawn D_C19
547        ai2_spawn D_Sb20
548        ai2_spawn D_R21
549        ai2_spawn D_Sb22
550        ai2_spawn D_Sb23
551        ai2_spawn D_Sr24
552}
553
554func void t19(string ai_name)
555{
556        dprint t19
557        music_billboard
558        ai2_spawn D_N25
559        ai2_spawn C_R61
560}
561
562func void t20(string ai_name)
563{
564        dprint t20
565        music_stop
566        ai2_spawn D_Sr26
567        ai2_spawn D_Sr27
568        ai2_spawn D_T28
569}
570
571func void cantescape_dialog(void)
572{
573        sleep 120
574        # "He can't escape me. But why?"
575        sound_dialog_play c11_39_04konoko
576}
577
578func void t21(string ai_name)
579{
580        dprint t21_E_SuperNinja
581        fork cantescape_dialog
582        ai2_spawn E_N29
583        ai2_spawn E_Sb31
584        ai2_spawn E_Sr63
585        ai2_spawn E_Sr64
586        ai2_spawn E_R65
587        ai2_spawn E_SuperNinja
588        chr_boss_shield E_SuperNinja
589        chr_unstoppable E_SuperNinja
590        playback_block E_SuperNinja superninja2 interp 20
591        sleep 60
592        chr_delete E_SuperNinja
593
594}
595
596func void t22(string ai_name)
597{
598        dprint t22
599        ai2_dopath IntroNinja patrol_39
600        ai2_setjobstate IntroNinja
601
602}
603
604func void patrolscript0022(string ai_name)
605{
606        dprint patrolscript0022
607        playback_block IntroNinja ninja_jump4 interp 20
608
609}
610
611func void t23(string ai_name)
612{
613        dprint t23
614        ai2_spawn E_Sr30
615
616}
617
618func void t24(string ai_name)
619{
620        dprint t24
621        # "He knows I can feel him. That we are... rivals? Natural enemies?"
622        sound_dialog_play c11_39_08konoko
623        ai2_spawn E_R32
624        ai2_dopath E_Sr33 patrol_34
625        ai2_setjobstate E_Sr33
626}
627
628func void t25(string ai_name)
629{
630        dprint t25
631        ai2_spawn E_Sr33
632        ai2_dopath E_Sr30 patrol_34
633        ai2_setjobstate E_Sr30
634}
635
636func void t29(string ai_name)
637{
638        dprint t29
639        # "There's something familar about him, I can't quite place it."
640        sound_dialog_play c11_39_05konoko
641}
642
643func void t30(string ai_name)
644{
645        dprint t30_D_SuperNinja
646        # "Where... ? Ah! Over there!"
647        sound_dialog_play c11_39_01konoko
648        ai2_spawn D_SuperNinja
649        chr_boss_shield D_SuperNinja
650        chr_unstoppable D_SuperNinja 1
651        playback_block D_SuperNinja superninja1b interp 20
652        sleep 60
653        chr_delete D_SuperNinja
654
655}
656
657func void t31(string ai_name)
658{
659        dprint t31
660        ai2_spawn A_N43
661}
662
663func void t32in(string ai_name)
664{
665        dprint t32in
666        ninja1 = ninja1 + 1
667}
668
669func void t32out(string ai_name)
670{
671        dprint t32out
672        ninja1 = ninja1 - 1
673}
674
675func void t33in(string ai_name)
676{
677        dprint t33in
678        ninja2 = ninja2 + 1
679}
680
681func void t33out(string ai_name)
682{
683        dprint t33out
684        ninja2 = ninja2 - 1
685}
686
687func void ninja1_die(string ai_name)
688{
689        dprint ninja1_die
690        ninja1 = 0
691}
692
693func void ninja2_die(string ai_name)
694{
695        dprint ninja2_die
696        ninja2 = 0
697}
698
699func void t57(string ai_name)
700{
701        dprint t57
702        strike1=1
703        sleep 120
704        if (strike1 eq 1)
705        {
706                ai2_dopath A_Sr9 patrol_48
707                ai2_setjobstate A_Sr9
708        }
709}
710
711func void t57b(string ai_name)
712{
713        dprint t57b
714        strike1=0
715        strike1b=1
716}
717
718
719func void t58(string ai_name)
720{
721        dprint t58
722        music_first
723#       ai2_makeignoreplayer A_Sr9 1
724#       ai2_makeignoreplayer A_N1 1
725#       ai2_makeignoreplayer IntroNinja 1
726        ai2_dopath A_Sr9 patrol_49
727        ai2_setjobstate A_Sr9
728        ai2_dopath A_N1 patrol_50
729        ai2_setjobstate A_N1
730        ai2_dopath IntroNinja patrol_51
731        ai2_setjobstate IntroNinja
732#       sleep 15
733#       ai2_makeignoreplayer A_Sr9 0
734#       ai2_makeignoreplayer A_N1 0
735#       ai2_makeignoreplayer IntroNinja 0
736        music_first_timer
737
738}
739
740func void t83(string ai_name)
741{
742        dprint checking
743        go_hide =  go_hide + 1;
744        if(trigvolume_count (83) ne 0)
745        {
746                dprint t83
747                if(go_hide eq 0)
748                {
749                        ai2_makeignoreplayer (ai_name,1)
750                        ai2_dopath (ai_name,patrol_13b)
751                        ai2_setjobstate (ai_name)
752                        ai2_forget (ai_name)
753                        sleep 60
754                        ai2_makeignoreplayer (ai_name,0)
755                }
756                if(go_hide eq 1)
757                {
758                        ai2_makeignoreplayer (ai_name,1)
759                        ai2_dopath (ai_name,patrol_12b)
760                        ai2_setjobstate (ai_name)
761                        ai2_forget (ai_name)
762                        sleep 60
763                        ai2_makeignoreplayer (ai_name,0)
764                }
765        }
766}
767
768func void t83b(string ai_name)
769{
770        dprint t83B
771        go_hide =  go_hide - 1;
772}
773
774func void t84(string ai_name)
775{
776        dprint checking
777        go_hide2 =  go_hide2 + 1;
778        sleep 60
779        if(trigvolume_count (84) ne 0)
780        {
781                dprint t84
782                if(go_hide2 eq 0)
783                {
784                        ai2_makeignoreplayer (ai_name,1)
785                        ai2_dopath (ai_name,patrol_69)
786                        ai2_setjobstate (ai_name)
787                        ai2_forget (ai_name)
788                        sleep 60
789                        ai2_makeignoreplayer (ai_name,0)
790                }
791                if(go_hide2 eq 1)
792                {
793                        ai2_makeignoreplayer (ai_name,1)
794                        ai2_dopath (ai_name,patrol_70)
795                        ai2_setjobstate (ai_name)
796                        ai2_forget (ai_name)
797                        sleep 60
798                        ai2_makeignoreplayer (ai_name,0)
799                }
800                if(go_hide2 eq 2)
801                {
802                        ai2_makeignoreplayer (ai_name,1)
803                        ai2_dopath (ai_name,patrol_71)
804                        ai2_setjobstate (ai_name)
805                        ai2_forget (ai_name)
806                        sleep 60
807                        ai2_makeignoreplayer (ai_name,0)
808                }
809        }
810}
811
812func void t84b(string ai_name)
813{
814        dprint t84B
815        go_hide2 =  go_hide2 - 1;
816}
817
818func void t85(string ai_name)
819{
820        dprint t85
821        ai2_spawn sbg_ninja
822}
823func void t59(string ai_name)
824{
825        dprint t59
826        strike2=1
827        sleep 120
828        if (strike2 eq 1)
829        {
830                ai2_dopath A_Sr3 patrol_52
831                ai2_setjobstate A_Sr3
832                ai2_dopath A_C5 patrol_52
833                ai2_setjobstate A_C5
834        }
835}
836
837func void t59b(string ai_name)
838{
839        dprint t59b
840        strike2=0
841}
842
843func void t60(string ai_name)
844{
845        dprint t60
846        strike3=1
847        sleep 120
848        if (strike3 eq 1)
849        {
850                ai2_dopath B_Sr12 patrol_53
851                ai2_setjobstate B_Sr12
852        }
853}
854
855func void t60b(string ai_name)
856{
857        dprint t60b
858        strike3=0
859}
860
861func void t63(string ai_name)
862{
863        if (trigvolume_count(64) eq 0)
864        {
865                trigvolume_enable trigger_volume_63 0
866                dprint t63
867                chr_delete E_R32
868                chr_delete E_Sr33
869                chr_delete E_Sr30
870                door_unlock 6
871        }
872}
873
874func void t65(string ai_name)
875{
876        dprint t65
877        chr_teleport C_R55 7013
878        ai2_dopath C_R55 patrol_56
879        ai2_setjobstate C_R55
880}
881
882func void t77(string ai_name)
883{
884        dprint t77
885        ai2_dopath D_R21 patrol_58
886}
887
888func void t78(string ai_name)
889{
890        dprint t78
891        ai2_dopath D_R21 patrol_59
892}
893
894func void minus_invading_counter(string ai_name)
895{
896        invading_counter = invading_counter - 1
897
898        if (invading_counter eq 0)
899        {
900                invading_dialog();
901        }
902}
903
904func void invading_dialog(void)
905{
906        invading_counter = 0;
907        trigvolume_enable trigger_volume_95 0
908
909        sleep 90
910        # "It's like this is his territory, and I'm invading."
911        sound_dialog_play c11_39_06konoko
912}
913
914func void t95(string ai_name)
915{
916        dprint t95
917
918        invading_dialog();
919}
920
921func void t96(string ai_name)
922{
923        dprint t96
924        # "He's... angry! I can _taste_ his frustration."
925        sound_dialog_play c11_39_07konoko
926}
927
928func void patrolscript0077(string ai_name)
929{
930        dprint 0077
931        ai2_dopath D_R21 patrol_21
932        ai2_setjobstate D_R21
933}
934
935func void t80(string ai_name)
936{
937        dprint t78
938        ai2_spawn E_C62
939        playback E_C62 com
940       
941}
942
Note: See TracBrowser for help on using the repository browser.