################# ### VARIABLES ### ################# var int var_counter = 0; var int var_counter2 = 0; ############ ### MAIN ### ############ func void main(void) { gl_fog_red = 0 gl_fog_blue = 0 gl_fog_green = 0 gl_fog_start = .995 gs_farclipplane_set 5000 ui_suppress_prompt = 1 chr_auto_aim_dist = 0 start } ############# ### START ### ############# func void start(string ai_name) { fork deactivate_stuff if(save_point eq 0) save_point = 1 if(save_point eq 1) fork intro if(save_point eq 2) restore_game sleep 5 fork sp_all } func void deactivate_stuff(void) { #not used trigvolume_enable ambush1a_copy 0 #used trigvolume_enable splash_trigger 0 env_show 1976 0 door_lock 1 door_lock 3 } func void you_lose(string ai_name) { fade_out 0 0 0 30 sleep 30 lose } #################################### ### SEVERAL TIMES USED FUNCTIONS ### #################################### func void sp_all(void) { co_message_display = 0 if(save_point eq 1) save_game 1 autosave if(save_point eq 2) save_game 2 autosave sleep 180 co_message_display = 1 } func void remove_ai(void) { ai2_kill sleep 60 powerup_reset weapon_reset sleep 240 corpse_reset } func void music_stop(void) { sound_music_volume mus_om01 0.0 1.0 sound_music_stop mus_om01 sound_music_stop atm_gr09 sound_music_stop mus_wls sound_music_stop atm_ft81 } ########## ### SP1 ### ########## func void intro(void) { env_show 200 0 env_show 201 0 env_show 227 0 env_show 231 1 env_show 232 1 env_show 999 0 ai2_spawn IntroMuro playback IntroMuro IntroMuroSet ai2_passive IntroMuro 1 playback 0 IntroKonokoSet particle fog_floor1 do start particle fog_floor2a do start trigvolume_enable shinatama1a 1 trigvolume_enable shinatama1b 1 objective_set 1 silent sleep 1 sound_music_start mus_om01 .75 } #tv12 - after the crossing from the lab to the romm where Muro waits func void murofog(void) { ai2_passive IntroMuro 0 env_show 201 1 env_show 999 1 env_show 250 0 env_show 252 0 } #lose func of IntroMuro func void murodeath(void) { env_show 999 0 env_show 1010 0 chr_unstoppable IntroMuro 1 chr_animate IntroMuro COMCOMlev13_death 120 sleep 20 chr_delete IntroMuro music_stop sound_music_start atm_gr09 0.75 particle fog_floor1 do start particle fog_floor2a do start ai2_spawn ghost_1 ai2_spawn ghost_2 objective_set 1 silent } #tv13 - after the crossing from room to the hall func void bring_the_wall(string char) { trigvolume_enable shinatama1a 1 trigvolume_enable shinatama1b 1 env_show 1010 1 } #tv17 - around ghost_1 func void ghost_1(string ai_name) { chr_delete ghost_1 } #tv2 - after tv17 from the left to the right func void shinatama_1a(string ai_name) { sound_dialog_play c12_63_01shinatama ai2_spawn shinatama_1a ai2_lookatme shinatama_1a } #tv16- around ghost_2; after tv2 func void ghost_2(string ai_name) { chr_delete ghost_2 } #tv3 - in some distance after tv16 (inside func); from the left to the right; func void shinatama_1b(string ai_name) { ai2_dopath shinatama_1a shinatama_flee_1 } func void patrolscript0100(string ai_name) { chr_delete shinatama_1a door_lock 7 } #tv3 (leave func) func void mini_strike(string ai_name) { ai2_spawn mini_strike_1 ai2_spawn mini_strike_2 ai2_spawn mini_strike_3 ai2_spawn mini_strike_4 chr_delete ghost_1 chr_delete ghost_2 } #hit func of mini_strike_1 func void mini_strike_flee_1(string ai_name) { ai2_dopath mini_strike_1 mini_strike_flee_1 } #hit func of mini_strike_2 func void mini_strike_flee_2(string ai_name) { ai2_dopath mini_strike_2 mini_strike_flee_2 } #hit func of mini_strike_3 func void mini_strike_flee_3(string ai_name) { ai2_dopath mini_strike_3 mini_strike_flee_3 } #hit func of mini_strike_4 func void mini_strike_flee_4(string ai_name) { ai2_dopath mini_strike_4 mini_strike_flee_4 } func void patrolscript0001(string ai_name) { chr_nocollision mini_strike_1 1 playback_block mini_strike_1 cheese1 interp 30 chr_delete mini_strike_1 } func void patrolscript0002(string ai_name) { chr_nocollision mini_strike_2 1 playback_block mini_strike_2 cheese2 interp 30 chr_delete mini_strike_2 } func void patrolscript0003(string ai_name) { chr_nocollision mini_strike_3 1 playback_block mini_strike_3 cheese3 interp 30 chr_delete mini_strike_3 } func void patrolscript0004(string ai_name) { chr_nocollision mini_strike_4 1 playback_block mini_strike_4 cheese4 interp 30 chr_delete mini_strike_4 } func void patrolscript0110(string ai_name) { chr_delete mini_strike_1 } func void patrolscript0111(string ai_name) { chr_delete mini_strike_2 } func void patrolscript0112(string ai_name) { chr_delete mini_strike_3 } func void patrolscript0113(string ai_name) { chr_delete mini_strike_4 } #lose func of mini_strike_3 func void bighead_1a_var(string ai_name) { bighead_1d_var } #lose func of mini_strike_4 func void bighead_1b_var(string ai_name) { bighead_1d_var } #lose func of mini_strike_2 func void bighead_1c_var(string ai_name) { bighead_1d_var } #lose func of mini_strike_1 func void bighead_1d_var(string ai_name) { var_counter2 = var_counter2 + 1 if(var_counter2 eq 4) { sleep 60 chr_big_head = 1 timer_start 120 sleep 7200 chr_big_head = 0 } } #tv14 - at the beginning of the stairs (enter func: fog_floor1off, leave func: fog_floor1on); I've disabled it #tv5 - in front of the end of the stairs func void ambush_1a(string ai_name) { chr_delete shinatama_1a ai2_spawn ambush_tanker_1a ai2_spawn ambush_tanker_1b music_stop sound_music_start mus_wls .75 door_open 8 door_jam 8 } #lose func of ambush_tanker_1a func void tanker_1_var(string ai_name) { tanker_2_var } #lose func of ambush_tanker_1b func void tanker_2_var(string ai_name) { var_counter = var_counter + 1 if(var_counter eq 2) { music_stop sound_music_start atm_ft81 .75 door_unlock 9 var_counter = 0 } } #tv1 - after door 9 func void shinatama_2(string ai_name) { sound_dialog_play c12_63_03shinatama ai2_spawn shinatama_2 chr_lock_active shinatama_2 ai2_spawn liliput_striker_1 ai2_spawn liliput_striker_2 ai2_spawn liliput_striker_3 door_unjam 8 door_lock 11 particle fog_floor2a do stop particle fog_floor2b do start } func void patrolscript0101(string ai_name) { chr_delete shinatama_2 } #tv19 - in front of door 11 func void red_retreat(string ai_name) { ai2_makeignoreplayer ambush_red_1 1 ai2_makeignoreplayer ambush_red_2 1 ai2_dopath ambush_red_1 red_retreat_1 1 ai2_dopath ambush_red_2 red_retreat_2 1 } func void patrolscript0007(string ai_name) { ai2_makeignoreplayer ambush_red_1 0 ai2_makeignoreplayer ambush_red_2 0 } #tv8 - after door 11 func void ambush_2(string ai_name) { ai2_spawn ambush_red_1 music_stop sound_music_start mus_wls .75 } #hit func of ambush_red_1 func void red_1_var(string ai_name) { ai2_spawn ambush_red_2 door_unlock 1 chr_delete mini_strike_1 chr_delete mini_strike_2 chr_delete mini_strike_3 chr_delete mini_strike_4 } #lose func of ambush_red_1 func void redmusic_1_var(string ai_name) { redmusic_2_var } #lose func of ambush_red_2 func void redmusic_2_var(string ai_name) { var_counter = var_counter + 1 if(var_counter eq 2) { music_stop sound_music_start atm_gr09 0.75 door_unlock 2 var_counter = 0 } } #tv4 - in the middle between door 1 and door 2 func void shinatama_3(string ai_name) { sound_dialog_play c12_63_04shinatama particle fog_room1 do start ai2_spawn shinatama_3 ai2_spawn shin_striker_1 ai2_spawn shin_striker_2 ai2_spawn shin_striker_3 ai2_spawn shin_striker_4 } func void patrolscript0102(string ai_name) { chr_delete shinatama_3 sleep 400 chr_delete shin_striker_1 chr_delete shin_striker_2 chr_delete shin_striker_3 chr_delete shin_striker_4 } ########## ### SP2 ### ########## #tv6 and tv15 - in a small distance after door 2 func void room_1(string ai_name) { if(save_point eq 2) { particle fog_floor1 do start particle fog_room1 do start } else { fork remove_ai save_game 2 autosave particle fog_floor2b do stop music_stop } door_lock 2 ai2_spawn griffin chr_lock_active griffin playback griffin GrifGriffinSet objective_set 2 silent trigvolume_enable room1a 0 trigvolume_enable room1b 0 trigvolume_enable shinatama3 0 sleep 1 sound_music_start mus_wls .75 } #hit func of griffin func void swat_1_var(string ai_name) { door_unlock 2 ai2_spawn griffin_b1 ai2_spawn griffin_b2 } #lose func of griffin func void griffindeath(void) { chr_unstoppable griffin 1 chr_animate griffin COMCOMlev13_death 120 sleep 20 chr_delete griffin door_unlock 3 } #tv20 - in the middle between door 3 and door 4 func void show_the_acid(string char) { sound_music_volume mus_wls 0 2 music_stop sound_music_start atm_gr09 0.75 particle fog_floor1 do stop env_show 1976 1 trigvolume_enable splash_trigger 1 door_close 3 door_lock 3 trig_activate 1 } #tv9 - in some distance after door 4 func void laser_cutscene(string ai_name) { door_lock 4 ai2_spawn laser_ops_1 playback_block laser_ops_1 lstriker_1 interp 30 trigvolume_enable lasercutscene 0 } #tv11 - complete volume under the acid texture func void splash(string character) { if(chr_is_player(character) eq 1) { chr_animate 0 KONOKOacid cm_detach sleep 10 sound_impulse_play konoko_gruesome_death sleep 30 chr_set_health 0 0 } else { chr_animate(character, KONOKOacid); sleep 10 chr_set_health(character, 0); } } #tv10 - in the middle between door 5 and door 6 func void shinatama_nograv(string ai_name) { particle fog_room1 do stop particle fog_room2 do start door_unlock 6 door_lock 5 } #tv7 - in front of door 6 func void room2_music(string ai_name) { sound_music_volume atm_ft81 0 2 music_stop sound_music_start mus_wls .75 } #tv18 - after door 6 func void room_2(string ai_name) { door_close 6 door_lock 6 ai2_spawn evilkonoko chr_lock_active evilkonoko playback evilkonoko Kon2Konoko02Set chr_animate evilkonoko KONOKOpowerup 0 chr_set_health evilkonoko 400 trigvolume_enable room2 0 trig_activate 0 env_show 1976 0 } #lose func of evilkonoko func void you_win(string char_index) { fade_out 0 0 0 30 sleep 30 win }