1 |
func void cheater(void) |
2 |
{ |
3 |
invincible=1 |
4 |
omnipotent=1 |
5 |
lock_keys keys_all |
6 |
chr_teleport 0 7023 |
7 |
} |
8 |
################################### |
9 |
# variables used in train2 scipts # |
10 |
################################### |
11 |
|
12 |
#used to see if PPK combo was successful |
13 |
var int combo_did; |
14 |
|
15 |
#used to determine when to activate or deactivate blocking drone, current script comments out the usefulness of this variable |
16 |
var int count_block; |
17 |
|
18 |
#determines if reload in ballistics or cell |
19 |
var int reload=0; |
20 |
|
21 |
#makes sure reloading cells doesn't play before player has even picked up the rifle |
22 |
var int droid_active; |
23 |
|
24 |
#sees if you already reloaded ballistics ammo before the system had a chance to prompt you to do so |
25 |
var int already_reloaded; |
26 |
|
27 |
#sees if you already reloaded cell ammo before system prompted you to do so. |
28 |
var int already_reloaded2; |
29 |
|
30 |
#counts number of reload prompts necessary, if you reloaded more than one time, you lose rating points |
31 |
var int had_to_reload; |
32 |
|
33 |
#determines when inside the target shooting function |
34 |
var int inside_target_function; |
35 |
|
36 |
#determines when inside ammo reload function |
37 |
var int inside_ammo_function = 0; |
38 |
|
39 |
#determines when not to display block droid message |
40 |
var int block_off; |
41 |
|
42 |
################################ |
43 |
# fight training scripts below # |
44 |
################################ |
45 |
|
46 |
######################### |
47 |
# punch and kick script # |
48 |
######################### |
49 |
func void train_fighting(string ai_name) |
50 |
{ |
51 |
how_far_along = 4; |
52 |
music_stop |
53 |
particle obj3 kill |
54 |
particle obj4 kill |
55 |
trig_deactivate 1 |
56 |
trig_deactivate 2 |
57 |
trig_deactivate 3 |
58 |
message_remove c01_50_23 |
59 |
message_remove jump_encourage |
60 |
message_remove jump_encourage2 |
61 |
sleep 60 |
62 |
sound_dialog_play_interrupt c00_01_64shinatama |
63 |
message_remove |
64 |
message begin_fight 240 |
65 |
sleep 240 |
66 |
# PUNCH-KICK |
67 |
lock_keys keys_attack |
68 |
message xpunch |
69 |
chr_wait_animtype 0 punch |
70 |
sleep 60 |
71 |
message_remove xpunch |
72 |
sleep 60 |
73 |
message xkick |
74 |
chr_wait_animtype 0 kick |
75 |
sleep 60 |
76 |
message_remove xkick |
77 |
sleep 60 |
78 |
|
79 |
if (how_far_along eq 4) |
80 |
{ |
81 |
#throw two punches |
82 |
sound_dialog_play_block c00_01_65shinatama |
83 |
message punch |
84 |
chr_wait_animtype 0 punch2 |
85 |
message_remove punch |
86 |
sleep 60 |
87 |
message c01_50_27 180 |
88 |
sound_dialog_play_interrupt c00_01_66shinatama |
89 |
sound_dialog_play_block pause |
90 |
sleep 40 |
91 |
} |
92 |
|
93 |
if (how_far_along eq 4) |
94 |
{ |
95 |
# more combo |
96 |
sound_dialog_play_block c00_01_67shinatama |
97 |
sound_dialog_play_block pause |
98 |
sleep 60 |
99 |
} |
100 |
|
101 |
if (how_far_along eq 4) |
102 |
{ |
103 |
# FIRST COMBO |
104 |
message c01_50_29 |
105 |
fork combo_wait |
106 |
chr_wait_animtype 0 ppk |
107 |
combo_did = 1; |
108 |
sleep 60 |
109 |
message_remove c01_50_29 |
110 |
message_remove c01_50_29b |
111 |
sleep 60 |
112 |
sound_dialog_play_interrupt c00_01_07shinatama |
113 |
message xppk 180 |
114 |
sleep 180 |
115 |
} |
116 |
if(combo_did eq 1) |
117 |
{ |
118 |
if (how_far_along eq 4) |
119 |
{ |
120 |
# try linking for more combos |
121 |
sound_dialog_play_block c00_01_69shinatama |
122 |
sound_dialog_play_block pause |
123 |
sleep 240 |
124 |
} |
125 |
|
126 |
if (how_far_along eq 4) |
127 |
{ |
128 |
# you're now ready to train with a sparring partner |
129 |
sound_dialog_play_block c00_01_70shinatama |
130 |
sound_dialog_play_block pause |
131 |
sleep 30 |
132 |
} |
133 |
if (how_far_along eq 4) |
134 |
{ |
135 |
# proceed to the next room |
136 |
sound_dialog_play_block c00_01_71shinatama |
137 |
message xspar2 |
138 |
ai2_spawn dum_hit_flash |
139 |
chr_lock_active dum_hit_flash |
140 |
chr_death_lock dum_hit_flash 1 |
141 |
door_unlock 99 |
142 |
particle door2_locklight02 do start |
143 |
} |
144 |
} |
145 |
} |
146 |
|
147 |
func void combo_wait(string ai_name) |
148 |
{ |
149 |
sleep 600 |
150 |
if (combo_did eq 0) |
151 |
{ |
152 |
dprint rating |
153 |
rating = rating + 1 |
154 |
rating |
155 |
message_remove c01_50_29 |
156 |
sound_dialog_play_block c00_01_68shinatama |
157 |
sleep 60 |
158 |
} |
159 |
if (combo_did eq 0) |
160 |
{ |
161 |
message c01_50_29b 240 |
162 |
sleep 240 |
163 |
} |
164 |
if (combo_did eq 0) |
165 |
{ |
166 |
message c01_50_29 |
167 |
} |
168 |
|
169 |
# if(combo_did eq 0) |
170 |
# { |
171 |
# if (how_far_along eq 4) |
172 |
# { |
173 |
# try linking for more combos |
174 |
# sound_dialog_play_block c00_01_69shinatama |
175 |
# sound_dialog_play_block pause |
176 |
# sleep 240 |
177 |
# } |
178 |
# |
179 |
# if (how_far_along eq 4) |
180 |
# { |
181 |
# you're now ready to train with a sparring partner |
182 |
# sound_dialog_play_block c00_01_70shinatama |
183 |
# sound_dialog_play_block pause |
184 |
# sleep 30 |
185 |
# } |
186 |
# if (how_far_along eq 4) |
187 |
# { |
188 |
# proceed to the next room |
189 |
# sound_dialog_play_block c00_01_71shinatama |
190 |
# message xspar2 |
191 |
# ai2_spawn dum_hit_flash |
192 |
# chr_lock_active dum_hit_flash |
193 |
# chr_death_lock dum_hit_flash 1 |
194 |
# door_unlock 99 |
195 |
# particle door2_locklight02 do start |
196 |
# } |
197 |
# } |
198 |
} |
199 |
|
200 |
################################## |
201 |
# train player about hit flashes # |
202 |
################################## |
203 |
func void train_hit_flash(string ai_name) |
204 |
{ |
205 |
particle steam stop |
206 |
music_train2 |
207 |
how_far_along = 6; |
208 |
message_remove xspar2 |
209 |
sleep 60 |
210 |
# try hitting this dummy |
211 |
sound_dialog_play_block c00_01_77shinatama |
212 |
message start_hit |
213 |
ai2_makeignoreplayer dum_hit_flash 1 |
214 |
} |
215 |
|
216 |
func void hurt_dummy1(string ai_name) |
217 |
{ |
218 |
message_remove start_hit |
219 |
sleep 60 |
220 |
door_lock 99 |
221 |
particle door2_locklight02 do stop |
222 |
# dynamic hit flashes |
223 |
message c01_50_35 300 |
224 |
sleep 240 |
225 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
226 |
ai2_setjobstate dum_hit_flash |
227 |
sleep 60 |
228 |
# more dynamic hit flashes blue |
229 |
message blueflash 300 |
230 |
sleep 240 |
231 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
232 |
ai2_setjobstate dum_hit_flash |
233 |
sleep 60 |
234 |
message c01_50_37 300 |
235 |
sleep 240 |
236 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
237 |
ai2_setjobstate dum_hit_flash |
238 |
sleep 60 |
239 |
# more dynamic hit flashes |
240 |
message c01_50_38 300 |
241 |
sleep 240 |
242 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
243 |
ai2_setjobstate dum_hit_flash |
244 |
# move on to the next room to learn how to perform the most dangerous attacks. |
245 |
sleep 60 |
246 |
sound_dialog_play_block c00_01_78shinatama |
247 |
message goto_throw |
248 |
sleep 60 |
249 |
door_unlock 100 |
250 |
particle door3_locklight02 do start |
251 |
ai2_spawn dum_train_throw |
252 |
chr_lock_active dum_train_throw |
253 |
chr_death_lock dum_train_throw 1 |
254 |
ai2_makeignoreplayer dum_train_throw 1 |
255 |
} |
256 |
|
257 |
################################### |
258 |
# train player to throw opponents # |
259 |
################################### |
260 |
func void lockthrow(void) |
261 |
{ |
262 |
door_lock 100 |
263 |
particle door3_locklight02 do stop |
264 |
} |
265 |
|
266 |
func void train_throw(string ai_name) |
267 |
{ |
268 |
how_far_along = 7; |
269 |
message_remove goto_throw |
270 |
sleep 60 |
271 |
if (how_far_along eq 7) |
272 |
{ |
273 |
# FIRST THROW |
274 |
sound_dialog_play_block c00_01_79shinatama |
275 |
message c01_50_41 |
276 |
chr_wait_animtype 0 throw_forward_punch throw_forward_kick run_throw_forward_punch run_throw_forward_kick |
277 |
message_remove c01_50_41 |
278 |
sleep 60 |
279 |
} |
280 |
|
281 |
if (how_far_along eq 7) |
282 |
{ |
283 |
# more throws |
284 |
sound_dialog_play_block c00_01_80shinatama |
285 |
ai2_dopath dum_train_throw patrol_train_throw2 |
286 |
ai2_setjobstate dum_train_throw |
287 |
sleep 180 |
288 |
ai2_dopath dum_train_throw patrol_train_throw2 |
289 |
ai2_setjobstate dum_train_throw |
290 |
sleep 180 |
291 |
message xthrow1 360 |
292 |
ai2_dopath dum_train_throw patrol_train_throw2 |
293 |
ai2_setjobstate dum_train_throw |
294 |
sleep 180 |
295 |
ai2_dopath dum_train_throw patrol_train_throw2 |
296 |
ai2_setjobstate dum_train_throw |
297 |
sleep 180 |
298 |
ai2_dopath dum_train_throw patrol_train_throw2 |
299 |
ai2_setjobstate dum_train_throw |
300 |
sleep 180 |
301 |
message xthrow2 360 |
302 |
ai2_dopath dum_train_throw patrol_train_throw2 |
303 |
ai2_setjobstate dum_train_throw |
304 |
sleep 180 |
305 |
ai2_dopath dum_train_throw patrol_train_throw2 |
306 |
ai2_setjobstate dum_train_throw |
307 |
sleep 180 |
308 |
ai2_dopath dum_train_throw patrol_train_throw2 |
309 |
ai2_setjobstate dum_train_throw |
310 |
sleep 180 |
311 |
ai2_dopath dum_train_throw patrol_train_throw2 |
312 |
ai2_setjobstate dum_train_throw |
313 |
} |
314 |
|
315 |
if (how_far_along eq 7) |
316 |
{ |
317 |
# Proceed to the next room and try blocking the training dummy'sleep 240 attacks. |
318 |
message goto_block |
319 |
sleep 60 |
320 |
door_unlock 101 |
321 |
particle door4_locklight02 do start |
322 |
particle door4b_locklight02 do start |
323 |
ai2_spawn dum_train_block |
324 |
ai2_makeignoreplayer dum_train_block 1 |
325 |
chr_invincible char_0 1 |
326 |
} |
327 |
|
328 |
} |
329 |
|
330 |
############################### |
331 |
# train player to block blows # |
332 |
############################### |
333 |
func void train_block(string ai_name) |
334 |
{ |
335 |
#introduce blocking |
336 |
how_far_along = 5; |
337 |
message_remove goto_block |
338 |
# dummy attack |
339 |
sound_dialog_play_block c00_01_72shinatama |
340 |
sound_dialog_play_block pause |
341 |
sound_dialog_play_block c00_01_73shinatama |
342 |
if(count_block eq 0) |
343 |
{ |
344 |
message c01_50_33 |
345 |
} |
346 |
} |
347 |
|
348 |
func void train_block2(string ai_name) |
349 |
{ |
350 |
ai2_makeignoreplayer dum_train_block 0 |
351 |
ai2_dopath dum_train_block patrol_56b |
352 |
ai2_setjobstate dum_train_block |
353 |
message_remove c01_50_33 |
354 |
if(count_block eq 0) |
355 |
{ |
356 |
count_block = 1 |
357 |
door_lock 101 |
358 |
door_close 101 |
359 |
particle door4_locklight02 do stop |
360 |
chr_delete dum_train_throw |
361 |
chr_delete dum_hit_flash |
362 |
chr_delete demo1 |
363 |
chr_delete demo2 |
364 |
chr_delete demo3 |
365 |
if (how_far_along eq 5) |
366 |
{ |
367 |
# more blocking |
368 |
sleep 60 |
369 |
message c01_50_32 300 |
370 |
sound_dialog_play_block c00_01_74shinatama |
371 |
sound_dialog_play_pause |
372 |
sleep 30 |
373 |
sound_dialog_play_block c00_01_75shinatama |
374 |
message xblocking2 300 |
375 |
sound_dialog_play_pause |
376 |
sleep 30 |
377 |
sound_dialog_play_block c00_01_76shinatama |
378 |
} |
379 |
sleep 120 |
380 |
# message_remove xdronedeactive |
381 |
ai2_makeignoreplayer dum_train_block 1 |
382 |
ai2_dopath dum_train_block patrol_56b |
383 |
ai2_setjobstate dum_train_block |
384 |
sound_dialog_play_block c00_01_83shinatama |
385 |
sound_dialog_play_block pause |
386 |
door_unlock 102 |
387 |
particle door5_locklight02 do start |
388 |
message goto_shoot |
389 |
chr_inv_reset 0 |
390 |
music_stop |
391 |
sleep 60 |
392 |
dprint spawn_shoot |
393 |
ai2_spawn dum_train_shoot |
394 |
ai2_spawn dum_train_shoot2 |
395 |
ai2_passive dum_train_shoot 1 |
396 |
ai2_passive dum_train_shoot2 1 |
397 |
chr_invincible dum_train_shoot 1 |
398 |
chr_invincible dum_train_shoot2 1 |
399 |
chr_invincible char_0 0 |
400 |
console_deactivate 12 |
401 |
trigvolume_enable tv75 0 |
402 |
trigvolume_enable tv74 0 |
403 |
} |
404 |
} |
405 |
|
406 |
func void disable_tv46(void) |
407 |
{ |
408 |
message_remove c01_50_33 |
409 |
trigvolume_enable trigger_volume_46 0 |
410 |
} |
411 |
|
412 |
################################## |
413 |
# put drones back on their spots # |
414 |
################################## |
415 |
func void flash_path(string ai_name) |
416 |
{ |
417 |
sleep 90 |
418 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
419 |
} |
420 |
|
421 |
func void throw_path(string ai_name) |
422 |
{ |
423 |
sleep 90 |
424 |
ai2_dopath dum_train_throw patrol_train_throw2 |
425 |
} |
426 |
|
427 |
func void block_path(string ai_name) |
428 |
{ |
429 |
if(block_off eq 0) |
430 |
{ |
431 |
block_off = 1; |
432 |
message xdronedeactive 180 |
433 |
} |
434 |
ai2_makeignoreplayer dum_train_block 1 |
435 |
ai2_dopath dum_train_block patrol_56 |
436 |
sleep 180 |
437 |
block_off = 0; |
438 |
} |
439 |
|
440 |
func void block_path2(string ai_name) |
441 |
{ |
442 |
|
443 |
ai2_makeignoreplayer dum_train_block 1 |
444 |
ai2_dopath dum_train_block patrol_56 |
445 |
} |
446 |
###################################################### |
447 |
# regenerate first two training dummies as necessary # |
448 |
###################################################### |
449 |
|
450 |
func void regen1(string ai_name) |
451 |
{ |
452 |
dprint regen1 |
453 |
message_remove blueflash |
454 |
message_remove c01_50_37 |
455 |
message_remove c01_50_38 |
456 |
sleep 60 |
457 |
message xregen1 180 |
458 |
sleep 180 |
459 |
chr_set_health dum_hit_flash 50 |
460 |
ai2_dopath dum_hit_flash patrol_dum_hit_flash |
461 |
ai2_setjobstate dum_hit_flash |
462 |
} |
463 |
|
464 |
func void regen2(string ai_name) |
465 |
{ |
466 |
dprint regen2 |
467 |
sleep 60 |
468 |
message xregen1 180 |
469 |
sleep 180 |
470 |
chr_set_health dum_train_throw 50 |
471 |
ai2_dopath dum_hit_flash patrol_train_throw2 |
472 |
ai2_setjobstate dum_train_throw |
473 |
} |
474 |
|
475 |
######################### |
476 |
# train player to shoot # |
477 |
######################### |
478 |
func void train_shoot(string ai_name) |
479 |
{ |
480 |
# message_remove xdroneactive |
481 |
message_remove xdronedeactive |
482 |
particle g_tap1 create |
483 |
sleep 7 |
484 |
weapon_spawn w1_tap 7042 |
485 |
wp_disable_fade=1 |
486 |
how_far_along = 8; |
487 |
message_remove goto_shoot |
488 |
sleep 60 |
489 |
ai2_dopath dum_train_throw patrol_train_throw |
490 |
ai2_setjobstate dum_train_throw |
491 |
|
492 |
if (how_far_along eq 8) |
493 |
{ |
494 |
lock_keys keys_inventory |
495 |
lock_keys keys_reload |
496 |
# approach weapons |
497 |
sound_dialog_play_block c00_01_84shinatama |
498 |
sound_dialog_play_pause |
499 |
chr_wait_animtype char_0 Pickup_Pistol Pickup_Pistol_Mid |
500 |
door_lock 102 |
501 |
particle door5_locklight02 do stop |
502 |
trigvolume_enable tv75 1 |
503 |
trigvolume_enable tv74 1 |
504 |
ui_show_element left 1 |
505 |
sleep 60 |
506 |
message c01_50_54 |
507 |
# hit targets |
508 |
sound_dialog_play_block c00_01_85shinatama |
509 |
chr_wait_animtype char_0 Autopistol_Recoil |
510 |
sleep 120 |
511 |
message_remove c01_50_54 |
512 |
sleep 60 |
513 |
message c01_50_53 300 |
514 |
sleep 300 |
515 |
} |
516 |
} |
517 |
|
518 |
func void enter_ammo_function(void) |
519 |
{ |
520 |
dprint enter_ammo_function |
521 |
inside_ammo_function = 1; |
522 |
} |
523 |
|
524 |
func void exit_ammo_function(void) |
525 |
{ |
526 |
dprint exit_ammo_function |
527 |
inside_ammo_function = 0; |
528 |
} |
529 |
|
530 |
func void need_ammo(string ai_name) |
531 |
{ |
532 |
trigvolume_enable tv74 0 |
533 |
|
534 |
sleep 67 |
535 |
var int empty_weapon = chr_has_empty_weapon(char_0); |
536 |
|
537 |
dprint trying_ammo_function |
538 |
|
539 |
if (inside_ammo_function eq 0) |
540 |
{ |
541 |
dprint doing_ammo_function |
542 |
enter_ammo_function(); |
543 |
|
544 |
if(empty_weapon eq 1) |
545 |
{ |
546 |
sleep 15 |
547 |
if(reload eq 0) |
548 |
{ |
549 |
message_remove xkeepshoot |
550 |
already_reloaded = 0; |
551 |
sound_dialog_play_block c00_01_87shinatama |
552 |
message c01_50_61 |
553 |
# generate powerup |
554 |
particle g_tap1 create |
555 |
sleep 7 |
556 |
powerup_spawn ammo 7042 |
557 |
particle g_tap2 create |
558 |
sleep 7 |
559 |
powerup_spawn ammo 7043 |
560 |
chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object |
561 |
fork remove_reload_message |
562 |
# sleep 60 |
563 |
message_remove c01_50_61 |
564 |
sleep 90 |
565 |
if(already_reloaded eq 0) |
566 |
{ |
567 |
message xreload |
568 |
chr_wait_animtype char_0 reload_pistol |
569 |
increase_rating() |
570 |
message_remove xreload |
571 |
sleep 90 |
572 |
} |
573 |
message xkeepshoot |
574 |
} |
575 |
if(reload eq 1) |
576 |
{ |
577 |
if(droid_active eq 1) |
578 |
{ |
579 |
message c01_50_62 |
580 |
# generate powerup |
581 |
particle g_phr1 create |
582 |
sleep 7 |
583 |
powerup_spawn cell 7044 |
584 |
particle g_phr2 create |
585 |
sleep 7 |
586 |
powerup_spawn cell 7045 |
587 |
chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object |
588 |
# sleep 60 |
589 |
message_remove c01_50_62 |
590 |
fork remove_reload_message2 |
591 |
if(already_reloaded2 eq 0) |
592 |
{ |
593 |
sleep 90 |
594 |
message xreload |
595 |
chr_wait_animtype char_0 reload_rifle |
596 |
dprint rating |
597 |
increase_rating() |
598 |
message_remove xreload |
599 |
} |
600 |
} |
601 |
} |
602 |
} |
603 |
|
604 |
exit_ammo_function(); |
605 |
} |
606 |
|
607 |
sleep 60 |
608 |
trigvolume_enable tv74 1 |
609 |
} |
610 |
|
611 |
func void increase_rating(void) |
612 |
{ |
613 |
dprint rating |
614 |
if(had_to_reload ne 0) |
615 |
{ |
616 |
|
617 |
rating = rating + 1; |
618 |
} |
619 |
had_to_reload = had_to_reload + 1; |
620 |
} |
621 |
|
622 |
func void remove_reload_message(void) |
623 |
{ |
624 |
chr_wait_animtype char_0 reload_pistol |
625 |
already_reloaded = 1; |
626 |
} |
627 |
|
628 |
func void remove_reload_message2(void) |
629 |
{ |
630 |
chr_wait_animtype char_0 reload_rifle |
631 |
already_reloaded2 = 1; |
632 |
} |
633 |
|
634 |
func void enter_target_function(void) |
635 |
{ |
636 |
dprint enter_target_function |
637 |
inside_target_function = 1; |
638 |
} |
639 |
|
640 |
func void exit_target_function(void) |
641 |
{ |
642 |
dprint exit_target_function |
643 |
inside_target_function = 0; |
644 |
} |
645 |
|
646 |
func void targets_are_gone(void) |
647 |
{ |
648 |
reload=1; |
649 |
message_remove xkeepshoot |
650 |
trigvolume_enable tv75 0 |
651 |
sleep 7 |
652 |
particle g_phr1 create |
653 |
sleep7 |
654 |
weapon_spawn w3_phr 7045 |
655 |
sound_dialog_play_block c00_01_86shinatama |
656 |
sound_dialog_play_block pause |
657 |
message_remove |
658 |
#plasma, switch weapons |
659 |
sound_dialog_play_block c00_01_88shinatama |
660 |
chr_wait_animtype char_0 Pickup_Rifle Pickup_Rifle_Mid |
661 |
droid_active = 1; |
662 |
sleep 30 |
663 |
#activate drone, hit it |
664 |
chr_invincible dum_train_shoot 0 |
665 |
ai2_passive dum_train_shoot 0 |
666 |
sound_dialog_play_block c00_01_89shinatama |
667 |
ai2_dopath dum_train_shoot patrol_train_shoot |
668 |
ai2_setjobstate dum_train_shoot |
669 |
} |
670 |
|
671 |
func void targets_are_not_gone(void) |
672 |
{ |
673 |
# CB: turn off the trigger volume and sleep for a second |
674 |
# so as not to cause hideous performance loss |
675 |
trigvolume_enable tv75 0 |
676 |
sleep 60 |
677 |
trigvolume_enable tv75 1 |
678 |
} |
679 |
|
680 |
func void targets_gone(string ai_name) |
681 |
{ |
682 |
if(inside_target_function eq 0) |
683 |
{ |
684 |
enter_target_function() |
685 |
|
686 |
var int num_broken = env_broken(3001, 3018); |
687 |
|
688 |
if (num_broken eq 18) |
689 |
{ |
690 |
targets_are_gone(); |
691 |
} |
692 |
|
693 |
if (num_broken < 18) |
694 |
{ |
695 |
targets_are_not_gone(); |
696 |
} |
697 |
|
698 |
exit_target_function |
699 |
} |
700 |
} |
701 |
|
702 |
func void droid1_gone(string ai_name) |
703 |
{ |
704 |
if (how_far_along eq 8) |
705 |
{ |
706 |
chr_invincible dum_train_shoot2 0 |
707 |
# now side to side |
708 |
sound_dialog_play_block c00_01_90shinatama |
709 |
sound_dialog_play_block pause |
710 |
sleep 30 |
711 |
ai2_passive dum_train_shoot2 0 |
712 |
ai2_dopath dum_train_shoot2 patrol_train_shoot2 |
713 |
ai2_setjobstate dum_train_shoot2 |
714 |
} |
715 |
} |
716 |
|
717 |
func void droid2_gone(string ai_name) |
718 |
{ |
719 |
if (how_far_along eq 8) |
720 |
{ |
721 |
reload = 2; |
722 |
droid_active = 0; |
723 |
message_remove |
724 |
cinematic_start (SHINnametag, 180, 180, 15, 1, 20, false) |
725 |
# great, done training |
726 |
chr_changeteam char_0 Syndicate |
727 |
music_train3 |
728 |
if(rating eq 0) |
729 |
{ |
730 |
message poopy |
731 |
|
732 |
} |
733 |
if(rating eq 1) |
734 |
{ |
735 |
message poopy2 |
736 |
|
737 |
} |
738 |
if(rating eq 2) |
739 |
{ |
740 |
message poopy3 |
741 |
|
742 |
} |
743 |
if(rating eq 3) |
744 |
{ |
745 |
message poopy4 |
746 |
|
747 |
} |
748 |
if(rating eq 4) |
749 |
{ |
750 |
message poopy5 |
751 |
|
752 |
} |
753 |
if(rating eq 5) |
754 |
{ |
755 |
message poopy6 |
756 |
|
757 |
} |
758 |
if(rating > 5) |
759 |
{ |
760 |
message poopy7 |
761 |
|
762 |
} |
763 |
sound_dialog_play_block c00_01_91shinatama |
764 |
sound_dialog_play_block pause |
765 |
sleep 40 |
766 |
sound_dialog_play_block c00_01_81shinatama |
767 |
sound_dialog_play_block pause |
768 |
message_remove |
769 |
sleep 40 |
770 |
sound_dialog_play_block c00_01_82shinatama |
771 |
sound_dialog_play_block pause |
772 |
cinematic_stop (SHINnametag, 15, 20) |
773 |
message xf1 400 |
774 |
sleep 400 |
775 |
message xlastreview |
776 |
particle obj_lastreview create |
777 |
console_activate 12 |
778 |
wp_disable_fade=0 |
779 |
} |
780 |
} |
781 |
|
782 |
func void lastreview(string ai_name) |
783 |
{ |
784 |
music_stop |
785 |
particle obj_lastreview kill |
786 |
message_remove |
787 |
message_remove xlastreview |
788 |
text_console level_1f |
789 |
lock_keys keys_all |
790 |
sleep 60 |
791 |
dprint swing |
792 |
swing |
793 |
ui_suppress_prompt=0 |
794 |
} |
795 |
|
796 |
###################################### |
797 |
# training scripts used in warehouse # |
798 |
###################################### |
799 |
# note: health function 'yhealth' is in the level_script file # |
800 |
|
801 |
func void train_fathealth(string ai_name) |
802 |
{ |
803 |
chr_wait_animtype char_0 Pickup_Object |
804 |
if(trigvolume_count (80) eq 1) |
805 |
{ |
806 |
sleep 90 |
807 |
message xtabhypo 300 |
808 |
sound_dialog_play_block c00_01_93shinatama |
809 |
sound_dialog_play_block pause |
810 |
sleep 40 |
811 |
sound_dialog_play_block c00_01_94shinatama |
812 |
} |
813 |
} |
814 |
|
815 |
func void intro_enemies(string ai_name) |
816 |
{ |
817 |
dprint intro_enemies |
818 |
how_far_along = 11; |
819 |
|
820 |
music_firstfight |
821 |
|
822 |
if (how_far_along eq 11) |
823 |
{ |
824 |
ai2_spawn Bay2_Thug_1 |
825 |
ai2_spawn Bay2_Thug_2 |
826 |
} |
827 |
|
828 |
if (how_far_along eq 11) |
829 |
{ |
830 |
# enemies |
831 |
message c01_50_84 240 |
832 |
sleep 360 |
833 |
} |
834 |
} |
835 |
|
836 |
func void train_alarm(string ai_name) |
837 |
{ |
838 |
how_far_along = 13; |
839 |
|
840 |
if (how_far_along eq 13) |
841 |
{ |
842 |
ai2_spawn Bay4_Comguy_1 |
843 |
# alarm |
844 |
sleep 180 |
845 |
message c01_50_88 240 |
846 |
sleep 240 |
847 |
} |
848 |
|
849 |
if (how_far_along eq 13) |
850 |
{ |
851 |
# alarm |
852 |
message c01_50_89 240 |
853 |
sleep 240 |
854 |
} |
855 |
|
856 |
# if (how_far_along eq 13) |
857 |
# { |
858 |
# alarm |
859 |
# message c01_50_90 240 |
860 |
# sleep 240 |
861 |
# } |
862 |
} |
863 |
|
864 |
func void train_neutral(string ai_name) |
865 |
{ |
866 |
how_far_along = 14; |
867 |
target_set(92,15.0) |
868 |
if (how_far_along eq 14) |
869 |
{ |
870 |
# neutrals |
871 |
message c01_50_91 240 |
872 |
sleep 240 |
873 |
sound_dialog_play_block c00_01_97shinatama |
874 |
} |
875 |
} |
876 |
|
877 |
func void train_timer(string ai_name) |
878 |
{ |
879 |
how_far_along = 15; |
880 |
|
881 |
if(how_far_along eq 15) |
882 |
{ |
883 |
target_set(96,15.0) |
884 |
timer_start 180 OutroLose |
885 |
sound_dialog_play_block c00_01_95shinatama |
886 |
sleep 180 |
887 |
objective_set(4) |
888 |
sound_dialog_play_block pause |
889 |
music_timer |
890 |
} |
891 |
|
892 |
if (how_far_along eq 15) |
893 |
{ |
894 |
sleep 60 |
895 |
message timer_text 300 |
896 |
sleep 360 |
897 |
message timer_text2 240 |
898 |
} |
899 |
} |
900 |
|
901 |
############################ |
902 |
# warn about alarm console # |
903 |
############################ |
904 |
func void alarm_warning(string ai_name) |
905 |
{ |
906 |
if(count_alarm eq 0) |
907 |
{ |
908 |
message alarm_warn 300 |
909 |
} |
910 |
count_alarm = 1; |
911 |
} |
912 |
|
913 |
func void alarm_warningb(string ai_name) |
914 |
{ |
915 |
count_alarm = 0; |
916 |
} |
917 |
|
918 |
############################# |
919 |
# consoles and compass hint # |
920 |
############################# |
921 |
func void console_jump(string ai_name) |
922 |
{ |
923 |
text_console level_1g |
924 |
console_reset 18 |
925 |
} |
926 |
|
927 |
func void console_escape(string ai_name) |
928 |
{ |
929 |
text_console level_1h |
930 |
console_reset 17 |
931 |
} |
932 |
|
933 |
func void console_attack(string ai_name) |
934 |
{ |
935 |
text_console level_1i |
936 |
console_reset 16 |
937 |
} |
938 |
|
939 |
func void console_flash(string ai_name) |
940 |
{ |
941 |
text_console level_1j |
942 |
console_reset 15 |
943 |
} |
944 |
|
945 |
func void console_throw(string ai_name) |
946 |
{ |
947 |
text_console level_1k |
948 |
console_reset 14 |
949 |
} |
950 |
|
951 |
func void console_block(string ai_name) |
952 |
{ |
953 |
text_console level_1l |
954 |
console_reset 13 |
955 |
} |
956 |
|
957 |
func void t77(string ai_name) |
958 |
{ |
959 |
message xarrow 400 |
960 |
} |