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 |
} |