source: AE/packages/VanillaBSL/IGMD/dream_lab/dream_lab_logic.bsl @ 367

Last change on this file since 367 was 367, checked in by gumby, 11 years ago
File size: 13.7 KB
Line 
1### DREAMLAB LEVEL LOGIC ###
2
3### START, SAVE & OBJECTIVES ###
4
5# START
6func void start(string ai_name)
7{
8        door_lock 3
9        door_lock 1
10        env_show 1976 0
11        trigvolume_enable splash_trigger 0
12
13        if (save_point eq 0)
14                {
15                my_save_point=0;
16                trigvolume_enable shinatama1a 1
17                trigvolume_enable shinatama1b 1
18                #env_show 999 0
19                ai2_spawn ghost_1
20                ai2_spawn ghost_2
21                set_objective_1
22                }
23
24        if (save_point eq 1)
25                {
26                my_save_point=1;
27                dprint restore1
28                ai2_spawn IntroMuro
29                playback IntroMuro IntroMuroSet
30                ai2_passive IntroMuro 1
31                playback 0 IntroKonokoSet
32                env_show 200 0
33                env_show 201 0
34                env_show 227 0
35                env_show 231 1
36                env_show 232 1
37                env_show 999 0
38                particle fog_floor1 do start
39                sound_music_start mus_om01 .75
40                trigvolume_enable shinatama1a 1
41                trigvolume_enable shinatama1b 1
42                set_objective_1
43                restore_game
44                ai2_spawn ghost_1
45                ai2_spawn ghost_2
46                }
47
48        if (save_point eq 2)
49                {
50                my_save_point=2;       
51                dprint restore2
52                particle fog_room1 do start
53                ai2_spawn griffin
54                playback griffin GrifGriffinSet
55                door_lock 3
56                trigvolume_enable room1a 0
57                trigvolume_enable room1b 0
58                set_objective_2
59                restore_game
60                sound_music_start mus_wls .75
61                }
62}
63
64func void you_lose(string ai_name)
65{
66        sleep 240
67        fade_out 0 0 0 180
68        sleep 240
69        all_music_counters
70        lose
71}
72
73func void you_win(string char_index)
74{
75        sound_music_volume mus_wls 0.0 2.0
76        sleep 180
77        fade_out 0 0 0 180
78        outro
79}
80
81func void save_point_1(string player_name)
82{
83        dprint save_1
84        save_game 1 autosave
85}
86
87func void save_point_2(string player_name)
88{
89        dprint save_2
90        save_game 2 autosave
91        chr_delete liliput_striker_1
92        chr_delete liliput_striker_2
93        chr_delete liliput_striker_3
94        set_objective_2
95}
96
97func void set_objective_1(string chr_index)
98{
99        dprint objective_1
100        objective_set(1)
101}
102
103func void set_objective_2(string chr_index)
104{
105        dprint objective_2
106        objective_set(2)
107}
108
109### MUSIC ###
110
111var int music_counter;
112
113func void music_force_stop(void)
114{
115        sleep 4500
116        if (0 ne music_counter)
117                {
118                dprint music_force_stop
119                music_counter = 0
120                all_music_counters
121                }
122}
123
124func void music_script_start(void)
125{
126        music_counter = 2
127}
128
129func void striker_lullaby_1(string ai_name)
130{
131        dprint striker_lullaby1
132        music_counter = music_counter - 1
133        if (music_counter eq 0)
134                {
135                all_music_counters();
136                }
137}
138
139func void striker_lullaby_2(string ai_name)
140{
141        dprint striker_lullaby2
142        music_counter = music_counter - 1
143        if (music_counter eq 0)
144                {
145                all_music_counters();
146                }
147}
148
149func void all_music_counters(void)
150{
151        dprint STOP_THE_MUSIC
152        sound_music_stop atm_cl16
153        sound_music_stop mus_om01
154        sound_music_stop atm_gr09
155        sound_music_stop mus_wls
156        sound_music_stop atm_ft81
157}
158
159### FOLLOW THE WHITE SHINATAMA ###
160
161# SHINATAMA 1a
162func void shinatama_1a(string ai_name)
163{
164        sound_dialog_play c12_63_01shinatama
165        ai2_spawn shinatama_1a
166        ai2_lookatme shinatama_1a
167}
168
169# SHINATAMA 1b
170func void shinatama_1b(string ai_name)
171{
172        ai2_dopath shinatama_1a shinatama_flee_1
173        door_lock 8
174}
175
176# SHINATAMA 1a DEATH
177func void patrolscript0100(string ai_name)
178{
179        chr_delete shinatama_1a
180        door_lock 7     
181}
182
183# SHINATAMA 2
184func void shinatama_2(string ai_name)
185{
186        sound_dialog_play c12_63_03shinatama
187        dprint shinatama_2
188        ai2_spawn shinatama_2
189        ai2_spawn liliput_striker_1
190        ai2_spawn liliput_striker_2
191        ai2_spawn liliput_striker_3
192        chr_lock_active shinatama_2
193        door_lock 8
194        door_open 11
195        door_open 12
196}
197
198# SHINATAMA 2 DEATH
199func void patrolscript0101(string ai_name)
200{
201        chr_delete shinatama_2
202}
203
204# SHINATAMA 3
205func void shinatama_3(string ai_name)
206{
207        chr_delete ghost_1
208        chr_delete ghost_2
209        sound_dialog_play c12_63_04shinatama
210        ai2_spawn shinatama_3
211        ai2_spawn shin_striker_1
212        ai2_spawn shin_striker_2
213        ai2_spawn shin_striker_3
214        ai2_spawn shin_striker_4
215}
216
217# SHINATAMA 3 DEATH
218func void patrolscript0102(string ai_name)
219{
220        chr_delete shinatama_3
221        sleep 400
222        chr_delete shin_striker_1
223        chr_delete shin_striker_2
224        chr_delete shin_striker_3
225        chr_delete shin_striker_4
226        chr_delete shin_striker_5
227        chr_delete shin_striker_6
228        chr_delete shin_striker_7
229}
230
231func void delay_and_play_shin(void)
232{
233        sleep 240
234        sound_dialog_play c12_63_05shinatama
235}
236
237# SHINATAMA NO-GRAV
238func void shinatama_nograv(string ai_name)
239{
240        dprint shinatama_nograv
241        sound_music_volume atm_gr09 0.0 2.0
242        sound_music_stop atm_gr09
243        sound_music_start atm_ft81 .75 
244        particle fog_room1 do stop
245        particle fog_room2 do start
246        door_lock 5
247        door_lock 6
248        ai2_spawn shinatama_nograv
249        chr_invincible shinatama_nograv 1
250        chr_nocollision shinatama_nograv 1
251        sound_music_start atm_cl22 0.1
252        sound_music_volume atm_cl22 1.0 4
253        fork delay_and_play_shin
254        playback_block shinatama_nograv shinatama_nograv interp 30
255        chr_delete shinatama_nograv
256        door_unlock 6
257        door_close 5
258        door_jam 5
259        invincible = 0
260        sound_music_volume atm_cl22 0.0 6
261        sleep 250
262        sound_music_stop atm_cl22
263}
264
265### AMBUSHES, BACKUPS ###
266
267func void ghost_1(string ai_name)
268{
269        dprint vanish_ghost1
270        chr_delete ghost_1
271}
272
273func void ghost_2(string ai_name)
274{
275        dprint vanish_ghost2
276        chr_delete ghost_2
277}
278
279# AMBUSH 1a
280func void ambush_1a(string ai_name)
281{
282        dprint ambush_1a
283        ai2_spawn ambush_tanker_1a
284        sound_music_stop atm_gr09
285        sound_music_start mus_wls .75
286}
287
288# AMBUSH 1b
289func void ambush_1b(string ai_name)
290{
291        dprint ambush_1b
292        ai2_spawn ambush_tanker_1b
293        door_open 8
294        door_jam 8
295}
296
297# AMBUSH 2
298func void ambush_2(string ai_name)
299{
300        dprint ambush_2
301        ai2_spawn ambush_red_1
302        sound_music_stop atm_ft81
303        sound_music_start mus_wls .75
304}
305
306# TANKER VARIABLE
307func void tanker_1_var(string ai_name)
308{
309        dprint tanker_var1
310        tanker_counter = tanker_counter - 1
311        chr_inv_reset ambush_tanker_1a
312        if (tanker_counter eq 0)
313                {
314                new_music();
315                }
316}
317
318func void tanker_2_var(string ai_name)
319{
320        dprint tanker_var2
321        tanker_counter = tanker_counter - 1
322        chr_inv_reset ambush_tanker_1b
323        if (tanker_counter eq 0)
324                {
325                new_music();
326                }
327}
328
329func void new_music(string ai_name)
330{
331        dprint change_the_track
332        door_unlock 9
333        sound_music_stop mus_wls
334        sound_music_start atm_ft81 .75
335}
336
337# RED VARIABLE
338func void red_1_var(string ai_name)
339{
340        dprint red_var
341        red_counter = red_counter - 1
342        if (red_counter eq 0)
343                {
344                redbackup();
345                }
346}
347
348# RED BACKUP
349func void redbackup(string ai_name)
350{
351        dprint red_backup
352        ai2_spawn ambush_red_2
353        door_unlock 1
354        door_lock 2
355        door_unjam 8
356        chr_delete liliput_striker_1
357        chr_delete liliput_striker_2
358        chr_delete liliput_striker_3
359}
360
361# RED RETREAT
362func void red_retreat(string ai_name)
363{
364        dprint retreat_reds
365        ai2_makeignoreplayer ambush_red_1 1
366        ai2_makeignoreplayer ambush_red_2 1
367        ai2_dopath ambush_red_1 red_retreat_1 1
368        ai2_dopath ambush_red_2 red_retreat_2 1
369}
370
371func void patrolscript0007(string ai_name)
372{
373        dprint red_react
374        ai2_makeignoreplayer ambush_red_1 0
375        ai2_makeignoreplayer ambush_red_2 0
376}
377
378# RED (MUSIC) SHIFT
379func void redmusic_1_var(string ai_name)
380{
381        dprint redmusic_1
382        rmusic_counter = rmusic_counter - 1
383        if (rmusic_counter eq 0)
384                {               
385                red_shift();
386                }
387}
388
389func void redmusic_2_var(string ai_name)
390{
391        dprint redmusic_2
392        rmusic_counter = rmusic_counter - 1
393        if (rmusic_counter eq 0)
394                {               
395                red_shift();
396                }
397}
398
399func void red_shift(string player_name)
400{
401        dprint redshift
402        sound_music_stop mus_wls
403        sound_music_start atm_gr09 0.75
404        door_unlock 2
405}
406
407
408# SWAT VARIABLE
409func void swat_1_var(string ai_name)
410{
411        dprint swat_var
412        swat_counter = swat_counter - 1
413        if (swat_counter eq 0)
414                {
415                swatbackup();
416                }
417}
418
419# SWAT BACKUP
420func void swatbackup(string ai_name)
421{
422        dprint swat_backup
423        door_unlock 2
424        ai2_spawn griffin_b1
425        ai2_spawn griffin_b2
426}
427
428# ROOM 1 END VAR
429func void end_1a_var(string ai_name)
430{
431        dprint swat_var
432        end1_counter = end1_counter - 1
433        if (end1_counter eq 0)
434                {
435                room1_end();
436                }
437}
438
439func void end_1b_var(string ai_name)
440{
441        dprint swat_var
442        end1_counter = end1_counter - 1
443        if (end1_counter eq 0)
444                {
445                room1_end();
446                }
447}
448
449func void end_1c_var(string ai_name)
450{
451        dprint swat_var
452        end1_counter = end1_counter - 1
453        if (end1_counter eq 0)
454                {
455                room1_end();
456                }
457}
458
459# ROOM 1 END
460func void room1_end(string ai_name)
461{
462        dprint room1_end
463        door_unlock 3
464        trigvolume_enable nodark 1
465}
466
467### GOTTA CATCH 'EM ALL! (WITH NO APOLOGIES TO YOU KNOW WHAT) ###
468
469# MINISTRIKE
470func void mini_strike(string ai_name)
471{
472        dprint mini_strike
473        ai2_spawn mini_strike_1
474        ai2_spawn mini_strike_2
475        ai2_spawn mini_strike_3
476        ai2_spawn mini_strike_4
477        chr_delete ghost_1
478        chr_delete ghost_2
479}
480
481# MINISTRIKE 1 FLEE
482func void mini_strike_flee_1(string ai_name)
483{
484        ai2_dopath mini_strike_1 mini_strike_flee_1
485}
486
487# MINISTRIKE 2 FLEE
488func void mini_strike_flee_2(string ai_name)
489{
490        ai2_dopath mini_strike_2 mini_strike_flee_2
491}
492
493# MINISTRIKE 3 FLEE
494func void mini_strike_flee_3(string ai_name)
495{
496        ai2_dopath mini_strike_3 mini_strike_flee_3
497}
498
499# MINISTRIKE 4 FLEE
500func void mini_strike_flee_4(string ai_name)
501{
502        ai2_dopath mini_strike_4 mini_strike_flee_4
503}
504
505# SWISS CHEESE
506
507func void patrolscript0001(string ai_name)
508{
509        dprint swisscheese_1
510        chr_nocollision mini_strike_1 1
511        playback_block mini_strike_1 cheese1 interp 30
512        chr_delete mini_strike_1
513}
514func void patrolscript0002(string ai_name)
515{
516        dprint swisscheese_2
517        chr_nocollision mini_strike_2 1
518        playback_block mini_strike_2 cheese2 interp 30
519        chr_delete mini_strike_2
520}
521
522func void patrolscript0003(string ai_name)
523{
524        dprint swisscheese_3
525        chr_nocollision mini_strike_3 1
526        playback_block mini_strike_3 cheese3 interp 30
527        chr_delete mini_strike_3
528}
529
530func void patrolscript0004(string ai_name)
531{
532        dprint swisscheese_4
533        chr_nocollision mini_strike_4 1
534        playback_block mini_strike_4 cheese4 interp 30
535        chr_delete mini_strike_4
536}
537
538# MINISTRIKE 1 HOLE
539func void patrolscript0110(string ai_name)
540{
541        chr_delete mini_strike_1
542}
543
544# MINISTRIKE 2 HOLE
545func void patrolscript0111(string ai_name)
546{
547        chr_delete mini_strike_2
548}
549
550# MINISTRIKE 3 HOLE
551func void patrolscript0112(string ai_name)
552{
553        chr_delete mini_strike_3
554}
555
556# MINISTRIKE 4 HOLE
557func void patrolscript0113(string ai_name)
558{
559        chr_delete mini_strike_4
560}
561
562### EVERYBODY WAS DREAM LAB FIGHTIN' ###
563
564# ROOM 1
565func void room_1(string ai_name)
566{
567        dprint room_1
568        sound_music_stop atm_gr09
569        sound_music_start mus_wls .75
570        particle fog_room1 do start
571        ai2_spawn griffin
572        Griffin01
573        trigvolume_enable room1a 0
574        trigvolume_enable room1b 0
575        trigvolume_enable room1c 0
576}
577
578# ROOM 2
579func void room_2(string ai_name)
580{
581        dprint room_2
582        ai2_spawn evilkonoko
583        Konoko02
584        door_lock 6
585        trigvolume_enable room2 0
586}
587
588# ROOM 2 MUSIC
589func void room2_music(string ai_name)
590{
591        dprint room2music
592        sound_music_volume atm_ft81 0.0 2.0
593        sound_music_stop atm_ft81 .75
594        sound_music_start mus_wls .75
595}
596
597### GENERAL CHICANERY ###
598
599# MURO'S WALL
600func void bring_the_wall(string char)
601{
602        dprint oops
603        env_show 1010 1
604}
605
606# FOG ON 1
607func void fog_floor1on(void)
608{
609        dprint fog_on
610        particle fog_floor1 do start
611        particle fog_floor2a do stop
612}
613
614# FOG OFF 1
615func void fog_floor1off(void)
616{
617        dprint fog_off
618        particle fog_floor1 do stop
619        particle fog_floor2a do start
620}
621
622# FOG ON 2
623func void fog_floor2boff(void)
624{
625        dprint fog_on
626        particle fog_floor2a do start
627        particle fog_floor2b do stop
628}
629
630# FOG OFF 2
631func void fog_floor2bon(void)
632{
633        dprint fog_off
634        particle fog_floor2a do stop
635        particle fog_floor2b do start
636}
637
638func void show_the_acid(string char)
639{
640        dprint show_acid
641        sound_music_volume mus_wls 0.0 2.0     
642        sound_music_stop mus_wls
643        sound_music_start atm_gr09 0.75
644        env_show 1976 1
645        trigvolume_enable splash_trigger 1
646        particle fog_floor1 do stop
647}
648
649# ACID DOOOOOM
650func void splash(string char)
651{
652        var bool eggman;
653        eggman = chr_is_player(char);
654        if (eggman eq 0)
655                {
656                chr_animate(char, KONOKOacid);
657                sleep f10
658                chr_set_health(char, 0);
659                }
660
661        if (eggman eq 1)
662                {
663                input 0
664                chr_animate(char, KONOKOacid);
665                cm_detach
666
667                sound_impulse_play konoko_gruesome_death
668
669                sleep f5
670                chr_set_health(char, 0);
671                }
672}
673
674func void laser_cutscene_fog(void)
675{
676        gs_farclipplane_set 2000
677        gl_fog_start_changeto .995 45
678}
679
680# LASER CUTSCENE
681func void laser_cutscene(string ai_name)
682{
683        dprint laser_cutscene
684        fork laser_cutscene_fog
685        begin_cutscene
686        sleep 90
687        trig_activate 1
688        cm_interpolate laser_4 0
689        door_close 4
690        door_jam 4
691        cm_interpolate_block laser_3 250
692        sleep 250
693        cm_interpolate laser_2 0
694        cm_interpolate_block laser_8 200
695        ai2_spawn laser_ops_1
696        playback_block laser_ops_1 lstriker_1 interp 30
697        sleep 60
698        ai2_allpassive 0
699        cm_reset
700        door_lock 4
701        door_lock 5
702        trigvolume_enable lasercutscene 0
703        trigvolume_enable death_by_bungie 1
704        trigvolume_enable splash 1
705        sleep 15
706        end_cutscene
707}
708
709func void laser_cleanup(string ai_name)
710{
711        dprint laser_unlock
712        door_unlock 5
713}
714
715# BIG HEAD VAR
716func void bighead_1a_var(string ai_name)
717{
718        dprint bighead_var
719        bighead_counter = bighead_counter - 1
720        if (bighead_counter eq 0)
721                {
722                big_head();
723                }
724}
725
726func void bighead_1b_var(string ai_name)
727{
728        dprint bighead_var
729        bighead_counter = bighead_counter - 1
730        if (bighead_counter eq 0)
731                {
732                big_head();
733                }
734}
735
736func void bighead_1c_var(string ai_name)
737{
738        dprint bighead_var
739        bighead_counter = bighead_counter - 1
740        if (bighead_counter eq 0)
741                {
742                big_head();
743                }
744}
745
746func void bighead_1d_var(string ai_name)
747{
748        dprint bighead_var
749        bighead_counter = bighead_counter - 1
750        if (bighead_counter eq 0)
751                {
752                big_head();
753                }
754}
755
756# BIG HEAD
757func void big_head(string ai_name)
758{
759        dprint bighead
760        sleep 200
761        chr_big_head = 1
762        timer_start 120 small_head
763}
764
765func void small_head(string ai_name)
766{
767        dprint smallhead
768        chr_big_head = 0
769}
770
771### Level scripted by Joseph ###
Note: See TracBrowser for help on using the repository browser.