source: nikanabo/current/bsl/original/IGMD/dream_lab/dream_lab_logic.bsl@ 1049

Last change on this file since 1049 was 185, checked in by geyser, 18 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.