func void start(string ai_name) { #Konoko temp spawn location. chr_location 0 229 -90 -384 #Chair stuff env_show 171 1 env_show 172 1 env_show 173 1 env_show 174 1 dprint start setup_doors fork laser_byebye #trigvolume_enable trigger_volume_29 0 #trigvolume_enable trigger_volume_35 0 #trigvolume_enable trigger_volume_39 0 #trigvolume_enable trigger_volume_36 0 #trigvolume_enable trigger_volume_41 0 my_save_point = save_point; env_show 403 0 env_show 1010 0 dprint restore5 objective_set(4) trigvolume_enable trigger_volume_42 0 trigvolume_enable trigger_volume_35 0 #Old Door locking particle ZomShin_door_locklight01 do start #door_lock 16 #TCTF II cutscene "Base" env_show 171 1 env_show 172 1 env_show 173 1 env_show 174 1 # particle Forcefield do start # particle zombiesteam start #sound_ambient_start zomshin_amb_loop 1.0 #music_zom #these next lines place griffin where he should be dprint place_griffin_and_holster ai2_spawn ZomGrif ai2_makeignoreplayer ZomGrif 1 # make sure that griffin is aiming his weapon! ai2_setmovementmode ZomGrif walk # ai2_passive ZomGrif 1 playback ZomGrif ZomGrifDraw # don't call the GrifSpawn function again # create_zomshin playback ZomShin BaseShin chr_create 1202 chr_envanim 1202 IntroGriffinBox02 # zombie_round_2 chr_wait_health 1202 0 #slowmo 1000 #this will be replaced with a low gravity ONCC ai2_spawn l1 chr_invincible l1 chr_envanim l1 IntroGriffinBox03 norotation } func void laser_byebye { #should probably be replaced with some BINATRIG mods, but this will do for now dprint laser_go_bye_bye trig_deactivate 1 trig_deactivate 2 trig_deactivate 3 trig_deactivate 4 trig_deactivate 5 trig_deactivate 8 trig_deactivate 303 trig_deactivate 100 trig_deactivate 101 trig_deactivate 500 trig_deactivate 400 sleep 15 trig_deactivate 503 sleep 5 trig_deactivate 502 sleep 5 trig_deactivate 501 sleep 15 trig_deactivate 510 sleep 5 trig_deactivate 511 sleep 5 trig_deactivate 512 sleep 15 trig_deactivate 520 sleep 5 trig_deactivate 521 sleep 5 trig_deactivate 522 sleep 15 trig_deactivate 320 sleep 15 trig_deactivate 315 sleep 15 trig_deactivate 302 } func void setup_doors(void) { #Old door locks # door_unlock 65 # door_unlock 71 # door_unlock 59 # door_unlock 61 # door_unlock 67 # door_lock 7 # door_lock 4 # door_lock 5 # door_lock 8 # door_lock 6 # door_lock 9 # console_deactivate 3 chr_location 1 90 .5 -50 # incidental zombie shinatama dialog trigvolume_enable shinzom_voice1 0 trigvolume_enable shinzom_voice2 0 trigvolume_enable shinzom_voice3 0 trigvolume_enable shinzom_voice4 0 #Most of this needs to be activated with a console. More later. #Triple door particle lastdoor1_locklight01 do start particle lastdoor2_locklight01 do start particle lastdoor3_locklight01 do start door_unlock 97 #Blue door #Look, ma! I broke the door! #Needs sparks :P door_open 28 door_jam 28 particle floor4_lock_locklight01 do stop #First door particle griffin_locklight01 do start #We three doors (yellow) #particle door42_locklight01 do start #particle stair_lock_locklight01 do start #particle roof_doors_locklight01 do start door_lock 19 door_lock 20 door_lock 24 #Goodie Room door_lock 36 #TCTF and BGI seperation, lower floor door_lock 22 } func void setup_lower(string ai_name) { #Closes the stupid door door_unjam 97 door_close 97 door_lock 97 particle lastdoor1_locklight01 do stop particle lastdoor2_locklight01 do stop particle lastdoor3_locklight01 do stop ai2_spawn jubei chr_boss_shield jubei chr_givepowerup jubei shield 1 ai2_doalarm jubei 13 } var bool eggman; func void open_yellow(string char) { eggman = chr_is_player(char); if (eggman eq 0) { if (distracted eq 0) { #Places jubei in the proper position and anim dprint robotnik chr_animate(char, STRIKEconsole, 7777777); console_reset 13 sleep 10 chr_freeze jubei 1 #This animation will be ended when konoko enters. Yes, I am OCD. He must type! } } if (eggman eq 1) { #If player, unlock the yellow doors ^_^ dprint sonic particle door42_locklight01 do start particle stair_lock_locklight01 do start particle roof_doors_locklight01 do start door_unlock 19 door_unlock 20 door_unlock 24 } } var bool eggman2; var int distracted = 0; func void distract_console(string char) { eggman2 = chr_is_player(char); if (eggman2 eq 0) { #Make jubei go back to other console dprint jubei_is_distracted distracted = 1; ai2_tripalarm jubei 0 #ai2_doalarm jubei 13 #ai2_movetoflag jubei 598 } if (eggman2 eq 1) { ai2_boss_battle = 1; #Make jubei go to this console dprint distracting_jubei chr_freeze jubei 0 chr_animate(jubei, STRIKEconsole, 7); sleep 10 console_reset 2 #I need to make this a patrol path #I could also set his team to Neutral and then make him get attacked by Konoko :> (TRAM derived particle) #Even better. ai2_tripalarm 1 0 #erm...much better :> #ai2_comehere jubei ai2_setmovementmode jubei run sleep 10 ai2_attack jubei 0 sleep 10 ai2_forget jubei #I need to set up a trigger volume still, but meh. #ai2_doalarm jubei 2 fork jubei_loop } } func void jubei_loop(void) { if(jubei_dead eq 0) { ai2_tripalarm 1 0 #erm...much better :> #ai2_comehere jubei ai2_setmovementmode jubei run sleep 10 ai2_attack jubei 0 sleep 10 ai2_forget jubei fork jubei_loop } } func void jubei_noticed(void) { dprint jubei_noticed ai2_inactive jubei #ai2_comehere jubei } var int jubei_dead = 0; func void jubei_died(string ai_name) { jubei_dead = 1 fork lsi_loop } func void jubei_defeated(void) { chr_inv_reset jubei chr_givepowerup jubei lsi 2 chr_givepowerup hypo 2 chr_set_health jubei 0 } func void lsi_loop(void) { #needs to quit after a certain amount of time. if(chr_has_lsi(0)) { chr_boss_shield 0 chr_givepowerup 0 shield 100 } else { sleep 30 fork lsi_loop } } func void t33(string ai_name) { #Opens stupid door dprint Open_stupid sleep 20 door_open 97 door_jam 97 fork BGI_died(BGI_lower1) fork BGI_died(BGI_lower2) fork BGI_died(BGI_lower3) fork BGI_died(BGI_lower4) fork BGI_died(BGI_lower5) # fork BGI_died(BGI_lower6) # fork BGI_died(BGI_lower7) # fork BGI_died(BGI_lower8) fork TCTF_died(TCTF_lower1) fork TCTF_died(TCTF_lower2) fork TCTF_died(TCTF_lower3) fork TCTF_died(TCTF_lower4) fork TCTF_died(TCTF_lower5) # fork TCTF_died(TCTF_lower6) # fork TCTF_died(TCTF_lower7) # fork TCTF_died(TCTF_lower8) } func powersub1(string ai_name) { dprint powersub1_active sub1 = 1; particle spine1 start particle spinesound1 start if(sub3 eq 0) { # target_set(594,30.0) } if(sub3 ne 0) { if(sub2 eq 0) { # target_set(595,30.0) } } check_power } func powersub2(string ai_name) { dprint powersub2_active particle spine2 do start particle spinesound2 start sub2 = 1; if(sub3 eq 0) { # target_set(594,30.0) } if(sub3 ne 0) { if(sub1 eq 0) { # target_set(587,30.0) } } check_power } func powersub3(string ai_name) { dprint powersub3_active sub3 = 1; particle spine3 do start particle spinesound3 start if(sub2 eq 0) { # target_set(595,30.0) } if(sub2 ne 0) { if(sub1 eq 0) { # target_set(587,30.0) } } check_power } func check_power(string ai_name) { dprint check_power_active counter = counter - 1 if (counter eq 1) { #sound_dialog_play c14_54_27konoko #sound_dialog_play_block pause } if (counter eq 0) { dprint defenses_active } } func void t9(string ai_name) { #Trigger after exit basement dprint heyT9 } func void floor4_lock(string ai_name) { door_unlock 36 door_open 36 door_jam 36 #trigvolume_enable trigger_volume_39 1 } func void respawn(string ai_name) { ai2_spawn(ai_name, force) } func void TCTF_spawned(string ai_name) { ai2_movetoflag(ai_name, 9101) } func void BGI_spawned(string ai_name) { ai2_movetoflag(ai_name, 9101) } var string last_BGI = "none"; var string last_TCTF = "none"; func void BGI_died(string ai_name) { last_BGI = ai_name; if (jubei_dead eq 0) { ai2_spawn(ai_name, force) ai2_setmovementmode(ai_name, run) ai2_movetoflag(ai_name, 9101) sleep 200 ai2_movetoflag(ai_name, 9101) ai2_makeaware(ai_name, last_TCTF) } } func void TCTF_died(string ai_name) { last_TCTF = ai_name; ai2_spawn(ai_name, force) ai2_setmovementmode(ai_name, run) ai2_movetoflag(ai_name, 9101) sleep 200 ai2_movetoflag(ai_name, 9101) ai2_makeaware(ai_name, last_BGI) }