ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/neuro/neuro.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 22761 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
8 ############
9 ### MAIN ###
10 ############
11
12 func void main(void)
13 {
14 gl_fog_red = .15
15 gl_fog_blue = .15
16 gl_fog_green = .15
17 gl_fog_start = .995
18 gs_farclipplane_set 5000
19 ui_suppress_prompt = 1
20 chr_auto_aim_dist = 0
21 menu2
22 start
23 }
24
25 #############
26 ### START ###
27 #############
28
29 func void start(void)
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) restore_game
36 if (save_point eq 4) restore_game
37 sleep 5
38 fork sp_all
39 }
40
41 func void deactivate_stuff(void)
42 {
43 #not used
44 trigvolume_enable ending 0
45 trigvolume_enable ending2 0
46 trigvolume_enable sensor 0
47 trigvolume_enable final_sensor 0
48 trigvolume_enable spawn_kerr_trig 0
49 trigvolume_enable trap_music 0
50 trigvolume_enable tv_check_outro 0
51 trigvolume_enable tv_vat_monologue_1 0
52 trigvolume_enable tv_vat_monologue_2 0
53 trigvolume_enable lab1 0
54 trigvolume_enable lab1_copy 0
55 trigvolume_enable lab1_copy_copy 0
56 trigvolume_enable lab1_copy_copy2 0
57 trigvolume_enable lab1_copy_copy3 0
58 trigvolume_enable lab1_copy_copy4 0
59 trigvolume_enable lab1_copy_copy5 0
60 trigvolume_enable lab1_copy_copy6 0
61 trigvolume_enable lab1_copy_copy7 0
62 trigvolume_enable lab1_copy_copy8 0
63 trigvolume_enable lab1_copy_copy9 0
64 trigvolume_enable lab1_copy_copy10 0
65 trigvolume_enable lab1_copy_copy3_copy 0
66 trigvolume_enable lab1_copy_copy3_copy2 0
67 trigvolume_enable lab1_copy_copy3_copy3 0
68 trigvolume_enable lab1_copy_copy3_copy4 0
69 trigvolume_enable trigger_volume_02 0
70 trigvolume_enable trigger_volume_08_copy 0
71 trigvolume_enable trigger_volume_19 0
72 trigvolume_enable trigger_volume_19_copy2 0
73 trigvolume_enable trigger_volume_19_copy3 0
74 trigvolume_enable trigger_volume_19_copy4 0
75 trigvolume_enable trigger_volume_19_copy5 0
76 trigvolume_enable trigger_volume_19_copy6 0
77 trigvolume_enable trigger_volume_19_copy3_copy 0
78 trigvolume_enable trigger_volume_19_copy6_copy 0
79 trigvolume_enable trigger_volume_19_copy6_copy2 0
80 trigvolume_enable trigger_volume_19_copy7 0
81 trigvolume_enable trigger_volume_19_copy8 0
82 trigvolume_enable trigger_volume_37 0
83 trigvolume_enable trigger_volume_37_copy 0
84 trigvolume_enable trigger_volume_37_copy_copy 0
85 trigvolume_enable trigger_volume_37_copy_copy_copy 0
86 trigvolume_enable trigger_volume_37_copy_copy_copy2 0
87 trigvolume_enable trigger_volume_37_copy2 0
88 trigvolume_enable trigger_volume_37_copy3 0
89 trigvolume_enable trigger_volume_37_copy4 0
90 trigvolume_enable trigger_volume_45 0
91 trigvolume_enable trigger_volume_45_copy 0
92 trigvolume_enable trigger_volume_45_copy_copy 0
93 trigvolume_enable trigger_volume_45_copy_copy2 0
94 trigvolume_enable trigger_volume_45_copy_copy3 0
95 trigvolume_enable trigger_volume_45_copy_copy4 0
96 trigvolume_enable trigger_volume_45_copy_copy5 0
97 trigvolume_enable trigger_volume_45_copy_copy6 0
98 trigvolume_enable trigger_volume_53_copy 0
99 trigvolume_enable trigger_volume_53_copy_copy 0
100 trigvolume_enable trigger_volume_68 0
101 trigvolume_enable trigger_volume_69 0
102 trigvolume_enable trigger_volume_69_copy 0
103 trigvolume_enable trigger_volume_69_copy2 0
104 #used
105 trigvolume_enable chase_trigger 0
106 trigvolume_enable end 0
107 trigvolume_enable Setup_Security_Trig 0
108 trigvolume_enable trigger_volume_02 0
109 trig_deactivate 2
110 trig_deactivate 3
111 trig_deactivate 4
112 obj_create 71 74
113 obj_create 401 409
114 env_anim 401 409
115 env_show 823 0
116 console_deactivate 9
117 }
118
119 func void you_lose(string ai_name)
120 {
121 fade_out 0 0 0 30
122 sleep 30
123 lose
124 }
125
126 ####################################
127 ### SEVERAL TIMES USED FUNCTIONS ###
128 ####################################
129
130 func void sp_all(void)
131 {
132 co_message_display = 0
133 if(save_point eq 1) save_game 1 autosave
134 if(save_point eq 2) save_game 2 autosave
135 if(save_point eq 3) save_game 3 autosave
136 if(save_point eq 4) save_game 4 autosave
137 sleep 180
138 co_message_display = 1
139 }
140
141 func void remove_ai(void)
142 {
143 ai2_kill
144 sleep 60
145 powerup_reset
146 weapon_reset
147 sleep 240
148 corpse_reset
149 }
150
151 func void music_stop(void)
152 {
153 sound_music_stop mus_space01
154 sound_music_stop mus_xtr1
155 }
156
157 ##########
158 ### SP1 ###
159 ##########
160
161 #tv55 - in some distance after the door 9 (fake door) (func: start_trap_music); I've disabled it
162
163 func void intro(void)
164 {
165 playback 0 IntroKonstart
166 particle lock100_locklight01 do stop
167 door_lock 11
168 ai2_spawn OutroTCTF2
169 chr_changeteam OutroTCTF2 TCTF
170 ai2_spawn Start_Lite_1
171 ai2_spawn IntroTCTF02
172 chr_teleport OutroTCTF2 1010
173 chr_teleport Start_Lite_1 1010
174 chr_teleport IntroTCTF02 1010
175 ai2_lookatme OutroTCTF2
176 ai2_lookatme Start_Lite_1
177 ai2_lookatme IntroTCTF02
178 env_show 271 1
179 env_show 272 1
180 env_shade 271 272 .4 .4 .2
181 objective_set 1 silent
182 target_set 1261 30
183 sleep 1
184 sound_music_start mus_space01 0.8
185 ai2_attack OutroTCTF2 Konoko
186 ai2_attack Start_Lite_1 Konoko
187 ai2_attack IntroTCTF02 Konoko
188 fork wait1
189 fork wait2
190 fork wait3
191 }
192
193 func void wait1(void)
194 {
195 chr_wait_health OutroTCTF2 0
196 check_counter
197 }
198
199 func void wait2(void)
200 {
201 chr_wait_health Start_Lite_1 0
202 check_counter
203 }
204
205 func void wait3(void)
206 {
207 chr_wait_health IntroTCTF02 0
208 check_counter
209 }
210
211 func void check_counter(void)
212 {
213 var_counter = var_counter + 1
214 if(var_counter eq 3)
215 {
216 trigvolume_enable trigger_volume_02 1
217 particle lock99_locklight02 do start
218 door_unlock 11
219 var_counter = 0
220 music_stop
221 }
222 }
223
224 #tv1 - in front of door 11 (func: Setup_Pod1); I've disabled it
225
226 ##########
227 ### SP2 ###
228 ##########
229
230 #tv54 - after door 11
231 func void autosave_1(string player_name)
232 {
233 if(save_point eq 2)
234 {
235 objective_set 1 silent
236 target_set 1261 30
237 }
238 else save_game 2 autosave
239 ai2_spawn Pod1_Scientist_1
240 ai2_spawn Pod1_Scientist_2
241 ai2_spawn Pod1_TCL_1
242 ai2_spawn Pod1_TCL_2
243 ai2_spawn Pod1_TCL_3
244 particle lab1 do start
245 particle lab2 do start
246 particle lab3 do start
247 }
248
249 func void patrolscript0001(string ai_name)
250 {
251 playback_block Pod1_TCL_1 alarm1 interp 20
252 }
253
254 func void patrolscript0002(string ai_name)
255 {
256 playback_block Pod1_TCL_2 alarm2 interp 20
257 }
258
259 #tv20 - in front of door 15 (func: lab1_stop); I've disabled it
260 #tv19 - after door 15 (func: lab1_start); I've disabled it
261 #tv28 - in front of door 14 (func: lab1_stop); I've disabled it
262 #tv27 - after door 14 (func: lab1_start); I've disabled it
263 #tv31 - in front of door 19 (func: lab1_start); I've disabled it
264 #tv32 - after door 19 (func: lab1_stop); I've disabled it
265 #tv24 - in front of door 18 (func: lab1_start); I've disabled it
266 #tv33 - after door 18 (func: lab1_stop); I've disabled it
267 #tv34 - in front of door 16 (enter func: lab1_stop, leave func: lab2_start); I've disabled it
268 #tv25 - after door 16 (func: lab1_start); I've disabled it
269 #tv23 - in front of door 17 (enter func: lab1_stop, leave func: lab2_start); I've disabled it
270 #tv22 - after door 17 (func: lab1_start); I've disabled it
271 #tv26 - in front of door 13 (func: lab1_start); I've disabled it
272 #tv29 - after door 13 (func: lab1_stop); I've disabled it
273 #tv21 - in front of door 12 (func: lab1_start); I've disabled it
274 #tv30 - after door 12 (func: lab1_stop); I've disabled it
275
276 #console1
277 func void Pod1_UnlockDoors(string ai_name)
278 {
279 particle lock1_locklight01 do start
280 door_unlock 20
281 door_unlock 21
282 door_unlock 22
283 door_unlock 23
284 particle lock99_locklight02 do stop
285 door_lock 11
286 particle alarm1_emlight01 do stop
287 console_reset 10
288 }
289
290 #hit func of Pod1_TCL_1
291 func void Pod1_RTAlarm_A(string ai_name)
292 {
293 ai2_doalarm Pod1_TCL_1 10
294 }
295
296 #hit func of Pod1_TCL_2
297 func void Pod1_RTAlarm_B(string ai_name)
298 {
299 ai2_doalarm Pod1_TCL_2 10
300 }
301
302 #console10
303 func void Pod1_Alarm(string ai_name)
304 {
305 door_unlock 11
306 particle lock99_locklight02 do start
307 sleep 180
308 ai2_spawn Pod1_BOL_Alarm_1
309 ai2_spawn Pod1_BOL_Alarm_2
310 ai2_spawn pod1_a_1
311 ai2_spawn pod1_a_2
312 ai2_setalert Pod1_TCL_1 combat
313 ai2_setalert Pod1_TCL_2 combat
314 ai2_setalert Pod1_TCL_3 combat
315 ai2_setalert Pod1_BOL_Alarm_1 combat
316 ai2_setalert Pod1_BOL_Alarm_2 combat
317 ai2_dopath Pod1_TCL_1 Pod1_Final_Guard_A
318 ai2_dopath Pod1_TCL_2 Pod1_Final_Guard_B
319 ai2_dopath Pod1_TCL_3 Pod1_Final_Guard_C
320 ai2_dopath Pod1_Scientist_1 Pod1_Final_Sci_A
321 ai2_dopath Pod1_Scientist_2 Pod1_Final_Sci_B
322 ai2_setjobstate Pod1_TCL_1
323 ai2_setjobstate Pod1_TCL_2
324 ai2_setjobstate Pod1_TCL_3
325 ai2_setjobstate Pod1_Scientist_1
326 ai2_setjobstate Pod1_Scientist_2
327 ai2_tripalarm 11 Konoko
328 particle lock1_locklight01 do stop
329 door_lock 20
330 door_lock 21
331 door_lock 22
332 door_lock 23
333 particle alarm1_emlight01 do start
334 console_reset 1
335 Pod_Alarm_Sound
336 }
337
338 #for the Pod_Alarm_Sound func see pod2 section
339
340 #tv2 - huge box in front of door 20, door 21, door 22 and door 23
341 func void Pod2_Setup(string ai_name)
342 {
343 trig_activate 2
344 ai2_spawn Pod2_TCL_1
345 ai2_spawn Pod2_TCL_2
346 ai2_spawn Pod2_Sci_1
347 particle lock2_locklight01 do stop
348 }
349
350 func void patrolscript0003(string ai_name)
351 {
352 playback_block Pod2_TCL_1 pod2alarm1 interp 20
353 }
354
355 func void patrolscript0004(string ai_name)
356 {
357 playback_block Pod2_TCL_2 pod2alarm2 interp 20
358 }
359
360 #tv36 - in front of door 27 (enter func: lab2_start, leave func: lab3_stop); I've disabled it
361 #tv40 - after of door 27 (enter func: lab2_stop, leave func: lab3_start); I've disabled it
362 #tv39 - in front of door 26 (enter func: lab2_start, leave func: lab3_stop); I've disabled it
363 #tv35 - after of door 26 (enter func: lab2_stop, leave func: lab3_start); I've disabled it
364 #tv38 - in front of door 25 (enter func: lab2_start, leave func: lab3_stop); I've disabled it
365 #tv41 - after of door 25 (enter func: lab2_stop, leave func: lab3_start); I've disabled it
366 #tv37 - in front of door 24 (enter func: lab2_start, leave func: lab3_stop); I've disabled it
367 #tv42 - after of door 24 (enter func: lab2_stop, leave func: lab3_start); I've disabled it
368
369 #console2
370 func void Pod2_UnlockDoors(string ai_name)
371 {
372 door_unlock 28
373 door_unlock 29
374 door_unlock 30
375 door_unlock 31
376 door_lock 11
377 particle lock99_locklight02 do stop
378 particle alarm2_emlight01 do stop
379 particle lock2_locklight01 do start
380 console_reset 11
381 }
382
383 #hit func of Pod2_TCL_1
384 func void Pod2_RTAlarm_A(string ai_name)
385 {
386 ai2_doalarm Pod2_TCL_1 11
387 }
388
389 #hit func of Pod2_TCL_2
390 func void Pod2_RTAlarm_B(string ai_name)
391 {
392 ai2_doalarm Pod2_TCL_2 11
393 }
394
395 #console11
396 func void Pod2_Alarm(string ai_name)
397 {
398 door_unlock 11
399 particle lock99_locklight02 do start
400 sleep 180
401 ai2_spawn Pod2_BOL_Alarm_1
402 ai2_spawn pod2_a_1
403 ai2_spawn pod2_a_2
404 ai2_setalert Pod2_TCL_1 high
405 ai2_setalert Pod2_TCL_2 high
406 ai2_setalert Pod2_BOS_1 high
407 ai2_dopath Pod2_TCL_1 Pod2_End_TCL_1
408 ai2_dopath Pod2_TCL_2 Pod2_End_TCL_2
409 ai2_dopath Pod2_BOS_1 Pod2_End_BOS_1
410 ai2_dopath Pod2_Sci_1 Pod2_End_Sci_1
411 ai2_setjobstate Pod2_TCL_1
412 ai2_setjobstate Pod2_TCL_2
413 ai2_setjobstate Pod2_BOS_1
414 ai2_setjobstate Pod2_Sci_1
415 ai2_tripalarm 12 Konoko
416 particle lock2_locklight01 do stop
417 particle alarm2_emlight01 do start
418 door_lock 28
419 door_lock 29
420 door_lock 30
421 door_lock 31
422 console_reset 2
423 Pod_Alarm_Sound
424 }
425
426 func void Pod_Alarm_Sound(void)
427 {
428 sound_ambient_start alarm_loop
429 sleep 900
430 sound_ambient_stop alarm_loop
431 }
432
433 #tv3 - huge box in front of door 28, door 29, door 30 and door 31
434 func void Pod3_Setup(string ai_name)
435 {
436 ai2_spawn Pod3_BOS_1
437 ai2_spawn Pod3_BOS_2
438 ai2_spawn Pod3_BOL_1
439 trigvolume_enable Kerr_trig 1
440 }
441
442 #tv44 - in front of door 35 (func: lab3_start); I've disabled it
443 #tv46 - after of door 35 (enter func: lab3_stop); I've disabled it
444 #tv48 - in front of door 34 (func: lab3_start); I've disabled it
445 #tv47 - after of door 34 (enter func: lab3_stop); I've disabled it
446 #tv50 - in front of door 33 (func: lab3_start); I've disabled it
447 #tv45 - after of door 33 (enter func: lab3_stop); I've disabled it
448 #tv49 - in front of door 32 (func: lab3_start); I've disabled it
449 #tv43 - after of door 32 (enter func: lab3_stop); I've disabled it
450 #tv9 - huge box from after door 33 and door 34 to the end of the room, where you find Kerr (no funcs); not used
451 #tv75 - in front of door 59 (func KerrSpawn); I've disabled it
452
453 #tv67 - complete room after door 59
454 func void Kerr(void)
455 {
456 trigvolume_enable Kerr_trig 0
457 if(save_point eq 3)
458 {
459 particle lab3 do start
460 load_s3
461 }
462 else console_activate 13
463 }
464
465 func void patrolscript0009(string ai_name)
466 {
467 patrolscript0010
468 }
469
470 func void patrolscript0010 (string ai_name)
471 {
472 particle lock99_locklight02 do start
473 door_unlock 11
474 sleep 540
475 particle lock99_locklight02 do stop
476 door_lock 11
477 }
478
479 ##########
480 ### SP3 ###
481 ##########
482
483 #console13
484 func void Kerr_Console(string ai_name)
485 {
486 give_powerup hypo 2
487 if(save_point ne 3) save_game 3 autosave
488 trig_deactivate 2
489 load_s3
490 particle lock1_locklight01 do stop
491 particle lock2_locklight01 do stop
492 door_lock 28
493 door_lock 29
494 door_lock 30
495 door_lock 31
496 particle lab1 do stop
497 particle lab2 do stop
498 }
499
500 func void load_s3(void)
501 {
502 particle lock4_locklight02 do start
503 door_unlock 58
504 objective_set 2 silent
505 target_set 366 30
506 }
507
508 #tv4 - on the gangway in front of door 58
509 func void Setup_Lab(string ai_name)
510 {
511 ai2_spawn CS_ScanOps01
512 ai2_spawn LabHall_BOL_1
513 ai2_spawn LabHall_BOL_2
514 ai2_spawn LabHall_BOL_3
515 ai2_spawn LabHall_BOL_4
516 ai2_spawn LabHall_BOL_5
517 ai2_spawn Hall_TCS_33
518 ai2_spawn Lab1_Sci_1
519 ai2_spawn Lab1_Sci_2
520 ai2_spawn Lab2_Sci_1
521 ai2_spawn Lab2_Sci_2
522 ai2_spawn Lab3_Sci_1
523 ai2_spawn Lab3_Sci_2
524 particle part1 do start
525 particle part2 do start
526 }
527
528 #tv52 - huge box after door 58 from the wall to the stairs; 1st and 2nd floor (enter func: part1_begin, leave func: part1_stop); I'vedisabled it
529 #tv51 - after tv52 (enter func: part2_start, leave func: part2_stop); I'vedisabled it
530 #tv14 - in front of door 6 and door 7 (func: spawn_kerr); I've disabled it
531 #tv71 - in front of door 7 (no func); I've disabled it
532 #tv73 - in front of door 7 (func: play_vat_monologue); I've disabled it
533 #tv69 - in front of door 6 (no func); I've disabled it
534 #tv74 - in front of door 6 (func: play_vat_monologue); I've disabled it
535 #tv68 - complete scan lab (no func); I've disabled it
536
537 #console5
538 func void Lab_Console_3(string ai_name)
539 {
540 ai2_spawn lab_BOS_3
541 ai2_tripalarm 1 Konoko
542 particle lock5c_locklight01 do start
543 particle labalarm3 do start
544 door_check
545 }
546
547 #console4
548 func void Lab_Console_2(string ai_name)
549 {
550 ai2_spawn lab_BOS_2
551 ai2_tripalarm 1 Konoko
552 particle lock5b_locklight01 do start
553 particle labalarm2 do start
554 door_check
555 }
556
557 #console3
558 func void Lab_Console_1(string ai_name)
559 {
560 ai2_spawn lab_BOS_1
561 ai2_tripalarm 1 Konoko
562 particle lock5a_locklight01 do start
563 particle labalarm1 do start
564 door_check
565 }
566
567 func void door_check(void)
568 {
569 var_counter = var_counter + 1
570 if(var_counter eq 1)
571 {
572 particle lock4_locklight02 do stop
573 door_lock 58
574 target_set 1009 30
575 particle lab3 do stop
576 }
577 if(var_counter eq 3)
578 {
579 door_unlock 6
580 door_unlock 7
581 var_counter = 0
582 }
583 }
584
585 ##########
586 ### SP4 ###
587 ##########
588
589 #tv11 - complete scan lab
590 func void scanner_start(void)
591 {
592 trigvolume_enable trigger_volume_13 0
593 if(save_point eq 4)
594 {
595 ai2_spawn CS_ScanOps01
596 particle lock5a_locklight01 do start
597 particle lock5b_locklight01 do start
598 particle lock5c_locklight01 do start
599 door_unlock 6
600 door_unlock 7
601 console_deactivate 3
602 console_deactivate 4
603 console_deactivate 5
604 particle part1 do start
605 particle part2 do start
606 }
607 else save_game 4 autosave
608 objective_set 3 silent
609 target_set 346 30
610 sleep 1
611 sound_music_start mus_xtr1 0.7
612 }
613
614 #lose func of CS_ScanOps01
615 func void play_vat_monologue(string ai_name)
616 {
617 var_counter = var_counter + 1
618 if(var_counter eq 1) sound_dialog_play c13_66_01konoko
619 }
620
621 #console14
622 func void Lab_Unlock_Door_5(string ai_name)
623 {
624 particle lock6_locklight02 do start
625 door_unlock 1
626 trigvolume_enable chase_trigger 1
627 trigvolume_enable Setup_Security_Trig 1
628 ai2_spawn Scan_BOS_1
629 ai2_spawn Scan_BOS_2
630 ai2_spawn Scan_BOS_3
631 ai2_spawn Scan_BOS_4
632 chr_teleport LabHall_BOL_5 272
633 chr_teleport Hall_TCS_33 7018
634 ai2_forget LabHall_BOL_5
635 ai2_forget Hall_TCS_33
636 ai2_dopath LabHall_BOL_1 Scan_BOL_1
637 ai2_dopath LabHall_BOL_2 Scan_BOL_2
638 ai2_dopath LabHall_BOL_3 Scan_BOL_3
639 ai2_dopath LabHall_BOL_4 Scan_BOL_4
640 ai2_dopath LabHall_BOL_5 Scan_BOL_5
641 ai2_dopath Hall_TCS_33 Scan_Hall_TCS_33
642 ai2_setjobstate LabHall_BOL_1
643 ai2_setjobstate LabHall_BOL_2
644 ai2_setjobstate LabHall_BOL_3
645 ai2_setjobstate LabHall_BOL_4
646 ai2_setjobstate Hall_TCS_33
647 fork get_her
648 }
649
650 func void get_her(string ai_name)
651 {
652 sleep 1800
653 ai2_tripalarm 5 Konoko
654 ai2_dopath LabHall_BOL_1 get_her_1
655 ai2_dopath LabHall_BOL_2 get_her_2
656 ai2_setjobstate LabHall_BOL_1
657 ai2_setjobstate LabHall_BOL_2
658 sleep 1800
659 ai2_tripalarm 7 Konoko
660 ai2_dopath LabHall_BOL_3 Scan_BOL_3
661 ai2_dopath LabHall_BOL_4 Scan_BOL_4
662 ai2_setjobstate LabHall_BOL_3
663 ai2_setjobstate LabHall_BOL_4
664 sleep 1800
665 ai2_tripalarm 9 Konoko
666 ai2_dopath Scan_BOS_1 get_her_1
667 ai2_dopath Scan_BOS_2 get_her_2
668 ai2_setjobstate Scan_BOS_1
669 ai2_setjobstate Scan_BOS_2
670 sleep 1800
671 ai2_tripalarm 11 Konoko
672 ai2_dopath Scan_BOS_3 get_her_3
673 ai2_dopath Scan_BOS_4 get_her_4
674 ai2_setjobstate Scan_BOS_3
675 ai2_setjobstate Scan_BOS_4
676 }
677
678 #tv80 - in some distance after door 3
679 func void chase_after_scan(string ai_name)
680 {
681 play_vat_monologue
682 ai2_dopath Scan_BOS_3 chase_after_3
683 ai2_dopath Scan_BOS_4 chase_after_4
684 ai2_setjobstate Scan_BOS_3
685 ai2_setjobstate Scan_BOS_4
686 ai2_tripalarm 11 Konoko
687 sleep 1200
688 ai2_dopath Scan_BOS_1 chase_after_1
689 ai2_dopath Scan_BOS_2 chase_after_2
690 ai2_setjobstate Scan_BOS_1
691 ai2_setjobstate Scan_BOS_2
692 ai2_tripalarm 9 Konoko
693 }
694
695 #tv12 - in front of door 1
696 func void Setup_Security(string ai_name)
697 {
698 trigvolume_enable Ambush_Trigger_1 1
699 ai2_spawn Sec_BOL_1
700 ai2_spawn Sec_BOS_1
701 ai2_spawn Sec_BOS_2
702 trig_activate 3
703 trig_activate 4
704 music_stop
705 }
706
707 #console86
708 func void Unlock_Door_7(string ai_name)
709 {
710 particle lock7_locklight02 do start
711 door_unlock 54
712 target_set 360 30
713 var_counter = 0
714 }
715
716 #tv5 - in the middle between door 54 and door 36
717 func void Sec_Ambush_1(string ai_name)
718 {
719 fork remove_ai
720 trig_deactivate 3
721 trig_deactivate 4
722 turret_deactivate 2
723 turret_deactivate 3
724 particle lock8_locklight02 do start
725 door_unlock 36
726 door_unlock 37
727 particle lock7_locklight02 do stop
728 door_lock 54
729 ai2_spawn Sec_Ambush_BOS_1
730 ai2_spawn Sec_Ambush_BOL_1
731 ai2_attack Sec_Ambush_BOS_1 Konoko
732 ai2_attack Sec_Ambush_BOL_1 Konoko
733 sleep 120
734 particle lock8_locklight02 do stop
735 door_lock 36
736 particle part1 do stop
737 particle part2 do stop
738 }
739
740 #tv72 - in front of door 36 (func: closethedoor); I've disabled it
741
742 #tv6 - in front of tv72
743 func void Setup_Final(string ai_name)
744 {
745 ai2_spawn Final_BOS_1
746 ai2_spawn Final_BOL_1
747 ai2_spawn Final_Thug_1
748 ai2_spawn Final_Thug_2
749 }
750
751 #lose func of Sec_Ambush_BOS_1
752 func void nextwave_1(string ai_name)
753 {
754 nextwave_2
755 }
756
757 #lose func of Sec_Ambush_BOS_2
758 func void nextwave_2(string ai_name)
759 {
760 var_counter = var_counter + 1
761 if(var_counter eq 2)
762 {
763 particle vat1 do start
764 particle vat2 do start
765 particle vat3 do start
766 particle vat4 do start
767 particle lock8_locklight02 do start
768 door_unlock 36
769 door_unlock 37
770 ai2_spawn Sec_Ambush_BOS_2
771 ai2_spawn Sec_Ambush_BOL_2
772 ai2_attack Sec_Ambush_BOS_2 Konoko
773 ai2_attack Sec_Ambush_BOL_2 Konoko
774 var_counter = 0
775 }
776 }
777
778 #tv13 - in the middle of the next room, from left to right
779 func void set_objective_4(string chr_index)
780 {
781 objective_set 4 silent
782 target_set 222 30
783 }
784
785 #tv57 - in some distance in front of door 37 (func: vat1_start); I've disabled it
786
787 #tv56 - after door 37
788 func void BeginVat(void)
789 {
790 sound_dialog_play c13_66_02konoko
791 ai2_attack Final_BOL_1 Konoko
792 }
793
794 #tv79 - in front of tv58
795 func void mid_guards(string ai_name)
796 {
797 ai2_spawn Final_BOL_2
798 ai2_spawn Final_Thug_9
799 ai2_attack Final_BOL_2 Konoko
800 }
801
802 #tv58 - in front of tv62 (func: vat2_stop); I've disabled it
803 #tv62 - in front of door 38 and door 39 (func: vat2_start); I've disabled it
804
805 #tv18 - complete room, where you find console7
806 func void CraneTalk(void)
807 {
808 sound_dialog_play c13_66_03konoko
809 }
810
811 #console7 and console8
812 func void FTS(string ai_name)
813 {
814 var_counter = var_counter + 1
815 if(var_counter eq 2) console_activate 9
816 }
817
818 #tv60 - in front of door 42 and door 43 (func: vat1_start); I've disabled it
819 #tv59 - after door 42 and door 43 (func: vat1_stop); I've disabled it
820 #tv61 - in front of tv64 (func: vat3_stop); I've disabled it
821 #tv64 - in front of door 44 and door 45 (func: vat3_start); I've disabled it
822
823 #tv76 - in front of tv63
824 func void end_guards(string ai_name)
825 {
826 ai2_spawn end_guard_1
827 ai2_spawn end_guard_2
828 ai2_spawn Final_Thug_10
829 }
830
831 #tv63 - in front of door 48 and door 49 (func: vat2_start); I've disabled it
832 #tv65 - after door 48 and door 49 (func: vat2_stop); I've disabled it
833 #tv77 - complete last platform (no func); I've disabled it
834 #tv78 - complete last platform (func: check_outro); I've disabled it
835 #tv7 - complete last platform (no func); I've disabled it
836 #tv8 - after door 51 (no func); I've disabled it
837 #tv18 - at the end of the last platform, in front of the crusher (func: vat3_start); I've disabled it
838 #tv66 - after tv18 (func: vat3_stop); I've disabled it
839
840 #console9
841 func void final_check_for_crane(string ai_name)
842 {
843 fade_out 0 0 0 30
844 sleep 30
845 win
846 }
847
848 ### ACID FUNCTIONS ###
849
850 #tv10 - 1st acid basin
851 func void Acid01(string character)
852 {
853 var_counter2 = 1
854 acid(character)
855 }
856
857 #tv15 - 2nd acid basin
858 func void Acid02(string character)
859 {
860 var_counter2 = 2
861 acid(character)
862 }
863
864 #tv16 - 3rd acid basin
865 func void Acid03(string character)
866 {
867 var_counter2 = 3
868 acid(character)
869 }
870
871 #tv53 - 4th acid basin
872 func void acid04(string character)
873 {
874 var_counter2 = 4
875 acid(character)
876 }
877
878 func void acid(string character)
879 {
880 if(chr_is_player(character) eq 1)
881 {
882 chr_animate(character, KONOKOacid);
883 input 0
884 if(var_counter2 eq 1) cm_interpolate AcidCam01 500
885 if(var_counter2 eq 2) cm_interpolate AcidCam01 400
886 if(var_counter2 eq 3) cm_interpolate AcidCam01 200
887 if(var_counter2 eq 4) cm_interpolate AcidCam01 0
888 sleep 5
889 chr_invincible(character, 1);
890 if(var_counter2 eq 1) sleep 525
891 if(var_counter2 eq 2) sleep 430
892 if(var_counter2 eq 3) sleep 230
893 if(var_counter2 eq 4) sleep 40
894 trigvolume_enable LastVat 0
895 chr_animate(character, KONOKOlev14_grinder);
896 chr_envanim(character, GrinderKonBox01, norotation);
897 sleep 60
898 sound_ambient_start c13_47_11_bonecrunch
899 sleep 10
900 sound_impulse_play konoko_gruesome_death
901 sleep 75
902 }
903 else
904 {
905 chr_animate(character, KONOKOacid);
906 sleep 10
907 }
908 chr_set_health(character, 0);
909 }
910
911 #####################
912 ### TEXT CONSOLES ###
913 #####################
914
915 func void level_14a(void)
916 {
917 text_console level_14a
918 console_reset 12
919 }
920
921 func void level_14b(void)
922 {
923 text_console level_14b
924 console_reset 6
925 }