ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/packages/VanillaBSL/IGMD/dream_lab/dream_lab_logic.bsl
Revision: 313
Committed: Sun May 3 07:36:58 2009 UTC (16 years, 5 months ago) by gumby
File size: 14002 byte(s)
Log Message:

File Contents

# Content
1 ### DREAMLAB LEVEL LOGIC ###
2
3 ### START, SAVE & OBJECTIVES ###
4
5 # START
6 func 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
64 func 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
73 func 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
81 func void save_point_1(string player_name)
82 {
83 dprint save_1
84 save_game 1 autosave
85 }
86
87 func 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
97 func void set_objective_1(string chr_index)
98 {
99 dprint objective_1
100 objective_set(1)
101 }
102
103 func void set_objective_2(string chr_index)
104 {
105 dprint objective_2
106 objective_set(2)
107 }
108
109 ### MUSIC ###
110
111 var int music_counter;
112
113 func 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
124 func void music_script_start(void)
125 {
126 music_counter = 2
127 }
128
129 func 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
139 func 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
149 func 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
162 func 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
170 func 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
177 func void patrolscript0100(string ai_name)
178 {
179 chr_delete shinatama_1a
180 door_lock 7
181 }
182
183 # SHINATAMA 2
184 func 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
199 func void patrolscript0101(string ai_name)
200 {
201 chr_delete shinatama_2
202 }
203
204 # SHINATAMA 3
205 func 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
218 func 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
231 func void delay_and_play_shin(void)
232 {
233 sleep 240
234 sound_dialog_play c12_63_05shinatama
235 }
236
237 # SHINATAMA NO-GRAV
238 func 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
267 func void ghost_1(string ai_name)
268 {
269 dprint vanish_ghost1
270 chr_delete ghost_1
271 }
272
273 func void ghost_2(string ai_name)
274 {
275 dprint vanish_ghost2
276 chr_delete ghost_2
277 }
278
279 # AMBUSH 1a
280 func 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
289 func 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
298 func 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
307 func 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
318 func 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
329 func 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
338 func 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
349 func 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
362 func 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
371 func 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
379 func 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
389 func 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
399 func 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
409 func 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
420 func 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
429 func 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
439 func 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
449 func 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
460 func 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
470 func 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
482 func 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
488 func 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
494 func 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
500 func 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
507 func 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 }
514 func 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
522 func 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
530 func 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
539 func void patrolscript0110(string ai_name)
540 {
541 chr_delete mini_strike_1
542 }
543
544 # MINISTRIKE 2 HOLE
545 func void patrolscript0111(string ai_name)
546 {
547 chr_delete mini_strike_2
548 }
549
550 # MINISTRIKE 3 HOLE
551 func void patrolscript0112(string ai_name)
552 {
553 chr_delete mini_strike_3
554 }
555
556 # MINISTRIKE 4 HOLE
557 func void patrolscript0113(string ai_name)
558 {
559 chr_delete mini_strike_4
560 }
561
562 ### EVERYBODY WAS DREAM LAB FIGHTIN' ###
563
564 # ROOM 1
565 func 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
579 func 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
589 func 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
600 func void bring_the_wall(string char)
601 {
602 dprint oops
603 env_show 1010 1
604 }
605
606 # FOG ON 1
607 func 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
615 func 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
623 func 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
631 func void fog_floor2bon(void)
632 {
633 dprint fog_off
634 particle fog_floor2a do stop
635 particle fog_floor2b do start
636 }
637
638 func 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
650 func 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
674 func void laser_cutscene_fog(void)
675 {
676 gs_farclipplane_set 2000
677 gl_fog_start_changeto .995 45
678 }
679
680 # LASER CUTSCENE
681 func 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
709 func void laser_cleanup(string ai_name)
710 {
711 dprint laser_unlock
712 door_unlock 5
713 }
714
715 # BIG HEAD VAR
716 func 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
726 func 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
736 func 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
746 func 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
757 func 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
765 func void small_head(string ai_name)
766 {
767 dprint smallhead
768 chr_big_head = 0
769 }
770
771 ### Level scripted by Joseph ###