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) fork grif |
37 |
sleep 5 |
38 |
fork sp_all |
39 |
} |
40 |
|
41 |
func void deactivate_stuff(void) |
42 |
{ |
43 |
#not used |
44 |
trigvolume_enable trigger_volume_01 0 |
45 |
trigvolume_enable trigger_volume_01_copy 0 |
46 |
trigvolume_enable trigger_volume_01_copy2 0 |
47 |
trigvolume_enable trigger_volume_04 0 |
48 |
trigvolume_enable trigger_volume_04_copy 0 |
49 |
trigvolume_enable trigger_volume_04_copy_copy 0 |
50 |
trigvolume_enable trigger_volume_04_copy2 0 |
51 |
trigvolume_enable trigger_volume_09 0 |
52 |
trigvolume_enable trigger_volume_11 0 |
53 |
trigvolume_enable trigger_volume_15 0 |
54 |
trigvolume_enable trigger_volume_25 0 |
55 |
trigvolume_enable trigger_volume_26 0 |
56 |
trigvolume_enable trigger_volume_27 0 |
57 |
trigvolume_enable trigger_volume_44 0 |
58 |
trigvolume_enable trigger_volume_45 0 |
59 |
trigvolume_enable attack_1tv 0 |
60 |
door_lock 35 |
61 |
door_lock 36 |
62 |
door_lock 37 |
63 |
door_lock 39 |
64 |
door_lock 40 |
65 |
door_lock 41 |
66 |
#used |
67 |
trigvolume_enable trigger_volume_10 0 |
68 |
trigvolume_enable trigger_volume_12 0 |
69 |
trigvolume_enable trigger_volume_21 0 |
70 |
trigvolume_enable trigger_volume_21_copy 0 |
71 |
trigvolume_enable trigger_volume_31 0 |
72 |
trigvolume_enable trigger_volume_33 0 |
73 |
trigvolume_enable attack_2tv 0 |
74 |
trigvolume_enable attack_3tv 0 |
75 |
trigvolume_enable attack_3tv_copy 0 |
76 |
trigvolume_enable attack_4tv 0 |
77 |
env_shade 912 913 .4 .4 .4 |
78 |
env_show 911 0 |
79 |
env_show 914 0 |
80 |
env_show 915 0 |
81 |
env_show 916 0 |
82 |
env_show 151 0 |
83 |
env_show 152 0 |
84 |
env_show 153 0 |
85 |
env_show 154 0 |
86 |
env_show 155 0 |
87 |
env_show 156 0 |
88 |
env_show 157 0 |
89 |
env_show 158 0 |
90 |
env_show 159 0 |
91 |
env_show 251 0 |
92 |
env_show 252 0 |
93 |
env_show 253 0 |
94 |
env_show 254 0 |
95 |
env_show 255 0 |
96 |
env_show 256 0 |
97 |
env_show 257 0 |
98 |
env_show 258 0 |
99 |
env_show 259 0 |
100 |
} |
101 |
|
102 |
func void you_lose(string ai_name) |
103 |
{ |
104 |
fade_out 0 0 0 30 |
105 |
sleep 30 |
106 |
lose |
107 |
} |
108 |
|
109 |
#################################### |
110 |
### SEVERAL TIMES USED FUNCTIONS ### |
111 |
#################################### |
112 |
|
113 |
func void sp_all(void) |
114 |
{ |
115 |
co_message_display = 0 |
116 |
if(save_point eq 1) save_game 1 autosave |
117 |
if(save_point eq 2) save_game 2 autosave |
118 |
if(save_point eq 3) save_game 3 autosave |
119 |
if(save_point eq 4) save_game 4 autosave |
120 |
sleep 180 |
121 |
co_message_display = 1 |
122 |
} |
123 |
|
124 |
func void remove_ai(void) |
125 |
{ |
126 |
ai2_kill |
127 |
sleep 60 |
128 |
weapon_reset |
129 |
powerup_reset |
130 |
sleep 240 |
131 |
corpse_reset |
132 |
} |
133 |
|
134 |
func void music_stop(void) |
135 |
{ |
136 |
sound_music_stop mus_om01 |
137 |
sound_music_stop mus_main03_hd |
138 |
sound_music_stop mus_asianb |
139 |
} |
140 |
|
141 |
#tv38 and tv40 |
142 |
func void deathfall(void) |
143 |
{ |
144 |
cm_detach |
145 |
sleep 30 |
146 |
chr_set_health 0 0 |
147 |
} |
148 |
|
149 |
########## |
150 |
### SP1 ### |
151 |
########## |
152 |
|
153 |
func void intro(void) |
154 |
{ |
155 |
particle snow1 do start |
156 |
particle snow2 do start |
157 |
particle snow3 do start |
158 |
playback 0 IntroKonokoSet |
159 |
chr_set_health 0 400 |
160 |
ai2_spawn A_S1 |
161 |
ai2_spawn A_S2 |
162 |
ai2_spawn A_E3 |
163 |
ai2_spawn A_E5 |
164 |
ai2_spawn A_E5b |
165 |
ai2_dopath A_S1 patrol_01b |
166 |
ai2_setjobstate A_S1 |
167 |
objective_set 1 silent |
168 |
sleep 1 |
169 |
sound_music_start mus_om01 .9 |
170 |
} |
171 |
|
172 |
#tv1 - from an imaginary line (from the end of the rigt fence to the left fence) to the fence behind you |
173 |
# (enter func: snow1_start, leave func: snow1_stop); I've disabled it |
174 |
#tv3 - after tv1, ends in front of door 2 (enter func: snow2_start, leave func: snow2_stop); I've disabled it |
175 |
#tv2 - huge box right on tv3 (enter func: snow3_start, leave func: snow3_stop); I've disabled it |
176 |
|
177 |
#tv39 - in front of the imaginary line of tv1 |
178 |
func void t38(string ai_name) |
179 |
{ |
180 |
ai2_spawn A_E4 |
181 |
ai2_spawn A_Sb63 |
182 |
ai2_spawn A_E6 |
183 |
ai2_spawn A_Sb7 |
184 |
ai2_spawn new_2 |
185 |
} |
186 |
|
187 |
#tv6 - in front of the truck entrance door with the blue lights (func: peak_start); I've disabled it |
188 |
#tv4 - after the truck entrance door with the blue lights (func: peak_stop); I've disabled it |
189 |
#tv5 - in front of the truck entrance door with the red lights (func: peak_start); I've disabled it |
190 |
#tv7 - after the truck entrance door with the red lights (func: peak_stop); I've disabled it |
191 |
|
192 |
#tv31 - after door 2 |
193 |
func void set_objective_2(string ai_name) |
194 |
{ |
195 |
ai2_spawn B_Sr9 |
196 |
ai2_spawn B_Eb11 |
197 |
ai2_spawn B_Eb16 |
198 |
ai2_spawn B_Esb15 |
199 |
particle door12_locklight01 do start |
200 |
objective_set 2 silent |
201 |
target_set 558 30 |
202 |
music_stop |
203 |
} |
204 |
|
205 |
#hit func of A_Sb7 |
206 |
func void run1(string ai_name) |
207 |
{ |
208 |
ai2_doalarm A_Sb7 1 |
209 |
ai2_dopath A_Sb7 patrol_00 |
210 |
} |
211 |
|
212 |
func void patrolscript0054(string ai_name) |
213 |
{ |
214 |
ai2_doalarm A_Sb7 1 |
215 |
} |
216 |
|
217 |
#console1 |
218 |
func void run1_alarm(string ai_name) |
219 |
{ |
220 |
fork do_alarm_sound |
221 |
ai2_dopath A_E3 patrol_49 |
222 |
ai2_dopath A_E4 patrol_49 |
223 |
ai2_dopath A_E5 patrol_49 |
224 |
ai2_dopath A_E6 patrol_49 |
225 |
ai2_spawn B_Sr9 |
226 |
sleep 7 |
227 |
ai2_dopath B_Sr9 patrol_10 |
228 |
ai2_spawn B_Eb11 |
229 |
sleep 60 |
230 |
ai2_dopath B_Eb11 patrol_10 |
231 |
} |
232 |
|
233 |
func void do_alarm_sound(void) |
234 |
{ |
235 |
sound_ambient_start alarm_loop |
236 |
sleep 900 |
237 |
sound_ambient_stop alarm_loop |
238 |
} |
239 |
|
240 |
func void patrolscript0080(string ai_name) |
241 |
{ |
242 |
ai2_tripalarm 1 char_0 |
243 |
} |
244 |
|
245 |
#tv9 - in front of console6, from the left wall trough the room to the right wall (func: t9); I've disabled it) |
246 |
|
247 |
########## |
248 |
### SP2 ### |
249 |
########## |
250 |
|
251 |
#tv37 - after door 12 |
252 |
func void s2(string ai_name) |
253 |
{ |
254 |
if(save_point eq 2) |
255 |
{ |
256 |
objective_set 2 silent |
257 |
target_set 558 30 |
258 |
} |
259 |
else |
260 |
{ |
261 |
fork remove_ai |
262 |
save_game 2 autosave |
263 |
particle snow1 do stop |
264 |
particle snow2 do stop |
265 |
particle snow3 do stop |
266 |
} |
267 |
ai2_spawn C_Sr17 |
268 |
ai2_spawn C_Sr18 |
269 |
ai2_spawn C_Sr19 |
270 |
ai2_spawn C_Sb75 |
271 |
ai2_spawn C_Sb76 |
272 |
ai2_spawn C_Sb78 |
273 |
ai2_dopath C_Sr17 patrol_17 |
274 |
ai2_setjobstate C_Sr17 |
275 |
ai2_dopath C_Sr18 patrol_18 |
276 |
ai2_setjobstate C_Sr18 |
277 |
} |
278 |
|
279 |
#tv9 - after the left passageway |
280 |
#tv27 - after door 13 |
281 |
func void t8(string ai_name) |
282 |
{ |
283 |
particle door12_locklight01 do stop |
284 |
door_lock 12 |
285 |
ai2_spawn C_Tb20 |
286 |
ai2_spawn C_Eb29 |
287 |
ai2_spawn C_Eb30 |
288 |
ai2_spawn C_Eb21 |
289 |
ai2_spawn C_Eb22 |
290 |
ai2_spawn C_N23 |
291 |
ai2_spawn C_N24 |
292 |
} |
293 |
|
294 |
### POSSIBILITY 1 - YOU FALL DOWN ### |
295 |
|
296 |
#console4 |
297 |
func void unlock_stairs2(string ai_name) |
298 |
{ |
299 |
unlock_stairs_both |
300 |
ai2_spawn C_b74 |
301 |
ai2_spawn C_Eb73 |
302 |
chr_teleport C_b74 224 |
303 |
chr_teleport C_Eb73 237 |
304 |
ai2_dopath C_b74 patrol_80 |
305 |
ai2_dopath C_Eb73 patrol_80 |
306 |
} |
307 |
|
308 |
func void unlock_stairs_both(string ai_name) |
309 |
{ |
310 |
music_stop |
311 |
particle stair_locklight01 do start |
312 |
door_unlock 10 |
313 |
door_unlock 15 |
314 |
door_unlock 16 |
315 |
door_unlock 17 |
316 |
ai2_spawn S_Tr41 |
317 |
trigvolume_enable trigger_volume_10 1 |
318 |
trigvolume_enable trigger_volume_12 1 |
319 |
console_deactivate 3 |
320 |
console_deactivate 4 |
321 |
} |
322 |
|
323 |
#tv26 - between door 16 and door 17, in the middle of the staircase (func: t27); I've disabled it |
324 |
|
325 |
#tv11 - on the left side after door 17 |
326 |
func void t12(string ai_name) |
327 |
{ |
328 |
t10 |
329 |
} |
330 |
|
331 |
#tv24 - the complete way from after door 18 to the room with door 14 (no func); I've disabled it |
332 |
|
333 |
### POSSIBILITY 2 - YOU DON'T FALL DOWN ### |
334 |
|
335 |
#tv23 - the complete way from after door 19 to the room with door 13 (no func); I've disabled it |
336 |
|
337 |
#console5 |
338 |
func void unlock44(string ai_name) |
339 |
{ |
340 |
ai2_spawn C_Er79 |
341 |
door_unlock 44 |
342 |
particle d1_locklight01 do start |
343 |
sound_music_start mus_main03_hd |
344 |
target_set 559 30 |
345 |
} |
346 |
|
347 |
#console3 |
348 |
func void unlock_stairs(string ai_name) |
349 |
{ |
350 |
unlock_stairs_both |
351 |
target_set 1 0 |
352 |
} |
353 |
|
354 |
#tv25 - after door 15 |
355 |
func void t11(string ai_name) |
356 |
{ |
357 |
ai2_dopath C_Sb25 patrol_48 |
358 |
sleep 60 |
359 |
ai2_dopath C_Sb26 patrol_48 |
360 |
sleep 60 |
361 |
ai2_dopath C_Eb27 patrol_48 |
362 |
} |
363 |
|
364 |
#t10 - on the right side after door 44 |
365 |
func void t10(string ai_name) |
366 |
{ |
367 |
trigvolume_enable trigger_volume_10 0 |
368 |
trigvolume_enable trigger_volume_12 0 |
369 |
obj_create 51 59 |
370 |
env_anim 51 59 |
371 |
sleep 10 |
372 |
sound_ambient_start c05_26_17_trucka |
373 |
sleep 270 |
374 |
env_setanim 51 truckbackstop |
375 |
env_setanim 52 truckcabstop |
376 |
env_setanim 53 truckdoorstop |
377 |
env_setanim 54 truckdoor2stop |
378 |
env_setanim 55 truckwheel03stop |
379 |
env_setanim 56 truckwheel04stop |
380 |
env_setanim 57 truckwheel05stop |
381 |
env_setanim 58 truckwheel06stop |
382 |
env_setanim 59 truckwheel07stop |
383 |
ai2_spawn ParkStriker |
384 |
chr_lock_active ParkStriker |
385 |
chr_envanim ParkStriker ParkStrikeBox01 norotation |
386 |
sleep 40 |
387 |
sound_ambient_start c05_31_21_brake_doorsa |
388 |
sleep 60 |
389 |
chr_animate ParkStriker STRIKElev7_Park |
390 |
ai2_spawn C_Sb25 |
391 |
ai2_spawn C_Sb26 |
392 |
ai2_spawn C_Eb27 |
393 |
playback C_Sb25 truckers |
394 |
sleep 40 |
395 |
playback C_Sb26 truckers |
396 |
sleep 30 |
397 |
playback C_Eb27 truckers |
398 |
sleep 60 |
399 |
obj_kill 51 59 |
400 |
env_show 151 1 |
401 |
env_show 152 1 |
402 |
env_show 153 1 |
403 |
env_show 154 1 |
404 |
env_show 155 1 |
405 |
env_show 156 1 |
406 |
env_show 157 1 |
407 |
env_show 158 1 |
408 |
env_show 159 1 |
409 |
sound_music_start mus_asianb |
410 |
particle obj1 create |
411 |
target_set 511 30 |
412 |
objective_set 3 silent |
413 |
sleep 480 |
414 |
ai2_dopath C_Sb25 patrol_48 |
415 |
sleep 60 |
416 |
ai2_dopath C_Sb26 patrol_48 |
417 |
sleep 60 |
418 |
ai2_dopath C_Eb27 patrol_48 |
419 |
} |
420 |
|
421 |
#tv28 - the complete ground floor; used to count the enemies inside; see next func |
422 |
|
423 |
#tv22 - in front of the driver's door of the truck |
424 |
func void runTruck(string ai_name) |
425 |
{ |
426 |
trigvolume_enable trigger_volume_23 0 |
427 |
if(chr_has_lsi(0) and trigvolume_count(29) eq 0) |
428 |
{ |
429 |
music_stop |
430 |
fade_out 0 0 0 30 |
431 |
sleep 30 |
432 |
fork remove_ai |
433 |
particle obj1 kill |
434 |
load_s3 |
435 |
playback 0 TruckExitKonoko |
436 |
fade_in 30 |
437 |
if(save_point ne 3) save_game 3 autosave |
438 |
} |
439 |
else |
440 |
{ |
441 |
sleep 60 |
442 |
trigvolume_enable trigger_volume_23 1 |
443 |
} |
444 |
} |
445 |
|
446 |
########## |
447 |
### SP3 ### |
448 |
########## |
449 |
|
450 |
func void load_s3(void) |
451 |
{ |
452 |
if(save_point eq 3) restore_game |
453 |
env_show 251 1 |
454 |
env_show 252 1 |
455 |
env_show 253 1 |
456 |
env_show 254 1 |
457 |
env_show 255 1 |
458 |
env_show 256 1 |
459 |
env_show 257 1 |
460 |
env_show 258 1 |
461 |
env_show 259 1 |
462 |
env_show 911 1 |
463 |
env_show 912 0 |
464 |
env_show 913 0 |
465 |
env_show 914 1 |
466 |
env_show 915 1 |
467 |
env_show 916 1 |
468 |
ai2_spawn D_R33 |
469 |
objective_set 4 silent |
470 |
target_set 501 30 |
471 |
} |
472 |
|
473 |
#tv12 - at the beginning of the stairs, which are in front of door 24 |
474 |
func void t13(string ai_name) |
475 |
{ |
476 |
ai2_spawn E_Er34 |
477 |
sleep 60 |
478 |
door_unlock 24 |
479 |
particle purple_locklight01 do start |
480 |
ai2_dopath E_Er34 patrol_34 |
481 |
ai2_setjobstate E_Er34 |
482 |
ai2_spawn E_Eb35 |
483 |
} |
484 |
|
485 |
#tv15 - after door 24 |
486 |
func void t16(string ai_name) |
487 |
{ |
488 |
ai2_spawn E_Nr36 |
489 |
ai2_spawn E_Nb37 |
490 |
ai2_spawn E_Nb38 |
491 |
ai2_spawn E_Nr39 |
492 |
door_unlock 22 |
493 |
particle purple3_locklight01 do start |
494 |
target_set 1 0 |
495 |
} |
496 |
|
497 |
### 2ND FLOOR ### |
498 |
|
499 |
#tv13 - in front of door 33 |
500 |
func void t14(string ai_name) |
501 |
{ |
502 |
ai2_spawn E_N35 |
503 |
ai2_spawn E_Tr40 |
504 |
} |
505 |
|
506 |
#tv14 - in front of door 30 (func: t15); I've disabled it |
507 |
#tv44 - in front of door 25 (func: t45); I've disabled it |
508 |
#tv45 - in front of door 27 (func: t45); I've disabled it |
509 |
|
510 |
#console200 - room with door 30 (right side) |
511 |
func void purple2_unlock(string ai_name) |
512 |
{ |
513 |
particle purple2_locklight01 do start |
514 |
door_unlock 20 |
515 |
door_unlock 21 |
516 |
door_unlock 22 |
517 |
door_unlock 23 |
518 |
door_unlock 24 |
519 |
door_unlock 25 |
520 |
door_unlock 26 |
521 |
door_unlock 27 |
522 |
door_unlock 28 |
523 |
trigvolume_enable trigger_volume_21 1 |
524 |
trigvolume_enable trigger_volume_21_copy 1 |
525 |
console_deactivate 100 |
526 |
console_deactivate 200 |
527 |
if(var_counter ne 10) target_set 556 30 |
528 |
} |
529 |
|
530 |
#tv20 - after door 25 |
531 |
func void t21(string ai_name) |
532 |
{ |
533 |
t22 |
534 |
} |
535 |
|
536 |
#tv21 - after door 27 |
537 |
func void t22(string ai_name) |
538 |
{ |
539 |
trigvolume_enable trigger_volume_21 0 |
540 |
trigvolume_enable trigger_volume_21_copy 0 |
541 |
sound_music_start mus_main03_hd |
542 |
particle mainchamber_locklight01 do start |
543 |
door_unlock 18 |
544 |
door_unlock 19 |
545 |
ai2_spawn D_R31 |
546 |
ai2_spawn D_R32 |
547 |
ai2_spawn D_E83 |
548 |
door_open 18 |
549 |
door_open 19 |
550 |
sleep 180 |
551 |
door_close 18 |
552 |
door_close 19 |
553 |
door_lock 18 |
554 |
door_lock 19 |
555 |
particle mainchamber_locklight01 do stop |
556 |
sleep 420 |
557 |
music_stop |
558 |
} |
559 |
|
560 |
### 3RD FLOOR ### |
561 |
|
562 |
#tv18 - in front of door 34 |
563 |
func void t19(string ai_name) |
564 |
{ |
565 |
ai2_spawn E_Er45 |
566 |
ai2_spawn E_N43 |
567 |
} |
568 |
|
569 |
#tv16 - in front of door 31 |
570 |
func void t17(string ai_name) |
571 |
{ |
572 |
ai2_spawn E_Nr46 |
573 |
} |
574 |
|
575 |
### 1ST FLOOR ### |
576 |
|
577 |
#tv19 - in front of door 32 |
578 |
func void t20(string ai_name) |
579 |
{ |
580 |
ai2_spawn E_N44 |
581 |
} |
582 |
|
583 |
#tv17 - in front of door 29 |
584 |
func void t18(string ai_name) |
585 |
{ |
586 |
ai2_spawn E_R46 |
587 |
} |
588 |
|
589 |
#console100 - room with door 29 (right side) |
590 |
func void purple2_unlock_b(string ai_name) |
591 |
{ |
592 |
purple2_unlock |
593 |
if(var_counter ne 1 or var_counter ne 11 or var_counter ne 101) target_set 555 30 |
594 |
trigvolume_enable trigger_volume_21 0 |
595 |
trigvolume_enable trigger_volume_21_copy 0 |
596 |
} |
597 |
|
598 |
### TEXT CONSOLES ### |
599 |
|
600 |
#console301 - 3rd floor - room with door 34 (left side) |
601 |
func void console301(string ai_name) |
602 |
{ |
603 |
console300 |
604 |
} |
605 |
|
606 |
#console300 - 3rd floor - room with door 31 (right side) |
607 |
func void console300(string ai_name) |
608 |
{ |
609 |
var_counter = var_counter + 1 |
610 |
if(var_counter eq 1 or var_counter eq 101) target_set 556 30 |
611 |
if(var_counter eq 11) target_set 555 30 |
612 |
if(var_counter eq 111) target_set 547 30 |
613 |
console_deactivate 300 |
614 |
console_deactivate 301 |
615 |
ConsoleText |
616 |
} |
617 |
|
618 |
#console201 - 2nd floor - room with door 33 (left side) |
619 |
func void console200(string ai_name) |
620 |
{ |
621 |
var_counter = var_counter + 10 |
622 |
if(var_counter eq 10 or var_counter eq 110) target_set 557 30 |
623 |
if(var_counter eq 11) target_set 555 30 |
624 |
if(var_counter eq 111) target_set 547 30 |
625 |
ConsoleText |
626 |
} |
627 |
|
628 |
#console101 - 1st floor - room with door 32 (left side) |
629 |
func void console101(string ai_name) |
630 |
{ |
631 |
var_counter = var_counter + 100 |
632 |
if(var_counter eq 100 or var_counter eq 101) target_set 556 30 |
633 |
if(var_counter eq 110) target_set 557 30 |
634 |
if(var_counter eq 111) |
635 |
target_set 547 30 |
636 |
ConsoleText |
637 |
} |
638 |
|
639 |
func void ConsoleText(void) |
640 |
{ |
641 |
if(var_counter eq 1 or var_counter eq 10 or var_counter eq 100) |
642 |
{ |
643 |
text_console level_19a |
644 |
sound_dialog_play c15_57_01konoko |
645 |
} |
646 |
if(var_counter eq 11 or var_counter eq 101 or var_counter eq 110) |
647 |
{ |
648 |
text_console level_19b |
649 |
sound_dialog_play c15_57_02konoko |
650 |
} |
651 |
if(var_counter eq 111) |
652 |
{ |
653 |
text_console level_19c |
654 |
sound_dialog_play c15_57_03konoko |
655 |
trigvolume_enable attack_1tv 1 |
656 |
trigvolume_enable attack_2tv 1 |
657 |
trigvolume_enable attack_3tv 1 |
658 |
trigvolume_enable attack_3tv_copy 1 |
659 |
trigvolume_enable attack_4tv 1 |
660 |
objective_set 5 silent |
661 |
sleep 60 |
662 |
sound_music_start mus_main03_hd |
663 |
var_counter = 0 |
664 |
} |
665 |
} |
666 |
|
667 |
### ALL CONSOLES ACTIVATED ### |
668 |
|
669 |
#tv37 - 3rd floor - after door 34 (left side) |
670 |
func void attack_4(string ai_name) |
671 |
{ |
672 |
attack_3 |
673 |
} |
674 |
|
675 |
#tv34 - floor 3 - after door 31 (right side) |
676 |
func void attack_2(string ai_name) |
677 |
{ |
678 |
attack_3 |
679 |
} |
680 |
|
681 |
#tv33 - 1st floor - after door 29 (right side) (func: attack_1); I've disabled it |
682 |
|
683 |
#tv46 - 2nd floor - after door 34 (left side) |
684 |
#tv35 - 1st floor - after door 32 (left side) |
685 |
func void attack_3(string ai_name) |
686 |
{ |
687 |
trigvolume_enable attack_2tv 0 |
688 |
trigvolume_enable attack_3tv 0 |
689 |
trigvolume_enable attack_3tv_copy 0 |
690 |
trigvolume_enable attack_4tv 0 |
691 |
particle F_locklight01 do start |
692 |
door_unlock 43 |
693 |
ai2_spawn F_Eb43 |
694 |
ai2_spawn F_Eb44 |
695 |
ai2_spawn F_Eb47 |
696 |
ai2_dopath F_Eb43 patrol_43 |
697 |
ai2_setjobstate F_Eb43 |
698 |
sleep 30 |
699 |
ai2_dopath F_Eb44 patrol_44 |
700 |
ai2_setjobstate F_Eb44 |
701 |
sleep 30 |
702 |
ai2_dopath F_Eb47 patrol_47 |
703 |
ai2_setjobstate F_Eb47 |
704 |
music_stop |
705 |
ai2_dopath F_Eb43 patrol_43b |
706 |
ai2_setjobstate F_Eb43 |
707 |
ai2_dopath F_Eb44 patrol_44b |
708 |
ai2_setjobstate F_Eb44 |
709 |
ai2_dopath F_Eb47 patrol_47b |
710 |
ai2_setjobstate F_Eb47 |
711 |
trigvolume_enable trigger_volume_33 1 |
712 |
} |
713 |
|
714 |
#tv32 - in front of door 43 |
715 |
func void t33(string ai_name) |
716 |
{ |
717 |
sound_dialog_play c15_57_04konoko |
718 |
ai2_spawn F_Er86 |
719 |
ai2_spawn F_Nr87 |
720 |
target_set 258 30 |
721 |
} |
722 |
|
723 |
#tv41 - in front of the 1st staircase |
724 |
func void t41(string ai_name) |
725 |
{ |
726 |
ai2_spawn F_Er59 |
727 |
} |
728 |
|
729 |
#tv42 - after the 1st staircase |
730 |
func void t42(string ai_name) |
731 |
{ |
732 |
ai2_spawn F_Nr60 |
733 |
} |
734 |
|
735 |
#tv43 - in front of the 2nd staircase |
736 |
func void t43(string ai_name) |
737 |
{ |
738 |
ai2_spawn F_R61 |
739 |
ai2_spawn F_Er88 |
740 |
ai2_spawn F_C62 |
741 |
ai2_makeignoreplayer F_C62 1 |
742 |
} |
743 |
|
744 |
#tv29 - at the mezzanine of the 3rd staircase |
745 |
func void t30(string ai_name) |
746 |
{ |
747 |
ai2_makeignoreplayer F_C62 0 |
748 |
ai2_spawn F_Er89 |
749 |
} |
750 |
|
751 |
#hit func of F_C62 |
752 |
func void comalarm(string ai_name) |
753 |
{ |
754 |
ai2_tripalarm 2 char_0 |
755 |
} |
756 |
|
757 |
#console2 |
758 |
func void fconsole_ok(string ai_name) |
759 |
{ |
760 |
text_console level_19d |
761 |
particle green create |
762 |
particle green2 create |
763 |
particle green3 create |
764 |
trigvolume_enable trigger_volume_31 1 |
765 |
objective_set 6 silent |
766 |
target_set 502 30 |
767 |
} |
768 |
|
769 |
#tv30 - complete dish platform |
770 |
func void t31(string ai_name) |
771 |
{ |
772 |
target_set 1 0 |
773 |
fade_out 0 0 0 30 |
774 |
sleep 30 |
775 |
fork remove_ai |
776 |
particle green kill |
777 |
particle green2 kill |
778 |
particle green3 kill |
779 |
playback 0 GrifKonokoSet |
780 |
grif |
781 |
fade_in 30 |
782 |
if(save_point ne 4) save_game 4 autosave |
783 |
} |
784 |
|
785 |
########## |
786 |
### SP4 ### |
787 |
########## |
788 |
|
789 |
func void grif(void) |
790 |
{ |
791 |
if(save_point eq 4) restore_game |
792 |
env_show 301 0 |
793 |
env_show 302 0 |
794 |
env_show 303 0 |
795 |
env_show 304 0 |
796 |
env_show 305 0 |
797 |
env_show 306 0 |
798 |
env_show 307 0 |
799 |
env_show 308 0 |
800 |
env_show 309 0 |
801 |
env_show 401 1 |
802 |
env_show 402 1 |
803 |
env_show 403 1 |
804 |
env_show 404 1 |
805 |
env_show 405 1 |
806 |
env_show 406 1 |
807 |
env_show 407 1 |
808 |
env_show 408 1 |
809 |
env_show 409 1 |
810 |
ai2_spawn Muro |
811 |
chr_boss_shield Muro |
812 |
chr_set_health Muro 500 |
813 |
ai2_spawn GrifElite01 |
814 |
ai2_spawn GrifElite02 |
815 |
ai2_spawn GrifElite03 |
816 |
ai2_dopath GrifElite01 patrol_513 |
817 |
ai2_dopath GrifElite02 patrol_514 |
818 |
ai2_dopath GrifElite03 patrol_518 |
819 |
if(did_kill_griffen() eq 0) |
820 |
{ |
821 |
ai2_boss_battle = 1 |
822 |
ai2_spawn Griffin |
823 |
ai2_spawn GrifOps01 |
824 |
ai2_spawn GrifOps02 |
825 |
ai2_spawn GrifOps03 |
826 |
ai2_dopath GrifOps01 patrol_521 |
827 |
ai2_dopath GrifOps02 patrol_515 |
828 |
ai2_dopath GrifOps03 patrol_517 |
829 |
sleep 1 |
830 |
fork wait_to_help |
831 |
} |
832 |
if(did_kill_griffen() eq 1) |
833 |
{ |
834 |
ai2_boss_battle = 0 |
835 |
sleep 1 |
836 |
fork heli |
837 |
} |
838 |
particle dishpulse do start |
839 |
particle sturm_ambient do start |
840 |
sound_ambient_start mc_dish_loop 0.6 |
841 |
sound_music_start mus_ot |
842 |
objective_set 6 silent |
843 |
} |
844 |
|
845 |
func void heli(void) |
846 |
{ |
847 |
sound_ambient_start c07_17_19heli |
848 |
sleep 480 |
849 |
obj_create 901 906 |
850 |
env_anim 901 906 |
851 |
ai2_spawn GrifOps01 |
852 |
ai2_spawn GrifOps02 |
853 |
ai2_spawn GrifOps03 |
854 |
chr_envanim GrifOps01 GrifOps01Box01 |
855 |
chr_envanim GrifOps02 GrifOps02Box01 |
856 |
chr_envanim GrifOps03 GrifOps03Box01 |
857 |
chr_animate GrifOps01 STRIKEcrouch_idle 400 |
858 |
chr_animate GrifOps02 STRIKEcrouch_idle 400 |
859 |
chr_animate GrifOps03 STRIKEcrouch_idle 400 |
860 |
sleep 290 |
861 |
env_setanim 901 heli_doors_rt08 |
862 |
env_setanim 902 heli_doors_lt08 |
863 |
env_setanim 903 heli_rotorblades08 |
864 |
env_setanim 904 heli_body08 |
865 |
env_setanim 905 heli_canopy08 |
866 |
env_setanim 906 heli_interior08 |
867 |
chr_envanim GrifOps01 GrifOps01Box02 norotation |
868 |
chr_envanim GrifOps02 GrifOps02Box02 norotation |
869 |
chr_envanim GrifOps03 GrifOps03Box02 norotation |
870 |
chr_animate GrifOps01 STRIKElev7_Ops01 |
871 |
chr_animate GrifOps02 STRIKElev7_Ops02 |
872 |
chr_animate GrifOps03 STRIKElev7_Ops03 |
873 |
chr_changeteam GrifOps01 Syndicate |
874 |
chr_changeteam GrifOps02 Syndicate |
875 |
chr_changeteam GrifOps03 Syndicate |
876 |
ai2_attack GrifOps01 char_0 |
877 |
ai2_attack GrifOps02 char_0 |
878 |
ai2_attack GrifOps03 char_0 |
879 |
sleep 600 |
880 |
obj_kill 901 906 |
881 |
} |
882 |
|
883 |
func void wait_to_help(void) |
884 |
{ |
885 |
chr_wait_health Muro 200 |
886 |
ai2_boss_battle = 0 |
887 |
var_counter3 = 1 |
888 |
attack_konoko |
889 |
} |
890 |
|
891 |
#lose func of GrifOps01, GrifOps02, GrifOps03 and Griffin |
892 |
func void swat_dies(void) |
893 |
{ |
894 |
var_counter = var_counter + 1 |
895 |
if(var_counter eq 4) attack_konoko |
896 |
} |
897 |
|
898 |
func void attack_konoko(void) |
899 |
{ |
900 |
ai2_attack GrifElite01 char_0 |
901 |
ai2_attack GrifElite02 char_0 |
902 |
ai2_attack GrifElite03 char_0 |
903 |
ai2_attack GrifElite04 char_0 |
904 |
ai2_attack GrifElite05 char_0 |
905 |
ai2_attack GrifElite06 char_0 |
906 |
} |
907 |
|
908 |
#lose func of GrifElite03 |
909 |
func void check_death1a(string ai_name) |
910 |
{ |
911 |
ai2_spawn GrifElite04 |
912 |
ai2_passive GrifElite04 1 |
913 |
playback_block GrifElite04 GrifWave2_Run1 |
914 |
ai2_passive GrifElite04 0 |
915 |
if(var_counter3 eq 1) ai2_attack GrifElite04 char_0 |
916 |
if(var_counter3 eq 0) ai2_makeaware GrifElite04 char_0 |
917 |
} |
918 |
|
919 |
#lose func of GrifElite02 |
920 |
func void check_death1b(string ai_name) |
921 |
{ |
922 |
ai2_spawn GrifElite05 |
923 |
ai2_passive GrifElite05 1 |
924 |
playback_block GrifElite05 GrifWave2_Run1 |
925 |
ai2_passive GrifElite05 0 |
926 |
if (var_counter3 eq 1) ai2_attack GrifElite05 char_0 |
927 |
if (var_counter3 eq 0) ai2_makeaware GrifElite05 char_0 |
928 |
} |
929 |
|
930 |
#lose func of GrifElite04 and GrifElite05 |
931 |
func void final_round(string ai_name) |
932 |
{ |
933 |
var_counter2 = var_counter2 + 1 |
934 |
if(var_counter2 eq 1) |
935 |
{ |
936 |
ai2_spawn GrifElite06 |
937 |
ai2_passive GrifElite06 1 |
938 |
playback_block GrifElite06 GrifWave2_Run3 |
939 |
ai2_passive GrifElite06 0 |
940 |
if(var_counter3 eq 1) ai2_attack GrifElite06 char_0 |
941 |
if(var_counter3 eq 0) ai2_makeaware GrifElite06 char_0 |
942 |
} |
943 |
} |
944 |
|
945 |
#lose func of Muro |
946 |
func void check_death2(string ai_name) |
947 |
{ |
948 |
fade_out 0 0 0 30 |
949 |
sleep 30 |
950 |
win |
951 |
} |
952 |
|
953 |
##################### |
954 |
### TEXT CONSOLES ### |
955 |
##################### |
956 |
|
957 |
func void console_truckinfo(void) |
958 |
{ |
959 |
text_console level_19e |
960 |
console_reset 6 |
961 |
} |