ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/nikanabo/current/bsl/onilight/IGMD/EnvWarehouse/training.bsl
Revision: 185
Committed: Mon May 21 18:48:22 2007 UTC (18 years, 4 months ago) by geyser
File size: 24643 byte(s)
Log Message:

File Contents

# Content
1 #################
2 ### VARIABLES ###
3 #################
4
5 var int rating = 0;
6 var int var_training_counter;
7 var int var_training_counter2;
8 var int var_training_counter3;
9
10 #############
11 ### START ###
12 #############
13
14 func void deactivate_training_stuff(void)
15 {
16 #used
17 co_message_display = 1
18 env_show 2010 0
19 particle forcefield1 do start
20 particle forcefield2 do start
21 particle steam start
22 trigvolume_enable tv1 0
23 trigvolume_enable tv2 0
24 trigvolume_enable tv3 0
25 trigvolume_enable tv4 0
26 trigvolume_enable tv5 0
27 trigvolume_enable tv6 0
28 trigvolume_enable tv7 0
29 trigvolume_enable tv8 0
30 trigvolume_enable tv9 0
31 trigvolume_enable tv10 0
32 trigvolume_enable tv11 0
33 trigvolume_enable tv12 0
34 trigvolume_enable tv13 0
35 trigvolume_enable tv14 0
36 trigvolume_enable tv15 0
37 trigvolume_enable tv16 0
38 trigvolume_enable tv17 0
39 trigvolume_enable tv74 0
40 trigvolume_enable tv75 0
41 trigvolume_enable tv_end 0
42 trigvolume_enable tv_move4 0
43 trigvolume_enable tv_review 0
44 trigvolume_enable tv_train_door 0
45 trigvolume_enable trigger_volume_71 0
46 ui_show_element left 0
47 ui_show_element right 0
48 }
49
50 ###############
51 ### TRAINING ###
52 ###############
53
54 ### MOVEMENT ###
55
56 #tv20 - at the start point
57 func void train_movement(string ai_name)
58 {
59 trigvolume_enable tv_train_movement 0
60 fork deactivate_training_stuff
61 splash_screen training_splash_screen
62 fade_out 0 0 0 0
63 lock_keys
64 lock_keys keys_pause
65 lock_keys keys_action
66 lock_keys keys_movement
67 fade_in 60
68 sleep 10
69 sound_music_start atm_gr06 0
70 sound_music_volume atm_gr06 0.7 3.0
71 fork lights
72 message xwelcome 240
73 sound_dialog_play c00_01_29shinatama
74 sound_dialog_play_block pause
75 sleep 30
76 sound_dialog_play c00_01_30shinatama
77 sound_dialog_play_block pause
78 sleep 30
79 sound_dialog_play c00_01_32shinatama
80 sound_dialog_play_block pause
81 sleep 30
82 sound_dialog_play_block c00_01_33shinatama
83 sound_dialog_play_block pause
84 message xdash1
85 fork encourage_dash
86 chr_wait_animation 0 KONSPRrun_lt KONSPRrun_rt
87 var_training_counter2 = 1
88 message_remove
89 sleep 60
90 message xdash2 180
91 sound_dialog_play c00_01_37shinatama
92 sleep 180
93 message xgotrack
94 sound_dialog_play_block c00_01_40shinatama
95 particle obj_start create
96 trigvolume_enable tv_move4 1
97 }
98
99 #tv50 - in front of console 10 (func: move2); I've disabled it
100
101 func void lights(void)
102 {
103 particle t17 create
104 sleep 60
105 particle t16 create
106 sleep 60
107 particle t15 create
108 sleep 60
109 particle t14 create
110 sleep 60
111 particle t13 create
112 sleep 60
113 particle t12 create
114 sleep 60
115 particle t11 create
116 sleep 60
117 particle t10 create
118 sleep 60
119 particle t9 create
120 sleep 60
121 particle t8 create
122 sleep 60
123 particle t7 create
124 sleep 60
125 particle t6 create
126 sleep 60
127 particle t5 create
128 sleep 60
129 particle t4 create
130 sleep 60
131 particle t3 create
132 sleep 60
133 particle t2 create
134 sleep 60
135 particle t1 create
136 }
137
138 func void encourage_dash(string ai_name)
139 {
140 sleep 600
141 if(var_training_counter2 ne 1)
142 {
143 sound_dialog_play c00_01_39shinatama
144 message xencouragedash
145 rating = rating + 1
146 }
147 }
148
149 #tv51 - where you start your dash
150 func void move4(string ai_name)
151 {
152 message_remove xgotrack
153 var_training_counter = 0
154 trigvolume_enable tv1 1
155 trigvolume_enable tv2 1
156 trigvolume_enable tv3 1
157 trigvolume_enable tv4 1
158 trigvolume_enable tv5 1
159 trigvolume_enable tv6 1
160 trigvolume_enable tv7 1
161 trigvolume_enable tv8 1
162 trigvolume_enable tv9 1
163 trigvolume_enable tv10 1
164 trigvolume_enable tv11 1
165 trigvolume_enable tv12 1
166 trigvolume_enable tv13 1
167 trigvolume_enable tv14 1
168 trigvolume_enable tv15 1
169 trigvolume_enable tv16 1
170 trigvolume_enable tv17 1
171 particle obj_start kill
172 sound_dialog_play_interrupt c00_01_41shinatama
173 sleep 60
174 message xrun
175 particle obj_end create
176 trigvolume_enable tv_end 1
177 }
178
179 #tv34 - next to the 1st red light
180 func void track17(string ai_name)
181 {
182 particle t17 kill
183 var_training_counter = var_training_counter + 1
184 }
185
186 #tv33 - next to the 2nd red light
187 func void track16(string ai_name)
188 {
189 fork speed_timer
190 particle t16 kill
191 var_training_counter = var_training_counter + 1
192 }
193
194 #tv35 - next to the 3rd red light
195 func void track15(string ai_name)
196 {
197 particle t15 kill
198 var_training_counter = var_training_counter + 1
199 }
200
201 #tv37 - next to the 4th red light
202 func void track14(string ai_name)
203 {
204 particle t14 kill
205 var_training_counter = var_training_counter + 1
206 }
207
208 #tv38 - next to the 5th red light
209 func void track13(string ai_name)
210 {
211 particle t13 kill
212 var_training_counter = var_training_counter + 1
213 }
214
215 #tv39 - next to the 6th red light
216 func void track12(string ai_name)
217 {
218 particle t12 kill
219 var_training_counter = var_training_counter + 1
220 }
221
222 #tv40 - next to the 7th red light
223 func void track11(string ai_name)
224 {
225 particle t11 kill
226 var_training_counter = var_training_counter + 1
227 }
228
229 #tv41 - next to the 8th red light
230 func void track10(string ai_name)
231 {
232 particle t10 kill
233 var_training_counter = var_training_counter + 1
234 }
235
236 #tv36 - next to the 9th red light
237 func void track9(string ai_name)
238 {
239 particle t9 kill
240 var_training_counter = var_training_counter + 1
241 }
242
243 #tv42 - next to the 10th red light
244 func void track8(string ai_name)
245 {
246 particle t8 kill
247 var_training_counter = var_training_counter + 1
248 }
249
250 #tv43 - next to the 11th red light
251 func void track7(string ai_name)
252 {
253 particle t7 kill
254 var_training_counter = var_training_counter + 1
255 }
256
257 #tv44 - next to the 12th red light
258 func void track6(string ai_name)
259 {
260 particle t6 kill
261 var_training_counter = var_training_counter + 1
262 }
263
264 #tv45 - next to the 13th red light
265 func void track5(string ai_name)
266 {
267 particle t5 kill
268 var_training_counter = var_training_counter + 1
269 }
270
271 #tv46 - next to the 14th red light
272 func void track4(string ai_name)
273 {
274 particle t4 kill
275 var_training_counter = var_training_counter + 1
276 }
277
278 #tv47 - next to the 15th red light
279 func void track3(string ai_name)
280 {
281 particle t3 kill
282 var_training_counter = var_training_counter + 1
283 }
284
285 #tv48 - next to the 16th red light
286 func void track2(string ai_name)
287 {
288 particle t2 kill
289 var_training_counter = var_training_counter + 1
290 }
291
292 #tv49 - next to the 17th red light
293 func void track1(string ai_name)
294 {
295 particle t1 kill
296 var_training_counter = var_training_counter + 1
297 }
298
299 func void speed_timer(void)
300 {
301 sleep 540
302 var_training_counter3 = 1
303 }
304
305 #tv52 - at the end of the dash course; in some distance after tv49
306 func void track_end(string ai_name)
307 {
308 particle obj_end kill
309 message_remove
310 sleep 60
311 if(var_training_counter eq 17)
312 {
313 if(var_training_counter3 eq 1)
314 {
315 rating = rating + 1
316 sound_dialog_play_block c00_01_11shinatama
317 message xgoodbutslow 120
318 sleep 120
319 }
320 else
321 {
322 sound_dialog_play_block c00_01_42shinatama
323 message xgreat 120
324 sleep 120
325 }
326 message xendbasic 240
327 sound_dialog_play_block c00_01_44shinatama
328 sleep 240
329 message xgodoor
330 sound_dialog_play c00_01_48shinatama
331 trigvolume_enable tv_train_door 1
332 particle obj1 create
333 }
334 if(var_training_counter < 17)
335 {
336 if(var_training_counter3 eq 1)
337 {
338 rating = rating + 2
339 sound_dialog_play_block c00_01_43shinatama
340 message xslowtoo 360
341 sleep 360
342 }
343 else
344 {
345 rating = rating + 1
346 sound_dialog_play_block c00_01_43shinatama
347 message xpractice 360
348 sleep 360
349 }
350 fork try_it_again
351 }
352 }
353
354 func void try_it_again(void)
355 {
356 var_training_counter2 = 0
357 var_training_counter3 = 0
358 sleep 60
359 particle obj_start create
360 message xgotrack
361 particle t17 kill
362 particle t16 kill
363 particle t15 kill
364 particle t14 kill
365 particle t13 kill
366 particle t12 kill
367 particle t11 kill
368 particle t10 kill
369 particle t9 kill
370 particle t8 kill
371 particle t7 kill
372 particle t6 kill
373 particle t5 kill
374 particle t4 kill
375 particle t3 kill
376 particle t2 kill
377 particle t1 kill
378 particle t17 create
379 particle t16 create
380 particle t15 create
381 particle t14 create
382 particle t13 create
383 particle t12 create
384 particle t11 create
385 particle t10 create
386 particle t9 create
387 particle t8 create
388 particle t7 create
389 particle t6 create
390 particle t5 create
391 particle t4 create
392 particle t3 create
393 particle t2 create
394 particle t1 create
395 trigvolume_reset tv1
396 trigvolume_reset tv2
397 trigvolume_reset tv3
398 trigvolume_reset tv4
399 trigvolume_reset tv5
400 trigvolume_reset tv6
401 trigvolume_reset tv7
402 trigvolume_reset tv8
403 trigvolume_reset tv9
404 trigvolume_reset tv10
405 trigvolume_reset tv11
406 trigvolume_reset tv12
407 trigvolume_reset tv13
408 trigvolume_reset tv14
409 trigvolume_reset tv15
410 trigvolume_reset tv16
411 trigvolume_reset tv17
412 trigvolume_reset tv_end
413 trigvolume_reset tv_move4
414 }
415
416 #tv53 - in front of console 11 (func: review); I've disabled it
417
418 #tv22 - in front of door 98
419 func void train_door(string ai_name)
420 {
421 message_remove
422 sleep 60
423 particle obj1 kill
424 message unlock_door1 240
425 particle door1_locklight02 do start
426 door_unlock 98
427 }
428
429 ### JUMP ###
430
431 #tv25 - after door 98
432 func void train_jump(string ai_name)
433 {
434 var_training_counter = 0
435 var_training_counter2 = 0
436 var_training_counter3 = 0
437 lock_keys keys_inventory
438 message_remove
439 sound_dialog_play_interrupt c00_01_49shinatama
440 sleep 60
441 message jump_basic 180
442 sleep 180
443 lock_keys keys_jump
444 message c01_50_06
445 chr_wait_animtype 0 jump
446 message_remove c01_50_06
447 sleep 60
448 sound_dialog_play c00_01_08shinatama
449 message c01_50_07
450 chr_wait_animation 0 KONOKOjump_fw_start KONOKOjump_lt_start KONOKOjump_rt_start KONOKOjump_bk_start
451 message_remove c01_50_07
452 sleep 60
453 sound_dialog_play c00_01_02shinatama
454 message jump_basic2 180
455 sleep 180
456 message jump1
457 sound_dialog_play c00_01_50shinatama
458 particle forcefield1 do stop
459 particle obj2 create
460 env_show 2011 0
461 }
462
463 #tv54 - on the box with the energy cell
464 func void powerup(string ai_name)
465 {
466 fork pickup_powerup
467 sleep 80
468 sound_dialog_play_interrupt c00_01_46shinatama
469 sound_dialog_play_block pause
470 sleep 30
471 sound_dialog_play c00_01_47shinatama
472 sound_dialog_play_block pause
473 sleep 30
474 if(var_training_counter ne 1) sound_dialog_play c00_01_50shinatama
475 }
476
477 func void pickup_powerup(void)
478 {
479 chr_wait_animtype 0 Pickup_Object
480 rating = rating - 1
481 sleep 80
482 message xpower1 300
483 }
484
485 ### CROUCH ###
486
487 #tv21 - after the forcefield
488 func void train_crouch(string ai_name)
489 {
490 trigvolume_enable trigger_volume_62 0
491 message_remove
492 var_training_counter = 1
493 particle door1_locklight02 do stop
494 door_lock 98
495 particle obj2 kill
496 sleep 60
497 sound_dialog_play_interrupt c00_01_01shinatama
498 ai2_spawn demo1
499 ai2_spawn demo2
500 ai2_spawn demo3
501 chr_nocollision demo1 1
502 chr_nocollision demo2 1
503 chr_nocollision demo3 1
504 ai2_dopath demo1 pdemo1
505 ai2_dopath demo2 pdemo2
506 ai2_dopath demo3 pdemo3
507 ai2_setjobstate demo1
508 ai2_setjobstate demo2
509 ai2_setjobstate demo3
510 lock_keys keys_crouch
511 message shift 120
512 sleep 120
513 sound_dialog_play c00_01_51shinatama
514 message xinterrupt 120
515 sleep 120
516 message xfite
517 particle fight create
518 trigvolume_enable trigger_volume_71 1
519 }
520
521 #tv66 - on the box which is in front of the window
522 func void t71(string ai_name)
523 {
524 var_training_counter = 0
525 particle fight kill
526 message_remove xfite
527 chr_nocollision demo1 0
528 chr_nocollision demo2 0
529 chr_nocollision demo3 0
530 env_show 2010 1
531 chr_changeteam demo1 Syndicate
532 chr_changeteam demo2 Syndicate
533 }
534
535 #lose func of demo1 and demo2
536 func void demo_over(string ai_name)
537 {
538 var_training_counter = var_training_counter + 1
539 if(var_training_counter eq 2)
540 {
541 ai2_dopath demo3 pdemo4
542 ai2_setjobstate demo3
543 sleep 90
544 message xresume 180
545 sound_dialog_play c00_01_53shinatama
546 sound_dialog_play_block pause
547 if(var_training_counter < 10) crouch2
548 }
549 }
550
551 #lose func of demo3
552 func void demo3dies(string ai_name)
553 {
554 var_training_counter = 10
555 chr_changeteam demo1 Konoko
556 chr_changeteam demo2 Konoko
557 sleep 60
558 message xresume 180
559 sound_dialog_play c00_01_52shinatama
560 sound_dialog_play_block pause
561 crouch2
562 }
563
564 func void crouch2(string ai_name)
565 {
566 var_training_counter = 0
567 message c01_50_09
568 chr_wait_animtype 0 crouch_run crouch_run_backwards crouch_run_sidestep_left crouch_run_sidestep_right
569 sleep 60
570 message_remove c01_50_09
571 sleep 60
572 message c01_50_10 240
573 sound_dialog_play_block c00_01_54shinatama
574 sleep 240
575 message c01_50_11
576 chr_wait_animation 0 KONCOMcrouch_fw KONCOMcrouch_rt KONCOMcrouch_lt KONOKOcrouch_fw KONOKOss_lt_slide KONOKOss_rt_slide KONOKOrun_bk_slide
577 message_remove c01_50_11
578 sleep 60
579 sound_dialog_play_block c00_01_05shinatama
580 sound_dialog_play_block pause
581 sleep 30
582 message back
583 chr_wait_animtype 0 crouch_back
584 message_remove back
585 sleep 60
586 sound_dialog_play_block c00_01_07shinatama
587 sound_dialog_play_block pause
588 sleep 30
589 sound_dialog_play_block c00_01_55shinatama
590 sound_dialog_play_block pause
591 message c01_50_16
592 chr_wait_animstate 0 run_slide
593 message_remove c01_50_16
594 sleep 60
595 sound_dialog_play_block c00_01_06shinatama
596 sound_dialog_play_block pause
597 sleep 30
598 message jump_flip
599 message c01_50_19
600 chr_wait_animtype 0 flip
601 message_remove
602 sleep 60
603 sound_dialog_play_block c00_01_03shinatama
604 sound_dialog_play_block pause
605 particle forcefield2 do stop
606 env_show 2012 0
607 sleep 60
608 sound_dialog_play_block c00_01_61shinatama
609 message c01_50_23
610 particle obj3 create
611 sleep 600
612 if(var_training_counter ne 1)
613 {
614 rating = rating + 1
615 sound_dialog_play_block c00_01_62shinatama
616 sound_dialog_play_block pause
617 message_remove c01_50_23
618 sleep 60
619 message jump_encourage 300
620 sleep 300
621 message c01_50_23
622 sleep 900
623 }
624 if(var_training_counter ne 1)
625 {
626 rating = rating + 1
627 message_remove c01_50_23
628 sleep 60
629 sound_dialog_play_block c00_01_63shinatama
630 particle obj3 kill
631 sleep 30
632 particle obj4 create
633 message jump_encourage2
634 }
635 }
636
637 ### FIGHT ###
638
639 #tv23 - after the forcefield
640 func void train_fighting(string ai_name)
641 {
642 var_training_counter = 1
643 music_stop
644 particle obj3 kill
645 particle obj4 kill
646 trig_deactivate 1
647 trig_deactivate 2
648 trig_deactivate 3
649 message_remove
650 sleep 60
651 sound_dialog_play_interrupt c00_01_64shinatama
652 message begin_fight 240
653 sleep 240
654 lock_keys keys_attack
655 message xpunch
656 chr_wait_animtype 0 punch
657 message_remove xpunch
658 sleep 60
659 message xkick
660 chr_wait_animtype 0 kick
661 message_remove xkick
662 sleep 60
663 sound_dialog_play_block c00_01_65shinatama
664 message punch
665 chr_wait_animtype 0 punch2
666 message_remove punch
667 sleep 60
668 message c01_50_27 180
669 sound_dialog_play_interrupt c00_01_66shinatama
670 sound_dialog_play_block pause
671 var_training_counter = 0
672 message c01_50_29
673 fork wait_for_combo
674 chr_wait_animtype 0 ppk
675 var_training_counter = 1
676 message_remove
677 sleep 60
678 message xppk
679 sound_dialog_play_interrupt c00_01_07shinatama
680 sleep 30
681 message_remove xppk
682 sound_dialog_play_block c00_01_70shinatama
683 sound_dialog_play_block pause
684 sleep 30
685 sound_dialog_play_block c00_01_71shinatama
686 message xspar2
687 ai2_spawn dum_hit_flash
688 chr_lock_active dum_hit_flash
689 chr_death_lock dum_hit_flash 1
690 particle door2_locklight02 do start
691 door_unlock 99
692 }
693
694 func void wait_for_combo(string ai_name)
695 {
696 sleep 600
697 if(var_training_counter eq 0)
698 {
699 rating = rating + 1
700 message_remove c01_50_29
701 sound_dialog_play_block c00_01_68shinatama
702 sleep 60
703 }
704 if(var_training_counter eq 0)
705 {
706 message c01_50_29b 240
707 sleep 240
708 }
709 if(var_training_counter eq 0) message c01_50_29
710 }
711
712 ### FIGHT AIGAINST NEUTRAL DRONE ###
713
714 #tv27 - after door 99
715 func void train_hit_flash(string ai_name)
716 {
717 sound_music_start atm_ft68 0
718 sound_music_volume atm_ft68 0.75 3.0
719 message_remove xspar2
720 sleep 60
721 sound_dialog_play_block c00_01_77shinatama
722 message start_hit
723 ai2_makeignoreplayer dum_hit_flash 1
724 }
725
726 #tv68 - the field with the drone (exit func)
727 func void flash_path(string ai_name)
728 {
729 sleep 90
730 ai2_dopath dum_hit_flash patrol_dum_hit_flash
731 }
732
733 #hit func of dum_hit_flash
734 func void hurt_dummy1(string ai_name)
735 {
736 particle steam stop
737 particle door2_locklight02 do stop
738 door_lock 99
739 message_remove start_hit
740 sleep 60
741 ai2_dopath dum_hit_flash patrol_dum_hit_flash
742 ai2_setjobstate dum_hit_flash
743 message c01_50_35 240
744 sleep 240
745 message blueflash 240
746 sleep 240
747 message c01_50_37 240
748 sleep 240
749 message c01_50_38 240
750 sleep 240
751 sound_dialog_play_block c00_01_78shinatama
752 sleep 360
753 message goto_throw
754 particle door3_locklight02 do start
755 door_unlock 100
756 ai2_spawn dum_train_throw
757 chr_lock_active dum_train_throw
758 chr_death_lock dum_train_throw 1
759 ai2_makeignoreplayer dum_train_throw 1
760 }
761
762 #lose func of dum_hit_flash
763 func void regen1(string ai_name)
764 {
765 message_remove blueflash
766 message_remove c01_50_37
767 message_remove c01_50_38
768 sleep 60
769 message xregen1 180
770 sleep 180
771 chr_set_health dum_hit_flash 50
772 ai2_dopath dum_hit_flash patrol_dum_hit_flash
773 ai2_setjobstate dum_hit_flash
774 }
775
776 ### THROW ###
777
778 #tv26 - after door 100
779 func void train_throw(string ai_name)
780 {
781 var_training_counter = 0
782 message_remove
783 sleep 60
784 sound_dialog_play_interrupt c00_01_79shinatama
785 ai2_dopath dum_train_throw patrol_train_throw2
786 ai2_setjobstate dum_train_throw
787 message c01_50_41
788 chr_wait_animtype 0 throw_forward_punch throw_forward_kick run_throw_forward_punch run_throw_forward_kick
789 message_remove c01_50_41
790 sleep 60
791 message xthrow1 300
792 sleep 300
793 message xthrow2 300
794 sleep 300
795 sound_dialog_play c00_01_48shinatama
796 message goto_block
797 sleep 60
798 door_unlock 101
799 particle door4_locklight02 do start
800 particle door4b_locklight02 do start
801 ai2_spawn dum_train_block
802 ai2_makeignoreplayer dum_train_block 1
803 chr_invincible 0 1
804 }
805
806 #tv67 - the field with the drone
807 func void throw_path(string ai_name)
808 {
809 sleep 90
810 ai2_dopath dum_train_throw patrol_train_throw2
811 }
812
813 #hit func of dum_train_throw
814 func void lockthrow(void)
815 {
816 particle door3_locklight02 do stop
817 door_lock 100
818 }
819
820 #lose func of dum_train_throw
821 func void regen2(string ai_name)
822 {
823 sleep 60
824 message xregen1 180
825 sleep 180
826 chr_set_health dum_train_throw 50
827 ai2_dopath dum_train_throw patrol_train_throw2
828 ai2_setjobstate dum_train_throw
829 }
830
831 ### BLOCK ###
832
833 #tv24 - after door 101
834 func void train_block(string ai_name)
835 {
836 message_remove goto_block
837 sound_dialog_play_block c00_01_72shinatama
838 sound_dialog_play_block pause
839 sound_dialog_play_block c00_01_73shinatama
840 if(var_training_counter ne 1) message c01_50_33
841 }
842
843 #tv29 - the field with the drone (entry func)
844 func void train_block2(string ai_name)
845 {
846 var_training_counter = 1
847 ai2_makeignoreplayer dum_train_block 0
848 ai2_dopath dum_train_block patrol_56b
849 ai2_setjobstate dum_train_block
850 if(var_training_counter2 ne 1) go_on
851 }
852
853 func void go_on(void)
854 {
855 var_training_counter2 = 1
856 message_remove c01_50_33
857 door_lock 101
858 door_close 101
859 particle door4_locklight02 do stop
860 chr_delete dum_train_throw
861 chr_delete dum_hit_flash
862 chr_delete demo1
863 chr_delete demo2
864 chr_delete demo3
865 sleep 60
866 message c01_50_32 300
867 sound_dialog_play_block c00_01_74shinatama
868 sound_dialog_play_pause
869 sleep 30
870 sound_dialog_play_block c00_01_75shinatama
871 message xblocking2 300
872 sound_dialog_play_pause
873 sleep 30
874 sound_dialog_play_block c00_01_76shinatama
875 sleep 120
876 ai2_makeignoreplayer dum_train_block 1
877 ai2_dopath dum_train_block patrol_56b
878 ai2_setjobstate dum_train_block
879 sound_dialog_play_block c00_01_83shinatama
880 door_unlock 102
881 particle door5_locklight02 do start
882 message goto_shoot
883 chr_inv_reset 0
884 music_stop
885 sleep 60
886 ai2_spawn dum_train_shoot
887 ai2_spawn dum_train_shoot2
888 ai2_passive dum_train_shoot 1
889 ai2_passive dum_train_shoot2 1
890 chr_invincible dum_train_shoot 1
891 chr_invincible dum_train_shoot2 1
892 chr_invincible 0 0
893 }
894
895 #tv29 - the field with the drone (exit func)
896 func void block_path(string ai_name)
897 {
898 var_training_counter = 0
899 message xdronedeactive 180
900 ai2_makeignoreplayer dum_train_block 1
901 ai2_dopath dum_train_block patrol_56
902 }
903
904 #lose func of dum_train_block
905 func void disable_tv46(void)
906 {
907 message_remove c01_50_33
908 trigvolume_enable trigger_volume_46 0
909 }
910
911 #tv78 - in front of door 102
912 func void block_path2(string ai_name)
913 {
914 ai2_makeignoreplayer dum_train_block 1
915 ai2_dopath dum_train_block patrol_56
916 }
917
918 ### SHOOT ###
919
920 #tv28 - after door 102
921 func void train_shoot(string ai_name)
922 {
923 var_training_counter = 0
924 var_training_counter2 = 0
925 fork wait_for_reload
926 message_remove xdronedeactive
927 particle g_tap1 create
928 sleep 7
929 weapon_spawn w1_tap 7042
930 wp_disable_fade = 1
931 message_remove goto_shoot
932 sleep 60
933 lock_keys keys_reload
934 sound_dialog_play_interrupt c00_01_84shinatama
935 sound_dialog_play_pause
936 chr_wait_animtype 0 Pickup_Pistol Pickup_Pistol_Mid
937 particle door5_locklight02 do stop
938 door_lock 102
939 trigvolume_enable tv74 1
940 trigvolume_enable tv75 1
941 ui_show_element left 1
942 sleep 60
943 message c01_50_54
944 sound_dialog_play_block c00_01_85shinatama
945 chr_wait_animtype 0 Autopistol_Recoil
946 sleep 120
947 message_remove c01_50_54
948 }
949
950 func void wait_for_reload(void)
951 {
952 chr_wait_animtype 0 reload_pistol reload_rifle
953 var_training_counter2 = var_training_counter2 + 1
954 if(var_training_counter2 > 1) rating = rating + 1
955 sleep 180
956 if(save_point eq 0) fork wait_for_reload
957 }
958
959 #tv69 - the complete room
960 func void need_ammo(string ai_name)
961 {
962 trigvolume_enable tv74 0
963 if(chr_has_empty_weapon(0) eq 1)
964 {
965 if(var_training_counter eq 0 and var_training_counter3 ne 1) need_red_clips
966 if(var_training_counter eq 1 and var_training_counter3 ne 1) need_green_cells
967 }
968 sleep 60
969 if(var_training_counter ne 10) trigvolume_enable tv74 1
970 }
971
972 func void need_red_clips(void)
973 {
974 var_training_counter3 = 1
975 if(var_training_counter2 eq 0)
976 {
977 message_remove xkeepshoot
978 sound_dialog_play_interrupt c00_01_87shinatama
979 message c01_50_61
980 }
981 particle g_tap1 create
982 sleep 7
983 powerup_spawn ammo 7042
984 if(var_training_counter2 eq 0)
985 {
986 chr_wait_animtype 0 Pickup_Object_Mid Pickup_Object
987 message_remove c01_50_61
988 sleep 60
989 message xreload
990 chr_wait_animtype 0 reload_pistol
991 message_remove xreload
992 sleep 60
993 message xkeepshoot
994 }
995 if(var_training_counter2 > 0) chr_wait_animtype 0 reload_pistol
996 var_training_counter3 = 0
997 }
998
999 func void need_green_cells(void)
1000 {
1001 var_training_counter3 = 1
1002 particle g_phr1 create
1003 sleep 7
1004 powerup_spawn cell 7044
1005 chr_wait_animtype 0 reload_riffle
1006 var_training_counter3 = 0
1007 }
1008
1009 #tv70 - the complete room
1010 func void targets_gone(string ai_name)
1011 {
1012 trigvolume_enable tv75 0
1013 if(env_broken(3001, 3018) eq 18) targets_are_gone
1014 else
1015 {
1016 sleep 60
1017 trigvolume_enable tv75 1
1018 }
1019 }
1020
1021 func void targets_are_gone(void)
1022 {
1023 var_training_counter = 1
1024 message_remove xkeepshoot
1025 particle g_phr1 create
1026 sleep 7
1027 weapon_spawn w3_phr 7045
1028 sound_dialog_play_interrupt c00_01_86shinatama
1029 sound_dialog_play_block pause
1030 message c01_50_51
1031 message c01_50_53
1032 sound_dialog_play_block c00_01_88shinatama
1033 chr_wait_animtype 0 Pickup_Rifle Pickup_Rifle_Mid
1034 message_remove
1035 sleep 30
1036 ai2_passive dum_train_shoot 0
1037 sound_dialog_play_interrupt c00_01_89shinatama
1038 ai2_dopath dum_train_shoot patrol_train_shoot
1039 ai2_setjobstate dum_train_shoot
1040 chr_invincible dum_train_shoot 0
1041 }
1042
1043 #lose func of dum_train_shoot
1044 func void droid1_gone(string ai_name)
1045 {
1046 sound_dialog_play_block c00_01_90shinatama
1047 sound_dialog_play_block pause
1048 sleep 30
1049 ai2_passive dum_train_shoot2 0
1050 ai2_dopath dum_train_shoot2 patrol_train_shoot2
1051 ai2_setjobstate dum_train_shoot2
1052 chr_invincible dum_train_shoot2 0
1053 }
1054
1055 #lose func of dum_train_shoot2
1056 func void droid2_gone(string ai_name)
1057 {
1058 var_training_counter = 10
1059 message_remove
1060 if(rating < 1) message poopy 300
1061 if(rating eq 1) message poopy2 300
1062 if(rating eq 2) message poopy3 300
1063 if(rating eq 3) message poopy4 300
1064 if(rating eq 4) message poopy5 300
1065 if(rating eq 5) message poopy6 300
1066 if(rating > 5) message poopy7 300
1067 sound_dialog_play_block c00_01_91shinatama
1068 sound_dialog_play_block pause
1069 wp_disable_fade = 0
1070 lock_keys keys_all
1071 sleep 60
1072 fade_out 0 0 0 30
1073 sleep 30
1074 ui_show_element right 1
1075 save_point = 1
1076 fork remove_ai
1077 fork start
1078 fade_in 30
1079 }
1080
1081 #####################
1082 ### TEXT CONSOLES ###
1083 #####################
1084
1085 #console 11
1086 func void review2(string ai_name)
1087 {
1088 text_console level_1c
1089 console_reset 11
1090 }
1091
1092 #console 18
1093 func void console_jump(string ai_name)
1094 {
1095 text_console level_1g
1096 console_reset 18
1097 }
1098
1099 #console 17
1100 func void console_escape(string ai_name)
1101 {
1102 text_console level_1h
1103 console_reset 17
1104 }
1105
1106 #console 16
1107 func void console_attack(string ai_name)
1108 {
1109 text_console level_1i
1110 console_reset 16
1111 }
1112
1113 #console 15
1114 func void console_flash(string ai_name)
1115 {
1116 text_console level_1j
1117 console_reset 15
1118 }
1119
1120 #console 14
1121 func void console_throw(string ai_name)
1122 {
1123 text_console level_1k
1124 console_reset 14
1125 }
1126
1127 #console 13
1128 func void console_block(string ai_name)
1129 {
1130 text_console level_1l
1131 console_reset 13
1132 }
1133
1134 #console 12
1135 func void lastreview(string ai_name)
1136 {
1137 text_console level_1f
1138 console_reset 12
1139 }