ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/power_II/power2.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 14705 byte(s)
Log Message:

File Contents

# Content
1 #################
2 ### VARIABLES ###
3 #################
4
5 var int var_counter = 0;
6
7 ############
8 ### MAIN ###
9 ############
10
11 func void main(void)
12 {
13 gl_fog_red = 0
14 gl_fog_blue = 0
15 gl_fog_green = 0
16 gl_fog_start = .995
17 gs_farclipplane_set 5000
18 ui_suppress_prompt = 1
19 chr_auto_aim_dist = 0
20 start
21 }
22
23 #############
24 ### START ###
25 #############
26
27 func void start(string ai_name)
28 {
29 fork deactivate_stuff
30 if(save_point eq 0) fork intro
31 if(save_point eq 1) restore_game
32 if(save_point eq 2) fork save_point_2
33 if(save_point eq 3) restore_game
34 sleep 5
35 fork sp_all
36 }
37
38 func void deactivate_stuff(void)
39 {
40 #not used
41 trigvolume_enable crossfire 0
42 trigvolume_enable open_ambush_1 0
43 trigvolume_enable save2 0
44 trigvolume_enable save_point3 0
45 trigvolume_enable setobjective_4 0
46 trigvolume_enable setobjective_5 0
47 trigvolume_enable strikerguards 0
48 trigvolume_enable room1_copy_copy 0
49 trigvolume_enable room1_copy2 0
50 trigvolume_enable room2 0
51 trigvolume_enable room2_copy 0
52 trigvolume_enable room2_stop 0
53 trigvolume_enable room2_stop_copy2 0
54 trigvolume_enable room2_stop_copy_copy 0
55 trigvolume_enable room2_stop_copy 0
56 trigvolume_enable room3_stop 0
57 trigvolume_enable room3_stop_copy 0
58 trigvolume_enable room3_particle_control 0
59 trigvolume_enable room4_copy 0
60 trigvolume_enable room4_copy_copy 0
61 trigvolume_enable trigger_volume_07 0
62 trigvolume_enable trigger_volume_11_copy 0
63 trigvolume_enable trigger_volume_16_copy3 0
64 trigvolume_enable trigger_volume_16_copy_copy2 0
65 trigvolume_enable trigger_volume_16_copy2_copy2 0
66 trigvolume_enable trigger_volume_16_copy_copy_copy2 0
67 trigvolume_enable trigger_volume_16_copy2_copy_copy 0
68 trigvolume_enable trigger_volume_16_copy_copy_copy_copy 0
69 trigvolume_enable trigger_volume_36 0
70 trigvolume_enable trigger_volume_39 0
71 #used
72 obj_create 81 82
73 env_shade 777 777 .4 .4 .4
74 env_show 778 0
75 chr_delete ShinShin
76 }
77
78 func void you_lose(string ai_name)
79 {
80 fade_out 0 0 0 30
81 sleep 30
82 lose
83 }
84
85 ####################################
86 ### SEVERAL TIMES USED FUNCTIONS ###
87 ####################################
88
89 func void sp_all(void)
90 {
91 co_message_display = 0
92 if(save_point eq 1) save_game 1 autosave
93 if(save_point eq 2) save_game 2 autosave
94 if(save_point eq 3) save_game 3 autosave
95 sleep 180
96 co_message_display = 1
97 }
98
99 func void remove_ai(void)
100 {
101 ai2_kill
102 sleep 60
103 powerup_reset
104 weapon_reset
105 sleep 240
106 corpse_reset
107 }
108
109 func void music_stop(void)
110 {
111 sound_music_stop mus_trt
112 sound_music_stop atm_cl09
113 sound_music_stop atm_cl10
114 sound_music_stop atm_cl11
115 sound_music_stop atm_cl12
116 sound_music_stop mus_amasian
117 }
118
119 #tv66, tv67 and tv68 - called up, if you fall from a pipe
120 func void dont_even_try_it(string ai_name)
121 {
122 chr_set_health 0 0
123 }
124
125 ##########
126 ### SP0 ###
127 ##########
128
129 func void intro(void)
130 {
131 particle room1 do start
132 particle room2 do start
133 particle room3 do start
134 ai2_spawn ambush_striker_10
135 ai2_spawn ambush_striker_11
136 playback 0 IntroKonoko01
137 objective_set 1 silent
138 sleep 1
139 sound_music_start mus_trt
140 }
141
142 #tv1 - big long box around the railing and the beginning of the stairway
143 func void p1(string ai_name)
144 {
145 music_stop
146 sound_music_start atm_cl09 1.0
147 ai2_spawn A1_sr01
148 ai2_spawn A1_t02
149 ai2_lookatme A1_sr01
150 ai2_lookatme A1_t02
151 sleep 120
152 door_lock 1
153 door_lock 2
154 }
155
156 #lose func of A1_t02
157 func void backup_1(string ai_name)
158 {
159 ai2_spawn backup_striker1
160 particle blast1_locklight01 do start
161 door_unlock 1
162 door_open 1
163 }
164
165 #lose func of A1_sr01
166 func void backup_2(string ai_name)
167 {
168 ai2_spawn backup_striker2
169 particle blast2_locklight01 do start
170 door_unlock 2
171 door_open 2
172 }
173
174 #tv41 - long box in middle of the 1st hall (proceed from the left to the right side); not used, or better: does not work
175
176 #tv2 - after door 1 and door 2
177 func void p2(string ai_name)
178 {
179 ai2_spawn A2_r03
180 playback A2_r03 redjump
181 ai2_lookatme A2_r03
182 ai2_spawn aerial_red_2
183 ai2_passive aerial_red_2 1
184 playback aerial_red_2 redjump2
185 ai2_passive aerial_red_2 0
186 ai2_lookatme aerial_red_2
187 ai2_spawn red_guard_1
188 ai2_dopath A1_sr01 patrol_31
189 ai2_dopath A1_t02 patrol_31
190 ai2_setjobstate A1_sr01
191 ai2_setjobstate A1_t02 patrol_31
192 ai2_spawn ShinShin force
193 playback ShinShin ShinShinSet
194 ai2_setmovementmode ShinShin creep
195 ai2_passive ShinShin 1
196 ai2_makeblind ShinShin 1
197 ai2_makedeaf ShinShin 1
198 chr_lock_active ShinShin
199 chr_unstoppable ShinShin 1
200 chr_invincible ShinShin 1
201 chr_nocollision ShinShin 1
202 }
203
204 #tv34 - complete volume of the 2nd hall - enter func
205 func void t43(string ai_name)
206 {
207 var_counter = 1
208 }
209
210 #tv34 - complete volume of the 2nd hall - leave func
211 func void t43b(string ai_name)
212 {
213 var_counter = 0
214 }
215
216 #tv63 - long box in middle of the 2nd hall (proceed from the left to the right side)
217 func void come_to_me(string ai_name)
218 {
219 ai2_dopath ambush_striker1 come_to_me 1
220 ai2_dopath ambush_striker2 come_to_me 1
221 ai2_dopath A1_t02 come_to_me 1
222 ai2_dopath A1_sr01 come_to_me 1
223 }
224
225 #tv65 - complete second half of the 2nd hall; only used to check, if there are still enemies in it or not; see next func
226
227 #tv3 - big field around shinatama
228 func void shin_check(string ai_name)
229 {
230 trigvolume_enable trigger_volume_03 0
231 if(trigvolume_count(32) eq 0) Shin
232 else
233 {
234 sleep 60
235 trigvolume_enable trigger_volume_03 1
236 }
237 }
238
239 #tv54 - complete volume of the 2nd hall too; used to delete all enemies inside; see next func
240
241 func void Shin(void)
242 {
243 music_stop
244 sound_music_start atm_cl10 0.0
245 sound_music_volume atm_cl10 1 5
246 objective_set 2 silent
247 target_set 7020 60
248 particle blast1_locklight01 do stop
249 particle blast2_locklight01 do stop
250 door_lock 1
251 door_lock 2
252 particle room1 do stop
253 particle room2 do stop
254 particle Shindoor_locklight01 do start
255 door_unlock 3
256 particle room4 do start
257 ai2_spawn A2_sb04
258 sound_dialog_play c09_31_27shinatama
259 sound_dialog_play_block pause
260 sleep 600
261 sound_dialog_play c09_31_28shinatama
262 sleep 600
263 sound_dialog_play c09_31_29shinatama
264 sleep 330
265 sound_dialog_play_block pause
266 sleep 15
267 music_stop
268 sound_ambient_start c06_45_04_explo
269 sleep 10
270 particle ShinBomb do explode
271 trigvolume_kill 64
272 if(var_counter ne 0) chr_set_health 0 0
273 else
274 {
275 fade_out 1 1 1 30
276 sleep 2
277 fade_in 30
278 door_lock 3
279 particle Shindoor_locklight01 do stop
280 objective_set 3 silent
281 target_set 0 0
282 }
283 }
284
285 #tv4 - in front of door 3
286 func void p5(string ai_name)
287 {
288 ai2_spawn A3_n05
289 ai2_spawn A3_sb06
290 }
291
292 ##########
293 ### SP1 ###
294 ##########
295
296 #tv69 - in some distance afer door 3
297 func void new_save1(string ai_name)
298 {
299 if(save_point eq 1)
300 {
301 p5
302 particle room4 do start
303 objective_set 3 silent
304 }
305 else save_game 1 autosave
306 particle Shindoor_locklight01 do stop
307 door_close 3
308 door_lock 3
309 particle room3 do stop
310 }
311
312 #called up, after you've talked to the guy
313 func void do_console_1(string ai_name)
314 {
315 ai2_doalarm A3_n05 1
316 }
317
318 #console1
319 func void pipe1a(string ai_name)
320 {
321 ai2_passive A3_n05 1
322 particle room4 do stop
323 timer_start 30 pipe1b
324 sound_music_start atm_cl11
325 }
326
327 func void pipe1b(void)
328 {
329 particle room4 do start
330 console_reset 1
331 music_stop
332 }
333
334 #tv29 - on the pipe, in some distance after door 4 (func: p36); I've disabled it
335
336 #tv28 - after door 9
337 func void killmuro(string ai_name)
338 {
339 music_stop
340 ai2_spawn A4_n07
341 }
342
343 #tv5 - in front of door 10
344 func void p6(string ai_name)
345 {
346 ai2_spawn A4_sr08
347 ai2_spawn B1_c07
348 }
349
350 #tv6 - after door 13 and door 14, not used (func: p7)
351
352 #tv7 - in the middle of the stairs from 1st floor to 2nd floor
353 func void p8(string ai_name)
354 {
355 trigvolume_enable trigger_volume_08 0
356 ai2_spawn B2_sb09
357 ai2_spawn B2_n10
358 }
359
360 #tv49 - after door 11 and door 12
361 func void p9(string ai_name)
362 {
363 ai2_spawn C1_c16
364 ai2_spawn C1_t11
365 ai2_spawn C1_sb12
366 ai2_spawn C1_t13
367 ai2_spawn C2_sg15
368 ai2_spawn C2_sr17
369 ai2_spawn C2_sb14
370 ai2_spawn C2_t19
371 }
372
373 #console6
374 func void zap_cinematic(string ai_name)
375 {
376 particle doorA_locklight01 do start
377 particle doorB_locklight01 do start
378 door_unlock 15
379 ai2_spawn vat_bot_1
380 ai2_spawn vat_bot_2
381 ai2_spawn vat_bot_3
382 ai2_spawn vat_bot_4
383 ai2_spawn vat_bot_5
384 chr_weapon_immune vat_bot_1
385 chr_weapon_immune vat_bot_2
386 chr_weapon_immune vat_bot_3
387 chr_weapon_immune vat_bot_4
388 chr_weapon_immune vat_bot_5
389 particle vatroom1 do start
390 particle zap1 create
391 particle zap2 create
392 particle zap3 create
393 trigvolume_enable save2 1
394 sleep 1
395 sound_music_start atm_cl12 0.75
396 }
397
398 ##########
399 ### SP2 ###
400 ##########
401
402 #tv25 - after door 15
403 func void save_point_2(string ai_name)
404 {
405 if(save_point eq 2)
406 {
407 restore_game
408 zap_cinematic
409 objective_set 4 silent
410 }
411 else save_game 2 autosave
412 particle doorA_locklight01 do stop
413 door_close 15
414 door_lock 15
415 particle room4 do stop
416 }
417
418 #tv64 - complete volume of the vat room (from the floor, where Konoko stands nearly to the ceiling)
419 func void zap_start(string ai_name)
420 {
421 trigvolume_enable zap1 0
422 if(var_counter eq 0)
423 {
424 particle zap1 do start
425 sleep 120
426 particle zap1 do stop
427 }
428 if(var_counter eq 0)
429 {
430 particle zap2 do start
431 sleep 120
432 particle zap2 do stop
433 }
434 if(var_counter eq 0)
435 {
436 particle zap3 do start
437 sleep 120
438 particle zap3 do stop
439 }
440 sleep 60
441 trigvolume_enable zap1 1
442 }
443
444 #1st console 4
445 func void zap_timer_1(string ai_name)
446 {
447 var_counter = 1
448 timer_start 15 zap_start_again
449 }
450
451 #tv60 - passage to the 1st console 4
452 func void change_patrol_1(string ai_name)
453 {
454 ai2_dopath vat_bot_2 vat_bot_2b 1
455 }
456
457 #2nd console 4
458 func void zap_timer_2(string ai_name)
459 {
460 var_counter = 1
461 timer_start 10 zap_start_again
462 }
463
464 #tv61 - passage to the 2nd console 4
465 func void change_patrol_2(string ai_name)
466 {
467 ai2_dopath vat_bot_3 vat_bot_3b 1
468 }
469
470 #3rd console 4
471 func void zap_timer_3(string ai_name)
472 {
473 var_counter = 1
474 timer_start 5 zap_start_again
475 }
476
477 #tv62 - passage to the 3rd console 4
478 func void change_patrol_3(string ai_name)
479 {
480 ai2_dopath vat_bot_5 vat_bot_5b 1
481 }
482
483 func void zap_start_again(string ai_name)
484 {
485 var_counter = 0
486 console_reset 4
487 }
488
489 #tv35 to tv40 - called up, if a chara falls into the acid
490 func void splash(string character)
491 {
492 if(chr_is_player(character) eq 1)
493 {
494 cm_detach
495 chr_animate 0 KONOKOacid
496 sleep 10
497 sound_impulse_play konoko_gruesome_death
498 chr_set_health 0 0
499 }
500 else
501 {
502 chr_animate(character, KONOKOacid);
503 sleep 10
504 chr_set_health(character, 0);
505 }
506 }
507
508 #after door 16
509 func void red_ambush(string ai_name)
510 {
511 music_stop
512 ai2_spawn ambush_red_1
513 }
514
515 #tv10 - after door 19 and door 20
516 func void p10(string ai_name)
517 {
518 ai2_spawn D1_sr20
519 ai2_spawn D1_sb21
520 particle doorB_locklight01 do stop
521 door_lock 16
522 particle zap1 kill
523 particle zap2 kill
524 particle zap3 kill
525 particle vatroom1 do stop
526 trigvolume_enable strikerguards 1
527 }
528
529 #tv9 - long box (from the left side to the right side) in some distance in front of door 21
530 func void striker_guards(string ai_name)
531 {
532 ai2_spawn striker_guard_1
533 ai2_spawn striker_guard_2
534 particle room6 do start
535 }
536
537 #tv51 - in front of door 21 (func: striker_guards); I've disabled it
538 #tv31 - in front of door 21 too (func: p11); I've disabled it too
539 #tv50 - after door 21 (func: cross_fire); I've disabled it
540
541 #tv10 - after door 22
542 func void p12(string ai_name)
543 {
544 ai2_spawn D2_sg24
545 ai2_spawn D2_f25
546 ai2_spawn D2_sb26
547 playback D2_sb26 piperun
548 ai2_spawn pipe_guard_1
549 ai2_spawn pipe_guard_2
550 }
551
552 #console8
553 func void pipe2a(void)
554 {
555 particle room6 do stop
556 timer_start 30 pipe2b
557 sound_music_start atm_cl11
558 }
559
560 func void pipe2b(void)
561 {
562 music_off
563 particle room6 do start
564 console_reset 8
565 }
566
567 #tv58 - after door 27
568 func void pipe2_music_off(void)
569 {
570 music_stop
571 particle save3_locklight01 do start
572 }
573
574 #tv11 - in front of door 28
575 func void p13(string ai_name)
576 {
577 ai2_spawn E1_sr28
578 ai2_spawn E1_sb29
579 ai2_spawn E1_sr30
580 ai2_spawn ambush_comguy_1
581 ai2_spawn E1_n31
582 ai2_spawn E1_n32
583 ai2_spawn E1_n37
584 particle pipe3 do create
585 particle pipe3 do start
586 }
587
588 #tv33 - after door 33 (funcs: p11 and save_point_3); I've disabled it
589
590 ##########
591 ### SP3 ###
592 ##########
593
594 #tv 32 - in some distance after door 28
595 func void p11b(string ai_name)
596 {
597 trigvolume_enable p11b_vol 0
598 if(save_point eq 3) p13
599 else save_game 3 autosave
600 particle save3_locklight01 do stop
601 door_close 28
602 door_lock 28
603 objective_set 5 silent
604 particle room6 do stop
605 }
606
607 #lose func of E1_sr30
608 func void warnbigroom(string ai_name)
609 {
610 ai2_makeaware E1_sr28 char_0
611 ai2_makeaware E1_sb29 char_0
612 }
613
614 #tv48 - 1st floor, at the beginning of the stairs to the 2nd floor
615 func void spawn_EC_guards(string ai_name)
616 {
617 ai2_spawn E1_sb29
618 ai2_spawn E1_c33
619 ai2_spawn E1_c40
620 ai2_spawn E1_f34
621 ai2_spawn E1_f40
622 ai2_spawn E1_f35
623 }
624
625 #tv53 - at the same place as tv48 (func: set_objective_5); I've disabled it
626
627 #tv59 - 3rd floor, at the beginning of the stairs to the 4th floor
628 func void final_guards(string ai_name)
629 {
630 ai2_spawn final_guard_1
631 ai2_spawn final_guard_2
632 }
633
634 #console14
635 func void tctf_control(string ai_name)
636 {
637 sound_music_start mus_amasian 1.0
638 particle elev1_locklight01 do start
639 particle elev2_locklight01 do start
640 door_unlock 37
641 door_unlock 38
642 ai2_spawn E2_sr38
643 ai2_spawn E2_sr39
644 }
645
646 #tv30 - in front of door 37 (func: p39); I've disabled it
647
648 #tv12 - after door 37
649 func void elevator(void)
650 {
651 fade_out 0 0 0 30
652 sleep 30
653 fork_rmove_ai
654 env_show 778 1
655 env_shade 778 778 .3 .3 .3
656 ai2_spawn F_r40
657 playback 0 ElevatorTop
658 fade_in 30
659 fork wait_for_help
660 }
661
662 func void wait_for_help(void)
663 {
664 chr_wait_health F_r40 70
665 ai2_spawn TCTF1051
666 ai2_spawn TCTF1052
667 ai2_spawn TCTF1053
668 ai2_spawn TCTF1054
669 chr_lock_active 1051
670 chr_lock_active 1052
671 chr_lock_active 1053
672 chr_lock_active 1054
673 chr_changeteam TCTF1051 TCTF
674 chr_changeteam TCTF1052 TCTF
675 chr_changeteam TCTF1053 TCTF
676 chr_changeteam TCTF1054 TCTF
677 playback TCTF1051 OutroSwatEnter
678 ai2_attack TCTF1053 char_0
679 sleep 60
680 playback TCTF1052 OutroSwatEnter
681 ai2_attack TCTF1054 char_0
682 sleep 50
683 playback TCTF1053 OutroLiteEnter
684 ai2_attack TCTF1051 char_0
685 sleep 70
686 playback TCTF1054 OutroLiteEnter
687 ai2_attack TCTF1052 char_0
688 }
689
690 #console15
691 func void pipe3(void)
692 {
693 sound_music_volume mus_amasian 0 2
694 music_stop
695 particle pipe3 kill
696 sound_music_start atm_cl11
697 timer_start 20 pipe3b
698 }
699
700 func void pipe3b(void)
701 {
702 music_stop
703 particle pipe3 do create
704 particle pipe3 do start
705 console_reset 15
706 }
707
708 #tv13 - after door 39; circa after a quarter of the lenght of the pipe
709 func void outro(void)
710 {
711 fade_out 0 0 0 30
712 sleep 30
713 win
714 }
715
716 #####################
717 ### TEXT CONSOLES ###
718 #####################
719
720 func void level10a(string chr_index)
721 {
722 text_console level_10a
723 console_reset 2
724 }
725
726 func void level10b(string chr_index)
727 {
728 text_console level_10b
729 console_reset 7
730 }