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

File Contents

# Content
1 #################
2 ### VARIABLES ###
3 #################
4
5 var int var_counter = 0;
6 var int var_counter2 = 0;
7 var int var_counter3 = 0;
8
9 ############
10 ### MAIN ###
11 ############
12
13 func void main(void)
14 {
15 gl_fog_red = 0
16 gl_fog_blue = 0
17 gl_fog_green = 0
18 gl_fog_start = .995
19 gs_farclipplane_set 5000
20 ui_suppress_prompt = 1
21 chr_auto_aim_dist = 0
22 start
23 }
24
25 #############
26 ### START ###
27 #############
28
29 func void start(string ai_name)
30 {
31 fork deactivate_stuff
32 if(save_point eq 0) save_point = 1
33 if(save_point eq 1) fork intro
34 if(save_point eq 2) restore_game
35 if(save_point eq 3) fork load_s3
36 if(save_point eq 4) restore_game
37 if(save_point eq 5) fork load_s5
38 sleep 5
39 fork sp_all
40 }
41
42 func void deactivate_stuff(void)
43 {
44 #not used
45 trigvolume_enable trigger_volume_08_copy 0
46 trigvolume_enable trigger_volume_09 0
47 trigvolume_enable trigger_volume_10_copy 0
48 trigvolume_enable trigger_volume_10_copy_copy 0
49 trigvolume_enable trigger_volume_11_copy 0
50 trigvolume_enable trigger_volume_11_copy_copy 0
51 trigvolume_enable trigger_volume_14 0
52 #used
53 env_show 802 0
54 env_show 822 0
55 particle power1 do start
56 particle power2 do start
57 trigvolume_enable trigger_volume_02 0
58 trigvolume_enable trigger_volume_06 0
59 trigvolume_enable trigger_volume_12 0
60 trigvolume_enable trigger_volume_13 0
61 trigvolume_enable trigger_volume_40 0
62 }
63
64 func void you_lose(string ai_name)
65 {
66 fade_out 0 0 0 30
67 sleep 30
68 lose
69 }
70
71 ####################################
72 ### SEVERAL TIMES USED FUNCTIONS ###
73 ####################################
74
75 func void sp_all(void)
76 {
77 co_message_display = 0
78 if(save_point eq 1) save_game 1 autosave
79 if(save_point eq 2) save_game 2 autosave
80 if(save_point eq 3) save_game 3 autosave
81 if(save_point eq 4) save_game 4 autosave
82 if(save_point eq 5) save_game 5 autosave
83 sleep 180
84 co_message_display = 1
85 }
86
87 func void remove_ai(void)
88 {
89 ai2_kill
90 sleep 60
91 powerup_reset
92 weapon_reset
93 sleep 240
94 corpse_reset
95 }
96
97 func void music_stop(void)
98 {
99 sound_music_stop mus_main01
100 sound_music_stop mus_sad1
101 sound_music_stop mus_space01
102 sound_music_stop mus_asian
103 sound_music_stop mus_fiteb
104 }
105
106 ##########
107 ### SP1 ###
108 ##########
109
110 func void intro(void)
111 {
112 playback 0 IntroKonokoSet01
113 ai2_spawn A1_intro01
114 ai2_spawn A1_intro02
115 ai2_spawn A1_bluedoorstriker
116 objective_set 1 silent
117 target_set 5007 30
118 sleep 1
119 sound_music_start mus_main01 .75
120 }
121
122 #lose func of A1_intro01 and A1_intro02
123 func void die_for_art(string ai_name)
124 {
125 var_counter = var_counter + 1
126 if(var_counter eq 2) music_stop
127 }
128
129 #console1
130 func void target02(string ai_name)
131 {
132 particle blue_locklight01 do start
133 particle b2_locklight01 do start
134 target_set 2001 30
135 trigvolume_enable trigger_volume_12 1
136 music_stop
137 }
138
139 #tv12 - in front of door 30
140 func void target03(string ai_name)
141 {
142 ai2_spawn A1_s_red01
143 ai2_spawn A1_s_red02
144 target_set 5007 30
145 }
146
147 #called up, when A1_s_red02 gives you the hypo
148 func void change_patrol(string ai_name)
149 {
150 ai2_dopath A1_s_red02 patrol_45
151 ai2_setjobstate A1_s_red02
152 }
153
154 #tv4 - in front of door 31
155 func void tv04(string ai_name)
156 {
157 ai2_spawn A2_s_tank01
158 ai2_spawn A2_s_blue13
159 ai2_spawn A2_s_blue01
160 ai2_spawn A2_s_blue03
161 ai2_spawn A2_s_red03
162 ai2_spawn char_1
163 ai2_spawn A2_s_tank02
164 }
165
166 #tv3 - in front of door 33
167 func void tv03(string ai_name)
168 {
169 ai2_spawn A2_s_blue09
170 }
171
172 #tv34 - at the beginning of the first pillar, which is nearby to the room with console3
173 func void tv34(string ai_name)
174 {
175 ai2_spawn A2_s_red04
176 }
177
178 #console3
179 func void ontv02(string ai_name)
180 {
181 trigvolume_enable trigger_volume_02 1
182 particle el_red1 kill
183 particle el_1_locklight01 do start
184 target_set 108 30
185 }
186
187 #called up, when A2_s_red04 gives you the w4_psm
188 func void spawn_sniper1(string ai_name)
189 {
190 ai2_spawn sniper1
191 ai2_makeignoreplayer sniper1 1
192 playback_block sniper1 sniper1_jump
193 ai2_makeignoreplayer sniper1 0
194 ai2_dopath sniper1 patrol_52
195 ai2_setjobstate sniper1
196 sleep 600
197 ai2_makeignoreplayer sniper1 1
198 ai2_dopath sniper1 patrol_53
199 ai2_setjobstate sniper1
200 }
201
202 #hit func of sniper1
203 func void hurt_sniper1(string ai_name)
204 {
205 ai2_makeignoreplayer sniper1 1
206 ai2_dopath sniper1 patrol_53
207 ai2_setjobstate sniper1
208 }
209
210 #in some distance after the room with console3, in front of the elevator
211 func void tv33(string ai_name)
212 {
213 ai2_makeignoreplayer A2_s_red04 1
214 ai2_dopath A2_s_red04 patrol_54
215 ai2_setjobstate A2_s_red04
216 }
217
218 #tv2 - flat box on the elevator platform
219 func void tv02(string ai_name)
220 {
221 fade_out 0 0 0 30
222 sleep 30
223 fork remove_ai
224 obj_kill 801
225 playback 0 Elev1KonokoSet
226 load_s2
227 fade_in 30
228 var_counter = 0
229 }
230
231 func void load_s2(void)
232 {
233 env_show 802 1
234 ai2_spawn B1_s_blue05
235 ai2_spawn B1_s_green01
236 ai2_spawn new_dummy1
237 ai2_spawn C1_blue22
238 ai2_spawn C2_blue25
239 ai2_dopath B1_s_blue05 patrol_08_blue05b
240 ai2_setjobstate B1_s_blue05
241 chr_teleport B1_s_blue05 1046
242 objective_set 1 silent
243 target_set 1083 30
244 sleep 1
245 sound_music_start mus_sad1 0.3
246 sound_music_volume mus_sad1 0.8 2
247 }
248
249 ##########
250 ### SP2 ###
251 ##########
252
253 #tv35 - after the elevator platform
254 func void s2(string ai_name)
255 {
256 if(save_point eq 2)
257 {
258 fork remove_ai
259 load_s2
260 }
261 else save_game 2 autosave
262 }
263
264 #console12
265 func void target06(string ai_name)
266 {
267 particle green_locklight01 do start
268 target_set 2005 30
269 trigvolume_enable trigger_volume_13 1
270 }
271
272 #tv13 - in front of door 34
273 func void target05(string ai_name)
274 {
275 ai2_spawn B1_s_Red01
276 target_set 133 30
277 music_stop
278 }
279
280 #tv1 - in front of door 35
281 func void tv01(string ai_name)
282 {
283 ai2_spawn whiteneut
284 ai2_spawn C1_blue22
285 ai2_spawn B2_s_blue06
286 ai2_spawn B2_s_blue07
287 ai2_spawn B2_s_blue08
288 ai2_spawn B2_s_tank04
289 }
290
291 #console4
292 func void target08(string ai_name)
293 {
294 particle white_locklight01 do start
295 target_set 3001 30
296 }
297
298 #tv14 - in front of door 36 (the same func as tv13, so I've disabled it)
299
300 #tv5 - in front of door 37
301 func void tv05(string ai_name)
302 {
303 ai2_spawn B3_s_green02
304 ai2_spawn C1_blue20
305 }
306
307 #tv15 - at the end of the both ways after door 37
308 func void target10(string ai_name)
309 {
310 target_set 5008 30
311 }
312
313 #tv16 - at the end of the passageway to the other side
314 func void target11(string ai_name)
315 {
316 target_set 5009 30
317 }
318
319 #tv42 - huge box around the complete ways to the 2nd elevator (only used as a chara counter, see next funcs)
320
321 #lose func of C2_blue25 and respawn1
322 func void script_respawn1(void)
323 {
324 if(trigvolume_count(42) eq 0)
325 {
326 var_counter2 = var_counter2 + 1
327 if(var_counter2 eq 1)
328 {
329 ai2_spawn respawn1
330 chr_giveweapon respawn1 w7_scc
331 }
332 if(var_counter2 eq 2)
333 {
334 ai2_spawn respawn1
335 chr_giveweapon respawn1 w3_phr
336 ai2_dopath patrol_08_blue05
337 ai2_setjobstate respawn1
338 }
339 if(var_counter2 eq 3)
340 {
341 ai2_spawn respawn1
342 chr_giveweapon respawn1 w2_sap
343 }
344 }
345 }
346
347 #lose func of C1_blue20 and respawn2
348 func void script_respawn2(void)
349 {
350 if(trigvolume_count(42) eq 0)
351 {
352 var_counter3 = var_counter3 + 1
353 if(var_counter3 eq 1)
354 {
355 ai2_spawn respawn2
356 chr_giveweapon respawn2 w3_phr
357 }
358 if(var_counter3 eq 2)
359 {
360 ai2_spawn respawn2
361 chr_giveweapon respawn2 w2_sap
362 ai2_dopath patrol_19_blue20b
363 ai2_setjobstate respawn2
364 }
365 if(var_counter3 eq 3)
366 {
367 ai2_spawn respawn2
368 chr_giveweapon respawn2 w2_sap
369 }
370 }
371 }
372
373 #lose func of C1_blue22
374 func void script_respawn3(void)
375 {
376 if(trigvolume_count(42) eq 0) ai2_spawn C1_red21
377 }
378
379 #tv37 - box around the place, where you find the 2nd mercury bow
380 func void t37(string ai_name)
381 {
382 ai2_spawn new_1
383 ai2_spawn new_2
384 }
385
386 #tv38 - about in the middle
387 func void t38(string ai_name)
388 {
389 ai2_spawn new_3
390 ai2_spawn new_4
391 }
392
393 #console6
394 func void ontv06(string ai_name)
395 {
396 trigvolume_enable trigger_volume_06 1
397 particle el_2_locklight01 do start
398 target_set 119 30
399 }
400
401 ##########
402 ### SP3 ###
403 ##########
404
405 #tv6 - flat box on the elevator platform
406 func void tv06(string ai_name)
407 {
408 fade_out 0 0 0 30
409 sleep 30
410 fork remove_ai
411 load_s3
412 chr_teleport 0 120
413 chr_facetoflag 0 120
414 fade_in 30
415 if(save_point ne 3) save_game 3 autosave
416 }
417
418 func void load_s3(void)
419 {
420 if(save_point eq 3)
421 {
422 fork remove_ai
423 restore_game
424 }
425 obj_kill 821
426 env_show 822 1
427 ai2_spawn D1_neut05
428 objective_set 2 silent
429 target_set 128 30
430 sleep 1
431 sound_music_start mus_space01 0.75
432 }
433
434 #console7
435 func void target14(string ai_name)
436 {
437 particle red_locklight01 do start
438 target_set 2085 30
439 }
440
441 #tv20 - in front of door 38
442 func void tv25(string ai_name)
443 {
444 ai2_spawn D1_red30
445 ai2_spawn D1_neut02
446 ai2_spawn D2_blue60
447 ai2_spawn D1_neut10
448 ai2_spawn new_5
449 ai2_spawn D2_blue61
450 music_stop
451 }
452
453 #called up, after you have talked to the guy
454 func void power_deactivate(void)
455 {
456 ai2_doalarm D1_neut02 9
457 ai2_dopath D1_neut02 patrol_80
458 ai2_setjobstate D1_neut02
459 }
460
461 #console9
462 func void power_lull_1(string ai_name)
463 {
464 music_stop
465 ai2_neutralbehavior D1_neut02 none
466 target_set 125 30
467 sound_music_start mus_asian .75
468 particle power1 do stop
469 timer_start 20 power_lull_1b
470 }
471
472 func void power_lull_1b(void)
473 {
474 music_stop
475 particle power1 do start
476 sleep 300
477 console_reset 9
478 }
479
480 #tv17 - at the end of the pipe
481 func void target13(string ai_name)
482 {
483 target_set 128 30
484 }
485
486 ##########
487 ### SP4 ###
488 ##########
489
490 #tv30 - in front of door 23
491 func void s4(string ai_name)
492 {
493 if(save_point eq 4)
494 {
495 fork remove_ai
496 load_s4
497 }
498 else save_game 4 autosave
499 }
500
501 func void load_s4(void)
502 {
503 particle red_locklight01 do start
504 ai2_spawn D2_blue61
505 ai2_spawn D2_blue60
506 ai2_spawn new_5
507 ai2_spawn D1_neut10
508 trigvolume_enable trigger_volume_17 0
509 trigvolume_enable trigger_volume_25 0
510 trigvolume_enable trigger_volume_30 0
511 objective_set 2 silent
512 target_set 128 30
513 }
514
515 #tv39 - box around the place, where D1_neut10 gives you a hypo
516 func void t39(string ai_name)
517 {
518 trigvolume_enable trigger_volume_40 1
519 }
520
521 #tv40 - in the middle between tv39 and door 22
522 func void t40(string ai_name)
523 {
524 ai2_spawn new_6
525 ai2_spawn new_7
526 }
527
528 #console10
529 func void target17(string ai_name)
530 {
531 particle yellow_locklight01 do start
532 target_set 3094 30
533 }
534
535 #tv41 - in front of door 24
536 func void spawn2tube(string ai_name)
537 {
538 ai2_spawn D2_red62
539 ai2_spawn D2_tank63
540 ai2_spawn new_8
541 ai2_spawn sci_maniac
542 }
543
544 #console11
545 func void power_lull_2(string ai_name)
546 {
547 sound_music_start mus_asian .75
548 particle power2 do stop
549 ai2_spawn new_10
550 ai2_spawn new_67
551 ai2_spawn D3_tank65
552 timer_start 20 power_lull_2b
553 }
554
555 func void power_lull_2b(void)
556 {
557 music_stop
558 particle power2 do start
559 sleep 300
560 console_reset 11
561 }
562
563 #tv19 - on the pipe, in some distance in front of the platform with console13
564 func void target19(string ai_name)
565 {
566 target_set 5010 30
567 }
568
569 ### POSSIBILITY 1: YOU RUN TO THE END OF THE PIPE ###
570
571 #tv36 - box around the place, where you find the w5_sbg
572 func void t36(string ai_name)
573 {
574 ai2_spawn sbg_1
575 ai2_spawn sbg_2
576 ai2_spawn sbg_3
577 }
578
579 ### POSSIBILITY 2: YOU JUMP TO THE PLATFORM WITH CONSOLE 13 ###
580
581 #tv7 - at the beginning of the staircase
582 func void tv07(string ai_name)
583 {
584 chr_delete new_1
585 chr_delete new_2
586 chr_delete new_3
587 chr_delete new_4
588 chr_delete new_5
589 chr_delete new_6
590 chr_delete new_7
591 chr_delete new_8
592 chr_delete sci_maniac
593 chr_delete D1_blue50
594 chr_delete D2_blue60
595 chr_delete D2_blue61
596 chr_delete D1_neut02
597 chr_delete D1_neut05
598 chr_delete D1_neut10
599 chr_delete D1_red30
600 chr_delete D2_red62
601 chr_delete D3_red66
602 chr_delete D2_tank63
603 chr_delete D3_tank65
604 ai2_spawn F_friend
605 ai2_spawn F_blue73
606 ai2_spawn F_blue1
607 target_set 5006 30
608 }
609
610 ##########
611 ### SP5 ###
612 ##########
613
614 #console8
615 func void unlock_bwhite(string ai_name)
616 {
617 if(save_point ne 5) save_game 5 autosave
618 particle bwhite_locklight01 do start
619 objective_set 3 silent
620 }
621
622 func void load_s5(void)
623 {
624 if(save_point eq 5)
625 {
626 fork remove_ai
627 restore_game
628 }
629 particle bwhite_locklight01 do start
630 door_unlock 4
631 ai2_spawn F_blue1
632 console_deactivate 8
633 trigvolume_enable trigger_volume_07 0
634 objective_set 3 silent
635 target_set 5006 30
636 var_counter = 1
637 }
638
639 #tv10 - in front of door 3
640 func void tv10(string ai_name)
641 {
642 ai2_spawn F_blue69
643 ai2_spawn F_blue2
644 }
645
646 #tv11 - in front of door 2
647 func void tv11(string ai_name)
648 {
649 ai2_spawn F_tank70
650 }
651
652 #tv8 - in front of door 1
653 func void tv08(string ai_name)
654 {
655 ai2_spawn end01
656 ai2_spawn end02
657 ai2_spawn end03
658 sleep 60
659 ai2_dopath F_tank70 patrol_5004
660 ai2_setjobstate F_tank70
661 ai2_dopath F_blue69 patrol_5005
662 ai2_setjobstate F_blue69
663 ai2_dopath F_blue2 patrol_5004
664 ai2_setjobstate F_blue2
665 ai2_dopath F_blue1 patrol_5006
666 ai2_setjobstate F_blue1
667 ai2_dopath F_blue73 patrol_5006
668 ai2_setjobstate F_blue73
669 ai2_attack F_tank70 char_0
670 ai2_attack F_blue69 char_0
671 ai2_attack F_blue2 char_0
672 ai2_attack F_blue1 char_0
673 ai2_attack F_blue73 char_0
674 sound_music_start mus_fiteb .75
675 }
676
677 #tv29 - after door 1
678 func void tv29(string ai_name)
679 {
680 sound_music_start mus_fiteb .75
681 }
682
683 #lose func of end01, end02, end03, F_blue1, F_blue2, F_blue69, F_blue73 and F_tank70
684 func check_death(string ai_name)
685 {
686 var_counter = var_counter + 1
687 if(var_counter eq 8)
688 {
689 fade_out 0 0 0 30
690 sleep 30
691 win
692 }
693 }
694
695 #####################
696 ### TEXT CONSOLES ###
697 #####################
698
699 func void console_pipe(void)
700 {
701 text_console level_9d
702 console_reset 13
703 }
704
705 func void text9a(void)
706 {
707 text_console level_9a
708 console_reset 2
709 }
710
711 func void text9b(void)
712 {
713 text_console level_9b
714 console_reset 5
715 }
716
717 func void text9c(void)
718 {
719 text_console level_9c
720 console_reset 14
721 }