ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/tctf_ii/tctf2.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 20897 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) restore_game
36 if(save_point eq 4) restore_game
37 if(save_point eq 5) restore_game
38 sleep 5
39 fork sp_all
40 }
41
42 func void deactivate_stuff(void)
43 {
44 #not used
45 trigvolume_enable shinzom_voice1 0
46 trigvolume_enable shinzom_voice2 0
47 trigvolume_enable shinzom_voice3 0
48 trigvolume_enable shinzom_voice4 0
49 trigvolume_enable trigger_volume_03 0
50 trigvolume_enable trigger_volume_04 0
51 trigvolume_enable trigger_volume_04_copy 0
52 trigvolume_enable trigger_volume_04_copy_copy 0
53 trigvolume_enable trigger_volume_05 0
54 trigvolume_enable trigger_volume_07b 0
55 trigvolume_enable trigger_volume_10 0
56 trigvolume_enable trigger_volume_12 0
57 trigvolume_enable trigger_volume_14 0
58 trigvolume_enable trigger_volume_16 0
59 trigvolume_enable trigger_volume_20 0
60 trigvolume_enable trigger_volume_34 0
61 trigvolume_enable trigger_volume_37 0
62 trigvolume_enable trigger_volume_38 0
63 trigvolume_enable trigger_volume_41 0
64 trigvolume_enable trigger_volume_44 0
65 trigvolume_enable trigger_volume_45 0
66 trigvolume_enable trigger_volume_46 0
67 trigvolume_enable trigger_volume_49 0
68 trigvolume_enable trigger_volume_51 0
69 trigvolume_enable trigger_volume_52 0
70 trigvolume_enable trigger_volume_54 0
71 trigvolume_enable trigger_volume_55 0
72 trigvolume_enable trigger_volume_56 0
73 trigvolume_enable trigger_volume_57 0
74 trigvolume_enable trigger_volume_61 0
75 trigvolume_enable trigger_volume_67 0
76 trig_deactivate 10
77 trig_deactivate 91
78 trig_deactivate 92
79 trig_deactivate 93
80 trig_deactivate 94
81 trig_deactivate 910
82 trig_deactivate 210
83 trig_deactivate 310
84 trig_deactivate 410
85 trig_deactivate 510
86 trig_deactivate 214
87 trig_deactivate 314
88 trig_deactivate 414
89 trig_deactivate 514
90 trig_deactivate 2101
91 trig_deactivate 3101
92 trig_deactivate 4101
93 trig_deactivate 5101
94 env_show 403 0
95 env_show 1010 0
96 door_lock 4
97 door_lock 5
98 door_lock 6
99 door_lock 7
100 door_lock 8
101 door_lock 9
102 console_deactivate 3
103 console_deactivate 399
104 console_deactivate 400
105 console_deactivate 401
106 console_deactivate 402
107 #used
108 trigvolume_enable trigger_volume_06 0
109 trigvolume_enable trigger_volume_29 0
110 trigvolume_enable trigger_volume_35 0
111 trigvolume_enable trigger_volume_39 0
112 if(save_point ne 0 and save_point ne 1) deactivate_sp1
113 if(save_point ne 2) deactivate_sp2
114 if(save_point ne 3) deactivate_sp3
115 env_shade 321 325 .3 .3 .3
116 env_show 171 0
117 env_show 172 0
118 env_show 173 0
119 env_show 174 0
120 door_lock 42
121 }
122
123 func void deactivate_sp1(void)
124 {
125 trig_deactivate 60
126 trig_deactivate 61
127 trig_deactivate 62
128 trig_deactivate 63
129 trig_deactivate 64
130 trig_deactivate 65
131 trig_deactivate 70
132 trig_deactivate 71
133 trig_deactivate 72
134 trig_deactivate 73
135 trig_deactivate 74
136 trig_deactivate 75
137 }
138
139 func void deactivate_sp2(void)
140 {
141 trig_deactivate 6
142 trig_deactivate 7
143 trig_deactivate 98
144 trig_deactivate 99
145 }
146
147 func void deactivate_sp3(void)
148 {
149 trig_deactivate 1
150 trig_deactivate 2
151 trig_deactivate 3
152 trig_deactivate 4
153 trig_deactivate 5
154 trig_deactivate 8
155 trig_deactivate 100
156 trig_deactivate 101
157 trig_deactivate 302
158 trig_deactivate 303
159 trig_deactivate 315
160 trig_deactivate 320
161 trig_deactivate 500
162 trig_deactivate 501
163 trig_deactivate 502
164 trig_deactivate 503
165 trig_deactivate 400
166 trig_deactivate 510
167 trig_deactivate 511
168 trig_deactivate 512
169 trig_deactivate 520
170 trig_deactivate 521
171 trig_deactivate 522
172 }
173
174 func void you_lose(string ai_name)
175 {
176 fade_out 0 0 0 30
177 sleep 30
178 lose
179 }
180
181 ####################################
182 ### SEVERAL TIMES USED FUNCTIONS ###
183 ####################################
184
185 func void sp_all(void)
186 {
187 co_message_display = 0
188 if(save_point eq 1) save_game 1 autosave
189 if(save_point eq 2) save_game 2 autosave
190 if(save_point eq 3) save_game 3 autosave
191 if(save_point eq 4) save_game 4 autosave
192 if(save_point eq 5) save_game 5 autosave
193 sleep 180
194 co_message_display = 1
195 }
196
197 func void remove_ai(void)
198 {
199 ai2_kill
200 sleep 60
201 powerup_reset
202 weapon_reset
203 sleep 240
204 corpse_reset
205 }
206
207 func void music_stop(void)
208 {
209 sound_music_stop mus_main03
210 sound_music_stop mus_wls
211 sound_music_stop mus_trt
212 sound_music_stop mus_sv
213 }
214
215 ##########
216 ### SP1 ###
217 ##########
218
219 func void intro(void)
220 {
221 particle roof_doors_locklight01 do start
222 particle griffin_locklight01 do start
223 door_unlock 61
224 door_unlock 67
225 door_unlock 71
226 chr_teleport 0 19
227 chr_inv_reset 0
228 ai2_spawn l1
229 ai2_spawn l3
230 ai2_spawn l7
231 ai2_spawn A_L8
232 ai2_spawn A_L12
233 ai2_spawn A_L18
234 ai2_spawn A_L19
235 ai2_spawn A_Lbo13
236 objective_set 1 silent
237 target_set 590 30
238 sleep 1
239 sound_music_start mus_main03 1.0
240 }
241
242 #tv1 - the complete volume between the doors 61, 63, 67 and 68
243 func void t2(string ai_name)
244 {
245 trigvolume_enable trigger_volume_61 0
246 ai2_spawn n5
247 ai2_spawn A_Sbo14
248 ai2_dopath A_Sbo14 patrol_14
249 ai2_setjobstate A_Sbo14
250 ai2_spawn A_Sbo15
251 sleep 30
252 ai2_dopath A_Sbo15 patrol_14
253 ai2_setjobstate A_Sbo15
254 music_stop
255 }
256
257 #neutral func of n5
258 func void outta_sight(string ai_name)
259 {
260 ai2_dopath n5 patrol_99
261 ai2_setjobstate n5
262 }
263
264 #tv61 - at the same place as tv1 (entry func: t61); I've disabled it
265
266 #console 5
267 func void roof(string ai_name)
268 {
269 trigvolume_enable trigger_volume_06 1
270 particle roof_locklight01 do start
271 ai2_spawn A_T25
272 }
273
274 #console 12
275 func void roof_door2(string ai_name)
276 {
277 particle roof_door2_locklight01 do start
278 ai2_spawn A_n17
279 ai2_dopath A_n17 patrol_16
280 ai2_setjobstate A_n17
281 }
282
283 #tv3 - long box behind door 63 and the windows (entry func: t4); I've disabled it
284 #tv4 - long box behind door 68 and the windows (entry func: t4); I've disabled it
285 #tv66 - long box behind the windows on the elevator side (entry func: t4); I've disabled it
286 #tv67 - long box behind the windows on the opposite side of tv66 (entry func: t4); I've disabled it
287 #tv2 - after door 59 (entry func: t3); I've disabled it
288
289 #tv5 - after door 58
290 func void t6(string ai_name)
291 {
292 ai2_spawn A_L20
293 ai2_spawn A_L21
294 target_set 593 30
295 trig_activate 6
296 }
297
298 ##########
299 ### SP2 ###
300 ##########
301
302 #tv46 - on the platform between the stairs to the hall
303 func void s2(string ai_name)
304 {
305 if(save_point eq 2)
306 {
307 objective_set 1 silent
308 target_set 593 30
309 }
310 else
311 {
312 fork remove_ai
313 save_game 2 autosave
314 particle roof_locklight01 do stop
315 door_lock 59
316 trig_activate 7
317 trig_activate 98
318 trig_activate 99
319 deactivate_sp1
320 }
321 particle shin_lock_locklight01 do start
322 door_unlock 14
323 door_unlock 48
324 ai2_spawn B_S22
325 }
326
327 ### HALL - 2ND FLOOR ###
328
329 #tv6 - near the end of the stairs
330 func void t7(string ai_name)
331 {
332 ai2_dopath B_S22 patrol_23
333 ai2_setjobstate B_S22
334 ai2_spawn B_N28
335 ai2_dopath B_N28 patrol_42
336 ai2_setjobstate B_N28
337 ai2_spawn B_Lbo26
338 playback_block B_Lbo26 run1 interp 20
339 sleep 20
340 ai2_dopath B_Lbo26 patrol_27
341 ai2_setjobstate B_Lbo26
342 }
343
344 #hit func of B_S22
345 func void B_S22_run (string ai_name)
346 {
347 ai2_dopath B_S22 patrol_24
348 ai2_setjobstate B_S22
349 }
350
351 func void patrolscript0001(void)
352 {
353 playback_block B_S22 taunt1 interp 20
354 }
355
356 #tv12 - at the same place as tv6 (entry func: t7b); Ive disabled it
357
358 #tv7 - after door 54 and the window next to it
359 func void t8(string ai_name)
360 {
361 ai2_spawn B_L41
362 ai2_spawn B_S36
363 ai2_makeignoreplayer B_S36 0
364 ai2_spawn B_S37
365 ai2_makeignoreplayer B_S37 0
366 ai2_spawn B_Sbo38
367 ai2_makeignoreplayer B_Sbo38 0
368 sound_music_start mus_wls 1.0
369 sound_dialog_play c14_54_24konoko
370 sound_dialog_play_block pause
371 objective_set 2 silent
372 }
373
374 #tv59 - behind door 56 and the window next to it
375 func void t59(string ai_name)
376 {
377 ai2_spawn B_L30
378 ai2_spawn B_L95
379 ai2_spawn B_Lbo27
380 }
381
382 #tv11 - after the right furniture in the room with door 64 (entry func: t12); I've disabled it
383
384 #tv37 - on the platform between the stairs
385 func void t43(string ai_name)
386 {
387 ai2_spawn B_S29
388 ai2_spawn B_S43
389 ai2_spawn B_S96
390 }
391
392 ### HALL - 1ST FLOOR ###
393
394 #tv68 - behind door 60 and the window next to it (entry func: t67); I've disabled it
395 #tv8 - behind door 55 and the window next to it (entry func: t10); I've disabled it
396 #tv34 - in front of door 50 and the window next to it (entry func: t38); I've disabled it
397
398 #tv60 - on the platform between the stairs
399 func void t60(string ai_name)
400 {
401 ai2_spawn B_C32
402 ai2_spawn B_C33
403 ai2_spawn B_C34
404 }
405
406 ### HALL - GROUND FLOOR ###
407
408 #tv9 - after door 48
409 func void t11(string ai_name)
410 {
411 trigvolume_enable trigger_volume_11_copy 0
412 t11_funcs
413 }
414
415 #tv25 - big volume on the ground
416 func void t11b(string ai_name)
417 {
418 trigvolume_enable trigger_volume_11 0
419 t11_funcs
420 }
421
422 func void t11_funcs(void)
423 {
424 ai2_dopath B_S36 patrol_38
425 ai2_setjobstate B_S36
426 ai2_spawn B_Lbo76
427 ai2_spawn B_C32
428 ai2_spawn B_C33
429 ai2_spawn B_C34
430 music_stop
431 }
432
433 #tv69 - in front of the wall with the high window next to door 48
434 func void t68(string ai_name)
435 {
436 ai2_spawn mbo_femcop
437 }
438
439 #tv40 - after door 14 (no funcs); I've disabled it
440 #tv42 - on the platform between the stairs (entry func: t45); I've disabled it
441
442 ##########
443 ### SP3 ###
444 ##########
445
446 #tv44 - at the same place as tv42
447 func void save3_and_spine(string ai_name)
448 {
449 if(save_point eq 3) objective_set 2 silent
450 else
451 {
452 fork remove_ai
453 save_game 3 autosave
454 particle shin_lock_locklight01 do stop
455 door_lock 14
456 deactivate_sp2
457 trig_activate 1
458 trig_activate 2
459 trig_activate 3
460 trig_activate 4
461 trig_activate 5
462 trig_activate 8
463 trig_activate 100
464 trig_activate 101
465 trig_activate 302
466 trig_activate 303
467 trig_activate 400
468 trig_activate 500
469 trig_activate 501
470 trig_activate 502
471 trig_activate 503
472 trig_activate 510
473 trig_activate 511
474 trig_activate 512
475 trig_activate 520
476 trig_activate 521
477 trig_activate 522
478 trig_activate 315
479 trig_activate 320
480 }
481 ai2_spawn C_C47
482 ai2_spawn C_C65
483 ai2_spawn C_L50
484 ai2_spawn C_L51
485 ai2_spawn C_N48
486 ai2_spawn C_N55
487 ai2_spawn C_N60
488 ai2_spawn C_Sbo44
489 ai2_spawn C_Sbo93
490 ai2_makeignoreplayer C_C65 1
491 ai2_makeignoreplayer C_L50 1
492 ai2_makeignoreplayer C_L51 1
493 ai2_makeignoreplayer C_N55 1
494 particle spine1 do start
495 particle spine2 do start
496 particle spine3 do start
497 particle spinesound1 do start
498 particle spinesound2 do start
499 particle spinesound3 do start
500 target_set 587 30
501 sleep 1
502 sound_music_start mus_trt 0.8
503 }
504
505 #tv39 - in some diastance after tv44 (entry func: t45b); I've disabled it
506
507 ### ATRIUM - 7TH FLOOR ###
508
509 #tv13 - in the middle between the end of the stairs and the entrance of the room with console 10 (entry func: t14); I've disabled it
510 #tv49 - medium volume around console 10 (no funcs); I've disabled it
511
512 #neutral func of C_N48
513 func void patrolscript0098(string ai_name)
514 {
515 ai2_doalarm C_N48 10
516 }
517
518 #tv48 - in front of console 10
519 func void t40(string ai_name)
520 {
521 trigvolume_enable trigger_volume_40 0
522 var_counter = 1
523 check_consoles
524 }
525
526 #console 10
527 func void powersub1(string ai_name)
528 {
529 if(var_counter eq 0)
530 {
531 trigvolume_enable trigger_volume_40 0
532 var_counter2 = var_counter2 + 1
533 }
534 var_counter3 = var_counter3 + 1
535 particle spine1 do stop
536 particle spinesound1 do stop
537 if(var_counter3 eq 1 or var_counter3 eq 101) target_set 594 30
538 if(var_counter3 eq 11) target_set 595 30
539 if(var_counter3 eq 111) power_off
540 }
541
542 #tv14 at the beginning of the ramp
543 func void t15(string ai_name)
544 {
545 ai2_lookatme C_L51
546 ai2_dopath C_L51 patrol_51
547 ai2_setjobstate C_L51
548 ai2_makeignoreplayer C_L51 0
549 sleep 90
550 ai2_lookatme C_L50
551 ai2_dopath C_L50 patrol_50
552 ai2_setjobstate C_L50
553 ai2_makeignoreplayer C_L50 0
554 }
555
556 ### ATRIUM - 6TH FLOOR ###
557
558 #tv15 - long box along in front of the windows and the entrance of the first room (entry func: t16); I've disabled it
559
560 #tv58 - long box behind the windows and the entrance of the second room
561 func void t58(string ai_name)
562 {
563 ai2_spawn C_Lbo53
564 ai2_spawn C_Sbo52
565 }
566
567 ### ATRIUM - 5TH FLOOR ###
568
569 #tv16 - in the first room around C_N55
570 func void t17(string ai_name)
571 {
572 ai2_makeignoreplayer C_N55 0
573 ai2_spawn C_Sbo56
574 }
575
576 #tv17 - long box behind the windows and the entrance of the second room
577 func void t18(string ai_name)
578 {
579 ai2_spawn C_S57
580 }
581
582 ### ATRIUM - 4TH FLOOR ###
583
584 #18 - around the entrance to the room with console 9
585 func void t19(string ai_name)
586 {
587 ai2_spawn C_S58
588 ai2_spawn C_S59
589 }
590
591 #tv53 - medium volume around console 9 (no funcs); I've disabled it
592
593 #tv52 - in front of console 9
594 func void t53(string ai_name)
595 {
596 trigvolume_enable trigger_volume_53 0
597 check_consoles
598 }
599
600 #console 9
601 func void powersub3(string ai_name)
602 {
603 var_counter3 = var_counter3 + 10
604 particle spine3 do stop
605 particle spinesound3 stop
606 if(var_counter3 eq 10 or var_counter3 eq 110) target_set 587 30
607 if(var_counter3 eq 11) target_set 595 30
608 if(var_counter3 eq 111) power_off
609 }
610
611 ### ATRIUM - 3RD FLOOR ###
612
613 #neutral func of C_N60
614 func void t20(string ai_name)
615 {
616 ai2_spawn C_Lbo62
617 ai2_spawn C_Sbo61
618 }
619
620 #tv51 - medium volume around console 8 (no funcs); I've disabled it
621
622 #tv50 - in front of console 8
623 func void t50(string ai_name)
624 {
625 trigvolume_enable trigger_volume_50 0
626 check_consoles
627 }
628
629 func void check_consoles(void)
630 {
631 var_counter2 = var_counter2 + 1
632 if(var_counter2 eq 1) sound_dialog_play c14_54_25konoko
633 if(var_counter2 eq 2) sound_dialog_play c14_54_26konoko
634 if(var_counter2 eq 3) sound_dialog_play c14_54_27konoko
635 }
636
637 #console 8
638 func powersub2(string ai_name)
639 {
640 var_counter3 = var_counter3 + 100
641 particle spine2 do stop
642 particle spinesound2 do stop
643 if(var_counter3 eq 100 or var_counter3 eq 101) target_set 594 30
644 if(var_counter3 eq 110) target_set 587 30
645 if(var_counter3 eq 111) power_off
646 }
647
648 func void power_off(void)
649 {
650 particle door42_locklight01 do start
651 door_unlock 42
652 deactivate_sp3
653 objective_set 3 silent
654 target_set 403 30
655 music_stop
656 }
657
658 ### ATRIUM - 2ND FLOOR ###
659
660 #tv19 - after the entrance to the first room
661 #tv70 - behind the windows of the first room
662 func void t21(string ai_name)
663 {
664 ai2_spawn C_Sbo63
665 ai2_spawn C_Sbo64
666 }
667
668 #tv21 - at the beginning of the stairs down to the ground floor
669 #tv22 - in the free middle of the atrium between the first and second floor; if you fall or jump down, you'll trigger it off
670 func void t23(string ai_name)
671 {
672 ai2_spawn C_L71
673 ai2_spawn C_S72
674 }
675
676 #tv20 - long box behind the windows and the entrance of the second room
677 func void t22(string ai_name)
678 {
679 ai2_makeignoreplayer C_C65 0
680 }
681
682 ### ATRIUM - 1ST FLOOR ###
683
684 #nothing
685
686 ### ATRIUM - GROUND FLOOR ###
687
688 #nothing
689
690 ##########
691 ### SP4 ###
692 ##########
693
694 #tv43 - after door 42
695 func void s4(string ai_name)
696 {
697 if(save_point eq 4) objective_set 3 silent
698 else
699 {
700 fork remove_ai
701 save_game 4 autosave
702 var_counter = 0
703 var_counter2 = 0
704 var_counter3 = 0
705 }
706 ai2_spawn C_N74
707 target_set 596 30
708 sleep 90
709 }
710
711 #tv36 - at the same place as tv43 (entry func: t41); I've disabled it
712
713 ### ENTRANCE HALL - 3RD FLOOR ###
714
715 #tv23 - after door 41
716 func void t25(string ai_name)
717 {
718 ai2_spawn D_C70
719 ai2_spawn D_Sbo71
720 ai2_spawn D_Sbo72
721 ai2_spawn D_Sbo73
722 ai2_spawn D_Sbo75
723 ai2_spawn D_N76
724 }
725
726 #tv33 - after door 46 (entry func: t37); I've disabled it
727
728 #console 7
729 func void floor4_lock(string ai_name)
730 {
731 trigvolume_enable trigger_volume_39 1
732 particle floor4_lock_locklight01 do start
733 particle stair_lock_locklight01 do start
734 }
735
736 #tv24 - in the passage to the room with the neutral, who gives you a Scramble Cannon (w7_scc)
737 func void t26(string ai_name)
738 {
739 ai2_spawn D_L74
740 ai2_spawn new_1
741 }
742
743 #neutral func of new_1
744 func void attack_konoko(string ai_name)
745 {
746 ai2_attack D_L74 A_player
747 }
748
749 #tv35 - in front of door 28
750 func void t39(string ai_name)
751 {
752 target_set 598 30
753 }
754
755 ### ENTRANCE HALL - 2ND FLOOR ###
756
757 #tv47 - after the end of the stairs to the second floor
758 func void t48(string ai_name)
759 {
760 ai2_spawn D_L91
761 ai2_spawn D_S90
762 ai2_spawn D_S89
763 ai2_spawn D_S101
764 ai2_spawn D_C100
765 ai2_spawn D_Sbo75
766 ai2_spawn D_Sbo92
767 }
768
769 #tv31 - after door 24 (entry func: t34); I've disabled it
770 #tv40 - on the footbridge (entry func: t44); I've disabled it
771
772 #console 2
773 func void lastdoor3(string ai_name)
774 {
775 particle lastdoor3_locklight01 do start
776 var_counter = var_counter + 1
777 if(var_counter eq 1 or var_counter eq 101) target_set 599 30
778 if(var_counter eq 11) target_set 597 30
779 if(var_counter eq 111) lastdoor_open
780 }
781
782 ### ENTRANCE HALL - 1ST FLOOR ###
783
784 #tv29 - after door 20
785 func void t31(string ai_name)
786 {
787 t32
788 }
789
790 #tv30 - on the footbridge
791 func void t32(string ai_name)
792 {
793 ai2_spawn D_S83
794 ai2_spawn D_S87
795 ai2_spawn D_L84
796 ai2_spawn D_L88
797 ai2_spawn D_Lbo85
798 ai2_spawn D_Sbo86
799 trigvolume_enable trigger_volume_31 0
800 trigvolume_enable trigger_volume_32 0
801 }
802
803 #console 13
804 func void lastdoor2(string ai_name)
805 {
806 particle lastdoor2_locklight01 do start
807 var_counter = var_counter + 10
808 if(var_counter eq 10 or var_counter eq 110) target_set 598 30
809 if(var_counter eq 11) target_set 597 30
810 if(var_counter eq 111) lastdoor_open
811 }
812
813 ### ENTRANCE HALL - GROUND FLOOR ###
814
815 #tv28 - after door 37
816 func void t30(string ai_name)
817 {
818 ai2_spawn D_L80
819 }
820
821 #tv26 - after door 32 (inside the room)
822 func void t28(string ai_name)
823 {
824 ai2_spawn D_S78
825 ai2_spawn D_S79
826 }
827
828 #console 11
829 func void lastdoor1(string ai_name)
830 {
831 particle lastdoor1_locklight01 do start
832 var_counter = var_counter + 100
833 if(var_counter eq 100 or var_counter eq 101) target_set 599 30
834 if (var_counter eq 110) target_set 598 30
835 if(var_counter eq 111) lastdoor_open
836 }
837
838 func void lastdoor_open(void)
839 {
840 trigvolume_enable trigger_volume_29 1
841 particle ZomShin_door_locklight01 do start
842 door_unlock 97
843 set_objective_4
844 target_set 401 30
845 }
846
847 #tv27 - after door 32 (outside of the room)
848 func void t29(string ai_name)
849 {
850 ai2_spawn D_Lbo81
851 ai2_spawn D_S82
852 }
853
854 #tv 41 - on the platform between the stairs to the torture chamber (entry func: t33); I've disabled it
855
856 #tv10 - in front of door 16
857 func void t9(string ai_name)
858 {
859 fork remove_ai
860 particle lastdoor1_locklight01 do stop
861 particle lastdoor2_locklight01 do stop
862 particle lastdoor3_locklight01 do stop
863 door_lock 97
864 target_set 1 0
865 spawn_griffin
866 }
867
868 func void spawn_griffin(void)
869 {
870 particle zombiesteam start
871 env_show 171 1
872 env_show 172 1
873 env_show 173 1
874 env_show 174 1
875 ai2_spawn ZomGrif
876 ai2_passive ZomGrif 1
877 chr_inv_reset ZomGrif
878 ai2_setmovementmode ZomGrif walk
879 playback ZomGrif ZomGrifDraw
880 fork check_health
881 }
882
883 ##########
884 ### SP5 ###
885 ##########
886
887 #tv45 - in some distance after door 16
888 func void t42(string ai_name)
889 {
890 if(save_point eq 5)
891 {
892 spawn_griffin
893 set_objective_4
894 target_set 1 0
895 }
896 else
897 {
898 save_game 5 autosave
899 door_lock 16
900 }
901 particle ZomShin_door_locklight01 do stop
902 sleep 1
903 sound_ambient_start zomshin_amb_loop 1.0
904 sound_music_start mus_sv 0.75
905 }
906
907 #tv55 - in front of console 402 (entry func: t55); I've disabled it
908 #tv64 - in front of the sector with console 402 (entry func: shinzom_voice3); I've disabled it
909 #tv56 - in front of console 401 (entry func: t56); I've disabled it
910 #tv63 - on the right next to console 401; Iguess, they've forgot to rotate it (entry func: shinzom_voice2); I've disabled it
911 #tv56 - in front of console 400 (entry func: t57); I've disabled it
912 #tv62 - in front of the sector with console 400 (entry func: shinzom_voice1); I've disabled it
913 #tv54 - in front of console 399 (entry func: t52); I've disabled it
914 #tv65 - in front of the sector with console 399 (entry func: shinzom_voice4); I've disabled it
915
916 func void check_health(void)
917 {
918 chr_set_health ZomGrif 100
919 chr_wait_health ZomGrif 99
920 trigvolume_enable trigger_volume_35 1
921 ui_suppress_prompt = 0
922 objective_set 5
923 chr_set_health ZomGrif 100
924 chr_wait_health ZomGrif 99
925 chr_set_health ZomGrif 250
926 ai2_passive ZomGrif 0
927 ai2_attack ZomGrif A_player
928 }
929
930 #tv32 - in front of the room, where Griffin waits
931 func void t35(string ai_name)
932 {
933 killed_griffen 0
934 fade_out 0 0 0 30
935 sleep 30
936 win
937 }
938
939 #lose func of ZomGrif
940 func void grifdies(string ai_name)
941 {
942 killed_griffen 1
943 fade_out 0 0 0 30
944 sleep 30
945 win
946 }
947
948 #####################
949 ### TEXT CONSOLES ###
950 #####################
951
952 func void console1(string ai_name)
953 {
954 text_console level_18c
955 console_reset 14
956 console_activate 14
957 }
958
959 func void console2(string ai_name)
960 {
961 text_console level_18d
962 console_reset 15
963 }
964
965 func void console_android(void)
966 {
967 text_console level_18b
968 console_reset 16
969 }
970
971 func void console_zombie(void)
972 {
973 text_console level_18a
974 console_reset 17
975 }
976
977 func void level_18e(string ai_name)
978 {
979 text_console level_18e
980 console_reset 1
981 console_activate 1
982 }