Index: AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf2.bsl
===================================================================
--- AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf2.bsl	(revision 540)
+++ AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf2.bsl	(revision 540)
@@ -0,0 +1,1657 @@
+#	tctf2_spawn
+#	scripts for level 18 by wu
+
+var int counter=3;
+var int my_save_point=0;
+var int counterA=0;
+var int counterB=0;
+var int counterC=0;
+var int counterD=0;
+var int counterDestroy=0;
+var int lastdoor_count=0;
+var int sub1 = 0;
+var int sub2 = 0;
+var int sub3 = 0;
+var int ld1;
+var int ld2;
+var int ld3;
+var int audio_counter = 3;
+
+#########
+# music #
+#########
+func void music_intro(void)
+{
+	sound_music_start mus_main03 1.0
+#	this music stopped in t2 script
+}
+
+func void music_chair(void)
+{
+	dprint music_chair
+	sound_music_start mus_wls 1.0
+#	this music stopped in 11 and 11b script
+}
+
+func void music_atrium(void)
+{
+	dprint music_atrium
+	sound_music_start mus_trt .8
+#	this music stopped in check_power script
+}
+
+func void music_zom(void)
+{
+	dprint music_zom
+	sound_music_start mus_sv 0.75
+#	this music stopped in Zom script
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_main03
+	sound_music_stop mus_wls
+	sound_music_stop mus_trt
+	sound_music_stop mus_sv
+}
+
+func void spawnA(void)
+{
+		dprint spawn_zone_A
+
+		ai2_spawn A_L19
+		ai2_spawn l1
+		ai2_spawn l3
+		ai2_spawn A_L12
+		ai2_spawn A_Lbo13
+		ai2_spawn A_L8
+		ai2_spawn l7
+}
+###############################
+#	start and objectives    #
+###############################
+
+func void you_lose(string ai_name)
+{
+	sleep 240
+	#fade_out 0 0 0 180 
+	sleep 240
+	#lose
+}
+
+func void you_win(int char_index)
+{
+	outro
+	#win
+}
+
+func void set_objective_1(string ai_name)
+{
+	dprint set_objective_1
+	objective_set(1)
+	target_set (1,0)
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective_2
+	objective_set(2)
+	target_set (1,0)
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective_3
+	objective_set(3)
+	target_set (1,0)
+}
+
+func void set_objective_4(string ai_name)
+{
+	dprint set_objective_4
+	objective_set(4)
+	target_set (401,30)
+	particle ZomShin_door_locklight01 do start
+}
+
+
+#################################
+#	cut scene scripts         #
+#################################
+
+func void grifdies(string ai_name)
+{
+	killed_griffen 1
+	OutroKill
+}
+
+func void t35(string ai_name)
+{
+	killed_griffen 0
+	OutroNoKill
+}
+
+func void outta_sight(string ai_name)
+{
+	ai2_dopath n5 patrol_99
+	ai2_setjobstate n5
+}
+
+#########################
+#  trigger volume stuff #
+#########################
+
+func void t68(string ai_name)
+{
+	ai2_spawn mbo_femcop
+}
+
+func void t2(string ai_name)
+{
+	dprint t2_active
+	trigvolume_enable trigger_volume_61 0
+	ai2_spawn n5
+	ai2_spawn A_Sbo14
+	ai2_dopath A_Sbo14 patrol_14
+	ai2_setjobstate A_Sbo14
+	ai2_spawn A_Sbo15
+	sleep 30
+	ai2_dopath A_Sbo15 patrol_14
+	ai2_setjobstate A_Sbo15
+#	ai2_spawn A_Sbo16
+	music_stop
+
+}
+
+func void t61(string ai_name)
+{
+	dprint t61_active
+	trigvolume_enable trigger_volume_02 0
+	ai2_spawn n5
+	ai2_spawn A_Sbo14
+	ai2_spawn A_Sbo15
+	music_stop
+}
+
+func void t3(string ai_name)
+{
+	dprint t3_active
+	ai2_dopath A_n17 patrol_16
+	ai2_setjobstate A_n17
+
+}
+
+func void t4(string ai_name)
+{
+	dprint t4_active
+	ai2_spawn A_L18
+}
+
+func void t6(string ai_name)
+{
+	dprint t6_active
+	ai2_spawn A_L20
+	ai2_spawn A_L21	
+	ai2_spawn B_S22
+	ai2_makeignoreplayer B_S22 1
+	trig_activate	6
+	trig_activate	7
+	trig_activate	99
+	trig_activate	98
+	target_set(593,30.0)
+}
+
+func void t7(string ai_name)
+{
+	dprint t7_active
+	ai2_dopath B_S22 patrol_23
+	ai2_setjobstate B_S22
+	ai2_makeignoreplayer B_S22 0
+	ai2_spawn B_N28	
+}
+
+func void t7b(string ai_name)
+{
+	dprint t7b_active
+	ai2_spawn B_Lbo26
+	playback_block B_Lbo26 run1 interp 20
+	sleep 20
+	ai2_dopath B_Lbo26 patrol_27
+	ai2_setjobstate B_Lbo26
+		
+}
+
+func void t8(string ai_name)
+{
+	dprint t8_active
+	chr_delete A_L19
+	chr_delete l1
+	chr_delete l3
+	chr_delete A_L12
+	chr_delete A_Lbo13
+	chr_delete A_L8
+	chr_delete l7
+	chr_delete n5
+	chr_delete A_T25
+	chr_delete A_n17
+	chr_delete A_N31
+	ai2_spawn B_Sbo38
+	ai2_spawn B_S36	
+	ai2_makeignoreplayer B_S36 1
+	ai2_spawn B_L40
+	ai2_spawn B_L41
+	music_chair
+	sleep 90
+	substation_monologue
+}
+
+
+
+func void t10(string ai_name)
+{
+	dprint t10_active
+	ai2_spawn B_S29
+}
+
+func void t11(string ai_name)
+{
+	dprint t11_active
+	ai2_dopath B_S36 patrol_38
+	ai2_setjobstate B_S36
+	ai2_makeignoreplayer B_Sbo38 0
+#	ai2_makeignoreplayer B_Sbo35 0
+	ai2_makeignoreplayer B_S36 0
+	ai2_makeignoreplayer B_S37 0
+	ai2_spawn B_Lbo76
+#	ai2_spawn B_Lbo77
+	ai2_spawn B_C34
+	ai2_spawn B_C33
+	ai2_spawn B_C32
+	trigvolume_enable trigger_volume_11_copy 0
+	music_stop
+}
+
+func void t59(string ai_name)
+{
+	ai2_spawn B_L30
+	ai2_spawn B_L95
+	ai2_spawn B_Lbo27
+}
+
+func void t60(string ai_name)
+{
+	ai2_spawn B_C32
+	ai2_spawn B_C34
+	ai2_spawn B_C33
+	ai2_makeignoreplayer B_S36 0
+}
+
+func void t67(string ai_name)
+{
+	ai2_spawn B_S43
+}
+
+func void t11b(string ai_name)
+{
+	dprint t11b_active
+	ai2_dopath B_S36 patrol_38
+	ai2_setjobstate B_S36
+	ai2_makeignoreplayer B_Sbo38 0
+#	ai2_makeignoreplayer B_Sbo35 0
+	ai2_makeignoreplayer B_S36 0
+	ai2_makeignoreplayer B_S37 0
+	ai2_spawn B_Lbo76
+#	ai2_spawn B_Lbo77
+	trigvolume_enable trigger_volume_11 0
+	music_stop
+}
+
+func void t12(string ai_name)
+{
+	dprint t12_active
+	ai2_dopath B_N28 patrol_42
+	ai2_setjobstate B_N28
+}
+
+func void t14(string ai_name)
+{
+	dprint t14_active
+	ai2_spawn C_Sbo44
+#	ai2_spawn C_C46
+	ai2_spawn C_C47
+	ai2_spawn C_N48
+#	ai2_spawn C_L50
+#	ai2_makeignoreplayer C_L50 1
+#	ai2_spawn C_L51
+#	ai2_makeignoreplayer C_L51 1
+
+}
+
+func void t15(string ai_name)
+{
+	dprint t15_active
+	ai2_lookatme C_L51
+	ai2_dopath C_L51 patrol_51
+	ai2_setjobstate C_L51
+	ai2_makeignoreplayer C_L51 0
+	sleep 90
+	ai2_lookatme C_L50
+	ai2_dopath C_L50 patrol_50
+	ai2_setjobstate C_L50 
+	ai2_makeignoreplayer C_L50 0
+
+}
+
+func void t16(string ai_name)
+{
+	dprint t16_active
+	ai2_makeignoreplayer C_L50 0
+	ai2_makeignoreplayer C_L51 0
+
+}
+
+func void t17(string ai_name)
+{
+	dprint t17_active
+	ai2_makeignoreplayer C_N55 0
+	ai2_spawn C_Sbo56
+
+}
+
+func void t18(string ai_name)
+{
+	dprint t18_active
+	ai2_spawn C_S57
+
+}
+
+func void t19(string ai_name)
+{
+	dprint t19_active
+	ai2_spawn C_S58
+	ai2_spawn C_S59
+
+}
+
+func void t20(string ai_name)
+{
+	dprint t20_active
+#	sleep 200
+	ai2_spawn C_Lbo62
+	ai2_spawn C_Sbo61
+
+}
+
+func void t21(string ai_name)
+{
+	dprint t21_active
+	ai2_spawn C_Sbo63
+	ai2_spawn C_Sbo64
+
+}
+
+func void t22(string ai_name)
+{
+	dprint t22_active
+	ai2_makeignoreplayer C_C65 0
+
+}
+
+func void t23(string ai_name)
+{
+	dprint t23_active
+	ai2_spawn C_L71
+	ai2_spawn C_S72
+	ai2_spawn C_N74
+
+}
+
+func void t25(string ai_name)
+{
+	dprint t25_active
+	ai2_spawn D_C70
+	ai2_makeignoreplayer D_C70 1
+	ai2_spawn D_Sbo71
+	ai2_spawn D_Sbo72
+	ai2_spawn D_Sbo73
+	ai2_spawn D_Sbo75
+	ai2_spawn D_N76
+
+}
+
+func void t26(string ai_name)
+{
+	dprint t26_active
+	ai2_spawn D_L74
+	ai2_spawn new_1
+}
+
+func void t28(string ai_name)
+{
+	dprint t28_active
+	ai2_spawn D_S78
+	ai2_spawn D_S79
+	trigvolume_enable trigger_volume_29 1
+
+}
+
+func void t29(string ai_name)
+{
+	dprint t29_active
+	ai2_spawn D_Lbo81
+	ai2_spawn D_S82
+
+}
+
+func void t30(string ai_name)
+{
+	dprint t30_active
+	ai2_spawn D_L80
+
+}
+
+func void t31(string ai_name)
+{
+	dprint t31_active
+	ai2_spawn D_S83
+	ai2_spawn D_L84
+	ai2_spawn D_Lbo85
+	ai2_spawn D_Sbo86
+	trigvolume_enable trigger_volume_32 0
+}
+
+func void t32(string ai_name)
+{
+	dprint t32_active
+	ai2_spawn D_L88
+	ai2_spawn D_S87
+	ai2_spawn D_Sbo86
+	trigvolume_enable trigger_volume_31 0
+	target_set(599,30.0)
+}
+
+
+
+
+func void t34(string ai_name)
+{
+	dprint t34_active
+	ai2_spawn D_Sbo75
+	ai2_spawn D_Sbo92
+	ai2_spawn D_L91
+	ai2_spawn D_S90
+	ai2_spawn D_S89
+}
+
+func void t37(string ai_name)
+{
+	dprint t37_active
+	ai2_makeignoreplayer D_C70 0
+
+}
+
+func void t38(string ai_name)
+{
+	dprint t38
+#	ai2_spawn B_N31
+
+}
+
+func void t41(string ai_name)
+{
+	dprint t41_active
+	target_set(596,30.0)
+}
+
+func void t42(string ai_name)
+{
+	dprint t42_active
+	door_lock 16
+	particle ZomShin_door_locklight01 do stop
+	trigvolume_enable trigger_volume_35 0
+	Base
+	s5
+}
+
+func void t43(string ai_name)
+{
+	dprint t43_active
+	ai2_spawn B_S96
+}
+
+func void t44(string ai_name)
+{
+	dprint t44
+	target_set(598,30.0)
+}
+
+func void t45(string ai_name)
+{
+	dprint t45_active
+	target_set(587,30.0)
+	door_lock 14
+	particle shin_lock_locklight01 do stop
+	console_activate 3
+#	play door lock sound
+	trig_deactivate	60
+	trig_deactivate	61
+	trig_deactivate	62
+	trig_deactivate	63
+	trig_deactivate	64
+	trig_deactivate	65
+	trig_deactivate	70
+	trig_deactivate	71
+	trig_deactivate	72
+	trig_deactivate	73
+	trig_deactivate	74
+	trig_deactivate	75
+	trig_deactivate 91
+	trig_deactivate 92
+	trig_deactivate 93
+	trig_deactivate	98
+	trig_deactivate	99
+	trig_deactivate	6
+	trig_deactivate	7
+	if (trigvolume_count(20) eq 0)
+	{
+		dprint delete_B_AI
+		chr_delete B_L95
+		chr_delete B_Lbo27
+		chr_delete B_S29
+		chr_delete B_L30
+		chr_delete B_Sbo38
+		chr_delete B_S36	
+		chr_delete B_S37
+		chr_delete B_L40
+		chr_delete B_L41
+		chr_delete B_Lbo39
+		chr_delete B_S43
+		chr_delete B_C32
+		chr_delete B_C33
+		chr_delete B_C34
+		chr_delete B_Lbo26
+		chr_delete B_S96
+		chr_delete B_Lbo76
+		chr_delete B_S22
+		chr_delete B_N31
+		chr_delete B_Lbo77
+	}
+	dprint delete_A_AI
+	chr_delete A_L20
+	chr_delete A_L21
+	chr_delete A_Sbo15
+	chr_delete A_Sbo14
+	chr_delete A_L19
+	chr_delete l1
+	chr_delete l3
+	chr_delete A_L12
+	chr_delete A_Lbo13
+	chr_delete A_L8
+	chr_delete l7
+	chr_delete n5
+	chr_delete A_T25
+	chr_delete B_N28
+	chr_delete A_n17
+	chr_delete A_N31
+}
+
+func void attack_konoko(string ai_name)
+{
+	ai2_attack new_1 A_player
+}
+
+func void substation_monologue(void)
+{
+	dprint playkonokoline
+	sound_dialog_play c14_54_24konoko
+	cinematic_start (KONtalkangryfront, 180, 180, 19, 7, 20)
+	sound_dialog_play_block
+	sleep f60
+	cinematic_stop (KONtalkangryfront, 19, 20)
+
+	objective_set(2, silent)
+}
+
+func void save3_and_spine(string ai_name)
+{
+	s3
+	spine1
+	sleep 7
+	spine2
+	sleep 7
+	spine3
+}
+func void t45b(string ai_name)
+{
+	dprint t45b_modified_by_okita
+	ai2_spawn C_L51
+	ai2_spawn C_L50
+	ai2_spawn C_C65
+	ai2_spawn C_N66
+	ai2_spawn C_Sbo93
+	ai2_spawn C_N60
+	ai2_spawn C_N55
+	ai2_makeignoreplayer C_L50 1
+	ai2_makeignoreplayer C_L51 1
+	ai2_makeignoreplayer C_N55 1
+	ai2_makeignoreplayer C_C65 1
+
+	music_atrium	
+}
+################ begin #################
+########## okita's modification ########
+########################################
+func void spine1(void)
+{
+	dprint spine1_start
+
+	if (sub1 eq 1)
+	{
+		particle spine1 start
+		particle spinesound1 start
+	}
+}
+
+func void spine2(void)
+{
+	dprint spine2_start
+
+	if (sub2 eq 1)
+	{
+		particle spine2 start
+		particle spinesound2 start
+	}
+}
+
+func void spine3(void)
+{
+	dprint spine3_start
+
+	if (sub3 eq 1)
+	{
+		particle spine3 start
+		particle spinesound3 start
+	}
+}
+################  end  #################
+########## okita's modification ########
+########################################
+func void patrolscript0001(void)
+{
+	playback_block B_S22 taunt1 interp 20
+}
+
+func void B_S22_run (string ai_name)
+{
+	ai2_dopath B_S22 patrol_24
+	ai2_setjobstate B_S22
+}
+
+func void A_T25_run (string ai_name)
+{
+	ai2_dopath A_T25 patrol_25
+	ai2_setjobstate A_T25
+}
+
+func void t39(string ai_name)
+{
+	target_set(598,30.0)
+}
+
+func void t48(string ai_name)
+{
+	ai2_spawn D_S101
+	ai2_spawn D_C100
+}
+#########################################
+#      		console/special	    #
+#########################################
+func void unlock14(string ai_name)
+{
+	dprint unlock14_active
+	door_unlock 14
+	particle shin_lock_locklight01 do start
+}
+
+func void console_android(void)
+{
+	text_console level_18b
+	console_reset 16
+}
+
+func void console_zombie(void)
+{
+	text_console level_18a
+	console_reset 17
+}
+
+func void console1(string ai_name)
+{
+	dprint console1_active
+	text_console level_18c
+	console_reset 14
+	console_activate 14
+}
+
+func void console2(string ai_name)
+{
+	dprint console2_active
+	text_console level_18d
+	console_reset 15
+}
+
+func void level_18e(string ai_name)
+{
+	dprint text_18e
+	text_console level_18e
+	console_reset 1
+	console_activate 1
+}
+
+func void tctf3_introcons(string ai_name)
+{
+	dprint introcons
+	text_console tctf3_intro
+	console_reset 71
+	console_activate 71
+	console_reset 72
+	console_activate 72
+}
+
+func void lastdoor_console(string ai_name)
+{	
+	dprint lastdoor_console
+	lastdoor_count = lastdoor_count + 1
+	if (lastdoor_count eq 1)
+	{
+		input 0
+		fade_out 0 0 0 30
+		cm_interpolate lastdoor_cam 0
+		fade_in 30
+		sleep 60
+		particle lastdoor3_locklight01 do start
+		sleep 30
+		fade_out 0 0 0 30
+		cm_reset
+		input 1
+		fade_in 30
+	}
+	if (lastdoor_count eq 2)
+	{
+		input 0
+		fade_out 0 0 0 30
+		cm_interpolate lastdoor_cam 0
+		fade_in 30
+		sleep 60
+		particle lastdoor2_locklight01 do start
+		sleep 30
+		fade_out 0 0 0 30
+		cm_reset
+		input 1
+		fade_in 30
+	}
+	if (lastdoor_count eq 3)
+	{
+		input 0
+		fade_out 0 0 0 30
+		cm_interpolate lastdoor_cam 0
+		fade_in 30
+		sleep 60
+		particle lastdoor1_locklight01 do start
+		set_objective_4
+		target_set(401,30.0)
+		sleep 30
+		fade_out 0 0 0 30
+		cm_reset
+		input 1
+		fade_in 30
+		trigvolume_enable trigger_volume_40 0
+		door_unlock 97
+	}
+
+}
+
+func void refuse_script(string ai_name)
+{	
+	dprint refuse
+	ai2_dopath C_N48 patrol_98
+}
+
+func void patrolscript0098(string ai_name)
+{	
+	dprint patrolscript0098
+	ai2_doalarm C_N48 10
+}
+
+func void shin_lock(string ai_name)
+{
+	particle shin_lock_locklight01 do start
+}
+
+func void stair_lock(string ai_name)
+{
+	particle stair_lock_locklight01 do start
+}
+
+func void roof(string ai_name)
+{
+	particle roof_locklight01 do start
+	particle shin_lock_locklight01 do start
+	ai2_spawn A_T25
+
+}
+
+
+
+func void roof_doors(string ai_name)
+{
+	particle roof_doors_locklight01 do start
+
+}
+
+func void roof_door2(string ai_name)
+{
+	particle roof_door2_locklight01 do start
+	ai2_spawn A_n17
+}
+
+func void enable_t29(string ai_name)
+{
+	trigvolume_enable trigger_volume_29 1
+
+}
+
+func void t40(string ai_name)
+{
+	dprint t40_active
+	if(sub1 ne 1)
+	{
+		if (audio_counter eq 2)
+		{
+			if(trigvolume_count(49) eq 0)
+			{
+				trigvolume_enable trigger_volume_40 0
+				sound_dialog_play c14_54_26konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+		if (audio_counter eq 3)
+		{
+			if(trigvolume_count(49) eq 0)
+			{
+				trigvolume_enable trigger_volume_40 0
+				sound_dialog_play c14_54_25konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+	}
+}
+
+func void t50(string ai_name)
+{
+	dprint t50_active
+	if(sub2 ne 1)
+	{
+		if (audio_counter eq 2)
+		{
+			if(trigvolume_count(51) eq 0)
+			{
+
+				trigvolume_enable trigger_volume_50 0
+				sound_dialog_play c14_54_26konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+		if (audio_counter eq 3)
+		{
+			if(trigvolume_count(51) eq 0)
+			{
+				trigvolume_enable trigger_volume_50 0
+				sound_dialog_play c14_54_25konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+	}
+}
+
+func void t53(string ai_name)
+{
+	dprint t53_active
+	if(sub3 ne 1)
+	{
+		if (audio_counter eq 2)
+		{
+			if(trigvolume_count (54) eq 0)
+			{
+				trigvolume_enable trigger_volume_53 0
+				sound_dialog_play c14_54_26konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+		if (audio_counter eq 3)
+		{
+			if(trigvolume_count(54) eq 0)
+			{
+				trigvolume_enable trigger_volume_53 0
+				sound_dialog_play c14_54_25konoko
+				sound_dialog_play_block pause
+				audio_counter = audio_counter - 1;
+			}
+		}
+	}
+}
+
+
+
+
+
+func void lastdoor1(string ai_name)
+{
+	ld1=1
+	if(ld2 eq 0)
+	{
+		target_set(599,30.0)
+	}
+	if (ld2 ne 0)
+	{
+		if(ld3 eq 0)
+		{
+			target_set(598,30.0)
+		}
+	}
+}
+
+func void lastdoor2(string ai_name)
+{
+	ld2=1
+	if(ld3 eq 0)
+	{
+		target_set(598,30.0)
+	}
+	if(ld3 ne 0)
+	{
+		if(ld1 eq 0)
+		{
+			target_set(597,30.0)
+		}
+	}
+}
+
+func void lastdoor3(string ai_name)
+{
+	ld3=1
+	if(ld2 eq 0)
+	{
+		target_set(599,30.0)
+	}
+	if(ld2 ne 0)
+	{
+		if(ld1 eq 0)
+		{
+			target_set(597,30.0)
+		}
+	}
+}
+
+#########################
+#	save game	      #
+#########################
+func void s1(string ai_name)
+{
+	dprint SAVEDGAME1	
+
+	if (my_save_point ne 1)
+	{
+		save_game 1 autosave
+	}
+}
+
+func void s2(string ai_name)
+{
+	dprint SAVEDGAME2	
+
+	if (my_save_point ne 2)
+	{
+		save_game 2 autosave
+	}
+}
+
+func void s3(string ai_name)
+{
+	dprint SAVEDGAME3	
+
+	if (my_save_point ne 3)
+	{
+		save_game 3 autosave
+	}
+}
+
+func void s4(string ai_name)
+{
+	dprint SAVEDGAME4	
+
+	if (my_save_point ne 4)
+	{
+		save_game 4 autosave
+	}
+}
+
+func void s5(string ai_name)
+{
+	dprint SAVEDGAME5	
+
+	if (my_save_point ne 5)
+	{
+		save_game 5 autosave
+	}
+}
+
+###############################################
+#####   FURIOUS ZOMBIE SHINATAMA FIGHT   ######
+###############################################
+
+var int console_count = 4;
+var int zombie_counter_var = 0;
+
+func void zombie_counter(string player_name)
+{
+	console_count = console_count - 1;
+
+	door_lock 16	
+
+	if (console_count eq 0)
+	{
+		console_count = 4;
+
+		dprint zombie_counter
+		zombie_counter_var = zombie_counter_var + 1;
+
+		if (zombie_counter_var eq 0)
+		{
+			zombie_round_2
+		}
+
+		if (zombie_counter_var eq 1)
+		{
+			zombie_round_3
+		}
+
+		if (zombie_counter_var eq 2)
+		{
+			zombie_round_4
+		}
+
+		if (zombie_counter_var eq 3)
+		{
+			zombie_round_5
+		}
+	}
+}
+
+func void t52(string ai_name)
+{
+	ai2_dopath ZomGrif patrol_102
+}
+
+func void t55(string ai_name)
+{
+	ai2_dopath ZomGrif patrol_103
+}
+
+func void t56(string ai_name)
+{
+	ai2_dopath ZomGrif patrol_104
+}
+
+func void t57(string ai_name)
+{
+	ai2_dopath ZomGrif patrol_105
+}
+
+func void t58(string ai_name)
+{
+	ai2_spawn C_Lbo53
+	ai2_spawn C_Sbo52
+}
+
+func void zombie_dialog_round3(void)
+{
+	sound_dialog_play c14_51_07shinatama
+	cinematic_start(SHINZOMlistening, 180,180,19,8,20, false)
+	sound_dialog_play_block
+	cinematic_stop (SHINZOMlistening, 19, 20)
+}
+
+func void zombie_dialog_round4(void)
+{
+	sound_dialog_play c14_51_08shinatama
+	cinematic_start(SHINZOMlistening, 180,180,19,8,20, false)
+	sound_dialog_play_block
+	cinematic_stop (SHINZOMlistening, 19, 20)
+}
+
+func void zombie_dialog_round5(void)
+{
+	sound_dialog_play c14_51_09shinatama
+	cinematic_start(SHINZOMlistening, 180,180,19,8,20, false)
+	sound_dialog_play_block
+	cinematic_stop (SHINZOMlistening, 19, 20)
+}
+
+# CB: this round is not called any longer! only zombie rounds 2-5 are used now
+# ZOMBIE ROUND 1
+func void zombie_round_1(string ai_name)
+{
+	dprint zombie_round_1
+
+	particle zombie1 create
+	particle zombie1 start
+
+	ai2_allpassive 1
+	input 0
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	sleep 120
+
+	trig_show 91
+	trig_show 92
+	trig_show 93
+
+	trig_activate 91
+	trig_activate 92
+	trig_activate 93
+
+	sleep 30
+
+#	trig_speed 202 .2
+#	trig_speed 204 .2
+#	trig_hide 2023
+#	trig_hide 2013
+
+#	particle ????? start
+#	particle ????? start
+
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	ai2_makeignoreplayer ZomGrif 1
+}
+
+# CB: this round has all the old zombie round 2 setup including camera angles
+# OLD ZOMBIE ROUND 2
+func void old_zombie_round_2(string ai_name)
+{
+	dprint zombie_round_2
+
+	ai2_allpassive 1
+	turret_deactivate 330
+	turret_deactivate 333
+	turret_deactivate 336
+	input 0
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	particle zombie1 kill
+
+	sleep 90
+
+	cm_interpolate zombie_hint 0
+
+	particle zombie1 create
+	particle zombie1 start
+
+	sleep 120
+
+	trig_deactivate 91
+	trig_deactivate 92
+	trig_deactivate 93
+
+	dprint trig_off_1
+
+	sleep 15
+	trig_hide 91
+	sleep 15
+	trig_hide 92
+	sleep 15
+	trig_hide 93
+
+	sleep 120
+
+	trig_show 210
+	trig_show 310
+	trig_show 410
+	trig_show 510
+
+	trig_activate 210
+	trig_activate 310
+	trig_activate 410
+	trig_activate 510
+
+	trig_reset 91
+	trig_reset 92
+	trig_reset 93
+
+	sleep 15
+	trig_show 91
+	sleep 15
+	trig_show 92
+	sleep 15
+	trig_show 93
+
+	trig_activate 91
+	trig_activate 92
+	trig_activate 93
+
+	sleep 90
+	
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	ai2_makeignoreplayer ZomGrif 1
+
+	console_reset 399
+	console_reset 400
+	console_reset 401
+	console_reset 402
+}	
+
+# CB: this round is the new zombie round 2 setup which is tabulae rasa
+# and fit to be called from a save point, or from the cutscene
+# ZOMBIE ROUND 2
+func void zombie_round_2(string ai_name)
+{
+	dprint zombie_round_2_active
+
+	particle zombie1 create
+	particle zombie1 start
+
+	ai2_allpassive 1
+	input 0
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	sleep 120
+
+	trig_show 210
+	trig_show 310
+	trig_show 410
+	trig_show 510
+
+	trig_activate 210
+	trig_activate 310
+	trig_activate 410
+	trig_activate 510
+
+	trig_reset 91
+	trig_reset 92
+	trig_reset 93
+
+	sleep 15
+	trig_show 91
+	sleep 15
+	trig_show 92
+	sleep 15
+	trig_show 93
+
+	trig_activate 91
+	trig_activate 92
+	trig_activate 93
+
+	# incidental zombie shinatama dialog
+	trigvolume_enable shinzom_voice1 1
+	trigvolume_enable shinzom_voice2 1
+
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	ai2_makeignoreplayer ZomGrif 1
+}	
+
+# ZOMBIE ROUND 3
+func void zombie_round_3(string ai_name)
+{
+	dprint zombie_round_3_active
+
+	ai2_allpassive 1
+	turret_deactivate 330
+	turret_deactivate 333
+	turret_deactivate 336
+	input 0
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	particle zombie1 kill
+
+	# incidental zombie shinatama dialog
+	trigvolume_enable shinzom_voice3 1
+
+	sleep 90
+
+	cm_interpolate zombie_hint 0
+
+	particle zombie1 create
+	particle zombie1 start
+	sleep 20
+	particle zombie1 kill
+	sleep 10
+	particle zombie1 create
+	particle zombie1 start
+
+	sleep 120
+
+	trig_deactivate 91
+	trig_deactivate 92
+	trig_deactivate 93
+
+	dprint trig_off_2
+
+	sleep 15
+	trig_hide 91
+	sleep 15
+	trig_hide 92
+	sleep 15
+	trig_hide 93
+
+	trig_deactivate 210
+	trig_deactivate 310
+	trig_deactivate 410
+	trig_deactivate 510
+
+	fork zombie_dialog_round3
+	sleep 120
+
+	trig_reset 91
+	trig_reset 92
+	trig_reset 93
+
+	sleep 15
+	trig_show 91
+	sleep 15
+	trig_show 92
+	sleep 15
+	trig_show 93
+
+	trig_activate 91
+	trig_activate 92
+	trig_activate 93
+
+	trig_reset 210
+	trig_reset 310
+	trig_reset 410
+	trig_reset 510
+
+	trig_activate 210
+	trig_activate 310
+	trig_activate 410
+	trig_activate 510
+
+	trig_show 2101
+	trig_show 3101
+	trig_show 4101
+	trig_show 5101
+
+	trig_activate 2101
+	trig_activate 3101
+	trig_activate 4101
+	trig_activate 5101
+
+	trig_speed 210 .3
+	trig_speed 310 .3
+	trig_speed 410 .3
+	trig_speed 510 .3
+
+	trig_speed 2101 .3
+	trig_speed 3101 .3
+	trig_speed 4101 .3
+	trig_speed 5101 .3
+
+	sleep 90
+
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	# ai2_passive ZomGrif 1
+
+	console_reset 399
+	console_reset 400
+	console_reset 401
+	console_reset 402
+}
+
+## ZOMBIE ROUND 4
+func void zombie_round_4(string ai_name)
+{
+	dprint zombie_round_4_active
+
+	ai2_allpassive 1
+	turret_deactivate 330
+	turret_deactivate 333
+	turret_deactivate 336
+	input 0
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	particle zombie1 kill
+
+	# incidental zombie shinatama dialog
+	trigvolume_enable shinzom_voice4 1
+
+	sleep 90
+
+	cm_interpolate zombie_hint 0
+
+	sleep 30
+	particle zombie1 create
+	particle zombie1 start
+	sleep 20
+	particle zombie1 kill
+	sleep 30
+	particle zombie1 create
+	particle zombie1 start
+
+	fork zombie_dialog_round4
+	sleep 120
+
+	trig_deactivate 91
+	trig_deactivate 92
+	trig_deactivate 93
+
+	dprint trig_off_3
+
+	trig_hide 91
+	trig_hide 92
+	trig_hide 93
+
+	trig_deactivate 210
+	trig_deactivate 310
+	trig_deactivate 410
+	trig_deactivate 510
+
+	trig_hide 210
+	trig_hide 310
+	trig_hide 410
+	trig_hide 510
+
+	trig_deactivate 2101
+	trig_deactivate 3101
+	trig_deactivate 4101
+	trig_deactivate 5101
+
+	trig_hide 2101
+	trig_hide 3101
+	trig_hide 4101
+	trig_hide 5101
+
+	sleep 120
+		
+	trig_show 214
+	trig_show 314
+	trig_show 414
+	trig_show 514
+
+	sleep 15
+
+	trig_show 94
+
+	sleep 15
+
+	trig_show 910
+
+	trig_activate 214
+	trig_activate 314
+	trig_activate 414
+	trig_activate 514
+
+	trig_activate 910
+	trig_activate 94
+
+	trig_speed 214 .15
+	trig_speed 314 .15
+	trig_speed 414 .15
+	trig_speed 514 .15
+
+	trig_speed 910 .35
+	trig_speed 94 .35
+		
+	sleep 90
+	
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	# # ai2_passive ZomGrif 1
+
+	console_reset 399
+	console_reset 400
+	console_reset 401
+	console_reset 402
+}
+
+########## ZOMBIE ROUND 5 - YOU WIN ############
+
+func void zombie_round_5(string ai_name)
+{
+	dprint zombie_round_5_active
+
+	ai2_allpassive 1
+	turret_deactivate 330
+	turret_deactivate 333
+	turret_deactivate 336
+
+	trig_hide 214
+	trig_hide 414
+
+	trig_activate 210
+	trig_activate 410	
+
+	# CB: kill all weapon particles
+	p3_removedangerous
+
+	input 0
+
+	begin_cutscene	
+
+	music_stop
+
+	sleep 60
+
+	cm_interpolate zombie_death 0
+	
+	fork zombie_dialog_round5
+	sleep 90
+
+	trig_speed 9 1
+	trig_speed 10 2
+	trig_speed 910 2.5
+	trig_speed 94 .5
+	trig_speed 210 2
+	sleep 90	
+	trig_speed 410 2
+	sleep 90	
+	trig_speed 514 1
+	trig_speed 410 1
+	sleep 90
+	trig_speed 314 2
+	sleep 90
+	trig_speed 210 1
+
+	sleep 60
+	trig_hide 210
+	trig_hide 9
+	trig_speed 10 .2
+	sleep 60	
+	trig_hide 314
+	trig_hide 910
+	sleep 60	
+	trig_speed 514 .2
+	trig_hide 410
+	trig_hide 10
+	trig_hide 94
+	sleep 60
+	trig_hide 514
+	sleep 60
+	trig_hide 93
+	particle zombie1 kill
+	sound_ambient_start shin_zom_shutdown 1.0
+	sleep 10
+	particle zombie1 create
+	particle zombie1 start
+	sleep 20
+	particle zombie1 kill
+	particle zombie1 create
+	particle zombie1 start
+	sleep 30
+	particle zombie1 kill
+	particle zombiesteam stop
+	particle zombient stop
+	
+	sleep 90
+
+#	Hardy, if griffin has to see konoko after or during the zom cutscene, 
+#	make sure this next line makes it into the shorter zombie shin scripts --mike
+
+	ai2_makeignoreplayer ZomGrif 0
+	Zom
+}
+
+
+
+############################################################
+########### INCIDENTAL SHINATAMA ZOMBIE DIALOG #############
+############################################################
+
+func void shinzom_voice1(string ai_name)
+{
+	sound_dialog_play c00_01_102shinatama
+}
+
+func void shinzom_voice2(string ai_name)
+{
+	sound_dialog_play c00_01_101shinatama
+}
+
+func void shinzom_voice3(string ai_name)
+{
+	sound_dialog_play c00_01_100shinatama
+}
+
+func void shinzom_voice4(string ai_name)
+{
+	sound_dialog_play c00_01_103shinatama
+}
Index: AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf3.bsl
===================================================================
--- AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf3.bsl	(revision 540)
+++ AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf3.bsl	(revision 540)
@@ -0,0 +1,457 @@
+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)
+}
Index: AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_cutscene.bsl
===================================================================
--- AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_cutscene.bsl	(revision 540)
+++ AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_cutscene.bsl	(revision 540)
@@ -0,0 +1,417 @@
+#
+# tctf_cutscene.bsl
+#
+
+func void
+Intro(
+	void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate IntroCam01 0
+	sleep f14
+	begin_cutscene weapon
+	marketing_line_off=1
+	letterbox 1
+	sleep f60
+	invincible=1
+	obj_create 401 402
+	obj_create 404 407
+	fade_in 90
+	#Outside shot of TCTF
+	cm_interpolate IntroCam01 0
+	playback 0 IntroKonokoSet
+	sleep f300
+	#Griffin and Guy talking
+	chr_create 1201 start
+	chr_create 1202 start
+	playback 1202 IntroTCTF01
+	#make this box animation last as long as conversation
+	chr_envanim 1201 IntroGriffinBox01
+	chr_animate 1201 COMGUYsit_idle1 1800
+	#Conversation between the two
+	cm_interpolate IntroCam02 0
+	sound_dialog_play c14_50_01scigoon1
+	cinematic_start (COPtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	cm_interpolate IntroCamGriffin 0
+	sound_dialog_play c14_50_02griffin
+	cinematic_start (GRIFtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	#TCTF walks out
+	sound_music_start atm_low_perc2 0.8
+	cm_interpolate IntroCam02 0
+	playback 1202 IntroTCTF02
+	sound_dialog_play c14_50_03scigoon1
+	sleep f240
+	cinematic_stop (COPtalking, 15, 20)
+	cinematic_stop (GRIFtalking, 15, 20)
+	sleep f60
+	door_open 70
+	door_jam 70
+	sleep f100
+	#KONOKO on roof
+	playback 0 IntroKonoko01
+	cm_interpolate IntroCamInside01 0
+	cm_interpolate_block IntroCamInside02 400
+	sleep f400
+	cm_anim both IntroCamRoof
+	sleep f210
+	#Konoko falls into view
+	cm_anim both IntroCamFall01
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev18_IntroFall01 140
+	#Griffin gets surprised
+	chr_delete 1202
+	cm_anim_block both IntroCamStand01
+	chr_envanim 1201 IntroGriffinBox02 norotation
+	chr_animate 1201 GRIFINlev18_IntroStand 110
+	env_anim 401 401
+	sleep f88
+	#Konoko enters office
+	playback 0 IntroKonoko02
+	cm_interpolate_block IntroCamKonAim01 0
+	cm_interpolate_block IntroCamKonAim02 350
+	sleep f140
+	cinematic_start(KONangryfront, 180, 180, 18, 6, 30, true)
+	sound_dialog_play c14_50_04konoko
+	sound_dialog_play_block pause
+	cinematic_stop (KONangryfront, 18, 30)
+	#Conversation with Griffin
+	playback 1201 IntroGriffin
+	cm_interpolate IntroCamGriffin02 0
+	cinematic_start(GRIFtalkangry, 180,180,18,6,30, true)
+	sound_dialog_play c14_50_05griffin
+	sound_dialog_play_block pause
+	cinematic_stop (GRIFtalkangry, 18, 30)
+	#Griffin's office goes down
+	sound_music_volume atm_low_perc2 0.0 0.5
+	sound_music_stop atm_low_perc2
+	music_intro
+	env_show 403 0
+	obj_create 403 403
+	cm_anim both IntroCamEscape01
+	chr_envanim 1201 IntroGriffinBox03 norotation
+	env_setanim 401 IntroChair02
+	env_anim 402 407
+	cutscene_sync mark
+	sound_ambient_start c14_46_11grifdesk
+	sleep f16
+	playback 0 IntroKonokoAim fromhere
+	cm_anim_block both IntroCamEscape02
+	cm_wait
+	cm_reset
+	obj_kill 401 407
+	# look out Stefan is editing scripts; yo foolios need to turn back on the laser sight :O)
+	marketing_line_off=0
+	end_cutscene
+	invincible=0
+	chr_delete 1201
+	door_unjam 70
+	door_close 70
+	# who is a foolio? the foo or the foo who follows him?
+	s1
+}
+
+
+func void
+GrifSpawn(
+	void)
+{
+	ai2_spawn ZomGrif
+	chr_invincible ZomGrif 1
+	sleep f2
+	ai2_passive ZomGrif 1
+	ai2_setmovementmode ZomGrif walk
+	playback ZomGrif ZomGrifDraw
+}
+
+func void create_zomshin(void)
+{
+	ai2_spawn ZomShin
+	ai2_passive ZomShin 1
+	chr_shadow ZomShin 0
+	chr_invincible ZomShin 1
+	chr_unstoppable ZomShin 1
+	chr_nocollision ZomShin 1
+	chr_neutral ZomShin 1
+	chr_lock_active ZomShin
+}
+
+func void
+Base(
+	void)
+{
+	begin_cutscene
+	#place Griffin here earlier
+	#chr_neutral ZomGrif 1
+	sleep f20
+	#playback ZomGrif BaseGriffin01
+	cm_interpolate BaseCam01 180
+	sleep f210
+	#place Konoko
+	playback 0 BaseKonoko01
+	cm_interpolate BaseCam02 0
+	cm_interpolate_block BaseCam04 500
+	sound_dialog_play c14_51_01konoko
+	cinematic_start(KONangryfront, 180,180,19,7,20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (KONangryfront, 19, 20)
+	cm_interpolate BaseCam01 0
+	cm_interpolate_block BaseCam03 600
+	sound_dialog_play c14_51_02griffin
+	cinematic_start(GRIFtalkangry, 180,180,20,9,20, true)
+	sound_dialog_play_block pause
+	cutscene_sync mark
+	sound_ambient_start c15_04_23_effects
+	sound_dialog_play c14_51_03griffin
+	#Shinzom comes out of ground
+	create_zomshin
+	chr_envanim ZomShin ChairShinBox01
+	obj_create 171 174
+	env_anim 171 174
+	obj_shade 171 174 .5 .5 .5
+	cm_anim both ChairCamZomUp
+	#chr_create ZomShin start
+	#chr_neutral ZomShin 1
+	sleep f270
+	particle zombiespark pulse
+
+	cm_wait
+
+	particle zombient start
+	#hide Chair object, show chair gunk
+	env_show 171 1
+	env_show 172 1
+	env_show 173 1
+	env_show 174 1
+	obj_kill 171 174
+	cm_interpolate BaseCamShin01 0
+	playback ZomShin BaseShin
+	cm_interpolate_block BaseCamShin02 300
+	sound_dialog_play_block
+	cinematic_stop (GRIFtalkangry, 20, 20)
+	sound_dialog_play c14_51_04shinatama
+	cinematic_start(SHINZOMlistening, 180,180,19,7,20, false)
+	sound_dialog_play_block
+	cinematic_stop (SHINZOMlistening, 19, 20)
+	sleep f30
+	particle Forcefield do start
+	sound_ambient_start zomshin_amb_loop 0.1
+	sound_ambient_volume zomshin_amb_loop 1.0 1.0
+	cm_interpolate BaseCam02 0
+	sound_dialog_play c14_51_05konoko
+	cinematic_start(KONscared, 180,180,20,9,20, true)
+	sound_dialog_play_block
+	cinematic_stop (KONscared, 20, 20)
+	playback ZomShin BaseShin
+	cm_interpolate_block BaseCamShin02 0
+	sound_dialog_play c14_51_06shinatama
+	cinematic_start(SHINZOMlistening, 180,180,19,7,20, false)
+	particle zombiesteam start
+	sound_dialog_play_block pause
+	cinematic_stop (SHINZOMlistening, 19, 20)
+#	cm_reset
+#	trig_show 9
+#	trig_activate 9
+	end_cutscene
+	music_zom
+	ai2_passive ZomShin 1
+	ai2_makeignoreplayer ZomGrif 1
+	zombie_round_2
+#	ai2_allpassive 1
+#	remove line below after zomshin puzzle is fixed
+#	Zom
+}
+
+func void fade_out_zom_amb(void)
+{
+	sound_ambient_volume zomshin_amb_loop 0.0 1.0
+	sleep 60
+	sound_ambient_stop zomshin_amb_loop
+}
+
+func void Zom(void)
+{
+	env_show 1010 0
+	particle Forcefield do stop
+	fork fade_out_zom_amb
+	begin_cutscene
+	marketing_line_off=1
+	#Shinatama will already be created
+	#show the destruction of the turrets and the forcefield around Griffin
+	#cm_interpolate ZomCamGrif01 0
+	ai2_setmovementmode ZomGrif walk
+	playback ZomGrif ZomGrifDrawSet
+	#sleep f120
+	#Shinatama gets up out of chair
+	chr_shadow ZomShin 1
+	chr_invincible ZomShin 0
+	chr_unstoppable ZomShin 0
+	chr_envanim ZomShin ZomShinBox01 norotation
+	chr_animate ZomShin SHINZOMlev18_Free
+	cm_anim both ZomCamFree01
+	sleep f90
+	cutscene_sync mark
+	sound_ambient_start c_shin_escape
+	cm_wait
+	#Griffin says "what are you doing?"
+	cm_interpolate ZomCamGrif01 0
+	sound_dialog_play c14_52_01griffin
+	cinematic_start(GRIFtalkangry, 180,180,19,7,20, false)
+	sound_dialog_play_block
+	cinematic_stop(GRIFtalkangry, 19,20)
+	#Shinatama approaches Griffin
+	cm_interpolate ZomCamShinStart 0
+	playback ZomShin ZomShinSet
+	chr_animate ZomShin SHINZOMwalk1 180
+	chr_nocollision ZomShin 0
+	sleep f175
+	#Griffin says GET BACK OR I'll SHOOT
+	#cm_interpolate ZomCamGrif01 0
+	#playback ZomGrif ZomGrifDrawSet
+	#sleep f120
+	#Shin keeps coming
+	#cm_interpolate ZomCamShinApproach 0
+	playback ZomShin ZomShinWalk
+	chr_animate ZomShin SHINZOMwalk1 600
+	#sleep f120
+	#Griffin draws weapon
+	cm_interpolate ZomCamGrif01 0
+	playback ZomGrif ZomGrifDrawSet
+	sleep f30
+	#sound_dialog_play c14_52_01bgriffin
+	playback ZomGrif ZomGrifDraw
+	sleep f60
+	#konoko drops weapon
+	playback 0 ZomKonokoDrop
+	#Shinatama Approaches Griffin
+	cm_interpolate ZomCamBoth 0
+	sleep f180
+	#Griffin shoots
+	cm_interpolate ZomCamGrifShoot 0
+	playback ZomGrif ZomGrifShoot
+	sleep f50
+	#Shinatama gets hit
+	cm_interpolate ZomCamShinDie 0
+	chr_animate ZomShin SHINZOMshot 126
+	sound_ambient_start c_shin_die 1.0
+	sleep f120
+	#Show Griffin over Shinatama
+	cm_interpolate ZomCamDead 0
+	playback ZomGrif ZomGriffinKilled
+	chr_animate ZomShin SHINZOMfallen_front 1000
+	sleep f10
+	cm_interpolate ZomCamKonokoBehind 270
+	playback 0 ZomKonokoBehind
+	sleep f280
+	#Griffin turns and gets thrown
+	# CB: we force omnipotent off because it breaks this cutscene (you kill
+	# griffin prematurely)
+	omnipotent = 0
+	chr_invincible ZomGrif 0
+	ai2_kill ZomShin
+	chr_neutral ZomGrif 0
+	cm_interpolate ZomCamThrow 0
+	playback ZomGrif ZomGriffinTurn
+	playback 0 ZomKonokoThrow
+	sleep f140
+	#Knoko holds him down
+	cm_interpolate ZomCamKonokoAim02 0
+	chr_neutral ZomGrif 1
+	chr_envanim ZomGrif ZomGriffinBox01 norotation
+	chr_envanim 0 ZomKonokoBox01 norotation
+	chr_animate 0 KONOKOlev18_ZomAim 300
+	chr_animate ZomGrif GRIFINlev18_ZomAim 500
+	sound_dialog_play c14_52_02konoko
+	cinematic_start(KONangryfront, 180,180,19,7,20, false)
+	sound_dialog_play_block pause
+	#Looking down at griffin
+	#chr_envanim 0 ZomKonokoBox01 norotation
+	#chr_envanim ZomGrif ZomGriffinBox01 norotation
+	#chr_animate 0 KONOKOlev18_ZomAim 300
+	#chr_animate ZomGrif GRIFINlev18_ZomAim 500
+	#cm_interpolate ZomCamKonokoAim01 0
+	#KONoko gets off Griffin
+	#cm_interpolate ZomCamKonokoAim02 0
+	chr_envanim 0 ZomKonokoBox02 norotation
+	chr_envanim ZomGrif ZomGriffinBox01 norotation
+	chr_animate ZomGrif GRIFINlev18_ZomAim 500
+	chr_animate 0 KONOKOlev18_ZomUp 120
+	#sound_dialog_play c14_52_04konoko
+	#Griffin gets up put the gun down
+	sleep f100
+	cm_interpolate ZomCamGriffinUp 0
+	chr_envanim ZomGrif ZomGriffinBox02 norotation
+	chr_animate ZomGrif GRIFINlev18_ZomUp
+	sound_dialog_play c14_52_03griffin
+	cinematic_start(GRIFbeatup, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	#Konoko I'm a rogue agent, very dangerous
+	playback 0 ZomKonokoFace
+	cm_interpolate ZomCamKonokoFace 0
+	sound_dialog_play c14_52_04konoko
+	sound_dialog_play_block pause
+	#Griffin says youre a monster
+	cm_interpolate ZomCamGriffinFace 0
+	playback ZomGrif ZomGriffinFace
+	sound_dialog_play c14_52_05griffin
+	sound_dialog_play_block pause
+	#for you, badly
+	cm_interpolate ZomCamKonokoFace 0
+	sound_dialog_play c14_52_06konoko
+	sound_dialog_play_block pause
+	#Griffin says youre a monster
+	cm_interpolate ZomCamGriffinFace 0
+	sound_dialog_play c14_52_07griffin
+	sound_dialog_play_block pause
+	cinematic_stop(GRIFbeatup, 20, 20)
+	cinematic_stop(KONangryfront, 19, 20)
+	#Give player back control
+	cm_reset
+	end_cutscene
+	ai2_allpassive 1
+	chr_set_health ZomGrif 1
+	marketing_line_off=0
+	trigvolume_enable trigger_volume_35 1
+	objective_set(5)
+}
+
+func void
+OutroKill(
+	void)
+{
+	sound_music_start mus_wls 1.0
+	#begin_cutscene jello
+	sleep f40
+	sound_dialog_play c14_53_01konoko
+	cinematic_start(KONintense, 180,180,19,8,20, false)
+	sound_dialog_play_block
+	cinematic_stop (KONintense, 19, 20)
+#	fade_out 0 0 0 120
+	sleep f120
+	end_cutscene
+#	win
+}
+
+
+func void
+OutroNoKill(
+	void)
+{
+	begin_cutscene jello
+	cm_detach
+	ai2_takecontrol 1
+	ai2_lookatchar 0 ZomGrif
+	ai2_lookatchar ZomGrif 0
+	sound_music_start mus_sad1
+	sound_dialog_play c14_54_01konoko
+	cinematic_start(KONlistening, 180,180,19,8,20, false)
+	sleep f120
+	cm_interpolate BaseCam01 180
+	sound_dialog_play_block
+	cinematic_stop (KONlistening, 19, 20)
+#	fade_out 0 0 0 120
+	sleep f120
+	end_cutscene
+#	win
+}
Index: AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_main.bsl
===================================================================
--- AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_main.bsl	(revision 540)
+++ AE/packages/NextRelease/81000TCTF3/bsl/tctf_iii/tctf_ii_main.bsl	(revision 540)
@@ -0,0 +1,89 @@
+#
+# tctf_ii_main.bsl
+#
+
+func void main(void)
+{
+	env_shade 321 325 .3 .3 .3
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.995
+	gs_farclipplane_set 5000
+
+	#fork text()
+
+
+	#hide trigger for Base
+	trig_hide 9
+	#Hide Chair Gunk
+	env_show 171 0
+	env_show 172 0
+	env_show 173 0
+	env_show 174 0
+
+##### THEESE TRIGGERS ARE FOR ZOMBIE SHINATAMA ############
+
+	trig_hide 91
+	trig_hide 92
+	trig_hide 93
+	trig_hide 94
+
+	trig_hide 910
+
+	trig_hide 10
+
+	trig_hide 210
+	trig_hide 2101
+	trig_hide 214
+
+	trig_hide 310
+	trig_hide 3101
+	trig_hide 314
+
+	trig_hide 410
+	trig_hide 4101
+	trig_hide 414
+
+	trig_hide 510
+	trig_hide 5101
+	trig_hide 514
+	
+	start
+}
+
+func void text(void) {
+co_color = -1
+sleep 60
+dprint " "
+dprint " "
+dprint " "
+dprint " "
+
+dprint " "
+dprint " "
+dprint " "
+dprint " "
+dprint "white text"
+dprint "what....you think this is boring?....fine!"
+co_color = 255;
+dprint "My love is like a ship on the ochean"
+co_color = 16711680;
+dprint "What now?! ERROR ERROR ERROR"
+co_color = 65280;
+dprint "Its not easy being green"
+co_color = 0;
+dprint "Ha! I bet you can't even read this"
+co_color = -1;
+dprint "Ok, I've had my fun..."
+dprint " "
+dprint " "
+dprint " "
+dprint " "
+
+dprint " "
+dprint " "
+dprint " "
+dprint " "
+
+}
