1 |
################# |
2 |
### VARIABLES ### |
3 |
################# |
4 |
|
5 |
var int var_counter = 0; |
6 |
|
7 |
############ |
8 |
### MAIN ### |
9 |
############ |
10 |
|
11 |
func void main(void) |
12 |
{ |
13 |
gl_fog_red = .30 |
14 |
gl_fog_blue = .15 |
15 |
gl_fog_green = .17 |
16 |
gl_fog_start = .995 |
17 |
gs_farclipplane_set 5000 |
18 |
ui_suppress_prompt = 1 |
19 |
chr_auto_aim_dist = 0 |
20 |
start |
21 |
} |
22 |
|
23 |
############# |
24 |
### START ### |
25 |
############# |
26 |
|
27 |
func void start(string ai_name) |
28 |
{ |
29 |
if(save_point eq 0) save_point = 1 |
30 |
if(save_point eq 1) fork intro |
31 |
if (save_point eq 2) restore_game |
32 |
if (save_point eq 3) restore_game |
33 |
sleep 5 |
34 |
fork sp_all |
35 |
} |
36 |
|
37 |
func void deactivate_stuff(void) |
38 |
{ |
39 |
#not used |
40 |
trigvolume_enable floor1 0 |
41 |
trigvolume_enable save_1_trig 0 |
42 |
trigvolume_enable save_3_trig 0 |
43 |
trigvolume_enable sapperdamageon 0 |
44 |
trigvolume_enable trigger_volume_36 0 |
45 |
trigvolume_enable trigger_volume_36_copy 0 |
46 |
trigvolume_enable trigger_volume_36_copy_copy 0 |
47 |
#used |
48 |
trigvolume_enable outro_volume_1 0 |
49 |
trigvolume_enable attack_trigger 0 |
50 |
trigvolume_enable final_ambush 0 |
51 |
env_show 776 0 |
52 |
env_show 777 0 |
53 |
obj_create 2 7 |
54 |
} |
55 |
|
56 |
func void you_lose(string ai_name) |
57 |
{ |
58 |
fade_out 0 0 0 30 |
59 |
sleep 30 |
60 |
lose |
61 |
} |
62 |
|
63 |
#################################### |
64 |
### SEVERAL TIMES USED FUNCTIONS ### |
65 |
#################################### |
66 |
|
67 |
func void sp_all(void) |
68 |
{ |
69 |
co_message_display = 0 |
70 |
if(save_point eq 1) save_game 1 autosave |
71 |
if(save_point eq 2) save_game 2 autosave |
72 |
if(save_point eq 3) save_game 3 autosave |
73 |
sleep 180 |
74 |
co_message_display = 1 |
75 |
} |
76 |
|
77 |
func void remove_ai(void) |
78 |
{ |
79 |
ai2_kill |
80 |
sleep 60 |
81 |
powerup_reset |
82 |
weapon_reset |
83 |
sleep 240 |
84 |
corpse_reset |
85 |
} |
86 |
|
87 |
func void music_stop(void) |
88 |
{ |
89 |
sound_music_stop mus_main01_hd |
90 |
sound_music_stop mus_main03 |
91 |
} |
92 |
|
93 |
########## |
94 |
### SP1 ### |
95 |
########## |
96 |
|
97 |
func void intro(void) |
98 |
{ |
99 |
ai2_spawn Barabus |
100 |
ai2_attack Barabus konoko |
101 |
playback 0 IntroKonoko01 |
102 |
chr_inv_reset 0 |
103 |
env_show 8 1 |
104 |
env_show 9 1 |
105 |
env_show 10 1 |
106 |
objective_set 1 silent |
107 |
sleep 1 |
108 |
sound_music_start mus_main01_hd 0.8 |
109 |
} |
110 |
|
111 |
#tv31 - at the place, where Konoko gets off the bike (inside func: save_game_1); I've disabled it |
112 |
|
113 |
#lose func of Barabus |
114 |
func void rocket(void) |
115 |
{ |
116 |
music_stop |
117 |
chr_animate Barabus STRIKEknockdown1 |
118 |
fade_out 0 0 0 30 |
119 |
sleep 30 |
120 |
chr_animate_block Barabus BARABlev3_rocket |
121 |
chr_envanim Barabus RocketBox01 |
122 |
sound_ambient_start c01_00_02barjet |
123 |
particle lock99_locklight01 do start |
124 |
door_unlock 43 |
125 |
objective_set 2 silent |
126 |
target_set 143 30 |
127 |
fade_in 30 |
128 |
sleep 360 |
129 |
chr_delete Barabus |
130 |
sleep 600 |
131 |
sound_dialog_play c00_01_98shinatama |
132 |
} |
133 |
|
134 |
#tv22 - if you look to the gate, on the left, around the place where you find the plasma gun |
135 |
func void spawn_right_patrol(string ai_name) |
136 |
{ |
137 |
ai2_spawn right_patrol_striker_1 |
138 |
} |
139 |
|
140 |
#tv23 - between the last pillar and the 5 glass doors |
141 |
func void spawn_back_patrol(string ai_name) |
142 |
{ |
143 |
ai2_spawn back_patrol_striker_1 |
144 |
ai2_spawn back_patrol_striker_2 |
145 |
} |
146 |
|
147 |
#tv21 - if you look to the gate, on the right, nearly at the end of the way |
148 |
func void spawn_left_patrol(string ai_name) |
149 |
{ |
150 |
ai2_spawn left_patrol_striker_1 |
151 |
} |
152 |
|
153 |
#tv8 - in front of door 43 (func: spawn_floor1_guards); I've disabled it |
154 |
|
155 |
########## |
156 |
### SP2 ### |
157 |
########## |
158 |
|
159 |
### GROUND FLOOR ### |
160 |
|
161 |
#tv33 - after door 43 |
162 |
func void turnoffcompass(string ai_name) |
163 |
{ |
164 |
if(save_point ne 2) |
165 |
{ |
166 |
save_game 2 autosave |
167 |
target_set 143 0 |
168 |
} |
169 |
ai2_spawn Floor1_Striker_1 |
170 |
ai2_spawn Floor1_Striker_2 |
171 |
ai2_spawn Floor1_Sci_1 |
172 |
ai2_spawn Floor1_Sci_2 |
173 |
ai2_spawn Floor1_Sci_3 |
174 |
ai2_spawn Floor1_Sci_4 |
175 |
objective_set 3 silent |
176 |
tr_write_animation KONCOMpunch_heavy tramph.txt |
177 |
} |
178 |
|
179 |
#tv35 - complete room with console 2 (no funcs); I've disabled it |
180 |
|
181 |
#console 2 |
182 |
func void unlock_floor1_doors(string ai_name) |
183 |
{ |
184 |
particle lock1_locklight01 do start |
185 |
particle lock4a_locklight01 do start |
186 |
door_unlock 3 |
187 |
door_unlock 8 |
188 |
door_unlock 11 |
189 |
door_unlock 14 |
190 |
door_unlock 17 |
191 |
door_unlock 20 |
192 |
door_unlock 23 |
193 |
door_unlock 26 |
194 |
check_doors |
195 |
} |
196 |
|
197 |
#tv3 - long box in some distance after door 3, door 14, door 20 and door 26 |
198 |
func void spawn_floor1_striker_11(string ai_name) |
199 |
{ |
200 |
ai2_spawn Floor1_Striker_11 |
201 |
ai2_spawn Floor1_Striker_12 |
202 |
} |
203 |
|
204 |
#tv4 - long box in some distance after door 8, door 11, door 17 and door 23 |
205 |
func void spawn_floor1_striker_10(string ai_name) |
206 |
{ |
207 |
ai2_spawn Floor1_Striker_10 |
208 |
ai2_spawn Floor1_Striker_12 |
209 |
} |
210 |
|
211 |
#tv1 - in front of the stairs |
212 |
func void spawn_floor2_guards(string ai_name) |
213 |
{ |
214 |
ai2_spawn Floor2_Striker_2 |
215 |
ai2_spawn Floor2_Striker_3 |
216 |
ai2_spawn Floor2_Striker_4 |
217 |
sleep 15 |
218 |
ai2_spawn Floor2_Striker_1 |
219 |
ai2_doalarm Floor2_Striker_1 3 |
220 |
sleep 15 |
221 |
ai2_spawn Floor2_Sci_1 |
222 |
ai2_spawn Floor2_Sci_2 |
223 |
ai2_spawn Floor2_Sci_3 |
224 |
ai2_spawn Floor2_Sci_4 |
225 |
ai2_spawn Floor2_Sci_5 |
226 |
} |
227 |
|
228 |
#tv10 - on the platform between the ground floor and the first floor |
229 |
func void set_target_4(string chr_index) |
230 |
{ |
231 |
sound_dialog_play c00_01_26shinatama |
232 |
target_set 253 30 |
233 |
} |
234 |
|
235 |
### FIRST FLOOR ### |
236 |
|
237 |
#tv36 - complete room with console 3 (no funcs); I've disabled it |
238 |
|
239 |
#console 3 |
240 |
func void unlock_floor2_doors(void) |
241 |
{ |
242 |
trigvolume_enable attack_trigger 1 |
243 |
particle lock2_locklight01 do start |
244 |
particle lock4b_locklight01 do start |
245 |
door_unlock 2 |
246 |
door_unlock 9 |
247 |
door_unlock 12 |
248 |
door_unlock 15 |
249 |
door_unlock 18 |
250 |
door_unlock 21 |
251 |
door_unlock 24 |
252 |
door_unlock 27 |
253 |
check_doors |
254 |
sleep 60 |
255 |
ai2_dopath Floor2_Striker_1 Floor2_Stk_1 |
256 |
ai2_setjobstate Floor2_Striker_1 |
257 |
} |
258 |
|
259 |
#tv24 - after door 6; outside of the room with console 3 (tv name: attack_trigger) |
260 |
func void commence_attack(string ai_name) |
261 |
{ |
262 |
ai2_setalert Floor2_Striker_2 high |
263 |
ai2_setalert Floor2_Striker_3 high |
264 |
ai2_setalert Floor2_Striker_4 high |
265 |
ai2_dopath Floor2_Striker_1 Floor2_Stk_1 |
266 |
ai2_dopath Floor2_Striker_2 scram_path |
267 |
ai2_dopath Floor2_Striker_3 attack_path_1 |
268 |
ai2_dopath Floor2_Striker_4 attack_path_2 |
269 |
ai2_setjobstate Floor2_Striker_1 |
270 |
ai2_setjobstate Floor2_Striker_2 |
271 |
ai2_setjobstate Floor2_Striker_3 |
272 |
ai2_setjobstate Floor2_Striker_4 |
273 |
ai2_attack Floor2_Striker_4 Floor2_Sci_4 |
274 |
ai2_attack Floor2_Striker_3 Floor2_Sci_1 |
275 |
} |
276 |
|
277 |
#lose func of Floor2_Sci_4 |
278 |
func void death_sentence_1(string ai_name) |
279 |
{ |
280 |
ai2_attack Floor2_Striker_4 Floor2_Sci_5 |
281 |
} |
282 |
|
283 |
#lose func of Floor2_Sci_1 |
284 |
func void death_sentence_2(string ai_name) |
285 |
{ |
286 |
ai2_attack Floor2_Striker_3 Floor2_Sci_2 |
287 |
} |
288 |
|
289 |
#lose func of Floor2_Sci_2 |
290 |
func void death_sentence_3(string ai_name) |
291 |
{ |
292 |
ai2_attack Floor2_Striker_3 Floor2_Sci_3 |
293 |
} |
294 |
|
295 |
#tv2 - in front of the stairs |
296 |
func void spawn_floor3_guards(string ai_name) |
297 |
{ |
298 |
ai2_spawn Floor3_Striker_1 |
299 |
ai2_spawn Floor3_Striker_2 |
300 |
ai2_spawn Floor3_Striker_3 |
301 |
ai2_spawn Floor3_Comguy_1 |
302 |
} |
303 |
|
304 |
#tv11 - on the platform between the first and the second floor |
305 |
func void set_target_5(string chr_index) |
306 |
{ |
307 |
sound_dialog_play c00_01_28shinatama |
308 |
target_set 254 30 |
309 |
} |
310 |
|
311 |
### SECOND FLOOR ### |
312 |
|
313 |
#tv37 - complete room with console 4 (no funcs); I've disabled it |
314 |
|
315 |
#console 4 |
316 |
func void unlock_floor3_doors(string ai_name) |
317 |
{ |
318 |
particle lock3_locklight01 do start |
319 |
particle lock4c_locklight01 do start |
320 |
door_unlock 1 |
321 |
door_unlock 10 |
322 |
door_unlock 13 |
323 |
door_unlock 16 |
324 |
door_unlock 19 |
325 |
door_unlock 22 |
326 |
door_unlock 25 |
327 |
door_unlock 28 |
328 |
check_doors |
329 |
} |
330 |
|
331 |
### ROOF ### |
332 |
|
333 |
#tv12 - in front of door 4 |
334 |
func void set_objective_4(string chr_index) |
335 |
{ |
336 |
sound_dialog_play c00_01_19shinatama |
337 |
objective_set 4 silent |
338 |
target_set 110 30 |
339 |
} |
340 |
|
341 |
#tv30 - in some distance after the ramp to the lower roof; box from left to right |
342 |
func void roof_surprise(string ai_name) |
343 |
{ |
344 |
ai2_dopath Roof_Striker_3 Roof_Striker_3b |
345 |
ai2_setjobstate Roof_Striker_3 |
346 |
} |
347 |
|
348 |
#tv5 - after door 39 |
349 |
func void spawn_tower_guards(string ai_name) |
350 |
{ |
351 |
ai2_spawn Tower_Striker_1 |
352 |
ai2_spawn Tower_Striker_2 |
353 |
} |
354 |
|
355 |
#tv18 - after door 41; on the right side |
356 |
func void tower_lock_1(string chr_index) |
357 |
{ |
358 |
ai2_spawn Tower_MB_1 |
359 |
particle sapper do start |
360 |
music_stop |
361 |
} |
362 |
|
363 |
#tv17 - right next to the furniture in the middle of the tower; from left to right (entry func: sapper_damage_on); I've disabled it |
364 |
|
365 |
#lose func of Tower_MB_1 |
366 |
func void bomber(void) |
367 |
{ |
368 |
fade_out 0 0 0 30 |
369 |
sleep 30 |
370 |
chr_delete Tower_MB_1 |
371 |
fork remove_ai |
372 |
particle sapper do stop |
373 |
chr_teleport 0 99 |
374 |
chr_facetoflag 0 90 |
375 |
fade_in 30 |
376 |
} |
377 |
|
378 |
########## |
379 |
### SP3 ### |
380 |
########## |
381 |
|
382 |
### LOBBY - GROUND FLOOR ### |
383 |
|
384 |
#tv9 - in front of door 35; in the elevator shaft |
385 |
func void spawn_lobby_tctf(string ai_name) |
386 |
{ |
387 |
if(save_point ne 3) |
388 |
{ |
389 |
sleep 30 |
390 |
save_game 3 autosave |
391 |
} |
392 |
env_show 540 0 |
393 |
env_show 777 1 |
394 |
env_show 778 0 |
395 |
ai2_spawn Lobby_TCL_1 |
396 |
ai2_spawn Lobby_TCL_2 |
397 |
ai2_spawn Lobby_TCS_1 |
398 |
objective_set 5 silent |
399 |
target_set 142 30 |
400 |
} |
401 |
|
402 |
#tv34 - after door 35 (inside func: save_game_3); I've disabled it |
403 |
|
404 |
#tv13 - big box from door 59 and door 60 to the opposite wall; includes console 1 |
405 |
func void spawn_lobby_synd(string ai_name) |
406 |
{ |
407 |
ai2_spawn Lobby_Striker_1 |
408 |
ai2_spawn Lobby_Striker_2 |
409 |
ai2_spawn Lobby_Striker_3 |
410 |
ai2_spawn Lobby_Striker_4 |
411 |
} |
412 |
|
413 |
#hit func of Lobby_TCL_1 |
414 |
func void Lobby_Hurt_TCL_1(string ai_name) |
415 |
{ |
416 |
ai2_dopath Lobby_TCL_1 Lobby_Hurt_TCL_1 |
417 |
} |
418 |
|
419 |
#hit func of Lobby_TCL_2 |
420 |
func void Lobby_Hurt_TCL_2(string ai_name) |
421 |
{ |
422 |
sleep 120 |
423 |
ai2_dopath Lobby_TCL_2 Lobby_Hurt_TCL_2 |
424 |
} |
425 |
|
426 |
#tv32 - at the end of the stairs to the lower floor with console 11; big box from left to right |
427 |
func void backdoor(string ai_name) |
428 |
{ |
429 |
ai2_spawn backdoor_striker_1 |
430 |
ai2_spawn backdoor_striker_3 |
431 |
} |
432 |
|
433 |
#console 11 |
434 |
func void passage_1(string ai_name) |
435 |
{ |
436 |
particle lock69a_locklight01 do start |
437 |
check_doors |
438 |
} |
439 |
|
440 |
### LOBBY - FIRST FLOOR ### |
441 |
|
442 |
#tv28 - long box; starts in some after door 53 and ends in front of console 9 |
443 |
func void spawn_lively_2(string ai_name) |
444 |
{ |
445 |
ai2_spawn lively_striker_2 |
446 |
} |
447 |
|
448 |
#console 9 |
449 |
func void passage_2(string ai_name) |
450 |
{ |
451 |
particle lock69b_locklight01 do start |
452 |
check_doors |
453 |
} |
454 |
|
455 |
#tv26 - in some distance after door 37 |
456 |
func void spawn_opposite_striker_1(string ai_name) |
457 |
{ |
458 |
ai2_spawn opposite_striker_1 |
459 |
} |
460 |
|
461 |
#tv27 - in some distance after door 31 |
462 |
func void spawn_opposite_striker_2(string ai_name) |
463 |
{ |
464 |
ai2_spawn opposite_striker_2 |
465 |
} |
466 |
|
467 |
### LOBBY - SECOND FLOOR ### |
468 |
|
469 |
#tv25 - around the green energy clip; in the room with door 46 |
470 |
func void spawn_lively_1(string ai_name) |
471 |
{ |
472 |
ai2_spawn lively_striker_1 |
473 |
} |
474 |
|
475 |
#tv29 - at the end of the room with door 29; from left to right; includes the hypo |
476 |
func void spawn_lively_3(string ai_name) |
477 |
{ |
478 |
ai2_spawn lively_striker_3 |
479 |
ai2_spawn lively_striker_4 |
480 |
} |
481 |
|
482 |
#console 8 |
483 |
func void passage_3(string ai_name) |
484 |
{ |
485 |
particle lock69c_locklight01 do start |
486 |
check_doors |
487 |
} |
488 |
|
489 |
func void check_doors(void) |
490 |
{ |
491 |
var_counter = var_counter + 1 |
492 |
if(var_counter eq 3) |
493 |
{ |
494 |
if(save_point eq 2) |
495 |
{ |
496 |
door_unlock 4 |
497 |
ai2_spawn Roof_Striker_1 |
498 |
ai2_spawn Roof_Striker_2 |
499 |
ai2_spawn Roof_Striker_3 |
500 |
sound_music_start mus_main03 |
501 |
} |
502 |
if(save_point eq 3) |
503 |
{ |
504 |
door_unlock 48 |
505 |
sound_music_start mus_main03 1.0 |
506 |
} |
507 |
var_counter = 0 |
508 |
} |
509 |
} |
510 |
|
511 |
#tv20 - in front of door 48 |
512 |
func void miseenscene_start(string ai_name) |
513 |
{ |
514 |
particle scene create |
515 |
ai2_spawn scene_thug_1 |
516 |
ai2_spawn scene_thug_2 |
517 |
} |
518 |
|
519 |
#tv6 - in the middle between door 48 and door 55 |
520 |
func void spawn_vats(string ai_name) |
521 |
{ |
522 |
ai2_spawn Vat_Striker_1 |
523 |
ai2_spawn Vat_Striker_2 |
524 |
ai2_spawn Vat_Striker_3 |
525 |
ai2_spawn Vat_Striker_4 |
526 |
ai2_spawn Vat_Striker_5 |
527 |
} |
528 |
|
529 |
#console 10 (text console) |
530 |
func void day_264(string ai_name) |
531 |
{ |
532 |
ai2_idle scene_thug_1 |
533 |
ai2_movetoflag scene_thug_1 7010 |
534 |
ai2_setmovementmode scene_thug_1 run |
535 |
sleep 300 |
536 |
particle day264 create |
537 |
particle dayafter create |
538 |
particle dayafter do start |
539 |
chr_animate scene_thug_1 STRIKEknockdown3 |
540 |
ai2_dopath scene_thug_1 scene_flee_1 |
541 |
ai2_dopath scene_thug_2 scene_flee_2 |
542 |
sleep 300 |
543 |
ai2_spawn arcy |
544 |
sleep 1000 |
545 |
chr_delete scene_thug_1 |
546 |
chr_delete scene_thug_2 |
547 |
sleep 500 |
548 |
chr_delete arcy |
549 |
} |
550 |
|
551 |
#tv19 - in front of door 55 |
552 |
func void set_objective_6(string chr_index) |
553 |
{ |
554 |
sound_dialog_play c00_01_22shinatama |
555 |
objective_set 6 silent |
556 |
target_set 256 30 |
557 |
} |
558 |
|
559 |
### HALL ### |
560 |
|
561 |
#tv16 - the complete acid volume |
562 |
func void fallinthevat(string character) |
563 |
{ |
564 |
if(chr_is_player(character) eq 1) |
565 |
{ |
566 |
cm_detach |
567 |
chr_animate 0 KONOKOacid |
568 |
sleep 10 |
569 |
sound_impulse_play konoko_gruesome_death |
570 |
chr_set_health 0 0 |
571 |
} |
572 |
else |
573 |
{ |
574 |
chr_animate(character, KONOKOacid); |
575 |
sleep 10 |
576 |
chr_set_health(character, 0); |
577 |
} |
578 |
} |
579 |
|
580 |
#console 5 |
581 |
func void unlock_end_door(string ai_name) |
582 |
{ |
583 |
trigvolume_enable final_ambush 1 |
584 |
particle lockend_locklight02 do start |
585 |
door_unlock 56 |
586 |
target_set 52 30 |
587 |
ai2_spawn Vat_MB_1 |
588 |
} |
589 |
|
590 |
#tv7 - in some distance in front three pillars; from left to right |
591 |
func void final_ambush(string ai_name) |
592 |
{ |
593 |
ai2_spawn Ambush_Striker_1 |
594 |
ai2_spawn Ambush_Striker_2 |
595 |
} |
596 |
|
597 |
#hit func of Ambush_Striker_1 |
598 |
func void gethelp(string ai_name) |
599 |
{ |
600 |
trigvolume_enable outro_volume_1 1 |
601 |
particle lock177_locklight01 do start |
602 |
door_unlock 49 |
603 |
door_unlock 50 |
604 |
ai2_attack Ambush_Striker_2 Konoko |
605 |
music_stop |
606 |
} |
607 |
|
608 |
#tv14 - after door 50 |
609 |
#tv15 - after door 49 |
610 |
func void outro(void) |
611 |
{ |
612 |
fade_out 0 0 0 30 |
613 |
sleep 30 |
614 |
win |
615 |
} |
616 |
|
617 |
##################### |
618 |
### TEXT CONSOLES ### |
619 |
##################### |
620 |
|
621 |
func void level3a(string chr_index) |
622 |
{ |
623 |
text_console level_3a |
624 |
console_reset 7 |
625 |
} |
626 |
|
627 |
func void level3b(string chr_index) |
628 |
{ |
629 |
text_console level_3b |
630 |
console_reset 6 |
631 |
} |
632 |
|
633 |
func void level3c(string chr_index) |
634 |
{ |
635 |
text_console level_3c |
636 |
console_reset 1 |
637 |
} |
638 |
|
639 |
func void level3d(string chr_index) |
640 |
{ |
641 |
text_console level_3d |
642 |
day_264 |
643 |
} |