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

File Contents

# Content
1 ############
2 ### MAIN ###
3 ############
4
5 func void main(void)
6 {
7 gl_fog_red = 0
8 gl_fog_blue = 0
9 gl_fog_green = 0
10 gl_fog_start = .995
11 gs_farclipplane_set 5000
12 ui_suppress_prompt = 1
13 chr_auto_aim_dist = 0
14 start
15 }
16
17 #############
18 ### START ###
19 #############
20
21 func void start(string ai_name)
22 {
23 fork deactivate_stuff
24 if(save_point eq 0) save_point = 1
25 if(save_point eq 1) fork intro
26 if(save_point eq 2) fork load_s2
27 if(save_point eq 3) fork load_s3
28 if(save_point eq 4) fork load_s4_all
29 sleep 5
30 fork sp_all
31 }
32
33 func void deactivate_stuff(void)
34 {
35 #not used
36 trigvolume_enable trigger_volume_02 0
37 trigvolume_enable trigger_volume_03 0
38 trigvolume_enable trigger_volume_04 0
39 trigvolume_enable trigger_volume_04_copy 0
40 trigvolume_enable trigger_volume_05 0
41 trigvolume_enable trigger_volume_06 0
42 trigvolume_enable trigger_volume_07 0
43 trigvolume_enable trigger_volume_07_copy 0
44 trigvolume_enable trigger_volume_08 0
45 trigvolume_enable trigger_volume_08_copy2 0
46 trigvolume_enable trigger_volume_08_copy2_copy 0
47 trigvolume_enable trigger_volume_08_copy2_copy_copy 0
48 trigvolume_enable trigger_volume_10_copy 0
49 trigvolume_enable trigger_volume_10_copy_copy 0
50 trigvolume_enable trigger_volume_11 0
51 trigvolume_enable trigger_volume_23 0
52 trigvolume_enable trigger_volume_23_copy 0
53 trigvolume_enable trigger_volume_26 0
54 trigvolume_enable trigger_volume_29_copy 0
55 trigvolume_enable trigger_volume_30 0
56 trigvolume_enable trigger_volume_31 0
57 trigvolume_enable trigger_volume_32 0
58 trigvolume_enable trigger_volume_33 0
59 trigvolume_enable trigger_volume_35 0
60 trigvolume_enable trigger_volume_44 0
61 trigvolume_enable trigger_volume_46 0
62 trigvolume_enable trigger_volume_46_copy 0
63 trigvolume_enable trigger_volume_46_copy2 0
64 trigvolume_enable trigger_volume_46_copy3 0
65 trigvolume_enable trigger_volume_46_copy_copy 0
66 trigvolume_enable trigger_volume_46_copy4 0
67 trigvolume_enable trigger_volume_46_copy4_copy 0
68 trigvolume_enable trigger_volume_52 0
69 trigvolume_enable trigger_volume_56 0
70 trigvolume_enable trigger_volume_60 0
71 trigvolume_enable trigger_volume_61 0
72 trigvolume_enable trigger_volume_65 0
73 trigvolume_enable trigger_volume_77 0
74 trigvolume_enable trigger_volume_78 0
75 trigvolume_enable trigger_volume_80 0
76 trigvolume_enable trigger_volume_83 0
77 trigvolume_enable trigger_volume_84 0
78 #used
79 env_show 31 0
80 env_show 41 0
81 env_shade 1500 1501 .9 .8 .9
82 }
83
84 func void you_lose(string ai_name)
85 {
86 fade_out 0 0 0 30
87 sleep 30
88 lose
89 }
90
91 ####################################
92 ### SEVERAL TIMES USED FUNCTIONS ###
93 ####################################
94
95 func void sp_all(void)
96 {
97 co_message_display = 0
98 if(save_point eq 1) save_game 1 autosave
99 if(save_point eq 2) save_game 2 autosave
100 if(save_point eq 3) save_game 3 autosave
101 if(save_point eq 4) save_game 4 autosave
102 sleep 180
103 co_message_display = 1
104 }
105
106 func void remove_ai(void)
107 {
108 ai2_kill
109 sleep 60
110 powerup_reset
111 weapon_reset
112 sleep 240
113 corpse_reset
114 }
115
116 func void music_stop(void)
117 {
118 sound_music_stop mus_cool19
119 sound_music_stop mus_atm_cl12lp
120 sound_music_stop mus_low1
121 sound_music_stop mus_fitec
122 }
123
124 #tv63 to tv73
125 func void deathfall(void)
126 {
127 sleep 30
128 cm_detach
129 sleep 30
130 chr_set_health 0 0
131 }
132
133 ##########
134 ### SP1 ###
135 ##########
136
137 ### 1ST ROOF ###
138
139 func void intro(void)
140 {
141 playback 0 IntroKonoko
142 if(save_point ne 1) save_game 1 autosave
143 chr_envanim_stop IntroNinja
144 chr_teleport IntroNinja 600
145 chr_facetoflag IntroNinja 600
146 chr_animate IntroNinja NINCOMcrouch_idle
147 ai2_passive IntroNinja 1
148 ai2_setmovementmode IntroNinja creep
149 sleep 40
150 playback_block IntroNinja IntroNinja
151 ai2_passive IntroNinja 0
152 ai2_attack IntroNinja 0
153 ai2_setalert A_Sr9 combat
154 ai2_setjobstate A_Sr9
155 objective_set 1 silent
156 target_set 7006 0
157 }
158
159 #tv29 - crossing point to the lower floor
160 func void t22(string ai_name)
161 {
162 ai2_dopath IntroNinja patrol_39
163 ai2_setjobstate IntroNinja
164 }
165
166 #tv32 - box on the right side (enter func: t33in, levae func: t33out); I've disabled it
167 #tv31 - box on the left side (enter func: t32in, levae func: t32out); I've disabled it
168
169 #tv1 - above the abyss
170 func void t1(string ai_name)
171 {
172 ai2_dopath IntroNinja patrol_40
173 ai2_setjobstate IntroNinja
174 ai2_dopath A_N1 patrol_02
175 ai2_setjobstate A_N1
176 ai2_dopath A_Sr9 patrol_09
177 ai2_setjobstate A_Sr9
178 ai2_spawn A_N7
179 ai2_spawn A_N8
180 }
181
182 func void patrolscript0001(string ai_name)
183 {
184 playback_block IntroNinja ninja_jump5 interp 30
185 }
186
187 func void patrolscript0022(string ai_name)
188 {
189 playback_block IntroNinja ninja_jump4 interp 20
190 }
191
192 func void patrolscript0002(string ai_name)
193 {
194 playback_block A_N1 ninja_jump interp 30
195 }
196
197 func void patrolscript0005(string ai_name)
198 {
199 playback_block A_T4 tanker1 interp 20
200 }
201
202 func void patrolscript0004(string ai_name)
203 {
204 playback_block A_T6 tanker2 interp 20
205 }
206
207 ### 2ND ROOF ###
208
209 #tv55 - after the abyss, at the beginning of the 2nd roof (enter func: t57, leave func: t57b); I've disabled it
210
211 ### 3RD ROOF ###
212
213 #tv56 - after the abyss, at the beginning of the 3rd roof
214 func void t58(string ai_name)
215 {
216 sound_music_start mus_cool19 0.0
217 sound_music_volume mus_cool19 0.75 3.0
218 ai2_dopath IntroNinja patrol_51
219 ai2_setjobstate IntroNinja
220 ai2_dopath A_N1 patrol_50
221 ai2_setjobstate A_N1
222 ai2_dopath A_Sr9 patrol_49
223 ai2_setjobstate A_Sr9
224 ai2_spawn A_C5
225 ai2_spawn A_Sr3
226 ai2_spawn A_T4
227 ai2_spawn A_T6
228 particle b01_rain1 do start
229 particle b01_rain2 do start
230 particle b01_rain3 do start
231 }
232
233 #tv35 - after tv56 (func: rain1); I've disabled it
234
235 ### 4TH ROOF ###
236
237 #tv4 - at the right side of the mast (func: t3); I've disabled it
238 #tv2 - at the left side of the mast (func: t2); I've disabled it
239
240 ### 5TH ROOF ###
241
242 #tv57 - after the abyss, at the beginning of the 5th roof (enter func: t59, leave func: t59b); I've disabled it
243 #tv5 - on the right side after tv59 (func: t5); I've disabled it
244 #tv4 - on the left side after tv59 (func: t4); I've disabled it
245 #lose func of A_T4 and A_T6: music_stop
246 #tv6 - around the place, where you find the hypo (func: t6); I've disabled it
247 #tv7 - in front of the staircase to the higher floor (funnc: b01); not used
248 #tv30 - under the passageway; near the place, where you find the shield (func: t31); I've disabled it
249 #tv33 - after tv7 (func: t7); I've disabled it
250 #tv34 - after tv33, on the right side after the staircase (func: b02); not used
251 #tv8 - in front of tv38 (func: rain1); I've disabled it
252 #tv37 - in front of tv38 (func: rain2); I've disabled it
253
254 #tv36 - in front of the passage, from the left side to the right side
255 func void t8(string ai_name)
256 {
257 music_stop
258 chr_delete IntroNinja
259 chr_delete A_N1
260 chr_delete A_Sr9
261 ai2_spawn B_Sr10
262 ai2_spawn B_Sr10a
263 ai2_spawn B_R11
264 ai2_spawn B_R12a
265 ai2_spawn B_Sr12
266 ai2_spawn B_T13
267 ai2_dopath A_T6 patrol_42
268 ai2_setjobstate A_T6
269 ai2_dopath A_T4 patrol_42
270 ai2_setjobstate A_T4
271 ai2_setjobstate A_Sr3
272 ai2_setjobstate A_C5
273 ai2_dopath A_N7 patrol_45
274 ai2_setjobstate A_N7
275 ai2_dopath A_N8 patrol_45
276 ai2_setjobstate A_N8
277 }
278
279 func void patrolscript0011(string ai_name)
280 {
281 playback_block B_T13 tanker_jump interp 30
282 }
283
284 #tv39 - in the middle of the passage, from the left side to the right side (func: rain2); I've disabled it)
285 #tv38 - in the middle of the passage, after tv39, from the left side to the right side (func: rain3); I've disabled it)
286
287 #tv80 - after the passage, from the left side to the right side
288 func void runup(void)
289 {
290 ai2_dopath B_Sr10 patrol_10z
291 ai2_setjobstate B_Sr10
292 particle b02_rain1 do start
293 particle b02_rain2 do start
294 particle b02_rain3 do start
295 }
296
297 ### 6TH ROOF ###
298
299 #tv9 - at the beginning of the 6th roof, from the left side to the right side
300 func void t10(string ai_name)
301 {
302 sound_dialog_play c11_39_03konoko
303 ai2_spawn B_SuperNinja
304 chr_boss_shield B_SuperNinja
305 chr_unstoppable B_SuperNinja 1
306 chr_neutral B_SuperNinja 1
307 playback_block B_SuperNinja superninja1 interp 20
308 sleep 60
309 chr_delete B_SuperNinja
310 }
311
312 #tv85 - at the same place as tv9 (enter func: t83, leave func: t83b); I've disabled it
313 #tv41 - after tv85, from the left side to the right side (func: rain4); I've disabled it
314 #tv40 - in some distance after tv 85, from the left side to the right side (enter func: rain5, leave func: t77); I've disabled it
315 #tv58 - at the end of the 6th roof, where you can jump to the 7th roof (eneter func: t60, leave func: t60b); I've disabled it
316
317 ### 7TH ROOF ###
318
319 #t42 - at the beginning of the 7th roof
320 func void t11(string ai_name)
321 {
322 ai2_spawn C_N17
323 ai2_spawn C_N18
324 ai2_dopath B_T13 patrol_41
325 ai2_setjobstate B_T13
326 particle el1_locklight01 do start
327 particle b03_rain1 do start
328 particle b03_rain2 do start
329 particle b03_rain3 do start
330 }
331
332 #tv10 - after tv42 (func: rain6); I've disabled it
333
334 #tv74 - around the entrance of the elavator and in the elevator; used to count the enemies inside it; see next func
335
336 #tv11 - in the middle of the elevator
337 func void t12(string ai_name)
338 {
339 trigvolume_enable trigger_volume_12 0
340 if(trigvolume_count(62) eq 0) Elevator
341 else
342 {
343 sleep 60
344 trigvolume_enable trigger_volume_12 1
345 }
346 }
347
348 ##########
349 ### SP2 ###
350 ##########
351
352 func void Elevator(void)
353 {
354 sound_dialog_play c11_39_02konoko
355 fade_out 0 0 0 30
356 sleep 30
357 load_s2
358 chr_facetoflag 0 44
359 chr_teleport 0 44
360 fade_in 30
361 }
362
363 func void load_s2(void)
364 {
365 fork remove_ai
366 if(save_point eq 2) restore_game
367 ai2_spawn C_Sr15
368 ai2_spawn C_T16
369 ai2_spawn C_R55
370 ai2_spawn C_N57
371 ai2_spawn D_C19
372 ai2_spawn D_Sb20
373 ai2_spawn D_R21
374 env_show 31 1
375 objective_set 1 silent
376 target_set 47 0
377 }
378
379 ### 1ST ROOF ###
380
381 func void patrolscript0077(string ai_name)
382 {
383 ai2_dopath D_R21 patrol_21
384 ai2_setjobstate D_R21
385 }
386
387 #tv12 - after door 3
388 func void s2(string ai_name)
389 {
390 if(save_point eq 2)
391 {
392 particle b03_rain1 do start
393 particle b03_rain2 do start
394 particle b03_rain3 do start
395 }
396 else
397 {
398 save_game 2 autosave
399 particle b01_rain1 do stop
400 particle b01_rain2 do stop
401 particle b01_rain3 do stop
402 particle b02_rain1 do stop
403 particle b02_rain2 do stop
404 particle b02_rain3 do stop
405 }
406 }
407
408 #tv75 - after the stairs to the higher floor (func: t65); I've disabled it
409
410 ### 2ND ROOF ###
411
412 #tv43 - complete 2nd roof (func: rain7); I've disabled it
413 #tv48 - above the abyss, crossing from the 2nd roof to the 3rd roof (func: rain9); I've disabled it
414
415 ### 3RD ROOF ###
416
417 #tv17 - at the beginning of the 3rd roof
418 func void t18(string ai_name)
419 {
420 sound_music_start mus_atm_cl12lp 0.0
421 sound_music_volume mus_atm_cl12lp 0.75 3.0
422 particle b04_rain1 do start
423 particle b04_rain2 do start
424 particle b04_rain3 do start
425 particle b04_rain4 do start
426 particle b04_rain5 do start
427 particle b04_rain6 do start
428 }
429
430 #tv48 - at the same place as tv17 (func: rain9); I've disabled it
431 #tv45 - in some distance after tv48 (func: rain10); I've disabled it
432 #tv46 - in some distance after tv45 (func: rain11); I've disabled it
433 #tv47 - in some distance after tv46 (func: rain12); I've disabled it
434 #tv53 - in some distance after tv47 (func: rain12); I've disabled it
435 #tv49 - in some distance after tv53 (func: rain13); I've disabled it
436 #tv76 - in some distance in front of of the end of the right "colonnade" (func: t77); I've disabled it
437 #tv77 - at the end of the left "colonnade" (func: t78); I've disabled it
438
439 #tv13 - at the end of the 3rd roof
440 func void t14(string ai_name)
441 {
442 music_stop
443 ai2_spawn D_Sb22
444 ai2_spawn D_Sb23
445 ai2_spawn D_Sr24
446 ai2_spawn D_Sr38
447 ai2_spawn D_C60
448 ai2_dopath D_Sb20 patrol_35
449 target_set 1 0
450 particle b06_rain1 do start
451 particle b06_rain2 do start
452 particle b06_rain3 do start
453 particle b06_rain4 do start
454 particle b06_rain5 do start
455 particle b06_rain6 do start
456 }
457
458 ### 4TH ROOF ###
459
460 func void patrolscript0014(string ai_name)
461 {
462 playback_block D_Sb20 striker_jump interp 20
463 }
464
465 #tv27 - ground floor, left passage, some distance after the beginning of the 2nd "block" (func: t30); I've disabled it
466
467 #after the beginning of the center passage
468 func void t19(string ai_name)
469 {
470 sound_music_start mus_low1 0.0
471 sound_music_start mus_low1 0.75 3
472 ai2_spawn D_N25
473 ai2_spawn C_R61
474 }
475
476 #t19 - at the end of the center passage, after the left corner
477 func void t20(string ai_name)
478 {
479 music_stop
480 ai2_spawn D_Sr26
481 ai2_spawn D_Sr27
482 ai2_spawn D_T28
483 }
484
485 #tv54 - at the beginning of the stairs, where the tanker waits (func: cloudkiller); not used
486
487 #t14 - next to last floor of the stairs
488 func void t15(string ai_name)
489 {
490 powerup_spawn lsi 605
491 ai2_spawn E_N14
492 ai2_spawn E_N14a
493 ai2_passive E_N14 1
494 ai2_spawn NinjaZip
495 ai2_passive NinjaZip 1
496 chr_unstoppable NinjaZip 1
497 playback NinjaZip NinjaZipSet
498 playback E_N14 Ninja02Set
499 }
500
501 #tv15 - after the stairs
502 func void NinjaZip(void)
503 {
504 chr_envanim NinjaZip ZipNinjaBipBox norotation
505 chr_animate NinjaZip NINJAlev12_zip
506 obj_create 72
507 env_anim 72
508 sleep 60
509 playback E_N14 Ninja02Jump
510 sleep 80
511 ai2_passive E_N14 0
512 sleep 100
513 playback NinjaZip NinjaZipLeave
514 sleep 120
515 chr_delete NinjaZip
516 objective_set 2 silent
517 target_set 7006 0
518 }
519
520 #tv84 - around the place, where you find the zipline rider
521 func void t28(string ai_name)
522 {
523 chr_wait_animtype char_0 Pickup_Object
524 particle obj_zip create
525 }
526
527 #tv87 - at the end of the secret way
528 func void t85(string ai_name)
529 {
530 ai2_spawn sbg_ninja
531 }
532
533 #tv16 - at the place with the yellow flashing circle
534 func void t17(string ai_name)
535 {
536 if(chr_has_lsi(0)) KonokoZip
537 }
538
539 func void KonokoZip(void)
540 {
541 particle obj_zip kill
542 chr_envanim 0 ZipKonBipBox norotation
543 chr_animate 0 KONOKOlev12_zip
544 obj_create 71
545 env_anim 71
546 sleep 55
547 sound_ambient_start c08_11_19zip
548 sleep 235
549 obj_kill 72
550 chr_peace 0
551 objective_set 3 silent
552 target_set 7006 0
553 chr_delete D_C19
554 chr_delete D_C60
555 chr_delete D_N25
556 chr_delete D_R21
557 chr_delete D_Sb20
558 chr_delete D_Sb22
559 chr_delete D_Sb23
560 chr_delete D_Sr24
561 chr_delete D_Sr26
562 chr_delete D_Sr27
563 chr_delete D_Sr38
564 particle b04_rain1 do stop
565 particle b04_rain2 do stop
566 particle b04_rain3 do stop
567 particle b04_rain4 do stop
568 particle b04_rain5 do stop
569 particle b04_rain6 do stop
570 }
571
572 func void load_s3(void)
573 {
574 restore_game
575 particle b06_rain1 do start
576 zip_rider
577 }
578
579 func void zip_rider(void)
580 {
581 ai2_spawn E_N14
582 ai2_spawn E_N14a
583 obj_create 71
584 env_anim 71
585 chr_envanim_block E_N14a ZipKonBipBox norotation
586 chr_animate_block E_N14a KONOKOlev12_zip
587 sleep 60
588 obj_create 72
589 env_anim 72
590 chr_envanim_block E_N14 ZipKonBipBox norotation
591 chr_animate_block E_N14 KONOKOlev12_zip
592 sleep 230
593 ai2_attack E_N14a char_0
594 sleep 60
595 obj_kill 71
596 ai2_attack E_N14 char_0
597 }
598
599 ##########
600 ### SP3 ###
601 ##########
602
603 ### 1ST ROOF ###
604
605 #tv59 - the place, where you arrive with your zip rider (func: set_objective_2); I've disabled it
606
607 #tv78 - after tv59
608 func void s3(string ai_name)
609 {
610 if(save_point ne 3)
611 {
612 save_game 3 autosave
613 zip_rider
614 }
615 objective_set 3 silent
616 target_set 7006 0
617 }
618
619 #tv24 - in some distance after tv59 (func: rain17); I've disabled it
620
621 #tv28 - at the beginning of the passageway
622 func void t9(string ai_name)
623 {
624 ai2_spawn E_C62
625 playback E_C62 com
626 ai2_spawn E_N37
627 ai2_makeignoreplayer E_N37 1
628 playback_block E_N37 ninja_jump2
629 ai2_makeignoreplayer E_N37 0
630 ai2_attack E_N37 char_0
631 }
632
633 #tv50 - at the beginning of the passageway (func: rain18); I've disabled it
634
635 #tv20 - at the same place as tv50
636 func void t21(string ai_name)
637 {
638 sound_dialog_play c11_39_04konoko
639 ai2_spawn E_N29
640 ai2_spawn E_Sb31
641 ai2_spawn E_Sr63
642 ai2_spawn E_Sr64
643 ai2_spawn E_R65
644 ai2_spawn E_SuperNinja
645 chr_boss_shield E_SuperNinja
646 chr_unstoppable E_SuperNinja
647 playback_block E_SuperNinja superninja2 interp 20
648 sleep 60
649 chr_delete E_SuperNinja
650 }
651
652 #tv79 - around the place, where you find the hypo (func: t80); I've disabled it
653
654 ### 2ND ROOF ###
655
656 #tv26 - on the next to last floor
657 func void t29(string ai_name)
658 {
659 sound_dialog_play c11_39_05konoko
660 }
661
662 #tv86 - at the beginning of the highest floor (enter func: t84, leave func: t84b); I've disabled it
663 #tv51 - at the same place as tv86 (func: rain19); I've disabled it
664
665 #tv83 - after the beginning of the stairs
666 func void t95(string ai_name)
667 {
668 sound_dialog_play c11_39_06konoko
669 ai2_spawn E_Sr30
670 }
671
672 #tv52 - at the end of the small passage after the end of the stairs (func: rain20); I've disabled it
673 #tv21 - after tv52 (func: t23); I've disabled it
674
675 #tv83 - at the 1st corner (beside the "block", where the sniper with the mercury bow stands on)
676 func void t96(string ai_name)
677 {
678 sound_dialog_play c11_39_07konoko
679 }
680
681 #tv23 - at the 2nd corner
682 func void t25(string ai_name)
683 {
684 ai2_spawn E_Sr33
685 ai2_dopath E_Sr30 patrol_34
686 ai2_setjobstate E_Sr30
687 }
688
689 #tv22 - at the 3rd corner
690 func void t24(string ai_name)
691 {
692 sound_dialog_play c11_39_08konoko
693 ai2_spawn E_R32
694 ai2_dopath E_Sr33 patrol_34
695 ai2_setjobstate E_Sr33
696 door_lock 6
697 }
698
699 #tv61 - complete area between the 3rd corner and the 4th corner; used to count the enemies inside it; see next func
700
701 #tv60 - in front of the doors of the elevator
702 func void t63(string ai_name)
703 {
704 trigvolume_enable trigger_volume_63 0
705 if (trigvolume_count(64) eq 0) door_unlock 6
706 else
707 {
708 sleep 60
709 trigvolume_enable trigger_volume_63 1
710 }
711 }
712
713 #tv25 - in the middle of the elevator
714 func void ninja(void)
715 {
716 fade_out 0 0 0 30
717 sleep 30
718 sound_dialog_play c11_39_09konoko
719 chr_facetoflag 0 9523
720 chr_teleport 0 9523
721 obj_kill 72
722 door_lock 2
723 load_s4_part1
724 fade_in 30
725 load_s4_part2
726 }
727
728 ##########
729 ### SP4 ###
730 ##########
731
732 func void load_s4_all(void)
733 {
734 load_s4_part1
735 load_s4_part2
736 }
737
738 func void load_s4_part1(void)
739 {
740 fork remove_ai
741 particle wind do start
742 ai2_spawn OutroNinja
743 chr_boss_shield OutroNinja
744 chr_nocollision OutroNinja 1
745 playback OutroNinja SuperNinjaSet
746 }
747
748 func void load_s4_part2(void)
749 {
750 if(save_point eq 4)
751 {
752 restore_game
753 particle b06_rain6 do start
754 objective_set 3 silent
755 }
756 else
757 {
758 particle b06_rain1 do stop
759 particle b06_rain2 do stop
760 particle b06_rain3 do stop
761 particle b06_rain4 do stop
762 particle b06_rain5 do stop
763 save_game 4 autosave
764 }
765 sleep 1
766 sound_music_start mus_fitec
767 chr_animate OutroNinja NINCOMteleport_in 47
768 sleep 40
769 playback OutroNinja SuperNinjaDone
770 chr_animate OutroNinja NINCOMteleport_out 31
771 chr_nocollision OutroNinja 0
772 }
773
774 func void outro(void)
775 {
776 fade_out 0 0 0 30
777 sleep 30
778 win
779 }