Index: /AE/packages_bak/BetterWeaps/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/BetterWeaps/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/BetterWeaps/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Weapon Improvement
+ModString -> BetterWeaps 1
+Category -> AE: Weapons
+Creator -> Geyser
+HasOnis -> Yes
+HasDeltas -> No
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Improves the appearence and mechanics of existing Oni weapons. \n \n Currently contains: \n 1. Long lasting bullet casings
+GlobalNeeded -> Yes
Index: /AE/packages_bak/BrutalAI/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/BrutalAI/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/BrutalAI/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,7 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Brutal AI
+ModString -> BrutalAI 1
+Category -> AE: Characters
+Creator -> Loser/EdT
+HasOnis -> Yes 
+Readme -> Improves the melee AI for Konoko and Strikers.  Brutal Konoko can be seen in Dream Lab (Chapter 11).  Brutal Strikers appear wherever a normal striker would appear in Easy/Normal mode. In Hard mode, they get a different skin, but are just as Brutal.
Index: /AE/packages_bak/DangerousGlass/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/DangerousGlass/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/DangerousGlass/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Dangerous Glass
+ModString -> DangerousGlass 1
+Category -> AE: Particles
+Creator -> Geyser
+HasOnis -> Yes
+HasDeltas -> No
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> When windows are broken, the shards of broken glass hurt anyone they touch.  This mod was designed to go along with Glass Breaking Moves.
+GlobalNeeded -> Yes
Index: /AE/packages_bak/DashingAI/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/DashingAI/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/DashingAI/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion -> 1.0 //
+NameOfMod -> Dashing AI // Comment area ^_^ This is what is displayed on the package. Quotes are optional.
+ModString -> DashingAI 1 // Short name Simple version number. Read for updating.
+Category -> AE: Animation // 
+Creator -> geyser
+HasOnis -> Yes // Default = No
+HasDeltas -> No // Default = No
+HasBSL -> No // Default = No
+HasDats -> No // Default = No. These should be very rare.
+IsEngine -> No // Default = No
+Readme -> Makes AI-controlled characters dash instead of running. This levels the playing field so that Konoko cannot easily out-run them. \n Warning: will mess up a few cutscenes, but won't negatively affect gameplay.
+GlobalNeeded -> Yes // Default = Yes
Index: /AE/packages_bak/GlassBreakingMoves/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/GlassBreakingMoves/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/GlassBreakingMoves/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 
+NameOfMod -> Glass Breaking Moves
+ModString -> GlassBreakingMoves 1
+Category -> AE: Animation
+Creator -> Gumby/geyser
+HasOnis -> No
+HasDeltas -> Yes
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Makes all attacks break glass.
+GlobalNeeded -> Yes
Index: /AE/packages_bak/Globalize/x3delta/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/Globalize/x3delta/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/Globalize/x3delta/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,13 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Globalization Bugfixes//
+ModString -> Globalize 1
+Category -> AE: BSL
+Creator -> geyser
+HasOnis -> Yes
+HasDeltas -> Yes
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Bugfixes for Globalization sideeffects.
+GlobalNeeded  ->  Yes
+OS -> None //Haha, the globalize script will use this, and you won't be able to uninstall it. :P
Index: /AE/packages_bak/ImprovedWeather/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/ImprovedWeather/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/ImprovedWeather/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,7 @@
+AEInstallVersion -> 1.0 //
+NameOfMod -> Improved Weather // Comment area ^_^ This is what is displayed on the package. Quotes are optional.
+ModString -> ImprovedWeather 1 // Short name Simple version number. Read for updating.
+Category -> AE: Particles // 
+Creator -> Gumby/Bungie
+HasOnis -> Yes // Default = No
+Readme -> Improves Oni's weather effects. \n \n Currently contains: \n 1. Rain splash effect.
Index: /AE/packages_bak/KnockdownRevamp/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/KnockdownRevamp/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/KnockdownRevamp/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,11 @@
+AEInstallVersion -> 1.0 //
+NameOfMod -> Knockdown Revamp // Comment area ^_^ This is what is displayed on the package. Quotes are optional.
+ModString -> KnockdownRevamp 1 // Short name Simple version number. Read for updating.
+Category -> AE: Animation  // 
+Creator -> Gumby/Loser
+HasOnis -> Yes // Default = No
+HasDeltas -> No // Default = No
+HasBSL -> No // Default = No
+HasDats -> No // Default = No. These should be very rare.
+IsEngine -> No // Default = No
+Readme -> 1. Characters don't lose their weapon on normal knockdowns; this allows you to shoot from a knocked-down position. You, and the AI, will still lose the weapon on throws and leg sweep knockdowns, however. \n 2. Blownup enemies can knock other people down.
Index: /AE/packages_bak/NewCharacters/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NewCharacters/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NewCharacters/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> New Characters
+ModString -> NewCharacters 1
+Category -> AE: New Content
+Creator -> EdT
+HasOnis -> Yes
+HasDeltas -> No
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Adds new characters to Oni. \n \n Currently contains: \n 1. BGI troop pack. \n 2. Ninjabot 2.
+GlobalNeeded -> Yes
Index: /AE/packages_bak/NewCharacters/x3delta/Delta.dos
===================================================================
--- /AE/packages_bak/NewCharacters/x3delta/Delta.dos	(revision 405)
+++ /AE/packages_bak/NewCharacters/x3delta/Delta.dos	(revision 405)
@@ -0,0 +1,7 @@
+// Syntax file for Delta stuff.
+// DOS = DoStuff :D (do is taken by java stuff)
+// dat_subfolder/original_file subsubfolder/delta_file dat_subfolder/output_file
+Delta level0_Final/ONCCninjabot.oni ninjabot/ONCCninjabot2.oni level0_Final/ONCCninjabot2.oni 
+Delta level0_Final/TRMAninjabot_tx.oni ninjabot/TRMAninjabot2.oni level0_Final/TRMAninjabot2.oni
+Delta level0_Final/TXMPNINJA_EASY%%2Fpractise.oni ninjabot/TXMPninjabot2.oni level0_Final/TXMPninjabot2.oni
+Delta level0_Final/TXMPNINJA_EASY%%2Fpractise.oni ninjabot/TXMPninjabot2dxt.oni level0_Final/TXMPninjabot2.oni
Index: /AE/packages_bak/NewWeapons/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NewWeapons/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NewWeapons/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> New Weapons
+ModString -> NewWeapons 1
+Category -> AE: New Content
+Creator -> Gumby/Geyser
+HasOnis -> Yes
+HasDeltas -> No
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Adds new weapons to Oni. \n \n Currently contains: \n 1. BGI Subjugator. \n 2. BGI Rocket Launcher. \n 3. Chaingun. \n 4. Devil Star gun. \n 5. WMC Lite. \n 6. SBG2 \n 7. TK (Telekinetic) Bracelet. \n Other unnamed weapons....
+GlobalNeeded -> Yes
Index: /AE/packages_bak/NextRelease/Blood/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NextRelease/Blood/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NextRelease/Blood/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> BloodMod //
+ModString -> Blood 1 
+Category -> AE: Particles
+Creator -> Gumby
+HasOnis -> Yes // Default = No
+HasDeltas -> Yes // Default = No
+HasBSL -> No // Default = No
+HasDats -> No // Default = No
+IsEngine -> No // Default = No
+Readme -> Adds blood to melee moves and bullet flesh hits.
+GlobalNeeded  ->  No
Index: /AE/packages_bak/NextRelease/DashBlur/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NextRelease/DashBlur/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NextRelease/DashBlur/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Blurring Dash
+ModString -> DashBlur 1
+Category -> AE: Animations
+Creator -> Gumby
+HasOnis -> Yes
+HasDeltas -> No
+HasBSL -> No
+HasDats -> No
+IsEngine -> No 
+Readme -> Gives dashing a motion blur effect. \n \n WARNING 1: This mod looks glitchy when used with a Daodan glow. \n WARNING 2: This mod my cause a performance loss on lower end systems. Use at your own risk. :)
+GlobalNeeded -> Yes
Index: /AE/packages_bak/NextRelease/KonokoPack/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NextRelease/KonokoPack/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NextRelease/KonokoPack/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,12 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Mini Konoko
+ModString -> KonokoPack 1 
+Category -> AE: Characters
+Creator -> Gumby
+HasOnis -> Yes // Default = No
+HasDeltas -> Yes // Default = No
+HasBSL -> No // Default = No
+HasDats -> No // Default = No
+IsEngine -> No // Default = No
+Readme -> Adds different skins of Konoko to the game. \n \n Currently contains: \n 1. Schoolgirl Konoko (misized head and crappy looking).
+GlobalNeeded  ->  No
Index: /AE/packages_bak/NinjaShadowDash/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/NinjaShadowDash/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/NinjaShadowDash/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,8 @@
+AEInstallVersion -> 1.0 //
+NameOfMod -> Ninja Shadow Dash
+ModString -> NinjaShadowDash 1 
+Category -> AE: Animation 
+Creator -> Gumby
+HasOnis -> Yes 
+Readme -> Ninja escape moves now make them disappear. They can travel through characters in this shadow state.
+GlobalNeeded -> Yes // Default = Yes
Index: /AE/packages_bak/ShinatamaToo/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/ShinatamaToo/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/ShinatamaToo/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,7 @@
+AEInstallVersion ->  1.0 
+NameOfMod -> Shinatama Too
+ModString -> ShinatamaToo 1 
+Category -> AE: Characters
+Creator -> geyser
+HasOnis -> Yes
+Readme -> Adds a fighting Shinatama to the game, distinguishable by her unique outfit.
Index: /AE/packages_bak/UltimateMode/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/UltimateMode/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/UltimateMode/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,11 @@
+AEInstallVersion -> 1.0 //
+NameOfMod -> Ultimate Mode Oni
+ModString -> UltimateMode 1
+Category -> AE: Difficulty 
+Creator -> Gumby
+HasOnis -> Yes // Default = No
+HasDeltas -> No // Default = No
+HasBSL -> No // Default = No
+HasDats -> No // Default = No. These should be very rare.
+IsEngine -> No // Default = No
+Readme -> Makes Oni effing hard. If you can beat Oni with this mod on hard mode, I commend you. \n \n Currently contains: \n 1. AI block skill major upgrade
Index: /AE/packages_bak/UltraChars/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/UltraChars/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/UltraChars/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,8 @@
+AEInstallVersion -> 1.0 
+NameOfMod -> Ultra Characters
+ModString -> UltraChars 1
+Category -> AE: New Content
+Creator -> EdT
+HasOnis -> Yes
+Readme -> Adds ultra characters to Oni, who will appear randomly in place of Hard (red) level characters.
+GlobalNeeded -> Yes
Index: /AE/packages_bak/UnlockAllMoves/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/UnlockAllMoves/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/UnlockAllMoves/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,8 @@
+AAEInstallVersion ->  1.0 
+NameOfMod -> Unlock All Moves
+ModString -> UnlockAllMoves 1
+Category -> AE: Animations
+Creator -> Gumby
+HasOnis -> Yes 
+Readme -> Unlocks all attacks. \n \n Triple-Hit Haymaker (PPP) \n Spinning Sidekick (KKK) \n Willow Kick (Bk,Fw+K) \n Crescent Moon Kick (KKFw+K) \n Devil Spin Kick (C,K) \n Running Lariat (Fw...P [throw]) \n Rising Fury (C,P) \n Twister Kick ([Lt/Rt]Fw+K) \n Stepping Disarm (Fw+Kick [Pistol Disarm])
+GlobalNeeded -> Yes
Index: /AE/packages_bak/UpgradedONCCs/Mod_Info.cfg
===================================================================
--- /AE/packages_bak/UpgradedONCCs/Mod_Info.cfg	(revision 405)
+++ /AE/packages_bak/UpgradedONCCs/Mod_Info.cfg	(revision 405)
@@ -0,0 +1,9 @@
+AEInstallVersion ->  1.0 //
+NameOfMod -> Upgraded ONCCs
+ModString -> UpgradedONCCs 1
+Category -> AE: Difficulty
+Creator -> Loser
+HasOnis -> Yes
+HasDeltas -> No
+Readme -> Gives enemies more health, better bullet dodging, and better blocking skills.
+
Index: /AE/packages_bak/UpgradedONCCs/oni/level0_Final/level0_Characters/XML/doit.bat
===================================================================
--- /AE/packages_bak/UpgradedONCCs/oni/level0_Final/level0_Characters/XML/doit.bat	(revision 405)
+++ /AE/packages_bak/UpgradedONCCs/oni/level0_Final/level0_Characters/XML/doit.bat	(revision 405)
@@ -0,0 +1,1 @@
+for %%A IN (*.xml) do ONCCGlass.exe %%A
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport/airport1_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport/airport1_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport/airport1_level_logic.bsl	(revision 405)
@@ -0,0 +1,662 @@
+### AIRPORT 1 LEVEL LOGIC ###
+
+### START, SAVE & OBJECTIVES ###
+
+func void func_start(string ai_name)
+{
+	dprint start_active
+
+	trigvolume_enable hidden1 1
+	trigvolume_enable hidden1 1
+
+	if (save_point eq 0)
+		{
+		my_save_point=0;
+		particle auto1 start
+		particle auto1fire start
+		particle auto1spark start
+		particle door1spark start
+		particle tctf1 start
+		}
+
+	if (save_point eq 1)
+		{
+		my_save_point=1;
+		env_show 10 1
+		env_show 11 1
+		env_show 12 1
+		dprint restore1_active
+		particle auto1 start
+		particle auto1fire start
+		particle auto1spark start
+		particle door1spark start
+		particle tctf1 start
+		sound_music_start mus_asian 0.5
+		music_script_start();
+		ai2_spawn IntroStriker01
+		ai2_spawn IntroStriker02
+		restore_game
+		sleep 30
+		set_target_1
+		set_objective_1
+		}
+
+	if (save_point eq 2)
+		{
+		my_save_point=2;
+		dprint restore_2
+		particle fx3 do start
+		particle exhaust create
+		Tarmac1
+		trigvolume_enable tarmac 0
+		trigvolume_enable trigger_volume_03 0
+		trigvolume_enable bomberboom 0
+		trigvolume_enable madbomberbait 0
+		door_lock 3
+		obj_kill 991 992
+		restore_game
+		sleep 30
+		set_target_3
+		set_objective_2
+		}	
+	
+	if (save_point eq 3)
+		{
+		my_save_point=3;	
+		dprint restore3_active
+		door_lock 3
+		door_unlock 6
+		particle lock1_locklight01 do stop
+		particle lock2_locklight01 do start
+		console_deactivate 5
+		particle door7_locklight01 do start
+		particle door2_locklight01 do start
+		console_deactivate 6
+		trigvolume_enable trigger_volume_02 0
+		trigvolume_enable trigger_volume_03 0
+		trigvolume_enable trigger_volume_04 0
+		trigvolume_enable trigger_volume_08 0
+		trigvolume_enable trigger_volume_10 0
+		trigvolume_enable trigger_volume_11 0
+		trigvolume_enable save_game 0
+		trigvolume_enable secondcoming 0
+		TerminalTwo1
+		particle auto1 stop
+		particle auto1fire stop
+		particle auto1spark stop
+		particle door1spark stop
+		particle tctf1 stop
+		ai2_spawn TerminalTwo_Striker_1
+		ai2_spawn TerminalTwo_Striker_2
+		particle fx4 do start	
+		particle fx5 do start
+		particle fx6 do start
+		particle fx1 do stop
+		particle fx2 do stop
+		particle fx3 do stop
+		music_script_start();
+		restore_game
+		sleep 30
+		set_objective_3
+		set_target_5
+		}
+}
+
+func void you_lose(string ai_name)
+{
+	all_music_counters
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	lose
+}
+
+func void you_win(int char_index)
+{
+	all_music_counters
+	win
+}
+
+func void save_point_1(string player_name)
+{
+	dprint save_point_1_active
+	save_game 1 autosave
+}
+
+func void save_point_2(string player_name)
+{
+	dprint save_point_2_active
+	save_game 2 autosave
+}
+
+func void save_point_3(string player_name)
+{
+	dprint save_point_3_active
+	save_game 3 autosave
+	ai2_spawn TerminalTwo_Striker_1
+	ai2_spawn TerminalTwo_Striker_2
+	particle fx5 do start
+	particle fx6 do start
+	particle fx3 do stop
+	door_unlock 6
+	particle door7_locklight01 do start 
+	particle lock2_locklight01 do start 
+	particle door2_locklight01 do start
+}
+
+
+func void set_objective_1(string chr_index)
+{
+	dprint objective_1
+	objective_set(1)
+	sound_dialog_play c00_01_22shinatama
+}
+func void set_objective_2(string chr_index)
+{
+	dprint objective_2
+	objective_set(2)
+	sound_dialog_play c00_01_19shinatama
+}
+
+func void set_objective_3(string chr_index)
+{
+	dprint objective_3
+	objective_set(3)
+	console_deactivate 2
+	sound_dialog_play c00_01_18shinatama
+}
+
+func void set_objective_4(string chr_index)
+{
+	dprint objective_4
+	objective_set(4)
+	sound_dialog_play c00_01_20shinatama
+}
+
+func void set_target_1(string chr_index)
+{
+	dprint set_target1
+	target_set(1095, 30.0)
+	sound_dialog_play c00_01_28shinatama
+}
+
+func void set_target_2(string chr_index)
+{
+	dprint set_target2
+	target_set(1132, 30.0)
+	sound_dialog_play c00_01_27shinatama
+}
+
+func void set_target_3(string chr_index)
+{
+	dprint set_target3
+	target_set(1109, 30.0)
+	sound_dialog_play c00_01_26shinatama
+}
+
+func void set_target_4(string chr_index)
+{
+	dprint set_target4
+	target_set(1112, 30.0)
+	sound_dialog_play c00_01_25shinatama
+}
+
+func void set_target_5(string chr_index)
+{
+	dprint set_target5
+	target_set(1115, 30.0)
+	sound_dialog_play c00_01_24shinatama
+}
+
+func void set_target_6(string chr_index)
+{
+	dprint set_target6
+	target_set(1139, 30.0)
+	sound_dialog_play c00_01_28shinatama
+}
+
+func void set_target_blank(string chr_index)
+{
+	dprint set_targetblank
+	target_set(0, 0.0)
+}
+
+### MUSIC ###
+
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+	if (0 ne music_counter) 
+		{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+		}
+}
+
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void striker_lullaby_1(string ai_name)
+{
+	dprint striker_lullaby1
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		sleep f120
+		}
+}
+
+func void striker_lullaby_2(string ai_name)
+{
+	dprint striker_lullaby2
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		sleep f120
+		}
+}
+
+func void all_music_counters(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_fitec_hd
+	sound_music_stop mus_fitec
+	sound_music_stop mus_fiteb
+	sound_music_stop mus_asian
+	sound_music_stop atm_gr06
+}
+
+### TEXT CONSOLES ###
+
+func void level_4a(void)
+{
+	dprint set_text_4a
+	text_console level_4a
+	console_reset 7
+}
+
+func void level_4b(void)
+{
+	dprint set_text_4b
+	text_console level_4b
+	console_reset 7
+}
+
+func void level_4c(void)
+{
+	dprint set_text_4c
+	text_console level_4c
+	console_reset 8
+}
+
+### GAMEPLAY PROGRESSION ###
+
+func void FixDoors(string char_index)
+{
+	dprint Fix_Doors
+	particle door2_locklight01 do stop
+	door_lock 10
+}
+
+func void hidden_civilian1(string ai_name)
+{
+	dprint hidden_civilian
+	ai2_spawn hidden_civ_1
+}
+
+func void panic1a(string char_index)
+{
+	dprint panic_1a
+
+	ai2_spawn civ_victim_6
+	playback civ_victim_6 civ_victim6_flee interp 30
+	ai2_spawn civ_victim_4
+	playback civ_victim_4 civ_victim4_flee interp 30
+	sleep 30
+	ai2_spawn Intro_Striker_4
+	playback Intro_Striker_4 striker4_advance interp 30
+	ai2_spawn Intro_Comguy_1
+}
+
+func void panic1b(string char_index)
+{
+	dprint panic_1b
+	ai2_passive Intro_Striker_4 1
+	ai2_spawn civ_victim_2
+	ai2_spawn civ_victim_3
+	playback civ_victim_3 civ_victim3_flee interp 30
+	sleep 120
+	ai2_spawn Intro_Striker_3
+	ai2_attack Intro_Striker_3 civ_victim_2
+	ai2_spawn Friend_Thug_1
+	ai2_spawn Neutral_Thug_1
+	ai2_spawn Neutral_Thug_3
+	particle fx1 do start
+	particle fx2 do start
+	chr_delete civ_victim_4
+	chr_delete civ_victim_6
+}
+
+func void hide_1(string char_index)
+{
+	dprint hide1
+	ai2_spawn civ_victim_5
+	playback_block civ_victim_5 civ_victim5_flee interp 30
+	ai2_dopath civ_victim_5 civ_victim_5
+}
+
+func void horror_1(string char_index)
+{
+	dprint horror1
+	ai2_passive Intro_Striker_4 0
+	ai2_spawn civ_victim_10
+	ai2_spawn civ_victim_11
+	ai2_spawn civ_victim_20
+	ai2_spawn civ_victim_21
+	particle fx1 do start
+	particle fx2 do start
+}
+	
+func void ambush_striker_1(string char_index)
+{
+	dprint ambush_1
+	ai2_spawn Terminal_Striker_1
+	ai2_spawn Terminal_Striker_2
+	ai2_spawn mad_bomber_1
+	obj_create 991 992
+}
+
+func void civ_victim_20s_flee(string char_index)
+{
+	dprint civ_victim_20s
+	ai2_dopath civ_victim_20 civ20s_flee1
+	ai2_dopath civ_victim_21 civ20s_flee2
+}
+
+func void LoadingBay1(string char_index)
+{
+	dprint spawn_guards
+	ai2_spawn LoadingBay_Thug_1
+	ai2_spawn LoadingBay_Thug_2
+	ai2_spawn LoadingBay_Striker_2
+	ai2_spawn LoadingBay_Comguy_1
+	particle fx3 do start
+}
+
+func void bomber_boom(string char_index)
+{
+	dprint bomberboom
+	particle bomb1 do explode
+	obj_kill 991 992
+	sleep 300
+	particle bomb1 stop
+}
+	
+func void mad_bomber_bait(string char_index)
+{
+	dprint bomber_bait
+	ai2_dopath mad_bomber_1 bomber_flee 1
+}
+
+func void patrolscript0200(string char_index)
+{
+	dprint bomber1_death
+	chr_delete mad_bomber_1
+}
+
+func void Tarmac1(string char_index)
+{
+	dprint spawn_guards
+	ai2_spawn Tarmac_Striker_1
+	ai2_spawn Tarmac_Striker_2
+	ai2_spawn Tarmac_Striker_3
+	ai2_spawn Tarmac_Striker_4
+	ai2_spawn Tarmac_Friend_1
+	ai2_spawn LoadingBay_Striker_1
+	sound_music_start atm_gr06 0.75
+	particle tarmacfire do start
+	particle exhaust create
+}
+
+func void back9a(string ai_name)
+{
+	dprint hidden_striker1
+	ai2_spawn hidden_striker1
+}
+
+func void back9b(string ai_name)
+{
+	dprint hidden_striker1
+	ai2_spawn hidden_striker2
+}
+
+func void bay1_particles(void)
+{
+	dprint bay1_fires_on
+	particle fx3 do start
+	particle fx4 do stop
+}
+
+func void fire_damage(string ai_name)
+{	
+	dprint fire_hurt_konoko
+	chr_poison (ai_name, 5, 30, 30);
+}
+
+func void bay2_particles(void)
+{
+	dprint bay2_fires_on
+	particle fx3 do stop
+	particle fx4 do start
+}
+
+# COME TO ME
+func void come_to_me(string ai_name)
+{
+	dprint go_to_konoko
+	ai2_dopath Tarmac_Striker_2 come_to_me 1
+	ai2_dopath Tarmac_Striker_3 come_to_me 1
+	ai2_dopath mad_bomber_2 come_to_me 1
+}
+
+# COME TO ME REDUX
+func void second_coming(string ai_name)
+{
+	dprint go_to_konoko_again
+	ai2_dopath Tarmac_Striker_2 come_to_me 1
+	ai2_dopath Tarmac_Striker_3 come_to_me 1
+	ai2_dopath mad_bomber_2 come_to_me 1
+}
+
+# PROGRESS CHECK
+
+var int progress_counter=2;
+
+func void progress_check_1(string ai_name)
+{
+	dprint progress_check1
+	progress_counter = progress_counter - 1
+	if (progress_counter eq 0)
+		{
+		pass_go_collect_whupass();
+		}
+}
+
+func void progress_check_2(string ai_name)
+{
+	dprint progress_check2
+	progress_counter = progress_counter - 1
+	if (progress_counter eq 0)
+		{
+		pass_go_collect_whupass();
+		}
+}
+
+func void progress_check_3(string ai_name)
+{
+	dprint progress_check3
+	progress_counter = progress_counter - 1
+	if (progress_counter eq 0)
+		{
+		pass_go_collect_whupass();
+		}
+}
+
+func void progress_check_4(string ai_name)
+{
+	dprint progress_check4
+	progress_counter = progress_counter - 1
+	if (progress_counter eq 0)
+		{
+		pass_go_collect_whupass();
+		}
+}
+
+func void exhaust_on(string ai_name)
+{
+	dprint start_exhaust
+	particle exhaust create
+}
+
+func void exhaust_off(string ai_name)
+{
+	dprint stop_exhaust
+	particle exhaust kill
+}
+
+func void pass_go_collect_whupass(string ai_name)
+{
+	dprint let_the_whupping_continue
+	trigvolume_enable save_game_2 1
+	trigvolume_enable secondcoming 0
+}
+
+func void patrolscript000(string ai_name)
+{
+	dprint do_my_bidding
+	particle lock2_locklight01 do start
+	door_unlock 6
+}
+	
+func void BayTwo1(string char_index)
+{
+	dprint spawn_guards
+	ai2_spawn BayTwo_Striker_1
+	ai2_spawn hidden_friend2
+	ai2_spawn mad_bomber_2
+	sound_music_stop atm_gr06
+}
+
+func void Repair1(string char_index)
+{
+	dprint spawn_guards
+	ai2_spawn Repair_Striker_1
+	ai2_spawn Repair_Comguy_1
+	ai2_spawn alamo_thug_1	
+}
+
+func void Repair2(string char_index)
+{
+	dprint spawn_guards
+	ai2_spawn Repair_Striker_2
+	ai2_spawn Repair_Comguy_2	
+}
+
+func void console_2_activate(string char_index)
+{
+	dprint console2_activate
+	console_activate 2
+}
+
+func void final_ambush(string char_index)
+{
+	dprint finalambush
+	input 0
+	begin_cutscene
+	sleep 60
+	cm_interpolate ambush1 0
+	sleep 150
+	console_activate 4
+	sleep 150
+	sound_music_start mus_fitec_hd 0.91
+	music_script_start
+	cm_interpolate ambush2 0
+	cm_interpolate_block ambush3 300
+	sleep 350	
+	cm_interpolate ambush4 300	
+	door_unlock 14
+	particle door3_locklight01 do start
+	ai2_spawn finalam_striker_1
+	ai2_spawn finalam_striker_2
+	ai2_setmovementmode finalam_striker_1 walk
+	ai2_setmovementmode finalam_striker_2 walk
+	playback finalam_striker_1 finalam_striker1 interp 30
+	playback finalam_striker_2 finalam_striker2 interp 30
+	sleep 300
+	particle door3_locklight01 do stop
+	sleep 300
+	door_lock 14	
+	ai2_dopath finalam_striker1 finalam_1 1
+	ai2_dopath finalam_striker2 finalam_2 1
+	trigvolume_enable i_uh_heheheh1 1
+	cm_reset
+	end_cutscene
+	input 1
+}
+
+func void i_uh_heheheh(string char_index)
+{
+	dprint iuh_heheheh
+	ai2_dopath finalam_striker_1 strategic_retreat1
+	ai2_dopath finalam_striker_2 strategic_retreat2
+} 
+	
+### DOOR LOCK LIGHTS ###
+
+func void change_terminaldoor_light(void)
+{
+	dprint door1
+	input 0
+	cm_interpolate door1 0
+	sleep 60
+	particle door1_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void change_door2_light(void)
+{
+	dprint door2
+	input 0 
+	cm_interpolate door2 0
+	sleep 60
+	particle door2_locklight01 do start
+	sleep 150
+	set_objective_3
+	set_target_6
+	cm_reset
+	input 1
+}
+
+func void change_enddoor_light(void)
+{
+	dprint end_door
+	input 0
+	cm_interpolate ambush4 0	
+	sleep 60
+	particle door3_locklight01 do start
+	sleep 150
+	door_unlock 14
+	cm_reset
+	input 1
+}
+
+### Level scripted by Joseph ###
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_cutscene.bsl	(revision 405)
@@ -0,0 +1,240 @@
+#
+# airport_cutscene.bsl
+#
+
+func
+airport_cs_intro
+{
+	#creates the cars, van
+	obj_create 633 633
+	obj_create 6331 6331
+	obj_create 647 647
+	obj_create 6471 6471 
+	obj_create 960 960
+	obj_create 9601 9602
+	obj_create 2 7
+	fade_out 0 0 0 0
+	cm_interpolate Camout01 0
+	sleep f7
+	
+	begin_cutscene
+
+	cm_jello 0
+	#fade_out 0 0 0 0
+	letterbox 1
+	fade_in 120
+	fork camcontrol
+
+	sound_music_start mus_asian 0.5
+	music_script_start();
+
+	sleep 120
+	fork intro_cars
+	#van start
+	env_anim 2 7
+	
+	fork shinatama_comm
+
+	sleep 855
+	chr_nocollision 0 1
+	#konoko on bike start
+	chr_envanim 0 IntroKonokoBox01
+	chr_animate 0 KONOKOcycle_ride 500
+	obj_create 10 12
+	env_anim 10 12
+	sleep 6
+	chr_create 100 start
+	ai2_spawn IntroStriker01
+	ai2_spawn IntroStriker02	
+
+	chr_forceholster IntroStriker02 1
+	
+	sleep 1
+	playback 100 IntroMuro01
+	playback IntroStriker01 IntroComguy01
+	playback IntroStriker02 IntroStriker01
+	sleep 498
+	#kill van object
+	obj_kill 2 7
+	#konoko off bike
+	chr_envanim 0 IntroKonokoBox02 norotation
+	chr_animate 0 KONOKOlev4_intro
+	
+	sound_music_volume mus_asian .25 0.5
+
+	cinematic_start(KONtalkangryfront, 180, 180, 15, 3, 10, false)
+	sleep 60
+	sound_dialog_play c04_14_02konoko
+	sleep 120
+	cinematic_stop (KONtalkangryfront, 16, 20)
+	playback 100 IntroMuro02
+	playback IntroStriker01 IntroComguy02
+	playback IntroStriker02 IntroStriker02
+	sleep 60
+	cinematic_start(MUROtalking, 180, 180, 15, 1, 15, false)
+	sleep f50
+	sound_dialog_play c04_14_01muro
+	sound_dialog_play_block pause
+	cinematic_stop (MUROtalking, 15, 30)
+
+	sound_music_volume mus_asian 0.8 2.0
+
+	playback 0 IntroKonoko01
+	chr_nocollision 0 0
+	obj_kill 10 12
+	env_show 10 1
+	env_show 11 1
+	env_show 12 1
+	
+	chr_forceholster IntroStriker02 0
+	
+	sleep 60
+	set_objective_1
+	set_target_1	
+
+	save_point_1
+
+	sleep 260
+	chr_delete 100
+}
+
+func
+camcontrol
+{
+	cm_anim both Camout01
+	sleep f80
+	sound_ambient_start c03_44_03truckby
+	cm_anim_block both Camout02
+	sound_ambient_start c03_49_16_truck
+	cm_anim_block both Camout03
+	sound_ambient_start c03_49_16_motorcycle
+	cm_anim_block both Camout04
+	cm_wait
+	sleep 2
+	cm_interpolate Camout05 0
+	sleep 1
+	cm_interpolate Camout06 120
+	sleep 300
+	cm_reset
+	cm_jello 1
+	letterbox 0
+	end_cutscene
+}
+
+func
+intro_cars
+{
+	sleep 633
+	env_anim 633 633
+	env_anim 6331 6331
+	sleep 14
+	env_anim 647 647
+	env_anim 6471 6471
+	sleep 203
+	sleep 110
+	env_anim 960 960
+	env_anim 9601 9602
+	sleep 560
+	obj_kill 633 633
+	obj_kill 6331 6331
+	obj_kill 647 647
+	obj_kill 6471 6471 
+	obj_kill 960 960
+	obj_kill 9601 9602
+}
+
+func shinatama_comm
+	{
+	sleep 90
+	sound_music_volume mus_asian 0.35 1.0
+	sound_dialog_play c00_01_104shinatama
+	cinematic_start (SHINtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	cinematic_stop (SHINtalking, 15, 20)
+	sound_music_volume mus_asian 0.5 1.0
+	}
+
+func
+Booth(string wazzzup)
+{
+	begin_cutscene weapon
+	#make Konoko run to a flag
+	ai2_takecontrol 1
+	ai2_movetoflag 0 1091
+	cm_interpolate BoothCamMuroWalk 240
+	ai2_spawn BoothMuro01
+	playback BoothMuro01 BoothMuroWalk
+	#Muro just stands there and talks for a while
+	sleep f180
+	cinematic_start(MUROtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play c04_17_01muro
+	sound_dialog_play_block pause
+	#Konoko looks to see Strikers
+	ai2_takecontrol 0
+	cm_interpolate BoothCamKonokoLook 0
+	playback 0 BoothKonokoLook
+	ai2_spawn BoothStriker01
+	ai2_spawn BoothStriker02
+	sleep 30
+	playback BoothStriker01 BoothStriker01
+	playback BoothStriker02 BoothStriker02
+	sleep 50
+	#Strikers rush in
+	cm_interpolate BoothCamStrike01 0
+	cm_interpolate_block BoothCamStrike02 180
+	sleep f60
+	sound_dialog_play c04_17_02muro
+	sleep 140
+	#Muro walks out the door
+	playback BoothMuro01 BoothMuroLeave
+	sleep 30
+	cm_interpolate BoothCamLeave01 0
+	cm_interpolate_block BoothCamLeave02 300
+	sleep f30
+	sleep f50
+	sound_dialog_play c04_17_03muro
+	sound_dialog_play_block pause
+	sleep f30
+
+	sound_music_start mus_asian 0.8
+	music_script_start
+	trigvolume_enable stop_booth_music_tv 1
+
+	cinematic_stop (MUROtalking, 15, 20)
+	sleep 120
+	cm_reset
+	fork FixDoors
+	
+	particle door2_locklight01 do stop
+	particle door7_locklight01 do stop
+	door_lock 7
+	set_target_blank
+
+	chr_delete TerminalTwo_Striker_1
+	chr_delete TerminalTwo_Striker_2
+	chr_delete Tarmac_Striker_2
+	chr_delete Tarmac_Striker_4
+
+	chr_delete BoothMuro01
+	end_cutscene
+}
+
+func void stop_booth_music(string who)
+{
+	sound_music_stop mus_asian
+}
+
+func
+outro(string wazzup)
+{
+	begin_cutscene
+	#cm_interpolate OutroCam01 0
+	#playback 0 OutroKonoko
+	#sleep 400
+	fade_out 0 0 0 60
+	sleep f120
+	win
+}
+
+
+
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport/airport_main.bsl	(revision 405)
@@ -0,0 +1,23 @@
+#
+# airport_main.bsl
+#
+
+var int my_save_point;
+
+func void main(void)
+{
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.995
+	gs_farclipplane_set 4000
+	env_show 10 0
+	env_show 11 0
+	env_show 12 0
+#	fork airport_cs_intro();
+	func_start
+	if (my_save_point eq 0)
+	{
+	airport_cs_intro
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_cutscene.bsl	(revision 405)
@@ -0,0 +1,129 @@
+#
+# airportiii_cs_intro.bsl
+#
+
+func
+airportiii_cs_intro
+{
+	begin_cutscene
+	#hides VTOL object
+	fade_out 0 0 0 0
+	playback 0 IntroKonokoSet
+	sleep f60
+	fade_in 60
+	sleep f60
+	end_cutscene
+}
+
+
+func void
+camcontrol(
+	void)
+{
+	#unhides VTOL object
+	obj_create 61 67
+	obj_create 72 79
+	#vtol takes off
+	env_anim 61 67
+	env_anim 72 79
+	#hides Vtol gunk
+	env_show 161 0
+	env_show 162 0
+	env_show 163 0
+	env_show 164 0
+	env_show 165 0
+	env_show 166 0
+	env_show 167 0
+	env_show 172 0
+	env_show 173 0
+	env_show 174 0
+	env_show 175 0
+	env_show 176 0
+	env_show 177 0
+	env_show 178 0
+	env_show 179 0
+	sleep 500
+	#Muro and Cronie in plane talking
+	#chr_create 101 start
+	#chr_create 102 start
+	#chr_envanim 101 OutroComBip
+	#chr_envanim 102 OutroMuroBip
+}
+
+func void rappel_stop_old_music(void)
+{
+	sound_music_stop mus_space01
+}
+
+func void
+rappel(
+	void)
+{
+	rappel_stop_old_music
+
+	begin_cutscene
+	invincible=1
+	obj_create 51 52
+	env_anim 51 52
+	chr_animate 0 KONOKOlev6_rappel
+	chr_envanim 0 RapKonBipBox01 norotation
+	cm_anim both RapCam01
+	sleep f250
+	cutscene_sync mark
+	sound_ambient_start c04_32_23_misc
+	sleep f260
+	dprint CAMERA_RAP_CAM_02
+	cm_interpolate_block RapCam02 0
+	dprint CAMERA_RAP_CAM_03
+	cm_interpolate_block RapCam03 240
+	sleep f45
+	chr_animate 0 KONOKOlev6_tracer
+	sleep f180
+	obj_kill 51 51
+	#camera cut to show Konoko jumping off of plane
+	playback 0 RappelKonRun
+	cm_interpolate RappelCamRun01 0
+	cm_interpolate_block RappelCamRun02 180
+	sleep f180
+
+	#VTOL takes off
+	dprint VTOL_TAKES_OFF
+	sound_ambient_start c04_28_22_helic
+	fork camcontrol
+	cm_anim both OutCam01
+	cm_wait
+	chr_create 101 start
+	chr_create 102 start
+	chr_envanim 101 OutroComBip
+	chr_envanim 102 OutroMuroBip
+
+	cm_anim both OutCam02
+	dprint INSIDE_CAM
+	particle muroplane_prop do stop
+	sound_ambient_start propidle_2 0.4
+	playback 0 OutroKonokoSet
+	sleep f60
+	ai2_allpassive 1
+	sound_dialog_play c06_21_01SynHench2
+	cinematic_start (COMGUYtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block c06_21_02muro
+	cinematic_start (MUROtalking, 180, 180, 20, 9, 20, true)	
+	sleep f200
+	cm_anim both OutCam03
+	dprint CAMERA_OUT_CAM_03
+	sound_ambient_start c04_28_22_helie 0.75
+	sound_ambient_volume propidle_2 0.0 0.0
+	sound_ambient_stop propidle_2
+#	playback 0 OutroKonSet
+	chr_delete 101
+	chr_delete 102
+	cm_wait
+	cinematic_stop (COMGUYtalking, 19, 20)
+	cinematic_stop (MUROtalking, 20, 20)
+	fade_out 0 0 0 60
+	sleep f60
+	end_cutscene
+	sleep f60
+	win
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_level_logic.bsl	(revision 405)
@@ -0,0 +1,1196 @@
+### AIRPORT III LEVEL LOGIC ###
+
+### START, SAVE & OBJECTIVES ###
+
+func void func_start(string ai_name)
+{
+	
+	particle gas2 do stop
+	particle gaslight1 do stop
+	particle hanger5 do stop
+	trig_hide 1
+	trig_hide 2
+	trig_hide 3
+	trig_hide 4
+
+	if (my_save_point eq 0)
+		{
+		fork target_thug
+		}
+	
+	if (my_save_point eq 1)
+		{
+		dprint restore1_active
+		door_lock 11
+		tarmac
+		bomber_off
+		trigvolume_enable tarmac 0
+		restore_game
+		sound_music_start atm_gr09 0.75
+		objective_set(2)
+		target_set(7037,30.00)
+		}
+
+	if (my_save_point eq 2)
+		{
+		dprint restore1_active
+		trigvolume_enable save2 0
+		trigvolume_enable lowroad3 0
+		door_lock 21
+		door_lock 22
+		door_lock 35
+		particle lock5a_locklight01 do stop
+		particle lock5b_locklight01 do stop
+		particle lock35_locklight01 do stop
+		particle rotorwash do stop
+		particle room1 kill
+		Back2	
+		restore_game
+		music_save_point2_start
+		sleep 30
+		objective_set(3)
+		target_set(7085,30.00)
+		}
+
+	if (my_save_point eq 3)
+		{
+		dprint restore3_active
+		door_lock 21
+		door_lock 22
+		door_lock 24
+		particle lock5a_locklight01 do stop
+		particle lock5b_locklight01 do stop
+		trigvolume_enable save2 0
+		trigvolume_enable save3 0
+		Back2	
+		door_open 48
+		door_jam 48
+		trig_show 1
+		trig_show 2
+		trig_show 3
+		trig_show 4
+		restore_game
+		objective_set(3)
+		target_set(7085,30.00)
+		}
+	
+	if (my_save_point eq 4)
+		{
+		dprint restore4_active
+		trigvolume_enable lowroad1 0
+		trigvolume_enable lowroad2 0
+		trigvolume_enable lowroad3 0
+		trigvolume_enable lowroad4 0
+		trigvolume_enable hidden1a 0
+		trigvolume_enable hidden1b 0
+		trigvolume_enable save2 0
+		trigvolume_enable backcompound 0
+		trigvolume_enable remote 0
+		trigvolume_enable trigger_volume_08 1
+		door_lock 21
+		door_lock 22
+		door_lock 35
+		door_unlock 27
+		particle lock6_locklight01 do start
+		particle lock5a_locklight01 do stop
+		particle lock5b_locklight01 do stop
+		particle lock35_locklight01 do stop
+		console_deactivate 10
+		restore_game
+		sleep 30
+		set_objective_4
+		}
+
+	if (my_save_point eq 5)
+		{
+		dprint restore5_active
+		particle muroplane_prop do start
+		trigvolume_enable hangar2_setup 0
+		door_lock 36
+		particle lock7_locklight01 do stop
+		set_objective_5
+		ai2_spawn ambush_striker_2
+		ai2_spawn ambush_commguy_2
+		Hangar2a
+		restore_game
+		sound_music_start mus_space01 0.75
+		music_script_start
+		ai2_doalarm ambush_commguy_2 4
+		sleep 30
+		dprint set_objective5
+		objective_set(5)
+		target_set(1054,30.00)
+		}
+}
+
+func void you_lose(string ai_name)
+{
+	all_music_counters	
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	lose
+}
+
+func void you_win(int char_index)
+{
+	all_music_counters
+	win
+}
+
+func void save_point_1(string ai_name)
+{
+	dprint savegame_1	
+	sound_music_stop mus_om03
+	if (my_save_point ne 1)
+		{
+		save_game 1 autosave
+		}
+	sound_music_stop
+	sound_music_start atm_gr09 0.75
+}
+
+func void save_point_2(string ai_name)
+{
+	dprint savegame_2
+	if (my_save_point ne 2)
+		{
+		save_game 2 autosave
+		}
+	music_save_point2_start
+	target_set(7085,30.00)
+}
+
+func void save_point_3(string ai_name)
+{
+	dprint savegame_3	
+	if (my_save_point ne 3)
+		{
+		save_game 3 autosave
+		}
+	sound_music_start atm_cl09 0.75
+}
+
+func void save_point_4(string ai_name)
+{
+	dprint savegame_4	
+	if (my_save_point ne 4)
+		{
+		save_game 4 autosave
+		}
+	sound_music_stop atm_cl09 0.75
+}
+
+func void save_point_5(string ai_name)
+{
+	particle muroplane_prop do start
+	dprint savegame_5	
+	if (my_save_point ne 5)
+		{
+		save_game 5 autosave
+		target_set(1054,30.00)
+		}
+}
+
+func void set_objective_1(string ai_name)
+{
+	dprint set_objective1
+	objective_set(1)
+	sound_music_start mus_om03
+	music_script_start
+	target_set(7124,30.00)
+	#sleep 300
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective2
+	objective_set(2)
+	target_set(7037,30.00)
+	sound_dialog_play c00_01_18shinatama
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective3
+	objective_set(3)
+	target_set(0,0)
+	sound_dialog_play c00_01_20shinatama
+}
+
+func void set_objective_4(string ai_name)
+{
+	dprint set_objective4
+	objective_set(4)
+	target_set(7060,30.00)
+	sound_dialog_play c00_01_19shinatama
+}
+
+func void target_change_1(string ai_name)
+{
+	target_set(7037,30.00)
+}
+
+func void target_change_2(string ai_name)
+{
+	target_set(7037,30.00)
+}
+
+func void low_target_set(string ai_name)
+{
+	target_set(7085,30.00)
+}
+
+func void low_target_clear(string ai_name)
+{
+	target_set(0,0)
+}
+
+func void high_target_set(string ai_name)
+{
+	target_set(7126,30.00)
+}
+
+func void high_target_clear(string ai_name)
+{
+	target_set(0,0)
+}
+
+### MUSIC ###
+
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+	if (0 ne music_counter) 
+		{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+		}
+}
+
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void striker_lullaby_1(string ai_name)
+{
+	dprint striker_lullaby1
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+
+}
+func void striker_lullaby_2(string ai_name)
+{
+	dprint striker_lullaby2
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+}
+
+func void all_music_counters(void)
+{
+	dprint MARTY_HAS_LEFT_THE_BUILDING
+	sound_music_stop mus_asian
+	sound_music_stop mus_space01
+	sound_music_stop mus_om03
+	sound_music_stop mus_ot
+	sound_music_stop atm_cl09
+	sound_music_stop atm_gr09
+}
+
+func void music_save_point2_start(void)
+{
+	sound_music_start atm_cl09 1.0
+}
+
+### TEXT CONSOLES ###
+
+func void level6a(void)
+{
+	dprint text6a
+	text_console level_6a
+	console_reset 16
+}
+
+func void level6b(void)
+{
+	dprint text6b
+	text_console level_6b
+	console_reset 9
+}
+
+func void level6c(void)
+{
+	dprint text6c
+	text_console level_6c
+	console_reset 13
+}
+
+func void level6d(void)
+{
+	dprint text6d
+	text_console level_6d
+	console_reset 17
+}
+
+func void level6e(void)
+{
+	dprint text6e
+	text_console level_6e
+	console_reset 5
+}
+
+func void level6f(void)
+{
+	dprint text6f
+	text_console level_6f
+	console_reset 2
+}
+
+### GAMEPLAY PROGRESSION ###
+
+func void Start1(string char_index)
+{
+	dprint Start1
+	ai2_spawn Start_Striker_1
+	ai2_spawn Start_Striker_2
+	ai2_spawn Start_Comguy_1
+	particle room1 do start
+}
+
+# TARGET THUG
+func void target_thug(void)
+{
+	sleep f120
+	dprint target_thug
+	sound_dialog_play c00_01_28shinatama
+	ai2_spawn Start_Friend_1
+	ai2_spawn Start_Striker_5
+	ai2_makeaware Start_Striker_5 Start_Friend_1
+	sleep 30
+	set_objective_1
+}
+
+# TARGET THUG ROLL
+func void patrolscript0200(string char_index)
+{
+	playback_block Start_Friend_1 roll fromhere
+	ai2_dopath Start_Friend_1 Start_Friend_1b 1
+	ai2_setjobstate Start_Friend_1
+}
+
+# RETURN OF MAD BOMBER
+func void mad_bomber1(string ai_name)
+{
+	dprint boom
+	ai2_spawn mad_bomber1
+	sleep 150
+	particle bomb1 do explode
+	particle squib1a do explode
+	particle squib1b do explode
+	sleep 60
+	particle bomb2 do explode
+	particle squib2 do explode
+	sleep 30
+	particle bomb_damage1 do start
+}
+
+# SAVE THE THUG
+func void victim_thug1(string ai_name)
+{
+	dprint save_the_thug
+	ai2_spawn victim_thug1
+	ai2_spawn cruel_striker1
+}
+
+# HIDDEN FRIENDS
+func void hidden_thugs(string ai_name)
+{
+	ai2_spawn Start_Friend_2
+	ai2_spawn Start_Friend_3
+}
+
+# TARMAC
+func void tarmac(string ai_name)
+{
+	dprint tarmac_setup
+	ai2_spawn tarmac_striker_1
+	ai2_spawn tarmac_striker_2
+	ai2_spawn tarmac_striker_3
+	ai2_spawn tarmac_tanker_1
+	ai2_spawn tarmac_tanker_2
+	ai2_spawn tarmac_commguy_1
+
+	particle compound create
+}
+
+# ROOM 1 CLEAN-UP
+func void room1_cleanup(string ai_name)
+{
+	dprint room_1_clean
+	door_lock 11
+	chr_delete Start_Friend_2
+	chr_delete Start_Friend_3
+}
+
+# STRIKER TEE-OFF
+func void striker_tee_off(string ai_name)
+{
+	dprint I_pity_the_fool
+	ai2_dopath tarmac_striker_4 tarmac_striker_3b 1
+}
+
+# TANKER BACKUP
+func void tanker_backup(string ai_name)
+{
+	dprint tanker_backup
+	ai2_dopath tarmac_tanker_2 tarmac_tanker_2b 1
+}
+
+# UNLOCK COMMGUY
+func void unlock_commguy(string ai_name)
+{
+	dprint you_may_feel_a_zapping_sensation
+	ai2_dopath tarmac_commguy_1 tarmac_commguy_2 1
+	ai2_dopath tarmac_tanker_2 tarmac_tanker_2c 1
+	sound_music_stop atm_gr09
+}
+
+### WIL E. MURO ###
+
+# FIRST MURO
+func void muro_bait(string ai_name)
+{
+	dprint there_goes_muro
+	door_close 12
+	door_lock 12
+	begin_cutscene
+	ai2_spawn muro1
+	ai2_spawn escort_striker1
+	ai2_spawn escort_striker2
+	playback muro1 muro1 interp 30
+	playback escort_striker1 escort_striker1 interp 30
+	playback escort_striker2 escort_striker2 interp 30
+	sleep 30
+	dprint muro2_bait
+	chr_peace 0
+	input 0
+	particle compound kill
+	sound_music_start mus_asian 0.75
+	music_script_start	
+	cm_interpolate_block muro_2 0
+	sleep 90
+	cm_interpolate_block muro_3 400
+	sleep 430
+	particle garage1_locklight02 do start
+	door_open 26
+	door_jam 26
+	ai2_spawn Hangar1_A_Striker_1
+	ai2_spawn Hangar1_A_Striker_2
+	ai2_spawn Hangar1_A_Striker_3
+	playback Hangar1_A_Striker_2 hangar1_striker2 interp 30
+	playback Hangar1_A_Striker_3 hangar1_striker3 interp 30	
+	playback Hangar1_A_Striker_1 hangar1_striker1 interp 30
+	cm_interpolate_block muro_4 0
+	cm_interpolate_block muro_5 300
+	sleep 300
+	chr_delete muro1
+	chr_delete escort_striker1
+	chr_delete escort_striker2
+	cm_reset
+	end_cutscene
+	trigvolume_enable murobait_a 0
+	trigvolume_enable murobait_b 0
+	input 1
+	set_objective_3
+	particle lock3_locklight01 do stop
+	save_game_2
+}
+
+# FINAL MURO
+func void final_muro(string char_index)
+{
+	dprint last_muro_cutscene
+	sound_music_stop mus_ot 0.75
+	input 0
+	letterbox 1
+	cm_interpolate muro2a 0
+	ai2_spawn muro2
+	ai2_spawn escort_striker3
+	ai2_spawn escort_striker4
+	playback escort_striker3 final_escort3
+	playback escort_striker4 final_escort4
+	playback muro2 final_muro
+	cm_interpolate muro2a 0
+	cm_interpolate_block muro2b 300
+	sleep 300
+	cm_interpolate muro2c 0
+	cm_interpolate_block muro2d 300
+	sleep 350
+	cm_interpolate muro2e 0
+	cm_interpolate_block muro2f 300
+	sleep 300
+	chr_delete muro2
+	chr_delete escort_striker3
+	chr_delete escort_striker4
+	cm_reset
+	letterbox 0
+	input 1
+}
+		
+### BACK TO GAMEPLAY ###
+
+func void Hangar1_A(void)
+{
+	dprint open_sesame
+	door_unlock 12
+	particle lock3_locklight01 do start
+	trigvolume_enable murobait_a 1
+	target_set(7085,30.00)
+}
+
+func void hangar1a(string char_index)
+{
+	dprint hangar_1a
+	ai2_spawn Hangar1_B_Striker_1
+	ai2_spawn Hangar1_B_Striker_4
+}
+
+func void hangar1b(string ai_name)
+{
+	dprint hangar_1b
+	ai2_spawn superball_striker
+}
+
+func void hangar1c(string char_index)
+{
+	dprint hangar_1c
+	ai2_spawn Hangar1_B_Striker_5
+	ai2_spawn Hangar1_B_Striker_9
+	ai2_spawn Hangar1_A_Tanker_1
+	ai2_spawn Hangar1_B_Comguy_12
+}
+
+# HANGAR 1 ROOM D OPEN
+func void hangar1d_var(string ai_name)
+{
+	dprint hangar1d
+	hangar1d_counter = hangar1d_counter - 1
+	if (hangar1d_counter eq 0)
+		{
+		access_hangar1d_granted();
+		}
+}
+
+func void access_hangar1d_granted(string ai_name)
+{
+	dprint access_granted_d
+	particle garage2_locklight02 do start
+	door_unlock 19
+	door_open 19
+	door_jam 19
+	ai2_spawn hangar1d_enemy_1
+	ai2_spawn hangar1d_enemy_2
+}
+
+# HANGAR 1 ROOM F OPEN
+func void hangar1f_var(string ai_name)
+{
+	dprint hangar1f
+	hangar1f_counter = hangar1f_counter - 1
+	if (hangar1f_counter eq 0)
+		{
+		access_hangar1f_granted();
+		}
+}
+
+func void access_hangar1f_granted(string ai_name)
+{
+	dprint access_granted_f
+	particle garage3_locklight02 do start
+	door_unlock 20
+	door_open 20
+	door_jam 20
+	ai2_spawn hangar1f_enemy_1
+	ai2_spawn hangar1f_enemy_3
+	ai2_spawn rat_thug_4
+}
+
+func void skip_ratscene(string ai_name)
+{
+	dprint no_ratscene
+	door_unlock 24
+	particle lock9_locklight02 do start
+	console_deactivate
+}
+
+func void hangar1d_backup(string ai_name)
+{
+	dprint backup
+	ai2_spawn hangar1f_enemy_2
+}
+
+func void patrolscript0500(string ai_name)
+{
+	dprint jump_bomber
+	playback_block hangar1f_enemy_2 bomber_jump interp 30
+}
+
+func void secret_striker(string char_index)
+{
+	dprint striker_ambush
+	ai2_spawn secret_striker_1
+}
+
+func void secret_tanker(string char_index)
+{
+	dprint tanker_ambush
+	ai2_spawn secret_tanker_1
+}
+
+func void sos_1(string char_index)
+{
+	dprint sos1
+	ai2_spawn sos_badman_1
+}
+
+func void sos_2(string char_index)
+{
+	dprint sos2
+	ai2_spawn sos_badman_2
+}
+
+
+func void carpool_backup(string char_index)
+{
+	dprint carpool_ambush
+	ai2_spawn carpool_striker_2
+}
+
+func void Back1(string char_index)
+{
+	dprint Back1
+	ai2_spawn Roof1_Striker_1
+	ai2_spawn Roof1_Striker_2
+	ai2_spawn Hangar1_C_Striker_1
+	ai2_spawn Hangar1_C_Striker_2
+	ai2_spawn Hangar1_C_Friend_1
+}
+
+func void low_roadies_1(string ai_name)
+{
+	dprint roadies_1
+	ai2_spawn Back_Striker_1
+	ai2_spawn Back_Striker_2
+	ai2_spawn Back_Striker_3
+	ai2_spawn Back_Thug_1
+}
+
+func void low_roadies_2(string ai_name)
+{
+	dprint roadies_2
+	ai2_spawn Back_Tanker_1
+	ai2_spawn Back_Thug_2
+	ai2_spawn Back_Thug_3
+}
+
+func void Back2(string char_index)
+{
+	dprint Back2
+	ai2_spawn Roof2_Striker_1
+	ai2_spawn Roof2_Striker_2
+	ai2_spawn Roof2_Striker_3
+	ai2_spawn Back2_Comguy_1
+	ai2_spawn Back2_Tanker_1
+	ai2_spawn carpool_striker_1
+	ai2_spawn ahah_badman_1
+	ai2_spawn ahah_badman_2
+	particle roof2 do start
+}
+
+func void Rat_Guards(string char_index)
+{
+	dprint rat_guard
+	ai2_spawn Rat_Comguy_1
+	ai2_spawn Rat_Tanker_1
+	particle lock35_locklight01 do start
+}
+
+func void Back3(string char_index)
+{
+	dprint Back3
+	ai2_spawn Roof3_Striker_1
+	ai2_spawn Roof3_Striker_2
+	ai2_spawn Roof3_Tanker_1
+	particle roof3 do start
+}
+
+func void remote_lot(string ai_name)
+{
+	dprint remote_lot_guards
+	ai2_spawn remote_striker_1
+}
+
+func void roof3_backup1(string char_index)
+{
+	dprint roof_backup1
+	ai2_dopath Roof3_Striker_1 Roof3_Striker_1b 1
+}
+
+func void back_compound(string char_index)
+{
+	dprint compound
+	ai2_spawn compound_tanker_1
+	ai2_spawn compound_bomber_1
+	sound_music_stop atm_cl09
+}
+
+func void remote_parking(string ai_name)
+{
+	dprint remote_action
+	ai2_spawn hostage_thug_1
+	ai2_spawn hostage_thug_2
+	ai2_spawn hostage_thug_3
+	ai2_spawn squad_tanker_1
+	ai2_spawn squad_tanker_2
+}
+
+func void remote_backup_1(string ai_name)
+{
+	dprint remote_backup1
+	ai2_spawn hostage_striker_1
+}
+
+func void remote_backup_2(string ai_name)
+{
+	dprint remote_backup2
+	ai2_spawn hostage_striker_2
+}
+
+func void Office1(string char_index)
+{
+	dprint Office1
+	ai2_spawn Office1_Comguy_1
+	ai2_spawn Office1_Comguy_11
+	ai2_spawn Office2_Striker_1
+	ai2_spawn Office2_Striker_3
+	ai2_spawn Office3_Tanker_12
+	ai2_spawn neutral_1
+	ai2_spawn neutral_2
+	sound_music_start atm_gr09
+	particle muroplane_prop do
+}
+
+# HANGAR 2 AMBUSH
+func void ambush(string ai_name)
+{
+	dprint ambush_active
+	particle lock7_locklight01 do start
+	door_unlock 36
+	ai2_spawn ambush_striker_1
+	ai2_spawn ambush_commguy_1
+	sleep 220
+	ai2_doalarm ambush_commguy_1 4
+	sound_music_stop atm_gr09
+	sound_music_start mus_space01 0.75
+	music_script_start
+}
+
+func void Hangar2a(string char_index)
+{
+	dprint Hangar2a
+	ai2_spawn Hangar2_tanker_1
+	ai2_spawn alarm_striker_1
+}
+
+func void Hangar2b(string char_index)
+{
+	dprint Hangar2b
+	ai2_spawn Hangar2_Striker_3
+	ai2_spawn Hangar2_Striker_4
+	ai2_spawn Hangar2_Striker_5
+}
+
+func void alarm_sound_script(void)
+{
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+func void raise_alarm(string char_index)
+{
+	dprint alarm_raised
+	ai2_dopath alarm_striker_1 alarm_striker_1a 1
+	fork alarm_sound_script
+}
+
+func void alarm_patrol(string char_index)
+{
+	dprint patrol_begun
+	ai2_dopath alarm_striker_1 alarm_striker_1b 1
+}
+
+#STRIKER SHOWDOWN
+var int striker_counter=3;
+
+func void striker_showdown_1(string ai_name)
+{
+	dprint striker_showdown1
+	striker_counter = striker_counter - 1
+	if (striker_counter eq 0)
+		{
+		total_striker_count();
+		}
+
+}
+
+func void striker_showdown_2(string ai_name)
+{
+	dprint striker_showdown2
+	striker_counter = striker_counter - 1
+	if (striker_counter eq 0)
+		{
+		total_striker_count();
+		}
+}
+
+func void striker_showdown_3(string ai_name)
+{
+	dprint striker_showdown3
+	striker_counter = striker_counter - 1
+	if (striker_counter eq 0)
+		{
+		total_striker_count();
+		}
+}
+
+func void total_striker_count(string ai_name)
+{
+	dprint rappel_point_active
+	trigvolume_enable rappel_point 1
+	particle rappel create
+	target_set(1054,30.00)
+	sound_music_stop mus_space01
+}
+
+# OBJECTIVE CHECK
+func void objective_check(string ai_name)
+{
+	dprint check_for_objective
+		if (chr_has_lsi(0))
+		{	
+		dprint set_objective5
+		objective_set(5)
+		target_set(7127,30.00)
+		trigvolume_enable objectivecheck 0
+		}
+}
+
+# LSI CHECK 1
+func void lsi_check_1(string ai_name)
+{
+	dprint check_lsi_1
+	if (chr_has_lsi(0))
+		{	
+		trigvolume_enable tripwire 1
+		}
+}
+
+# LSI CHECK 2
+func void lsi_check_2(string ai_name)
+{
+	dprint check_lsi_2
+	if (chr_has_lsi(0))
+		{	
+		particle rappel kill
+		rappel
+		}
+}
+
+### RATS IN THE SEWER ###
+
+# RAT DOOR
+func void rat_door(string ai_name)
+{
+	dprint open_rat_door
+	particle lock9_locklight02 do start
+	door_unlock 24
+	door_open 24
+	door_jam 24	
+	letterbox 1		
+	input 0
+	ai2_spawn rat_thug_1
+	ai2_spawn rat_thug_2
+	ai2_spawn rat_thug_3
+	cm_interpolate rat_door1 0
+	cm_interpolate_block rat_door2 300
+	sleep 250
+	playback rat_thug_1 rat_thug_1 interp 30
+	playback rat_thug_2 rat_thug_2 interp 30
+	playback rat_thug_3 rat_thug_3 interp 30
+	sleep 90
+	sleep 200
+	cm_reset
+	letterbox 0
+	input 1
+	door_unjam 24
+	door_close 24
+	sleep 250
+	chr_delete rat_thug_1
+	chr_delete rat_thug_2
+	chr_delete rat_thug_3
+}
+
+# GAS START
+func void gas_trig_show(string ai_name)
+{
+	dprint gastrig_show
+	trig_show 1
+	trig_show 2
+	trig_show 3
+	trig_show 4
+}
+
+func void gas(string ai_name)
+{
+	dprint rats_take_cover
+	particle gas1 do start
+	particle gas2 do start
+	particle gaslight1 do start
+	console_activate 14
+	console_activate 15
+	door_unjam 48
+	door_close 48
+	trigvolume_enable gas 1
+	timer_stop
+}
+
+# GAS OFF
+func void gas_off(string ai_name)
+{
+	dprint rats_scurry_on
+	particle gas1 do stop
+	particle gas2 do stop
+	particle gaslight1 do stop
+	console_reset 14
+	console_reset 15
+	door_open 48
+	door_jam 48
+	trigvolume_enable gas 0
+	timer_start 10 gas_on
+}
+
+# GAS ON
+func void gas_on(string ai_name)
+{
+	dprint rats_take_cover_again
+	door_lock 24
+	particle gas1 do start
+	particle gas2 do start
+	particle gaslight1 do start
+	console_activate 14
+	console_activate 15
+	door_unjam 48
+	trigvolume_enable gas 1
+}
+
+# GAS OFF FOR GOOD
+func void gas_kill(string ai_name)
+{
+	particle gas1 do stop
+	particle gas2 do stop
+	particle gaslight1 do stop
+	door_unjam 48
+}
+
+func void gas_trig_hide(string ai_name)
+{
+	dprint gastrig_hide
+	trig_hide 1
+	trig_hide 2
+	trig_hide 3
+	trig_hide 4
+	door_lock 48
+}
+
+func void poison_konoko(string ai_name)
+{	
+	chr_poison (konoko, 10, 60, 90);
+}
+
+func void fire_damage(string ai_name)
+{	
+	chr_poison (ai_name, 5, 30, 30);
+}
+
+### LOCKS & LIGHTS ###
+
+func void lock1(void)
+{
+	input 0
+	cm_interpolate lock1 0
+	sleep 60
+	particle lock1_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	target_set(7125,30.00)
+}
+
+func void lock2(string ai_name)
+{
+	input 0
+	cm_interpolate lock2 0
+	sleep 60
+	particle lock2_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	trigvolume_enable hidden_friends1 1
+}
+
+func void lock4(void)
+{
+	input 0
+	cm_interpolate lock4 0
+	sleep 60
+	particle lock4_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void lock5_counter_decrement(void)
+{
+	dprint ENTERING_LOCK_5_DECREMENT
+	lock5_counter = lock5_counter - 1
+	if (lock5_counter eq 2)
+		{
+		sound_music_start mus_cool13 1.0
+		}
+	if (lock5_counter eq 0)
+		{
+		sound_music_stop mus_cool13
+		lock5_end();
+		}
+}
+
+func void lock5a_var(string ai_name)
+{
+	dprint lock5a
+	lock5_counter_decrement
+	input 0
+	cm_interpolate lock5d 0
+	sleep 60
+	particle lock5a_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void lock5b_var(string ai_name)
+{
+	dprint lock5b
+	lock5_counter_decrement
+	input 0
+	cm_interpolate lock5d 0
+	sleep 60
+	particle lock5b_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void lock5c_var(string ai_name)
+{
+	dprint lock5c
+	lock5_counter_decrement
+}
+
+# LOCK 5 END
+func void lock5_end(string ai_name)
+{
+	dprint room1_end
+	door_unlock 21
+	door_unlock 22
+	trigvolume_enable nodark 1
+}
+
+func void lock5(void)
+{
+	lock5c_var
+	letterbox 1
+	input 0
+	cm_interpolate lock5a 0
+	cm_interpolate_block lock5b 300
+	sleep 350
+	cm_interpolate_block lock5c 0
+	sleep 30
+	cm_interpolate_block lock5d 300
+	sleep 300
+	particle lock5c_locklight01 do start
+	sleep 60
+	cm_reset
+	letterbox 0
+	input 1
+}
+
+func void lock6(void)
+{
+	input 0
+	cm_interpolate lock6 0
+	sleep 60
+	particle lock6_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	set_objective_4
+	trigvolume_enable trigger_volume_08 1
+	door_unlock 27
+}
+
+### PARTICLE CONTROL ###
+
+# MAD BOMBER DAMAGE OFF
+func void bomber_off(string ai_name)
+{
+	dprint mad_bomber_particles_off
+	particle bomb_damage1 do stop
+	particle room1 do stop
+	particle bomber1a kill
+}
+
+# PLANE ROTOR WASH ON
+func void rotor_wash(string ai_name)
+{
+	dprint rotorwash_on
+	particle rotorwash do start
+}
+
+# CARPOOL FIRE ON
+func void carpool_start(string ai_name)
+{
+	dprint carpool_particles_on
+	particle carpool create
+	particle carpool do start
+}
+
+# CARPOOL FIRE OFF
+func void carpool_stop(string ai_name)
+{
+	dprint carpool_particles_off
+	particle carpool kill
+	particle carpool do stop
+}
+
+### Level scripted by Joseph ###
Index: /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/Airport_III/airport2_main.bsl	(revision 405)
@@ -0,0 +1,26 @@
+#
+# airportiii_main.bsl
+#
+
+var int my_save_point;
+var int lock5_counter=3;
+var int hangar1d_counter=2;
+var int hangar1f_counter=2;
+
+func void main(void)
+{
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.99
+	gs_farclipplane_set 5000
+
+	my_save_point = save_point;
+
+	func_start
+
+	if (my_save_point eq 0)
+	{
+		airportiii_cs_intro();
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_anim_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_anim_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_anim_scripts.bsl	(revision 405)
@@ -0,0 +1,34 @@
+#
+# anim_scripts.bsl
+#
+func void patrolscript0002 (string ai_name)
+{
+	playback_block Pod1_TCL_2 alarm2 interp 20
+}
+func void patrolscript0003 (string ai_name)
+{
+	playback_block Pod2_TCL_1 pod2alarm1 interp 20
+}
+func void patrolscript0004 (string ai_name)
+{
+	playback_block Pod2_TCL_2 pod2alarm2 interp 20
+}
+
+
+func void patrolscript0009 (string ai_name)
+{
+	particle lock99_locklight01 do start
+	door_unlock 11
+	sleep 540
+	particle lock99_locklight01 do stop
+	door_lock 11
+}
+func void patrolscript0010 (string ai_name)
+{
+	particle lock99_locklight01 do start
+	door_unlock 11
+# WAIT AND RELOCK DOORS
+	sleep 540
+	particle lock99_locklight01 do stop
+	door_lock 11
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_cutscene.bsl	(revision 405)
@@ -0,0 +1,436 @@
+#
+# warehouse_cutscene.bsl
+#
+
+########################
+func void
+Kon(
+	void)
+{
+	cm_interpolate KonCamFoot01 0
+	cm_interpolate_block KonCamFoot02 300
+	sleep f260
+	#cm_interpolate KonCamChest01 0
+	#cm_interpolate_block KonCamChest02 180
+	#sleep f120
+	cm_interpolate KonCamBack01 0
+	cm_interpolate_block KonCamBack02 180
+	sleep f150
+	cm_interpolate KonCamSide01 0
+	cm_interpolate_block KonCamSide02 210
+	sleep f190
+	cm_interpolate KonCamFinish01
+	cm_interpolate_block KonCamFinish02 200
+	sleep 345
+	fade_out 0 0 0 15
+	sleep 15
+	cm_reset
+	fade_in 15
+	sleep 15
+}
+
+############################
+
+func void
+animate(string me)
+{
+	#chr_animate me KONCOMpunch_fw
+}
+
+func void swing(void)
+{
+	how_far_along = 0;
+	fade_out 0 0 0 30
+	sleep 30
+	splash_screen warehouse_splash_screen
+	swing_cutscene
+}
+
+func void jumping_sounds(void)
+{
+	sleep 97
+	# first hit on ledge
+	sound_impulse_play kon_land_con
+}
+
+func void
+swing_cutscene(
+	void)
+{
+	fade_out 0 0 0 0
+	sleep 15
+	how_far_along = 0;
+	begin_cutscene
+	cutscene_sync off
+	ai2_spawn kerr
+	ai2_spawn griffin
+	playback kerr KerrSet
+	playback griffin GriffinSet
+	cm_interpolate GriffinCam 0
+	sleep 30
+		chr_changeteam char_0 Konoko
+		chr_inv_reset 0
+		chr_giveweapon 0 w1_tap
+		chr_forceholster 0 1
+	cm_interpolate GriffinCam 0
+	fade_in 30
+	sleep 60
+	#griffin talks
+	cinematic_start (GRIFnametag, 180, 180, 15, 1, 20, false)
+	sound_dialog_play c01_01_01griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c01_01_02shinatama
+	cinematic_start (SHINnametagM, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (SHINnametagM, 16, 20)
+	cm_interpolate OfficeCam02 0
+	cm_interpolate_block OfficeCam01 900
+	sleep 15
+	sound_dialog_play c01_01_03kerr
+	cinematic_start (KERRnametagM, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c01_01_04griffin
+	sound_dialog_play_block pause
+	playback 0 KonokoSet
+	sleep 10
+	cinematic_stop (KERRnametagM, 16, 20)
+	#camera of Konoko
+	#cm_reset
+	cm_interpolate KonokoCam01 0
+	cm_interpolate_block KonokoCam02 360
+	cinematic_start (KONnametagM, 180, 180, 16, 3, 20, true)
+	chr_animate 0 KONOKOwatch_idle 3000
+	sleep 10
+	sound_dialog_play c01_01_05griffin
+	sound_dialog_play_block pause
+	#cinematic_start (KONnametagM, 180, 180, 16, 3, 20, true)
+	sleep 30
+	sound_dialog_play c01_01_06konoko	
+	sound_dialog_play_block pause
+	sleep 20
+	cinematic_stop (KONnametagM, 16, 20)
+	sleep 15
+	#griffin cam
+	#sleep 30
+	cm_interpolate GriffinCam 0
+	sleep 30
+	sound_dialog_play c01_01_07griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c01_01_08shinatama
+	cinematic_start (SHINnametagM, 180, 180, 16, 3, 20, true)		
+	sound_dialog_play_block pause
+	cinematic_stop (SHINnametagM, 16, 20)
+	#office cam
+	cm_interpolate OfficeCam01 0
+	cm_interpolate_block OfficeCam02 900
+	sound_dialog_play c01_01_09kerr
+	cinematic_start (KERRnametagM, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c01_01_10griffin
+	sound_dialog_play_block pause
+	#cinematic_stop (KERRnametagM, 16, 20)
+	cinematic_stop (GRIFnametag, 15, 20)
+	sleep 60
+	#KerrCam
+	cm_interpolate KerrCam 0
+	#cinematic_start (KERRnametagM, 180, 180, 16, 3, 20, true)
+	sleep 40
+	sound_dialog_play c01_01_11kerr
+	sound_dialog_play_block pause
+	cutscene_sync on
+	sleep 40
+	cinematic_stop (KERRnametagM, 16, 20)
+	cm_anim both Cam4
+	cutscene_sync mark
+	chr_envanim 0 KonBipedBox02 norotation
+	chr_animate 0 KONOKOlev1_intro
+	fork jumping_sounds
+	env_anim 20 20
+	sleep f180
+	sound_ambient_start c00_20_07window
+	sleep f154
+	playback 0 SwingKonokoSet
+	# hit on the floor
+	sound_impulse_play kon_land_con
+	sleep 30
+	cm_reset
+	sleep f30
+#	end_cutscene
+	letterbox 0
+	chr_full_health 0
+	give_powerup ammo
+	give_powerup ammo
+	give_powerup ammo
+	chr_delete griffin
+	chr_delete kerr
+	s1
+	yhealth
+}
+
+func void chung_music_start(void)
+{
+	sound_music_start atm_low1 0.7
+}
+
+# we stop this music when we spawn the lsi striker (a tad after actually)
+func void chung_music_stop(void)
+{
+	sound_music_stop atm_low1
+}
+
+
+func void
+Chung(
+	void)
+{
+	begin_cutscene
+
+	chung_music_start
+
+	sleep 30
+	cm_jello 1
+	sound_dialog_play_block pause
+	sound_dialog_play c01_02_01konoko
+	sound_dialog_play_block pause
+	sleep 60
+	chr_animate 0 KONOKOwatch_start 60
+	sleep 40
+	cinematic_start (KONnametag, 180, 180, 15, 1, 20, false)
+	cinematic_start (GRIFnametagM, 180, 180, 16, 3, 20, true)
+	sleep 19
+	chr_animate 0 KONOKOwatch_idle 3000
+	sound_dialog_play c01_02_02konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c01_02_03griffin
+	sound_dialog_play_block pause
+	sleep 30
+	sound_dialog_play c01_02_04konoko
+	sound_dialog_play_block pause
+	sleep 60
+	sound_dialog_play c01_02_05griffin
+	sound_dialog_play_block pause
+	chr_animate 0 KONOKOwatch_stop
+	cinematic_stop (KONnametag, 15,20)
+	cinematic_stop (GRIFnametagM, 16,20)
+	sleep 15
+	cm_reset
+	end_cutscene
+	trigvolume_enable gotLSI_tv 1
+	target_set(1,0)
+	input 1
+}
+
+func void
+outro(
+	void)
+{
+	chr_delete WH_Thug_A 
+	chr_delete WH_Striker_B
+	chr_delete WH_Striker_D
+	begin_cutscene
+	#forklift raises into position
+	obj_create 101 109
+	env_show 101 0
+	env_show 102 0
+	env_show 103 0
+	env_show 104 0
+	env_show 105 0
+	env_show 106 0
+	env_show 107 0
+	env_show 108 0
+	env_show 109 0
+	env_anim 101 109
+	cm_anim both OutroCam01
+	cutscene_sync mark
+	sound_ambient_start c00_38_24_forklifta
+	sound_ambient_start c00_38_24_truck
+	playback 0 OutroKonokoWalk
+	cm_wait
+	#Konoko enters booth
+	cm_anim both OutroCam02
+	chr_envanim 0 OutroKonokoBox01 norotation
+	chr_animate 0 KONOKOlev1_Outro1
+	cm_wait
+	#Forklift starts down
+	cm_anim both OutroCam03
+	chr_envanim 0 OutroKonokoBox02
+	chr_animate 0 KONOKOlev1_Outro2 770
+	env_setanim 101 TwoForkLift01
+	env_setanim 102 TwoForkLift02
+	env_setanim 103 TwoForkLift03
+	env_setanim 104 TwoForkLift04
+	env_setanim 105 TwoForkLift05
+	env_setanim 106 TwoForkLift06
+	env_setanim 107 TwoForkLift07
+	env_setanim 108 TwoForkLift08
+	env_setanim 109 TwoForkLift09
+	env_show 201 0
+	env_show 202 0
+	env_show 203 0
+	env_show 204 0
+	env_show 205 0
+	env_show 206 0
+	env_show 207 0
+	obj_create 201 207
+	env_anim 201 207
+	cutscene_sync mark
+	sound_ambient_start c00_38_24_forkliftb
+	cm_anim_block both OutroCam04
+	cm_anim_block both OutroCam05
+	cutscene_sync mark
+	sound_ambient_start c00_52_13_crash_doors
+	cm_anim_block both OutroCam06
+	cm_wait
+	door_unlock 48
+	particle bigdoor_locklight02 do start
+	ai2_spawn OutroTCTF01
+	ai2_spawn OutroTCTF02
+	ai2_spawn OutroTCTF03
+	sleep 21
+	playback 0 OutroKonokoWalk
+	ai2_setmovementmode OutroTCTF01 run
+	ai2_setmovementmode OutroTCTF02 run
+	ai2_setmovementmode OutroTCTF03 run
+	cm_interpolate OutroCam07 0
+	cm_interpolate_block OutroCam08 240
+	playback OutroTCTF01 OutroTCTF01
+	playback OutroTCTF02 OutroTCTF02
+	playback OutroTCTF03 OutroTCTF03
+	sleep 230
+	playback 0 OutroKonokoJump
+	sleep 120
+	cm_interpolate OutroCam09 0
+	sleep 120
+	cm_reset
+	cm_orbit .1
+	chr_animate 0 KONOKOwatch_start 60
+	sleep 40
+	cinematic_start (KONnametag, 180, 180, 15, 1, 20, false)
+	cinematic_start (GRIFnametagM, 180, 180, 16, 3, 20, true)
+	sleep 19
+	chr_animate 0 KONOKOwatch_idle 3000
+	sound_dialog_play c01_03_01konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c01_03_02griffin
+	sound_dialog_play_block pause
+	ai2_spawn griffin
+	playback griffin GriffinSet
+	sound_dialog_play c01_03_03konoko
+	sound_dialog_play_block pause
+	#griffin Cam
+	cm_interpolate GriffinCam 0
+	cm_interpolate_block GriffinCam01 500
+	sound_dialog_play c01_03_04griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c01_03_05konoko
+	sound_dialog_play_block pause
+	cinematic_stop (KONnametag, 15, 20)
+	sleep 20
+	sound_dialog_play c01_03_06shinatama
+	cinematic_start (SHINtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	cinematic_stop (SHINtalking, 15, 20)
+	sleep 20
+	#konoko camera
+	chr_animate 0 KONOKOwatch_idle 3000
+	cm_reset
+	sleep 20
+	sound_dialog_play c01_03_07griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c01_03_08konoko
+	cinematic_start (KONnametag, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	sleep 15
+	chr_animate 0 KONOKOwatch_stop
+	cinematic_stop (KONnametag, 15,20)
+	cinematic_stop (GRIFnametagM, 16,20)
+	fade_out 0 0 0 120
+	sleep 120
+	win
+}
+
+func void
+camcontrol(
+	void)
+{
+	cm_anim both OutroCam03
+	cm_anim both OutroCam04
+	cm_anim both OutroCam05
+	cm_anim both OutroCam06
+	cm_wait
+	end_cutscene
+}
+
+func void
+OutroLose(
+	void)
+{
+	begin_cutscene weapon
+	ai2_spawn LoseTCTF01
+	ai2_spawn LoseTCTF02
+	ai2_spawn LoseTCTF03
+	sleep f30
+	fade_out 0 0 0 15
+	door_unlock 48
+	particle bigdoor_locklight02 do start
+	sleep f15
+	playback 0 OutroLoseKonoko
+	ai2_setmovementmode LoseTCTF01 run
+	ai2_setmovementmode LoseTCTF02 run
+	ai2_setmovementmode LoseTCTF03 run
+	playback LoseTCTF01 OutroLoseTCTF01
+	playback LoseTCTF02 OutroLoseTCTF02
+	playback LoseTCTF03 OutroLoseTCTF03
+	sleep f25
+	fade_in 20
+	##show tctf guys stormin the place
+	cm_interpolate OutroLoseCam01 0
+	cm_interpolate_block OutroLoseCam011 120
+	sleep f150
+	##show and Hide truck stuff
+	env_show 201 0
+	env_show 202 0
+	env_show 203 0
+	env_show 204 0
+	env_show 205 0
+	env_show 206 0
+	env_show 207 0
+	obj_create 201 207
+	##Truck starts up
+	env_setanim 201 Losetruckwheel01
+	env_setanim 202 Losetruckwheel02
+	env_setanim 203 Losetruckwheel03
+	env_setanim 204 Losetruckwheel04
+	env_setanim 205 Losetruckwheel05
+	env_setanim 206 Losetruckback
+	env_setanim 207 Losetruckcab
+	cm_anim both OutroLoseCam02
+	cutscene_sync mark
+	sound_ambient_start truckleave
+	###Truck leaves
+	cm_anim_block both OutroLoseCam03
+	playback LoseTCTF01 OutroLoseRoll
+	playback LoseTCTF02 OutroLoseDie
+	playback LoseTCTF03 OutroLoseDodge
+	sleep f20
+	cutscene_sync mark
+	sound_ambient_start gar_dr_up
+	###
+	sleep f105
+	chr_set_health LoseTCTF02 0
+	#door_jam 48
+	sleep f105
+	cutscene_sync mark
+	sound_ambient_start gar_dr_down
+	cm_wait
+	sleep f30
+	fade_out 0 0 0 90
+	sleep f90
+	lose
+}
+	
+
+
+
+
+
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_level_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_level_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_level_scripts.bsl	(revision 405)
@@ -0,0 +1,949 @@
+# warehouse_level_scripts.bsl
+#
+# LEVEL LOGIC
+#
+########################### START & SAVE ##############################
+var int outro_has_started = 0;
+var int count_alarm;
+var int count_end_striker = 0;
+var int count_end_console = 0;
+var int td;
+var int ns;
+var int in_t64;
+var int d6;
+var int ul5;
+# music #
+
+func void music_train1(void)
+{
+	sound_music_start atm_gr06 0
+	sound_music_volume atm_gr06 0.7 3.0
+#	stopped by moving into combat rooms
+}
+
+func void music_train2(void)
+{
+	sound_music_start atm_ft68 0
+	sound_music_volume atm_ft68 0.75 3.0
+#	stopped by moving into firing range
+}
+
+func void music_train3(void)
+{
+	sound_music_start mus_amasian 0
+	sound_music_volume mus_amasian 0.75 3.0
+#	stopped by using last review console
+}
+
+func void music_firstfight(void)
+{
+	sound_music_start mus_ambgrv1 0
+	sound_music_volume mus_ambgrv1 0.75 3.0
+#	stopped by intro_enemies thug die or hurt scripts
+}
+
+func void music_timer(void)
+{
+	sound_music_start mus_chase 0
+	sound_music_volume mus_chase 0.75 3.0
+#	stopped in end_console or end_striker
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_volume atm_gr06 0.0 2.0
+	sound_music_stop atm_gr06
+	sound_music_volume atm_ft68 0.0 2.0
+	sound_music_stop atm_ft68
+	sound_music_volume mus_amasian 0.0 2.0
+	sound_music_stop mus_amasian
+	sound_music_volume mus_ambgrv1 0.0 2.0
+	sound_music_stop mus_ambgrv1
+	sound_music_volume mus_chase 0.0 3.0
+	sound_music_stop mus_chase
+}
+
+func void level_start(string ai_name)
+{
+# These functions are used when the game is restored.
+	
+	trigvolume_enable(intro_enemies_tv, 0);
+	trigvolume_enable(setup_bay3_tv, 0);
+	trigvolume_enable gotLSI_tv 0
+	trigvolume_enable trigger_volume_06 0
+	particle bigdoor_locklight02 do start
+
+	my_save_point = save_point;
+
+	if (my_save_point eq 0)
+	{
+		can_train_movement=1;
+		dprint SAVE_POINT_0	
+#		USE THIS FUNC TO SET UP TRAINING SEQUENCE AGAIN
+		splash_screen training_splash_screen
+		dprint hello
+	}
+
+	if (my_save_point eq 1)
+	{
+# this is a built in save point for 
+		can_train_movement=0;
+#		objective_set(1)
+		door_lock(15);
+		door_lock(16);
+		particle(lock1_locklight01, do, stop);
+		restore_game
+		playback 0 SwingKonokoSet
+		target_set(1,0.0)
+		dprint RESTORE_SAVE_Point_1
+		splash_screen warehouse_splash_screen
+		swing_cutscene
+	}
+
+	if (my_save_point eq 2)
+	{
+		can_train_movement=0;
+#		objective_set(1)
+		door_lock(15);
+		door_lock(16);
+		particle(lock1_locklight01, do, stop);
+		restore_game
+		ai2_spawn A_t48
+		playback 0 SwingKonokoSet
+		target_set(1,0.0)
+		dprint RESTORE_SAVE_Point_2_begin
+		splash_screen warehouse_splash_screen
+		cm_reset
+		sleep 30
+		chr_forceholster 0 0
+	}
+
+	if (my_save_point eq 3)
+	{
+		dprint RESTORE_SAVE_POINT_3
+		can_train_movement=0;
+		trigvolume_enable trigger_volume_03 0
+		target_set(7053, 15.0)
+		door_lock 16
+		ai2_spawn Mid_Thug_2
+		ai2_spawn Mid_Thug_1
+		restore_game
+		objective_set 2 silent
+		splash_screen warehouse_splash_screen
+	}
+
+	if (my_save_point eq 4)
+	{
+		dprint RESTORE_SAVE_POINT_4
+		can_train_movement=0;
+		door_lock 65
+		trigvolume_enable trigger_volume_68 0
+		target_set(7054, 30.0)
+	#	spawn_top	
+		restore_game
+		objective_set 2 silent
+		splash_screen warehouse_splash_screen
+	}
+
+	if (my_save_point eq 5)
+	{
+		dprint RESTORE_SAVE_POINT_5
+		can_train_movement=0;
+		door_lock 48
+		particle bigdoor_locklight02 do stop
+		ai2_spawn WH_Thug_A 
+		ai2_spawn WH_Striker_B
+		ai2_spawn WH_Striker_C
+		ai2_spawn WH_Striker_D
+		ai2_dopath WH_Thug_A WH_Thug_A
+		ai2_dopath WH_Striker_B WH_Striker_B
+		ai2_dopath WH_Striker_D WH_Striker_D
+		ai2_setjobstate WH_Thug_A 
+		ai2_setjobstate WH_Striker_B
+		ai2_setjobstate WH_Striker_D
+		chr_teleport WH_Striker_D 95
+		trigvolume_enable tv78 0
+		trigvolume_enable mid_warehouse_target 0
+		restore_game
+		splash_screen warehouse_splash_screen
+		sleep 7
+		train_timer
+	}
+}
+
+func void unholstergun(void)
+{
+	sleep 30
+	chr_forceholster 0 0 
+}
+
+# This is an example of a save game console.
+
+func void s1(string player_name)
+{
+	dprint saveit_1
+
+	if (my_save_point ne 2)
+	{
+		save_game 2 autosave
+	}
+}
+
+func void s2(string player_name)
+{
+	dprint saveit_2
+
+	if (my_save_point ne 3)
+	{
+		save_game 3 autosave
+	}
+}
+
+func void s3(string player_name)
+{
+	dprint saveit_3
+
+	if (my_save_point ne 4)
+	{
+		save_game 4 autosave
+	}
+}
+
+func void s4(string player_name)
+{
+	dprint saveit_4
+
+	if (my_save_point ne 5)
+	{
+		save_game 5 autosave
+	}
+}
+
+func void you_lose(string ai_name)
+{
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	lose
+}
+
+func void unlock1(string ai_name)
+{
+	dprint unlock1
+	target_set(33, 15.0)
+
+	door_unlock 15
+	door_unlock 16
+
+	input 0
+	cm_interpolate lock1 0
+	sleep 60
+	particle lock1_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	sleep 120
+	ai2_spawn Bay1_Thug_1
+	trigvolume_enable intro_enemies_tv 1
+	trigvolume_enable trigger_volume_77 0
+}
+
+func void unlock2(string ai_name)
+{
+	dprint unlock2
+
+	music_stop
+
+	target_set(84, 15.0)
+
+	door_unlock 24
+	door_unlock 26
+
+	input 0
+	cm_interpolate lock2 0
+	sleep 60
+	particle lock2_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	trigvolume_enable(setup_bay3_tv, 1);
+}
+
+func void setup_bay3(string ai_name)
+{
+	dprint setup_bay_3
+	target_set(84, 15.0)
+#	particle lock3_locklight01 do start
+}
+
+func void checkLSI(string ai_name)
+{
+	var int has_lsi = chr_has_lsi(0);
+
+	dprint checkLSI
+	trigvolume_enable gotLSI_tv 0
+
+	if (has_lsi eq 1)
+	{
+		input 0
+		sleep 25
+		chr_animate 0 KONOKOwatch_start 60 12
+		sleep 59
+		chr_animate 0 KONOKOwatch_idle 15
+		text_console level_1e
+		chr_animate 0 KONOKOwatch_stop
+		sleep 15
+		input 1
+		sleep 15
+		door_unlock 37
+		particle lock3_locklight01 do start
+		ai2_spawn Ambush_Striker_1
+		ai2_spawn Mid_Thug_1
+		ai2_spawn Mid_Thug_2
+		target_set(7053,30.0)
+		chung_music_stop
+		objective_set(2)
+		sound_dialog_play_block c00_01_21shinatama
+		sound_dialog_play_block pause
+	}
+
+	if (has_lsi eq 0)
+	{
+		# sleep and turn the trigger volume back on later
+		sleep 60
+		trigvolume_enable gotLSI_tv 1
+	}
+}
+
+func void t09(string ai_name)
+{
+	target_set(62,30.0)
+}
+
+func void spawn_top(string ai_name)
+{
+ 	dprint spawn_top
+	ai2_spawn Top_Striker_1
+	ai2_spawn Top_Comguy_1
+	ai2_spawn Top_Thug_3
+	ai2_spawn Top_Thug_5
+	ai2_spawn WH_Thug_A 
+	ai2_spawn WH_Striker_B
+	ai2_spawn WH_Striker_C
+	ai2_spawn WH_Striker_D
+}
+
+func void spawn_mid2(string ai_name)
+{
+ 	dprint spawn_mid2
+	ai2_spawn Mid2_Striker_1
+	ai2_spawn Mid2_Striker_2
+	target_set(66, 15.0)
+}
+
+func void unlock4(string ai_name)
+{
+	dprint unlock4
+	target_set(7054, 15.0)
+
+	door_unlock 65
+
+	input 0
+	cm_interpolate lock4 0
+	sleep 60
+	particle lock4_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+}
+
+func void unlock5(string ai_name)
+{
+	dprint unlock5
+	target_set(72, 30.0)
+	console_deactivate 4
+	door_unlock 73
+	door_unlock 74
+	door_unlock 81
+	door_unlock 82
+	ul5 = 1;
+	input 0
+	cm_interpolate lock5 0
+	sleep 60
+	particle lock5_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	console_deactivate 7
+}
+
+func void hurt1(string ai_name)
+{
+	dprint HURT
+	ai2_makeignoreplayer Bay4_Comguy_1 1
+	ai2_doalarm Bay4_Comguy_1 6
+	ai2_dopath Bay4_Comguy_1 Run_To_Alarm
+	ai2_setjobstate Bay4_Comguy_1
+	sleep 60
+	sound_dialog_play_block c00_01_96shinatama
+
+}
+
+func void patrolscript0001(string ai_name)
+{
+	dprint comguy_do_alarm
+	ai2_doalarm Bay4_Comguy_1 6
+}
+
+func void unlock_alarm(void)
+{
+	dprint unlock_alarm
+	door_unlock 73
+	door_unlock 74
+	door_unlock 81
+	door_unlock 82
+	ai2_dopath Alarm_Bay4_Striker_1 Alarm_Bay4_Striker_1
+	sleep 107
+	particle lock5_locklight01 do start
+	console_deactivate 7
+}
+
+func void do_alarm_sound(void)
+{
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+func void alarm_trig(string ai_name)
+{
+	dprint alarm_trig
+	trigvolume_enable alarm_trigvol 0
+	target_set(72,30.0)
+	if(ul5 eq 0)
+	{
+	#watch comguy set alarm, doors initially locked
+	if(count_alarm eq 0)
+	{	
+		ai2_passive Bay4_Comguy_1 1
+		ai2_spawn Alarm_Bay4_Striker_1
+		ai2_makeignoreplayer Alarm_Bay4_Striker_1 1
+		ai2_spawn Alarm_Bay4_Striker_2
+		ai2_makeignoreplayer Alarm_Bay4_Striker_2 1
+	#	ai2_spawn Bay5_Thug_1
+		ai2_spawn Bay5_Thug_2
+		ai2_doalarm Alarm_Bay4_Striker_1 4
+		input 0
+		chr_animate Bay4_Comguy_1 COMGUYconsole 
+		fade_out 0 0 0 30
+		letterbox 1
+		sleep 30
+		cm_interpolate alarm5 0
+		fade_in
+		sleep 90
+		fade_out 0 0 0 15
+		chr_teleport Alarm_Bay4_Striker_1 7033
+		sleep 15
+		cm_interpolate alarm1 0
+		fork do_alarm_sound
+		fade_in
+		sleep 40
+		cm_interpolate alarm2 240
+		sleep 320
+		cm_interpolate alarm3 90
+		sleep 70
+		particle lock5_locklight01 do start
+		sleep 20
+		cm_interpolate alarm4 0
+		sleep 60
+		fade_out 0 0 0 60
+		sleep 60
+		ai2_passive Bay4_Comguy_1 0
+	}
+
+	#no watch comguy set alarm, doors initially locked
+	if(count_alarm eq 1)
+	{	
+		ai2_spawn Alarm_Bay4_Striker_1
+		ai2_makeignoreplayer Alarm_Bay4_Striker_1 1
+		ai2_spawn Alarm_Bay4_Striker_2
+		ai2_makeignoreplayer Alarm_Bay4_Striker_2 1
+	#	ai2_spawn Bay5_Thug_1
+		ai2_spawn Bay5_Thug_2
+		input 0
+		fade_out 0 0 0 30
+		sleep 15
+		chr_teleport Alarm_Bay4_Striker_1 7033
+		ai2_doalarm Alarm_Bay4_Striker_1 4
+		sleep 15
+		letterbox 1
+		cm_interpolate alarm1 0
+		fork do_alarm_sound
+		fade_in
+		sleep 40
+		cm_interpolate alarm2 240
+		sleep 320
+		cm_interpolate alarm3 90
+		sleep 70
+		particle lock5_locklight01 do start
+		sleep 20
+		cm_interpolate alarm4 0
+		sleep 60
+		fade_out 0 0 0 60
+		sleep 60		
+	}
+	}
+
+	#watch comguy set alarm, doors already unlocked
+	if(ul5 eq 1)
+	{
+		if(trigvolume_count (66) eq 0)
+		{
+			if(count_alarm eq 0)
+			{	
+				ai2_passive Bay4_Comguy_1 1
+				ai2_spawn Alarm_Bay4_Striker_1
+				ai2_makeignoreplayer Alarm_Bay4_Striker_1 1
+				input 0
+				chr_animate Bay4_Comguy_1 COMGUYconsole 
+				fade_out 0 0 0 30
+				letterbox 1
+				sleep 30
+				cm_interpolate alarm5 0
+				fade_in
+				sleep 90
+				fade_out 0 0 0 15
+		#		chr_teleport Alarm_Bay4_Striker_1 7033
+				sleep 15
+				cm_interpolate alarm1 0
+				fork do_alarm_sound
+				fade_in
+				sleep 90
+				fade_out 0 0 0 60
+				sleep 60	
+				ai2_passive Bay4_Comguy_1 0
+			}
+
+	#no watch comguy set alarm, doors already unlocked
+			if(count_alarm eq 1)
+			{	
+				ai2_spawn Alarm_Bay4_Striker_1
+				ai2_makeignoreplayer Alarm_Bay4_Striker_1 1
+				input 0
+				fade_out 0 0 0 30
+				sleep 7
+				chr_teleport Alarm_Bay4_Striker_1 7033
+				sleep 23
+				letterbox 1
+				cm_interpolate alarm1 0
+				fork do_alarm_sound
+				fade_in
+				sleep 90
+				fade_out 0 0 0 60
+				sleep 60
+			}
+		}
+	}
+
+	cm_reset
+	fade_in
+	letterbox 0
+	input 1
+	#sleep 15
+	ai2_makeignoreplayer Alarm_Bay4_Striker_1 0
+	ai2_makeignoreplayer Alarm_Bay4_Striker_2 0
+	ai2_makeignoreplayer Bay4_Comguy_1 0
+	ai2_dopath Bay4_Comguy_1 patrol_42
+	ai2_setjobstate Bay4_Comguy_1 
+#	ai2_attack Alarm_Bay4_Striker_1 char_0
+	ai2_attack Alarm_Bay4_Striker_2 char_0
+
+}
+
+func void set_bay6_objective(string ai_name)
+{
+	dprint set_bay6_objective
+	target_set(92, 15.0)
+
+}
+
+func void spawn_bay6_top(string ai_name)
+{
+	ai2_spawn Bay6_Striker_1
+	ai2_spawn Bay6_Neutral_1
+	ai2_spawn Bay6_Neutral_2
+	ai2_spawn guard1
+	trigvolume_enable spawn_bay6_bot_tv 0
+
+	train_neutral();
+}
+
+func void spawn_bay6_bot(string ai_name)
+{
+	ai2_spawn Bay6_Striker_1b
+	ai2_spawn Bay6_Neutral_1b
+	ai2_spawn Bay6_Neutral_2
+	ai2_spawn guard1
+	trigvolume_enable spawn_bay6_top_tv 0
+
+	train_neutral();
+}
+
+func void open_warehouse(string ai_name)
+{
+	trigvolume_enable trigger_volume_06 0
+	objective_set(3)
+	sleep 10
+	target_set(93,15.0)
+	ai2_dopath Bay6_Neutral_2 Open_Warehouse
+	ai2_setjobstate Bay6_Neutral_2
+	ai2_spawn WH_Thug_A 
+	ai2_spawn WH_Striker_B
+	ai2_spawn WH_Striker_C
+	ai2_spawn WH_Striker_D
+	particle lock7_locklight01 do start
+	door_unlock 84
+	door_unlock 85
+	door_unlock 86
+
+	ai2_spawn Final_Thug_1
+	ai2_spawn Final_Thug_2
+	ai2_spawn Final_Thug_3
+	ai2_spawn Final_Thug_5
+
+	ai2_dopath WH_Thug_A WH_Thug_A
+	ai2_dopath WH_Striker_B WH_Striker_B
+	ai2_dopath WH_Striker_D WH_Striker_D
+
+	ai2_setjobstate WH_Thug_A 
+	ai2_setjobstate WH_Striker_B
+	ai2_setjobstate WH_Striker_D
+}
+
+func void t47(string ai_name)
+{
+	ai2_spawn Bay5_Thug_1
+	ai2_spawn Bay5_Thug_2
+}
+
+func void mid_warehouse_target(string ai_name)
+{
+#	Reset Target
+	target_set(96, 15.0)
+}
+func void stair1_target(string ai_name)
+{
+#	Reset Target
+	target_set(31,15.0)
+}
+
+func void stair2_target(string ai_name)
+{
+#	Reset Target
+	target_set(81,15.0)
+}
+
+func void enable_end(string ai_name)
+{
+#	trigvolume_enable end 1
+	timer_stop
+}
+
+func void gotoconsole(string ai_name)
+{
+#	dprint Guard_A_RTAlarm
+	console_activate 9
+	sleep 7
+	ai2_doalarm Bay6_Neutral_2 9
+	sleep 180
+	trigvolume_enable trigger_volume_06 1
+}
+
+func void t06(string ai_name)
+{
+	dprint t06
+	ai2_doalarm Bay6_Neutral_2 9
+}
+
+func void t10(string ai_name)
+{
+	dprint t10
+	ai2_makeignoreplayer Bay6_Neutral_1 1
+	ai2_makeignoreplayer Bay6_Neutral_1b 1
+	ai2_dopath Bay6_Neutral_1 Bay6_Thug_1
+	ai2_dopath Bay6_Neutral_1b Bay6_Thug_1_copy
+	sleep 240
+	ai2_makeignoreplayer Bay6_Neutral_1 0
+	ai2_makeignoreplayer Bay6_Neutral_1b 0	
+}
+
+func void final_striker_attack(void)
+{
+	ai2_attack WH_Striker_C char_0
+}
+
+func void end_console(string ai_name)
+{
+	dprint end_console
+	count_end_console = 1;
+	music_stop
+	timer_stop
+
+	if (count_end_striker eq 0)
+	{
+		final_striker_attack
+	}
+
+	if (count_end_striker eq 1)
+	{
+		outro_start
+	}
+
+}
+
+func void end_striker(string ai_name)
+{
+	dprint end_striker
+	count_end_striker =  1
+	music_stop
+
+	if (count_end_console eq 1)
+	{
+		outro_start
+	}
+}
+
+# we can only start the trigger volume once
+# and only if there are no bad guys in the area
+
+func void outro_start2(void)
+{
+	dprint READY_TO_BATTLE
+	outro_has_started = 1;
+	sleep 20
+	outro
+}
+
+func void outro_start(void)
+{
+	if (outro_has_started eq 0)
+	{
+		if (trigvolume_count (76) eq 0)
+		{
+			if (trigvolume_count (70) eq 1)
+			{
+				outro_start2
+			}
+		}
+	}
+}
+
+# once every 2/3 of a second, check to see if we are in the 
+# trigger and have no badguys near us
+
+func void t70(string ai_name)
+{
+	var int count_end_both = 0;
+
+	dprint t70_END
+
+	count_end_both = count_end_both + count_end_console;
+	count_end_both = count_end_both + count_end_striker;
+
+	trigvolume_enable trigger_volume_70 0
+
+	if (count_end_console eq 1)
+	{
+		outro_start
+	}
+
+	if (outro_has_started eq 0)
+	{
+		if (count_end_console eq 1)
+		{
+			final_striker_attack
+		}
+	}
+
+	if(outro_has_started eq 0)
+	{
+		sleep 40
+		trigvolume_enable trigger_volume_70 1	
+	}
+}
+
+func void t01(string ai_name)
+{
+	dprint t01
+	ai2_spawn A_t50
+}
+
+func void compass(void)
+{
+	target_set(44, 30.0)
+	ui_flash_element compass 1
+	sound_dialog_play_block c00_01_26shinatama
+	message xincoming 130
+	sleep 60
+	input 0
+	sleep 30
+	chr_animate 0 KONOKOwatch_start 60
+	sleep 59
+	chr_animate 0 KONOKOwatch_idle 15
+	text_console level_1d
+	ui_flash_element compass 0
+	chr_animate 0 KONOKOwatch_stop
+	input 1
+	sleep 60
+	objective_set (1)
+}
+
+func void t48_dead(string ai_name)
+{
+	dprint t48dead
+	td = 1;	
+	door_unlock 108
+	if(in_t64 eq 1)
+	{
+		sleep 180
+		compass
+	}
+}
+
+func void t63(string ai_name)
+{
+	dprint t63
+#	ai2_spawn A_t47
+	ai2_spawn A_t48
+}
+
+func void t64(string ai_name)
+{
+	dprint t64
+	if(in_t64 eq 0)
+	{	
+		in_t64 = 1;
+		ai2_dopath A_t48 patrol_49
+		ai2_setjobstate A_t48
+		ai2_attack A_t48 char_0
+	}
+	if(td eq 1)
+	{
+		trigvolume_enable trigger_volume_64 0
+		compass
+	}
+}
+
+func void t65(string ai_name)
+{
+	
+	dprint t65
+	if(d6 eq 0)
+	{
+		message xdoorislocked
+		dprint door_is_locked
+	}
+}
+
+func void t65b(string ai_name)
+{
+	
+	dprint t65b
+	if(d6 eq 0)
+	{
+		message_remove xdoorislocked
+	}
+}
+func void t67(string ai_name)
+{
+	
+	dprint t67
+	chr_changeteam guard1 Syndicate
+}
+
+func void t07(string ai_name)
+{
+	
+	dprint t07
+	ai2_spawn Top_Thug_5
+	ai2_spawn WH_Striker_C
+	ai2_spawn WH_Striker_D
+}
+
+func void t69(string ai_name)
+{
+	
+	dprint t69
+	ai2_spawn Top_Striker_1
+	ai2_spawn Top_Comguy_1
+	ai2_spawn Top_Thug_3
+}
+
+func void unlock6(string ai_name)
+{
+	dprint unlock6
+	d6 = 1
+	door_unlock 6
+	particle d1_locklight01 do start
+	trigvolume_enable trigger_volume_65 1
+}
+
+func void yhealth(string ai_name)
+{
+	dprint yhealth
+	message_remove
+	lock_keys 
+	input 1
+	ui_show_element right 1
+	sound_dialog_play_block c00_01_92shinatama
+	sound_dialog_play_block pause
+	ui_flash_element health 1
+	chr_animate 0 KONOKOwatch_start 60
+	sleep 59
+	chr_animate 0 KONOKOwatch_idle 15
+	text_console level_1m
+	ui_flash_element health 0
+	chr_animate 0 KONOKOwatch_stop
+	chr_forceholster 0 0
+	lock_keys keys_all
+	end_cutscene
+	if (trigvolume_count (63) eq 1)
+	{
+		ai2_spawn A_t48
+	}
+}
+
+func void console_evidence1(string ai_name)
+{
+	text_console level_1a
+	console_reset 19
+}
+
+func void console_evidence2(string ai_name)
+{
+	text_console level_1b
+	console_reset 20
+}
+
+func void t02(string ai_name)
+{
+	dprint t02
+	sleep 60
+	if(trigvolume_count (2) eq 1)
+	{
+		dprint spawned_secret
+		ai2_spawn secret2
+		trigvolume_enable trigger_volume_01 0
+		ai2_spawn A_t50
+		ai2_dopath A_t50 patrol_secret1
+		ai2_setjobstate A_t50
+	}
+}
+
+func void t05(string ai_name)
+{
+	dprint t05
+	ai2_spawn ambush_striker
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_main.bsl	(revision 405)
@@ -0,0 +1,18 @@
+#
+# warehouse_main.bsl
+#
+
+var int my_save_point;
+
+func void main(void)
+{
+	env_show 2010 0
+	gl_fog_blue=.15
+	gl_fog_red=.15
+	gl_fog_green=.15
+	gl_fog_start=.99
+	gs_farclipplane_set 5000
+	obj_create 20 20
+	level_start
+
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_particles.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_particles.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_particles.bsl	(revision 405)
@@ -0,0 +1,71 @@
+#
+# warehouse_particle.bsl
+#
+
+
+
+func void rat1(void)
+{
+	particle rat1 pulse
+}
+func void rat2(void)
+{
+	particle rat2 pulse
+}
+func void rat3(void)
+{
+	particle rat3 pulse
+}
+func void rat4(void)
+{
+	particle rat4 pulse
+}
+func void rat5(void)
+{
+	particle rat5 pulse
+}
+func void rat6(void)
+{
+	particle rat6 pulse
+}
+func void rat7(void)
+{
+	particle rat7 pulse
+}
+func void bug1(void)
+{
+	particle bug1 pulse
+}
+func void bug2(void)
+{
+	particle bug2 pulse
+}
+func void bug3(void)
+{
+	particle bug3 pulse
+}
+func void bug4(void)
+{
+	particle bug4 pulse
+}
+func void bug5(void)
+{
+	particle bug5 pulse
+}
+func void bug6(void)
+{
+	particle bug6 pulse
+}
+func void bug7(void)
+{
+	particle bug7 pulse
+}
+func void bug8(void)
+{
+	particle bug8 pulse
+}
+func void bug0(void)
+{
+	particle bug0 pulse
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_train2.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_train2.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_train2.bsl	(revision 405)
@@ -0,0 +1,960 @@
+func void cheater(void)
+{
+	invincible=1
+	omnipotent=1
+	lock_keys keys_all
+	chr_teleport 0 7023
+}
+###################################
+# variables used in train2 scipts #
+###################################
+
+#used to see if PPK combo was successful
+var int combo_did;
+
+#used to determine when to activate or deactivate blocking drone, current script comments out the usefulness of this variable
+var int count_block;
+
+#determines if reload in ballistics or cell
+var int reload=0;
+
+#makes sure reloading cells doesn't play before player has even picked up the rifle
+var int droid_active;
+
+#sees if you already reloaded ballistics ammo before the system had a chance to prompt you to do so
+var int already_reloaded;
+
+#sees if you already reloaded cell ammo before system prompted you to do so.
+var int already_reloaded2;
+
+#counts number of reload prompts necessary, if you reloaded more than one time, you lose rating points
+var int had_to_reload;
+
+#determines when inside the target shooting function
+var int inside_target_function;
+
+#determines when inside ammo reload function
+var int inside_ammo_function = 0;
+
+#determines when not to display block droid message
+var int block_off;
+
+################################
+# fight training scripts below #
+################################
+
+#########################
+# punch and kick script #
+#########################
+func void train_fighting(string ai_name)
+{
+	how_far_along = 4;
+	music_stop
+	particle obj3 kill
+	particle obj4 kill	
+	trig_deactivate 1
+	trig_deactivate 2
+	trig_deactivate 3
+	message_remove c01_50_23
+	message_remove jump_encourage
+	message_remove jump_encourage2
+	sleep 60
+	sound_dialog_play_interrupt c00_01_64shinatama
+	message_remove
+	message begin_fight 240
+	sleep 240
+#	PUNCH-KICK
+	lock_keys keys_attack
+	message xpunch
+	chr_wait_animtype 0 punch
+	sleep 60
+	message_remove xpunch
+	sleep 60
+	message xkick
+	chr_wait_animtype 0 kick
+	sleep 60
+	message_remove xkick
+	sleep 60
+
+	if (how_far_along eq 4)
+	{
+		#throw two punches
+		sound_dialog_play_block c00_01_65shinatama
+		message punch
+		chr_wait_animtype 0 punch2
+		message_remove punch
+		sleep 60
+		message c01_50_27 180
+		sound_dialog_play_interrupt c00_01_66shinatama
+		sound_dialog_play_block pause
+		sleep 40
+	}
+
+	if (how_far_along eq 4)
+	{
+#		more combo
+		sound_dialog_play_block c00_01_67shinatama
+		sound_dialog_play_block pause
+		sleep 60
+	}
+
+	if (how_far_along eq 4)
+	{
+#		FIRST COMBO
+		message c01_50_29
+		fork combo_wait
+		chr_wait_animtype 0 ppk
+		combo_did = 1;
+		sleep 60
+		message_remove c01_50_29
+		message_remove c01_50_29b
+		sleep 60
+		sound_dialog_play_interrupt c00_01_07shinatama
+		message xppk 180
+		sleep 180
+	}
+	if(combo_did eq 1)
+	{
+		if (how_far_along eq 4)
+		{
+#		try linking for more combos
+		sound_dialog_play_block c00_01_69shinatama
+		sound_dialog_play_block pause
+		sleep 240
+		}
+
+		if (how_far_along eq 4)
+		{
+#		you're now ready to train with a sparring partner
+		sound_dialog_play_block c00_01_70shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		}
+		if (how_far_along eq 4)
+		{
+#		proceed to the next room
+		sound_dialog_play_block c00_01_71shinatama
+		message xspar2
+		ai2_spawn dum_hit_flash
+		chr_lock_active dum_hit_flash
+		chr_death_lock dum_hit_flash 1
+		door_unlock 99
+		particle door2_locklight02 do start
+		}
+	}
+}
+
+func void combo_wait(string ai_name)
+{
+	sleep 600
+	if (combo_did eq 0)
+	{
+		dprint rating
+		rating =  rating + 1
+		rating
+		message_remove c01_50_29
+		sound_dialog_play_block c00_01_68shinatama
+		sleep 60
+	}
+	if (combo_did eq 0)
+	{
+		message c01_50_29b 240
+		sleep 240
+	}
+	if (combo_did eq 0)
+	{
+		message c01_50_29
+	}
+
+#	if(combo_did eq 0)
+#	{
+#		if (how_far_along eq 4)
+#		{
+#			try linking for more combos
+#			sound_dialog_play_block c00_01_69shinatama
+#			sound_dialog_play_block pause
+#			sleep 240
+#		}
+#
+#		if (how_far_along eq 4)
+#		{
+#			you're now ready to train with a sparring partner
+#			sound_dialog_play_block c00_01_70shinatama
+#			sound_dialog_play_block pause
+#			sleep 30
+#		}
+#		if (how_far_along eq 4)
+#		{
+#			proceed to the next room
+#			sound_dialog_play_block c00_01_71shinatama
+#			message xspar2
+#			ai2_spawn dum_hit_flash
+#			chr_lock_active dum_hit_flash
+#			chr_death_lock dum_hit_flash 1
+#			door_unlock 99
+#			particle door2_locklight02 do start
+#		}
+#	}
+}
+
+##################################
+# train player about hit flashes #
+##################################
+func void train_hit_flash(string ai_name)
+{
+	particle steam stop
+	music_train2
+	how_far_along = 6;
+	message_remove xspar2
+	sleep 60
+#	try hitting this dummy
+	sound_dialog_play_block c00_01_77shinatama
+	message start_hit
+	ai2_makeignoreplayer dum_hit_flash 1
+}
+
+func void hurt_dummy1(string ai_name)
+{
+	message_remove start_hit
+	sleep 60
+	door_lock 99
+	particle door2_locklight02 do stop
+#	dynamic hit flashes
+	message c01_50_35 300
+	sleep 240
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+	ai2_setjobstate dum_hit_flash
+	sleep 60
+#	more dynamic hit flashes blue
+	message blueflash 300
+	sleep 240
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+	ai2_setjobstate dum_hit_flash
+	sleep 60
+	message c01_50_37 300
+	sleep 240
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+	ai2_setjobstate dum_hit_flash
+	sleep 60
+#	more dynamic hit flashes
+	message c01_50_38 300
+	sleep 240
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+	ai2_setjobstate dum_hit_flash
+#	move on to the next room to learn how to perform the most dangerous attacks.
+	sleep 60
+	sound_dialog_play_block c00_01_78shinatama
+	message goto_throw
+	sleep 60
+	door_unlock 100
+	particle door3_locklight02 do start
+	ai2_spawn dum_train_throw
+	chr_lock_active dum_train_throw
+	chr_death_lock dum_train_throw 1
+	ai2_makeignoreplayer dum_train_throw 1
+}
+
+###################################
+# train player to throw opponents #
+###################################
+func void lockthrow(void)
+{
+	door_lock 100
+	particle door3_locklight02 do stop
+}
+
+func void train_throw(string ai_name)
+{
+	how_far_along = 7;
+	message_remove goto_throw
+	sleep 60
+	if (how_far_along eq 7)
+	{
+#		FIRST THROW
+		sound_dialog_play_block c00_01_79shinatama
+		message c01_50_41
+		chr_wait_animtype 0 throw_forward_punch throw_forward_kick run_throw_forward_punch run_throw_forward_kick 
+		message_remove c01_50_41
+		sleep 60
+	}
+
+	if (how_far_along eq 7)
+	{
+#		more throws
+		sound_dialog_play_block c00_01_80shinatama
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		message xthrow1 360
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		message xthrow2 360
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+		sleep 180
+		ai2_dopath dum_train_throw patrol_train_throw2
+		ai2_setjobstate dum_train_throw
+	}
+
+	if (how_far_along eq 7)
+	{
+#		Proceed to the next room and try blocking the training dummy'sleep 240 attacks.
+		message goto_block
+		sleep 60
+		door_unlock 101
+		particle door4_locklight02 do start
+		particle door4b_locklight02 do start
+		ai2_spawn dum_train_block
+		ai2_makeignoreplayer dum_train_block 1
+		chr_invincible char_0 1
+	}
+
+}
+
+###############################
+# train player to block blows #
+###############################
+func void train_block(string ai_name)
+{
+#introduce blocking
+	how_far_along = 5;
+	message_remove goto_block
+#	dummy attack
+	sound_dialog_play_block c00_01_72shinatama
+	sound_dialog_play_block pause
+	sound_dialog_play_block c00_01_73shinatama
+	if(count_block eq 0)
+	{
+		message c01_50_33
+	}
+}
+
+func void train_block2(string ai_name)
+{	
+	ai2_makeignoreplayer dum_train_block 0
+	ai2_dopath dum_train_block patrol_56b
+	ai2_setjobstate dum_train_block
+	message_remove c01_50_33
+	if(count_block eq 0)
+	{
+		count_block = 1
+		door_lock 101
+		door_close 101
+		particle door4_locklight02 do stop
+		chr_delete dum_train_throw
+		chr_delete dum_hit_flash
+		chr_delete demo1
+		chr_delete demo2
+		chr_delete demo3
+		if (how_far_along eq 5)
+		{
+#			more blocking
+			sleep 60
+			message c01_50_32 300
+			sound_dialog_play_block c00_01_74shinatama
+			sound_dialog_play_pause 
+			sleep 30
+			sound_dialog_play_block c00_01_75shinatama
+			message xblocking2 300
+			sound_dialog_play_pause 
+			sleep 30
+			sound_dialog_play_block c00_01_76shinatama
+		}
+		sleep 120
+	#	message_remove xdronedeactive
+		ai2_makeignoreplayer dum_train_block 1
+		ai2_dopath dum_train_block patrol_56b
+		ai2_setjobstate dum_train_block 
+		sound_dialog_play_block c00_01_83shinatama
+		sound_dialog_play_block pause
+		door_unlock 102
+		particle door5_locklight02 do start
+		message goto_shoot
+		chr_inv_reset 0
+		music_stop
+		sleep 60
+		dprint spawn_shoot
+		ai2_spawn dum_train_shoot
+		ai2_spawn dum_train_shoot2
+		ai2_passive dum_train_shoot 1
+		ai2_passive dum_train_shoot2 1
+		chr_invincible dum_train_shoot 1
+		chr_invincible dum_train_shoot2 1
+		chr_invincible char_0 0
+		console_deactivate 12
+		trigvolume_enable tv75 0
+		trigvolume_enable tv74 0
+	}
+}
+
+func void disable_tv46(void)
+{
+	message_remove c01_50_33
+	trigvolume_enable trigger_volume_46 0
+}
+
+##################################
+# put drones back on their spots #
+##################################
+func void flash_path(string ai_name)
+{
+	sleep 90
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+}
+
+func void throw_path(string ai_name)
+{
+	sleep 90
+	ai2_dopath dum_train_throw patrol_train_throw2
+}
+
+func void block_path(string ai_name)
+{
+	if(block_off eq 0)
+	{
+		block_off = 1;
+		message xdronedeactive 180
+	}
+	ai2_makeignoreplayer dum_train_block 1
+	ai2_dopath dum_train_block patrol_56
+	sleep 180
+	block_off = 0;
+}
+
+func void block_path2(string ai_name)
+{
+
+	ai2_makeignoreplayer dum_train_block 1
+	ai2_dopath dum_train_block patrol_56
+}
+######################################################
+# regenerate first two training dummies as necessary #
+######################################################
+
+func void regen1(string ai_name)
+{
+	dprint regen1
+	message_remove blueflash
+	message_remove c01_50_37
+	message_remove c01_50_38
+	sleep 60
+	message xregen1 180
+	sleep 180
+	chr_set_health dum_hit_flash 50
+	ai2_dopath dum_hit_flash patrol_dum_hit_flash
+	ai2_setjobstate dum_hit_flash
+}
+
+func void regen2(string ai_name)
+{
+	dprint regen2
+	sleep 60
+	message xregen1 180
+	sleep 180
+	chr_set_health dum_train_throw 50
+	ai2_dopath dum_hit_flash patrol_train_throw2
+	ai2_setjobstate dum_train_throw
+}
+
+#########################
+# train player to shoot #
+#########################
+func void train_shoot(string ai_name)
+{
+#	message_remove xdroneactive
+	message_remove xdronedeactive
+	particle g_tap1 create
+	sleep 7
+	weapon_spawn w1_tap 7042
+	wp_disable_fade=1
+	how_far_along = 8;
+	message_remove goto_shoot
+	sleep 60
+	ai2_dopath dum_train_throw patrol_train_throw
+	ai2_setjobstate dum_train_throw
+
+	if (how_far_along eq 8)
+	{
+	lock_keys keys_inventory
+	lock_keys keys_reload
+#	approach weapons
+	sound_dialog_play_block c00_01_84shinatama
+	sound_dialog_play_pause 
+	chr_wait_animtype char_0 Pickup_Pistol Pickup_Pistol_Mid 
+	door_lock 102
+	particle door5_locklight02 do stop
+	trigvolume_enable tv75 1
+	trigvolume_enable tv74 1
+	ui_show_element left 1
+	sleep 60
+	message c01_50_54
+#	hit targets
+	sound_dialog_play_block c00_01_85shinatama
+	chr_wait_animtype char_0 Autopistol_Recoil
+	sleep 120
+	message_remove c01_50_54
+	sleep 60
+	message c01_50_53 300
+	sleep 300
+	}
+}
+
+func void enter_ammo_function(void)
+{
+   dprint enter_ammo_function
+   inside_ammo_function = 1;
+}
+
+func void exit_ammo_function(void)
+{
+   dprint exit_ammo_function
+   inside_ammo_function = 0;
+}
+
+func void need_ammo(string ai_name)
+{
+   trigvolume_enable tv74 0
+
+   sleep 67
+   var int empty_weapon = chr_has_empty_weapon(char_0);
+
+   dprint trying_ammo_function
+
+   if (inside_ammo_function eq 0)
+   {
+      dprint doing_ammo_function
+      enter_ammo_function();
+
+	   if(empty_weapon eq 1)
+	   {
+		sleep 15
+		if(reload eq 0)
+		{
+			message_remove xkeepshoot
+			already_reloaded = 0;
+			sound_dialog_play_block c00_01_87shinatama
+			message c01_50_61
+		#	generate powerup
+			particle g_tap1 create
+			sleep 7
+			powerup_spawn ammo 7042
+			particle g_tap2 create
+			sleep 7
+			powerup_spawn ammo 7043
+			chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object
+			fork remove_reload_message
+		#	sleep 60
+			message_remove c01_50_61
+			sleep 90
+			if(already_reloaded eq 0)
+			{
+				message xreload
+				chr_wait_animtype char_0 reload_pistol
+				increase_rating()
+				message_remove xreload
+				sleep 90
+			}
+			message xkeepshoot
+		}
+		if(reload eq 1)
+		{
+			if(droid_active eq 1)
+			{
+				message c01_50_62
+			#	generate powerup
+				particle g_phr1 create
+				sleep 7
+				powerup_spawn cell 7044
+				particle g_phr2 create
+				sleep 7
+				powerup_spawn cell 7045
+				chr_wait_animtype char_0 Pickup_Object_Mid Pickup_Object
+			#	sleep 60
+				message_remove c01_50_62
+				fork remove_reload_message2
+				if(already_reloaded2 eq 0)
+				{
+					sleep 90
+					message xreload
+					chr_wait_animtype char_0 reload_rifle
+					dprint rating
+					increase_rating()
+					message_remove xreload
+				}
+			}
+		}
+	   }
+
+	   exit_ammo_function();
+	}
+
+   sleep 60
+   trigvolume_enable tv74 1
+}
+
+func void increase_rating(void)
+{
+	dprint rating
+	if(had_to_reload ne 0)
+	{
+
+		rating = rating + 1;
+	}
+	had_to_reload = had_to_reload + 1;
+}
+
+func void remove_reload_message(void)
+{
+	chr_wait_animtype char_0 reload_pistol
+	already_reloaded = 1;
+}
+
+func void remove_reload_message2(void)
+{
+	chr_wait_animtype char_0 reload_rifle
+	already_reloaded2 = 1;
+}
+
+func void enter_target_function(void)
+{
+   dprint enter_target_function
+   inside_target_function = 1;
+}
+
+func void exit_target_function(void)
+{
+   dprint exit_target_function
+   inside_target_function = 0;
+}
+
+func void targets_are_gone(void)
+{
+	reload=1;
+	message_remove xkeepshoot
+	trigvolume_enable tv75 0
+	sleep 7
+	particle g_phr1 create
+	sleep7
+	weapon_spawn w3_phr 7045
+	sound_dialog_play_block c00_01_86shinatama
+	sound_dialog_play_block pause
+	message_remove
+	#plasma, switch weapons
+	sound_dialog_play_block c00_01_88shinatama
+	chr_wait_animtype char_0 Pickup_Rifle Pickup_Rifle_Mid 
+	droid_active = 1;
+	sleep 30
+	#activate drone, hit it
+	chr_invincible dum_train_shoot 0		
+	ai2_passive dum_train_shoot 0
+	sound_dialog_play_block c00_01_89shinatama
+	ai2_dopath dum_train_shoot patrol_train_shoot
+	ai2_setjobstate dum_train_shoot
+}
+
+func void targets_are_not_gone(void)
+{
+	# CB: turn off the trigger volume and sleep for a second
+	# so as not to cause hideous performance loss
+	trigvolume_enable tv75 0
+	sleep 60
+	trigvolume_enable tv75 1
+}
+
+func void targets_gone(string ai_name)
+{
+	if(inside_target_function eq 0)
+	{	
+		enter_target_function()
+
+		var int num_broken = env_broken(3001, 3018);
+
+		if (num_broken eq 18)
+		{
+			targets_are_gone();
+		}
+	
+		if (num_broken < 18)
+		{
+			targets_are_not_gone();
+		}
+
+		exit_target_function
+	}
+}
+
+func void droid1_gone(string ai_name)
+{
+	if (how_far_along eq 8)
+	{
+		chr_invincible dum_train_shoot2 0
+#		now side to side
+		sound_dialog_play_block c00_01_90shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		ai2_passive dum_train_shoot2 0
+		ai2_dopath dum_train_shoot2 patrol_train_shoot2
+		ai2_setjobstate dum_train_shoot2
+	}
+}
+
+func void droid2_gone(string ai_name)
+{
+	if (how_far_along eq 8)
+	{
+		reload = 2;
+		droid_active = 0;
+		message_remove
+		cinematic_start (SHINnametag, 180, 180, 15, 1, 20, false)
+#		great, done training
+		chr_changeteam char_0 Syndicate
+		music_train3
+		if(rating eq 0)
+		{
+			message poopy 
+
+		}
+		if(rating eq 1)
+		{
+			message poopy2 
+
+		}
+		if(rating eq 2)
+		{
+			message poopy3 
+
+		}
+		if(rating eq 3)
+		{
+			message poopy4 
+
+		}
+		if(rating eq 4)
+		{
+			message poopy5 
+
+		}
+		if(rating eq 5)
+		{
+			message poopy6 
+
+		}
+		if(rating > 5)
+		{
+			message poopy7 
+
+		}
+		sound_dialog_play_block c00_01_91shinatama
+		sound_dialog_play_block pause
+		sleep 40
+		sound_dialog_play_block c00_01_81shinatama
+		sound_dialog_play_block pause
+		message_remove
+		sleep 40
+		sound_dialog_play_block c00_01_82shinatama
+		sound_dialog_play_block pause
+		cinematic_stop (SHINnametag, 15, 20)
+ 		message xf1 400
+		sleep 400
+		message xlastreview
+		particle obj_lastreview create
+		console_activate 12
+		wp_disable_fade=0
+	}
+}
+
+func void lastreview(string ai_name)
+{
+	music_stop
+	particle obj_lastreview kill
+	message_remove
+	message_remove xlastreview
+	text_console level_1f
+	lock_keys keys_all
+	sleep 60
+	dprint swing
+	swing
+	ui_suppress_prompt=0
+} 
+
+######################################
+# training scripts used in warehouse #
+######################################
+# note: health function 'yhealth' is in the level_script file #
+
+func void train_fathealth(string ai_name)
+{
+	chr_wait_animtype char_0 Pickup_Object 
+	if(trigvolume_count (80) eq 1)
+	{
+		sleep 90
+		message xtabhypo 300
+		sound_dialog_play_block c00_01_93shinatama
+		sound_dialog_play_block pause
+		sleep 40
+		sound_dialog_play_block c00_01_94shinatama
+	}
+}
+
+func void intro_enemies(string ai_name)
+{
+	dprint intro_enemies
+	how_far_along = 11;
+
+	music_firstfight
+
+	if (how_far_along eq 11)
+	{
+		ai2_spawn Bay2_Thug_1
+		ai2_spawn Bay2_Thug_2
+	}
+
+	if (how_far_along eq 11)
+	{
+#		enemies
+		message c01_50_84 240
+		sleep 360
+	}
+}
+
+func void train_alarm(string ai_name)
+{
+	how_far_along = 13;
+
+	if (how_far_along eq 13)
+	{
+	ai2_spawn Bay4_Comguy_1
+#	alarm
+	sleep 180
+	message c01_50_88 240
+	sleep 240
+	}
+
+	if (how_far_along eq 13)
+	{
+#	alarm
+	message c01_50_89 240
+	sleep 240
+	}
+
+#	if (how_far_along eq 13)
+#	{
+#	alarm
+#	message c01_50_90 240
+#	sleep 240
+#	}
+}
+
+func void train_neutral(string ai_name)
+{
+	how_far_along = 14;
+	target_set(92,15.0)
+	if (how_far_along eq 14)
+	{
+#		neutrals
+		message c01_50_91 240
+		sleep 240
+		sound_dialog_play_block c00_01_97shinatama
+	}
+}
+
+func void train_timer(string ai_name)
+{
+	how_far_along = 15;
+
+	if(how_far_along eq 15)
+	{
+		target_set(96,15.0)
+		timer_start 180 OutroLose
+		sound_dialog_play_block c00_01_95shinatama
+		sleep 180
+		objective_set(4)
+		sound_dialog_play_block pause
+		music_timer
+	}
+
+	if (how_far_along eq 15)
+	{
+		sleep 60
+		message timer_text 300
+		sleep 360
+		message timer_text2 240
+	}
+}
+
+############################
+# warn about alarm console #
+############################
+func void alarm_warning(string ai_name)
+{ 
+	if(count_alarm eq 0)
+	{
+		message alarm_warn 300
+	}
+	count_alarm = 1;
+}
+
+func void alarm_warningb(string ai_name)
+{ 
+	count_alarm = 0;
+}
+
+#############################
+# consoles and compass hint #
+#############################
+func void console_jump(string ai_name)
+{
+	text_console level_1g
+	console_reset 18
+}
+
+func void console_escape(string ai_name)
+{
+	text_console level_1h
+	console_reset 17
+}
+
+func void console_attack(string ai_name)
+{
+	text_console level_1i
+	console_reset 16
+}
+
+func void console_flash(string ai_name)
+{
+	text_console level_1j
+	console_reset 15
+}
+
+func void console_throw(string ai_name)
+{
+	text_console level_1k
+	console_reset 14
+}
+
+func void console_block(string ai_name)
+{
+	text_console level_1l
+	console_reset 13
+}
+
+func void t77(string ai_name)
+{
+	message xarrow 400
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_training_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_training_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/EnvWarehouse/warehouse_training_scripts.bsl	(revision 405)
@@ -0,0 +1,1143 @@
+######################
+# training variables #
+######################
+
+#checks to see if player is in correct room for executing current script
+var int how_far_along=0;
+
+#number of dash track lights
+var int tcount=17;
+
+#sees if player sprinted
+var int didsprint;
+
+#sees if player jumped up to big crate with power cell
+var int powerupon;
+
+#checks to see if OK to run training (for restored game funkiness)
+var int can_train_movement = 1;
+
+#continues crouch training
+var int onto_crouch2;
+
+#used to determine if dashing on track for the first time
+var int A;
+
+#used to determine if finished run was slow
+var int B;
+
+#set if running was failed
+var int bad;
+
+#used to measure performance of player
+var int rating = 1;
+
+#karen dies!
+var int demo3dead;
+
+#determines which jump script continues after getting on biggest crate	
+var int got_ammo;
+
+#prevents forcefield and particle/gunk from starting multiple times and not after jumping to the next room
+var int forcefieldstopped;
+var int particlestarted;
+
+##################
+# basic movement #
+##################
+func void train_movement(string ai_name)
+{
+	if (can_train_movement eq 1)
+	{
+		train_movement_internal
+	}
+}
+
+func void train_movement_internal(void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate KonCamFoot01 0
+	particle forcefield1 do start
+	particle forcefield2 do start
+	particle steam start
+	ui_suppress_prompt=1
+	ui_show_element left 0
+	ui_show_element right 0
+	target_set (1,0.0)
+	env_show 2010 0
+	how_far_along = 1;
+	trigvolume_enable trigger_volume_54 0
+	lock_keys 
+	lock_keys keys_pause
+	trigvolume_enable tv_train_door 0
+	trigvolume_enable tv1 0
+	trigvolume_enable tv2 0	
+	trigvolume_enable tv3 0
+	trigvolume_enable tv4 0
+	trigvolume_enable tv5 0
+	trigvolume_enable tv6 0
+	trigvolume_enable tv7 0
+	trigvolume_enable tv8 0
+	trigvolume_enable tv9 0
+	trigvolume_enable tv10 0
+	trigvolume_enable tv11 0
+	trigvolume_enable tv12 0
+	trigvolume_enable tv13 0
+	trigvolume_enable tv14 0
+	trigvolume_enable tv15 0
+	trigvolume_enable tv16 0
+	trigvolume_enable tv17 0
+	trigvolume_enable tv_move4 0
+	trigvolume_enable tv_end 0
+	trigvolume_enable tv_review 0
+	console_deactivate 11
+
+	dprint train_movement
+
+	if(how_far_along eq 1)
+	{	
+		input 0
+		fade_in 120
+		sleep 90
+		fork Kon
+		####Shinatama telling Konoko that their neurolink is working perfectly, and telling her they're about to start training.
+		cinematic_start (SHINnametag, 180, 180, 15, 1, 20, false)
+		sleep f10
+		music_train1
+		sound_dialog_play c00_01_29shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		sound_dialog_play c00_01_30shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		sound_dialog_play c00_01_31shinatama
+		sound_dialog_play_block pause		
+		sleep 30
+		sound_dialog_play c00_01_32shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		message xwelcome 240
+		sound_dialog_play c00_01_35shinatama
+		sound_dialog_play_block pause
+		cinematic_stop (SHINnametag, 15, 20)
+		input 1
+	}
+
+	if(how_far_along eq 1)
+	{
+		#use mouse
+		message xmouse 
+		chr_wait_animtype 0 standing_turn_left standing_turn_right
+		message_remove xmouse
+		sleep 60
+		#move with wads
+		lock_keys keys_movement 
+		message xmove 
+		chr_wait_animtype 0 run
+		sleep 60
+		message_remove xmove
+		sleep 60
+	}
+	if(how_far_along eq 1)
+	{
+		#combine to move diag
+		message xcombo 300
+		sleep 300
+	}
+	if(how_far_along eq 1)
+	{
+		#control console
+		message xconsole1
+		sleep 30
+		particle obj_control create
+		trigvolume_enable trigger_volume_54 1
+		console_activate 10
+		lock_keys keys_action
+
+	}
+}
+
+func void move2(string ai_name)
+{
+	#trigger volume near control console
+	message_remove xmouse
+	message_remove xmove
+	message_remove xcombo
+	message_remove xconsole1
+	particle obj_control kill
+}
+
+func void lights(string ai_name)
+{
+		particle t17 create
+		sleep 60
+		particle t16 create
+		sleep 60
+		particle t15 create
+		sleep 60
+		particle t14 create
+		sleep 60
+		particle t13 create
+		sleep 60
+		particle t12 create
+		sleep 60
+		particle t11 create
+		sleep 60
+		particle t10 create
+		sleep 60
+		particle t9 create
+		sleep 60
+		particle t8 create
+		sleep 60
+		particle t7 create
+		sleep 60
+		particle t6 create
+		sleep 60
+		particle t5 create
+		sleep 60
+		particle t4 create
+		sleep 60
+		particle t3 create
+		sleep 60
+		particle t2 create
+		sleep 60
+		particle t1 create
+}
+
+func void move3(string ai_name)
+{
+	#used control console
+	message_remove xactivate1
+	particle obj_control kill
+	sleep 60
+
+	if(A eq 0)
+	#first run, so warm up
+	{
+		if(how_far_along eq 1)
+		{
+			#we'll use lights for dash
+			sound_dialog_play c00_01_36shinatama			
+			message xactivate2 300
+			fork lights
+			sleep 30
+			#better warmup
+			sound_dialog_play_block c00_01_33shinatama
+			sound_dialog_play_block pause	
+		}
+		
+		if(how_far_along eq 1)
+		{
+			#turn and dash
+			message xdash1
+			fork encourage_dash
+			chr_wait_animation 0 KONSPRrun_lt KONSPRrun_rt
+			didsprint = 1
+			message_remove xdash1
+			message_remove xencouragedash
+			sleep 60
+			sound_dialog_play c00_01_37shinatama
+		#	sound_dialog_play_block pause
+		}
+
+		if(how_far_along eq 1)
+		{
+			#beautiful sprint
+			message xdash2 240
+			sleep  240
+		}
+
+		if(how_far_along eq 1)
+		{
+			#dash is fast but loud
+			message xdash3
+			sound_dialog_play c00_01_38shinatama
+			sound_dialog_play_block pause
+		}
+	}
+
+	if(A eq 1)
+	{
+		tcount= 17;
+		B = 0;
+		bad = 0;
+		if(how_far_along eq 1)
+		{
+		#	sound_dialog_play_block c00_01_41shinatama
+			dprint kill_parts
+			particle t17 kill
+			particle t16 kill
+			particle t15 kill
+			particle t14 kill
+			particle t13 kill
+			particle t12 kill
+			particle t11 kill
+			particle t10 kill
+			particle t9 kill
+			particle t8 kill
+			particle t7 kill
+			particle t6 kill
+			particle t5 kill
+			particle t4 kill
+			particle t3 kill
+			particle t2 kill
+			particle t1 kill
+			dprint recreate_parts
+			particle t17 create
+			particle t16 create
+			particle t15 create
+			particle t14 create
+			particle t13 create
+			particle t12 create
+			particle t11 create
+			particle t10 create
+			particle t9 create
+			particle t8 create
+			particle t7 create
+			particle t6 create
+			particle t5 create
+			particle t4 create
+			particle t3 create
+			particle t2 create
+			particle t1 create
+			trigvolume_reset tv_move4 
+		}
+	}
+
+	if(how_far_along eq 1)
+	{
+		message_remove xdash3
+		sleep 60
+		#goto track and trigger script in volume
+		particle obj_start create
+		message xgotrack
+		trigvolume_enable tv_move4 1
+	}
+}
+
+func void encourage_dash(string ai_name)
+{
+	sleep 600
+	if(didsprint eq 0)
+	{
+		message_remove xdash1
+		sleep 60
+		#that'sleep 300 not a dash
+		sound_dialog_play c00_01_39shinatama
+		message xencouragedash
+		dprint rating
+		rating = rating + 1;
+	}
+}
+
+func void move4(string ai_name)
+{
+  if(A eq 0)
+  {
+	if(how_far_along eq 1)
+	{
+		message_remove xgotrack
+		trigvolume_enable tv1 1
+		trigvolume_enable tv2 1	
+		trigvolume_enable tv3 1
+		trigvolume_enable tv4 1
+		trigvolume_enable tv5 1
+		trigvolume_enable tv6 1
+		trigvolume_enable tv7 1
+		trigvolume_enable tv8 1
+		trigvolume_enable tv9 1
+		trigvolume_enable tv10 1
+		trigvolume_enable tv11 1
+		trigvolume_enable tv12 1
+		trigvolume_enable tv13 1
+		trigvolume_enable tv14 1
+		trigvolume_enable tv15 1
+		trigvolume_enable tv16 1
+		trigvolume_enable tv17 1
+		particle obj_start kill
+		sound_dialog_play c00_01_41shinatama
+		sleep 60
+		message xrun
+	}
+  }
+ 	if(A eq 1)
+  	{
+		if(how_far_along eq 1)
+		{
+			message_remove xgotrack
+			trigvolume_reset tv1 
+			trigvolume_reset tv2 
+			trigvolume_reset tv3 
+			trigvolume_reset tv4 
+			trigvolume_reset tv5 
+			trigvolume_reset tv6 
+			trigvolume_reset tv7 
+			trigvolume_reset tv8 
+			trigvolume_reset tv9 
+			trigvolume_reset tv10 
+			trigvolume_reset tv11 
+			trigvolume_reset tv12 
+			trigvolume_reset tv13 
+			trigvolume_reset tv14 
+			trigvolume_reset tv15 
+			trigvolume_reset tv16 
+			trigvolume_reset tv17 
+			particle obj_start kill
+			sound_dialog_play c00_01_41shinatama
+			sleep 60
+			message xrun
+		}
+	}
+
+	particle obj_end create
+	trigvolume_reset tv_end
+	trigvolume_enable tv_end 1
+	sleep 660
+	dprint timeup
+	B = 1;
+}
+
+func void track_end(string ai_name)
+{
+	if(B eq 1)
+	{
+		bad = 1;
+	}
+	if(how_far_along eq 1)
+	{
+		particle obj_end kill
+		particle obj_start kill
+		message_remove
+		message_remove xrun
+		sleep 60
+		###all targets hit
+		if(tcount eq 0)
+		{
+			#### all hit, RUN WAS fast	
+			if(bad eq 0)
+			{
+				sound_dialog_play_block c00_01_42shinatama
+				message xgreat 240
+				A = 0;
+				sleep 240
+			}
+			####all hit, RUN WAS slow
+			if(bad eq 1)
+			{
+				dprint rating
+				rating = rating + 1;
+				sound_dialog_play_block c00_01_11shinatama
+				message xgoodbutslow 240
+				A = 0;
+				sleep 240
+			}
+		}
+
+		####targets were MISSED
+		if(tcount ne 0)
+		{
+			dprint rating
+			rating = rating + 1;
+			###missed, fast
+			if(bad eq 0)
+			{
+				sound_dialog_play_block c00_01_43shinatama
+				message xpractice 360
+				A = 1;
+				sleep 360
+			}
+			####missed, slow
+			if(bad eq 1)
+			{
+				sound_dialog_play_block c00_01_43shinatama
+				message xslowtoo 360
+				A = 1;
+				sleep 360
+			}
+		}
+	}
+   #####THIS ENDS BASIC MOVEMENTS FOR SUCCESSFUL RUNNERS
+  if(A eq 0)
+  {
+	if(how_far_along eq 1)
+	{
+		sound_dialog_play_block c00_01_44shinatama
+		message xendbasic 300
+		sleep 300
+	}
+
+	if(how_far_along eq 1)
+	{
+		sound_dialog_play c00_01_45shinatama
+		message xreview 
+		console_activate 11
+		trigvolume_enable tv_review 1
+		particle obj_data create
+	}
+  }
+      ####IF THE RUN WASN'T GOOD, THEN RESET CONSOLE
+	if(A eq 1)
+	{
+		message xconsole1
+		sleep 30
+		particle obj_control create
+		console_reset 10
+		console_activate 10
+		trigvolume_reset trigger_volume_54 		
+		trigvolume_enable trigger_volume_54 1
+	}
+}
+
+func void review(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		message_remove xreview
+		particle obj_data kill
+	#	sleep 60
+	#	message xactivate3
+	}
+}
+
+func void review2(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+	#	message_remove xactivate3
+		text_console level_1c
+		console_reset 11
+		sleep 120
+		message xgodoor
+		trigvolume_enable tv_train_door 1
+		sound_dialog_play c00_01_48shinatama
+	#	sound_dialog_play_block pause
+		particle obj1 create
+	}
+}
+
+func void track17(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t17 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track16(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t16 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track15(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t15 kill
+		tcount = tcount - 1
+}
+}
+
+func void track14(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t14 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track13(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t13 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track12(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t12 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track11(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		tcount = tcount - 1
+		particle t11 kill
+	}
+}
+
+func void track10(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t10 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track9(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t9 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track8(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t8 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track7(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t7 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track6(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t6 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track5(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t5 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track4(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t4 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track3(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t3 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track2(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t2 kill
+		tcount = tcount - 1
+	}
+}
+
+func void track1(string ai_name)
+{
+	if(how_far_along eq 1)
+	{
+		particle t1 kill
+		tcount = tcount - 1
+	}
+}
+
+###################
+# use manual door #
+###################
+func void train_door(string ai_name)
+{
+	dprint train_door
+	message_remove xgodoor
+	sleep 60
+#	Good.  Now the door will unlock as the indicator light turns green.
+	particle obj1 kill
+	#light goes green
+	message unlock_door1 240
+	sleep 40
+	door_unlock 98 
+	particle door1_locklight02 do start
+	sleep 200
+
+	if (how_far_along eq 1)
+	{
+		message open_door1b 300
+		sleep 300
+	}
+
+	if (how_far_along eq 1)
+	{
+#		Please proceed to the next room
+		message proceed_door1 300	
+		sleep 300
+	}
+	if (how_far_along eq 1)
+	{
+#		message open_door1	
+	}
+}
+
+########
+# jump #
+########
+func void train_jump(string ai_name)
+{	
+	how_far_along = 2;
+	lock_keys keys_inventory
+	message_remove open_door1
+	message_remove open_door1b
+	message_remove proceed_door1
+	sleep 120
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+			sound_dialog_play c00_01_49shinatama
+			message jump_basic 240
+			sleep 240
+		}
+	}
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+			lock_keys keys_jump
+#			SPACE to jump
+			message c01_50_06 
+			chr_wait_animtype 0 jump
+			sleep 60
+			message_remove c01_50_06
+			sleep 60
+		}
+	}
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+			sound_dialog_play c00_01_08shinatama
+		}
+	}
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+#			directional jumping
+#			(press W and then SPACE when you want to jump)
+			message c01_50_07 		
+			chr_wait_animation 0 KONOKOjump_fw_start KONOKOjump_lt_start KONOKOjump_rt_start KONOKOjump_bk_start
+			sleep 60
+			message_remove c01_50_07
+			sleep 60
+		}
+
+	}
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+#			longer hit space, longer jump
+			message jump_basic2 300		
+			sleep 120
+		}
+	}
+########################encourage players to jump to next room unless they are on the large crate
+	if (how_far_along eq 2)
+	{
+		if(powerupon eq 0)
+		{
+			if(forcefieldstopped eq 0)
+			{
+				forcefieldstopped = 1;
+				particle forcefield1 do stop
+				sleep 180
+			}
+		}
+		if(powerupon eq 0)
+		{
+			if(particlestarted eq 0)
+			{
+				particlestarted = 1;
+		 		sound_dialog_play c00_01_50shinatama
+		  	  	message jump1
+				particle obj2 create
+				env_show 2011 0
+			}
+
+		}
+	}
+}
+
+func void powerup(string ai_name)
+{
+	powerupon = 1
+	fork pickup_powerup
+	dprint rating
+	rating =  rating - 1;
+	message_remove jump_basic
+	message_remove jump_basic2
+	message_remove good
+	message_remove jump1
+#	particle obj2 kill
+	sleep 80
+	if(how_far_along eq 2)
+	{
+		sound_dialog_play c00_01_46shinatama
+		sound_dialog_play_block pause
+		sleep 30
+		sound_dialog_play c00_01_47shinatama
+		sound_dialog_play_block pause
+	}
+#############################encourage players to jump to next room unless they are getting the ammo
+	if(got_ammo eq 0)
+	{
+		if(how_far_along eq 2)
+		{	
+		#	particle obj2 kill
+			message_remove jump1
+		 	if(forcefieldstopped eq 0)
+			{
+				forcefieldstopped =1;
+				particle forcefield1 do stop
+				sleep 180
+        	}
+		}
+	}
+	if(got_ammo eq 0)
+	{
+		if(how_far_along eq 2)
+		{
+			sound_dialog_play c00_01_50shinatama
+			if(particlestarted eq 0)
+ 			{
+				particlestarted = 1;
+				particle obj2 create
+				env_show 2011 0
+            }
+		}
+	}
+}
+
+func void pickup_powerup(void)
+{
+#	particle obj2 kill
+	message_remove jump1
+	chr_wait_animtype 0 Pickup_Object
+	got_ammo = 1;
+	sleep 80
+	message xpower1 300
+	sleep 120
+#########################encourage players to jump to next room unless the messages have already gone by
+	
+	forcefieldstopped = 1;
+	particle forcefield1 do stop
+	sleep 180
+	if(how_far_along eq 2)
+	{
+		sound_dialog_play c00_01_50shinatama
+		if(particlestarted eq 0)
+		{
+			particlestarted = 1;
+			particle obj2 create
+			env_show 2011 0
+		}
+	}
+	if(how_far_along eq 2)
+	{
+		message jump1
+	}	
+}
+
+################
+# escape moves #
+################
+func void train_crouch(string ai_name)
+{
+	how_far_along = 3;
+	trigvolume_enable trigger_volume_62 0
+	message_remove
+	door_lock 98
+	particle door1_locklight02 do stop
+	particle obj2 kill
+	particle obj1 kill
+	particle obj_start kill
+	particle obj_end kill
+	particle obj_control kill
+	dprint train_crouch
+	trigvolume_enable trigger_volume_71 0
+	sleep 60
+	message_remove
+	particle obj2 kill
+	sound_dialog_play_interrupt c00_01_01shinatama
+	ai2_spawn demo1
+	ai2_spawn demo2
+	ai2_spawn demo3
+	chr_nocollision demo1 1
+	chr_nocollision demo2 1 
+	chr_nocollision demo3 1
+		ai2_dopath demo1 pdemo1
+		ai2_dopath demo2 pdemo2
+   		ai2_dopath demo3 pdemo3
+		ai2_setjobstate demo1
+		ai2_setjobstate demo2
+		ai2_setjobstate demo3
+	#shift important
+	if(how_far_along eq 3)
+	{
+		lock_keys keys_crouch
+		message shift 240
+		sleep 240
+	}
+
+	if(how_far_along eq 3)
+	{
+#		SHIFT to crouch
+		message c01_50_08 
+		chr_wait_animtype 0 crouch
+		sleep 60
+		message_remove c01_50_08
+		sleep 120
+	}
+
+	if(how_far_along eq 3)
+	{
+		sleep 30
+#		sorry to interrupt you
+		sound_dialog_play c00_01_51shinatama
+		sleep 60
+		message xinterrupt 180
+		sleep 180
+		message xfite
+		sleep 30
+		particle fight create
+		trigvolume_enable trigger_volume_71 1
+	}
+}
+
+func void crouch2(string ai_name)
+{
+	if (how_far_along eq 3)
+	{
+		message xresume 180
+		sleep 180
+#		MOVEWHile crouching
+		message c01_50_09
+		chr_wait_animtype 0 crouch_run crouch_run_backwards crouch_run_sidestep_left crouch_run_sidestep_right
+		sleep 60
+		message_remove c01_50_09
+		sleep 60
+		message c01_50_10 240
+		sound_dialog_play_block c00_01_54shinatama
+		sleep 240
+
+	}
+
+	if (how_far_along eq 3)
+	{
+#		ESCAPE MOVES somersault
+		message c01_50_11
+		chr_wait_animation 0 KONCOMcrouch_fw KONCOMcrouch_rt KONCOMcrouch_lt KONOKOcrouch_fw KONOKOss_lt_slide KONOKOss_rt_slide KONOKOrun_bk_slide
+		sleep 60
+		message_remove c01_50_11
+		sleep 60
+	}
+
+	if (how_far_along eq 3)
+	{
+#		cartwheel
+		message back 
+		chr_wait_animtype 0 crouch_back
+		sleep 60
+		sound_dialog_play_block c00_01_07shinatama
+		message_remove back
+		sleep 60
+	}
+
+	if (how_far_along eq 3)
+	{
+#		SLIDE
+		sleep 30
+		sound_dialog_play_block c00_01_55shinatama
+		sound_dialog_play_block pause
+		message c01_50_16 
+		chr_wait_animstate 0 run_slide
+		sleep 60
+		message_remove c01_50_16
+		sleep 60
+	}
+
+	if (how_far_along eq 3)
+	{
+#		slide under traps
+#		try sliding beneath these moving laser sensors
+		sleep 60
+		sound_dialog_play_block c00_01_57shinatama
+	}
+	if (how_far_along eq 3)
+	{
+		message slide 360
+		sleep 30
+		trig_activate 3
+		sleep 40
+		trig_activate 2
+		sleep 40
+		trig_activate 1
+		sleep 300
+		sound_dialog_play_block c00_01_56shinatama
+		sleep 300
+	}
+
+	if (how_far_along eq 3)
+	{
+#		especially important when fighting multiple opponents
+#		message c01_50_13 240
+		sound_dialog_play_block c00_01_59shinatama
+		sound_dialog_play_block pause
+		sleep 60
+	}
+
+	if (how_far_along eq 3)
+	{
+#		JUMP-FLIP
+		message jump_flip 300
+		sleep 300
+	}
+	if (how_far_along eq 3)
+	{
+		message c01_50_19	
+		chr_wait_animtype 0 flip
+		message_remove c01_50_19
+		sleep 60
+		sound_dialog_play_block c00_01_03shinatama
+		sound_dialog_play_block pause
+	}
+
+	if (how_far_along eq 3)
+	{
+#		hit opponent on ground
+		sound_dialog_play_block c00_01_60shinatama
+		sound_dialog_play_block pause
+	}
+
+	if (how_far_along eq 3)
+	{
+#		more jump-flip
+#		starting at the target cursor on the floor, dash and jump-flip up to the next level.
+		particle forcefield2 do stop
+		sleep 180	
+		sound_dialog_play_block c00_01_61shinatama
+		message c01_50_23 	
+		particle obj3 create
+		env_show 2012 0
+		sleep 600
+	}
+
+	if (how_far_along eq 3)
+	{
+		sound_dialog_play_block c00_01_62shinatama
+		sound_dialog_play_block pause
+		message_remove c01_50_23
+		sleep 60
+		message jump_encourage 300
+		sleep 300
+	}
+	if (how_far_along eq 1)
+	{
+		message c01_50_23
+		sleep 900	
+	}
+
+	if (how_far_along eq 3)
+	{
+		message_remove c01_50_23 
+		sleep 60
+	}
+	if (how_far_along eq 3)
+	{
+		sound_dialog_play_block c00_01_63shinatama
+		particle obj3 kill
+		sleep 30
+	}
+	if (how_far_along eq 3)
+	{
+		particle obj4 create
+		message jump_encourage2 
+		dprint rating
+		rating = rating + 1;
+	}
+}
+
+################
+# karen fights #
+################
+
+func void t71(string ai_name)
+{
+	message_remove xfite
+	chr_nocollision demo1 0
+	chr_nocollision demo2 0 
+	chr_nocollision demo3 0
+	env_show 2010 1
+	chr_changeteam demo1 Syndicate
+	chr_changeteam demo2 Syndicate
+	particle fight kill
+}
+
+func void demo3dies(string ai_name)
+{
+	dprint oh_no
+	demo3dead = 1;
+	chr_changeteam demo1 Konoko
+	chr_changeteam demo2 Konoko
+	if(trigvolume_count (71) eq 1)
+	{
+		sleep 60
+		sound_dialog_play c00_01_52shinatama
+		sound_dialog_play_block pause
+	}
+	sleep 60
+	crouch2
+
+}
+
+func void demo_over(string ai_name)
+{
+	onto_crouch2 = onto_crouch2 + 1
+	if(onto_crouch2 eq 2)
+	{
+		ai2_dopath demo3 pdemo4
+		ai2_setjobstate demo3
+		sleep 90
+		sound_dialog_play c00_01_53shinatama
+		sound_dialog_play_block pause
+		if(demo3dead eq 0)
+		{
+			crouch2
+		}
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/compound/compound.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/compound/compound.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/compound/compound.bsl	(revision 405)
@@ -0,0 +1,1654 @@
+#	mountain compound
+#	scripts for level 19 by wu
+#	
+#	LEGEND
+#
+#	character naming convention: X_Yx
+#	where X = area letter (A=first area, B=second area, etc.)
+#	      Y = character type (N=ninja, T=tanker, S=striker, R=red, etc.)
+#		x = character number, usually same as character's initial patrol id
+#
+#	trigger volume scripts: t##, where ## refers to trigger volume id
+#	
+#	CONTENTS
+#	
+#	0.temporary debugging scripts
+#	1.variables defined
+#	1b.music scripts
+#	2.start and objectives scripts
+#	3.save game scripts
+#	4.cut scene scripts
+#	5.console scripts
+#	6.trigger volume scripts
+
+#	temporary debugging scripts 	#
+
+func void xxx(void)
+{
+	ParkLeft
+	t11
+	sleep 300
+	Truck
+}
+
+func void truck(string ai_name)
+{
+#	ai2_ignore_player=1
+	omnipotent=1
+	invincible=1
+	chr_teleport 0 4
+}
+
+func void computer(string ai_name)
+{
+#	ai2_ignore_player=1
+	dprint WALK_BACKWARDS_DOWN_THE_STAIRS_TO_OPEN_DOOR
+	omnipotent=1
+	invincible=1
+	chr_teleport 0 6
+}
+
+func void e(string ai_name)
+{
+	ai2_ignore_player=1
+	chr_teleport 0 100
+}
+
+func void butcher_test(void)
+{
+	invincible = 1
+	omnipotent = 1
+	extra_guys = 1
+	fork dish
+}
+
+func void test_setup(void)
+{
+	ai2_allpassive 1	
+
+	playback GrifElite01 GrifElite01Set
+	playback GrifElite02 GrifElite02Set
+	playback GrifElite03 GrifElite03Set
+	sleep f10
+	playback GrifElite02 GrifElite02Set
+	sleep f5
+	playback GrifElite03 GrifElite03Set
+	sleep f300
+
+
+	chr_envanim Griffin GrifGrifBox01
+	if (extra_guys eq 1) {
+		chr_envanim GrifOps01 GrifOps01Box01
+		chr_envanim GrifOps02 GrifOps02Box01
+	}
+	if (extra_guys eq 0) {
+		chr_envanim GrifOps02 GrifOps01Box01
+	}
+	chr_envanim GrifOps03 GrifOps03Box01
+	chr_animate Griffin COMGUYlev7_helistand 500
+	chr_animate GrifOps01 STRIKEcrouch_idle 400
+	chr_animate GrifOps02 STRIKEcrouch_idle 400
+	chr_animate GrifOps03 STRIKEcrouch_idle 400
+	sleep f90
+	sleep f200
+	chr_envanim Griffin GrifGrifBox02 norotation
+	if (extra_guys eq 1) {
+		chr_envanim GrifOps01 GrifOps01Box02 norotation
+		chr_envanim GrifOps02 GrifOps02Box02 norotation
+	}
+	if (extra_guys eq 0) {
+		chr_envanim GrifOps02 GrifOps01Box02 norotation
+	}
+	chr_envanim GrifOps03 GrifOps03Box02 norotation
+	chr_animate Griffin COMGUYlev7_Grif
+	if (extra_guys eq 1) {
+		chr_animate GrifOps01 STRIKElev7_Ops01
+		chr_animate GrifOps02 STRIKElev7_Ops02
+	}
+	if (extra_guys eq 0) {
+		chr_animate GrifOps02 STRIKElev7_Ops01
+	}
+	chr_animate GrifOps03 STRIKElev7_Ops03
+	sleep f240
+	playback Griffin GrifGrifRunAlt
+	if (extra_guys eq 1) {
+		playback GrifOps01 GrifOps01Run
+		playback GrifOps02 GrifOps02Run
+	}
+	if (extra_guys eq 0) {
+		playback GrifOps02 GrifOps01Run
+	}
+	sleep f10
+	playback_block GrifOps03 GrifOps03Run
+
+	sleep f300
+
+	playback GrifElite04 GrifWave2_Run1
+	playback GrifElite06 GrifWave2_Run3
+	playback_block GrifElite05 GrifWave2_Run1
+	sleep f300
+	
+
+	ai2_allpassive 0
+}
+
+func void test_boyz(void)
+{
+	playback Griffin GrifGrifRunAlt
+	if (extra_guys eq 1) {
+		playback GrifOps01 GrifOps01Run
+		playback GrifOps02 GrifOps02Run
+	}
+	if (extra_guys eq 0) {
+		playback GrifOps02 GrifOps01Run
+	}
+	sleep f10
+	playback_block GrifOps03 GrifOps03Run
+}
+
+###############################
+#	variables defined 	#
+###############################
+
+var int counter=2;
+var int my_save_point=0;
+var int console_count=0;
+var int stairs_open=0;
+var int comdies_ok=0;
+var int conused_ok=0;
+var int platform_ok=0;
+var int thru_door;
+var int count_swat_dies=3;
+var int console100used;
+var int console200used;
+var int console300used;
+var int console101used;
+var int count_attack3;
+var int muro_in_danger=0;
+var int round2_spawned=0;
+var int extra_guys=0;
+
+###############################
+#		music		      #
+###############################
+
+func void music_intro(void)
+{
+	sound_music_start mus_om01 .9
+#	stopped at set_objective_2
+}
+
+func void music_guns_timer(void)
+{
+	dprint OBSOLETE_music_guns_timer
+}
+
+func void music_truck(void)
+{
+	sound_music_start mus_asianb
+#	this music stopped at the end of the truck cutscene
+}
+
+func void stop_music_truck(void)
+{
+	sound_music_stop mus_asianb
+#	this music stopped at the end of the truck cutscene
+}
+
+func void music_guns(void)
+{
+	sound_music_start mus_main03_hd
+#	this music stopped in console301 or console300
+}
+
+func void music_guns_stop(void)
+{
+	sound_music_stop mus_main03_hd
+}
+
+func void music_battle(void)
+{
+	dprint MUSIC_BATTLE
+	sound_music_start mus_ot
+#	this music stopped in Outro
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_om01
+	sound_music_stop mus_asianb
+	sound_music_stop mus_main03
+	sound_music_stop mus_main03_hd
+}
+
+###############################
+#	start and objectives	#
+###############################
+func void paths(string ai_name)
+{
+	ai2_dopath GrifOps01 patrol_521
+	ai2_dopath GrifOps02 patrol_515
+	ai2_dopath GrifOps03 patrol_517
+	ai2_dopath GrifElite01 patrol_513
+	ai2_dopath GrifElite02 patrol_514
+	ai2_dopath GrifElite03 patrol_518
+}
+
+func void spawnA(void)
+{
+	ai2_spawn A_S1
+	ai2_spawn A_S2
+	ai2_spawn A_E3
+	ai2_spawn A_E5
+	ai2_spawn A_E5b
+}
+
+func void start(string ai_name)
+{
+	dprint start	
+
+	trigvolume_enable trigger_volume_21 0
+	trigvolume_enable trigger_volume_21_copy 0
+	trigvolume_enable trigger_volume_44 0
+	trigvolume_enable trigger_volume_45 0
+	trigvolume_enable attack_1tv 0
+	trigvolume_enable attack_2tv 0
+	trigvolume_enable attack_3tv 0
+	trigvolume_enable attack_3tv_copy 0
+	trigvolume_enable attack_4tv 0
+
+	particle door12_locklight01 do start
+
+	door_lock 35
+	door_lock 36
+	door_lock 37
+	door_lock 39
+	door_lock 40
+	door_lock 41
+
+	if (my_save_point eq 0)
+	{
+		objective_set(1)
+		spawnA()
+	}
+
+	if (my_save_point eq 1)
+	{
+		save_point=1;	
+		objective_set(1)
+		music_intro
+		ai2_dopath A_S1 patrol_01b
+		ai2_setjobstate A_S1
+		spawnA()
+		restore_game
+		chr_set_health 0 400
+	}
+
+	if (my_save_point eq 2)
+	{
+		save_point=2;	
+		dprint restore2_beforetruck
+		objective_set(2)
+		door_lock 12
+		particle door12_locklight01 do stop
+		ai2_spawn C_Sr18
+		ai2_dopath C_Sr18 patrol_18
+		ai2_spawn C_Sr17
+		ai2_spawn C_Sr19
+		ai2_spawn C_Sb75
+		ai2_spawn C_Sb76
+		trigvolume_enable trigger_volume_39 0
+		restore_game
+	}
+
+	if (my_save_point eq 3)
+	{
+		save_point=3;	
+		dprint restore3_aftertruck
+		objective_set(4)
+		target_set (501,30.0)
+		env_show 151 0
+		env_show 152 0
+		env_show 153 0
+		env_show 154 0
+		env_show 155 0
+		env_show 156 0
+		env_show 157 0
+		env_show 158 0
+		env_show 159 0
+		#Hides door, unhides broken door 
+		env_show 911 1
+		env_show 912 0
+		env_show 913 0
+		#Shows Gunk truck
+		env_show 251 1
+		env_show 252 1
+		env_show 253 1
+		env_show 254 1
+		env_show 255 1
+		env_show 256 1
+		env_show 257 1
+		env_show 258 1
+		env_show 259 1
+		env_show 911 1
+		env_show 912 0
+		env_show 913 0
+		env_show 914 1
+		env_show 915 1
+		env_show 916 1 
+
+		ai2_spawn D_R33
+		restore_game
+	}
+
+	if (my_save_point eq 4)
+	{
+		dprint restore4_finalbattle
+		#hides original dish 
+		env_show 301 0
+		env_show 302 0
+		env_show 303 0
+		env_show 304 0
+		env_show 305 0
+		env_show 306 0
+		env_show 307 0
+		env_show 308 0
+		env_show 309 0
+		#Shows in place dish 
+		env_show 401 1
+		env_show 402 1
+		env_show 403 1
+		env_show 404 1
+		env_show 405 1
+		env_show 406 1
+		env_show 407 1
+		env_show 408 1
+		env_show 409 1
+		music_battle
+		gs_farclipplane_set 3000
+		particle dishpulse do start
+		particle sturm_ambient start
+
+		# start the dish loop
+		sp_start_dish_loop
+	
+
+		if (did_kill_griffen() eq 1)
+		{
+			dprint restoreMutant
+			ai2_spawn MutantMuro
+			chr_boss_shield MutantMuro
+			restore_game
+			objective_set(7,silent)
+		}
+
+		if (did_kill_griffen() eq 0)
+		{
+			dprint restoreGriffin
+			ai2_boss_battle = 1
+			ai2_spawn Griffin
+			if (extra_guys eq 1) 
+			{
+				ai2_spawn GrifOps01
+			}
+			ai2_spawn GrifOps02
+			ai2_spawn GrifOps03			
+			ai2_spawn Muro
+			chr_boss_shield Muro
+			if (extra_guys eq 1) 
+			{
+				ai2_spawn GrifElite01
+			}
+			ai2_spawn GrifElite02
+			ai2_spawn GrifElite03
+			chr_set_health Muro 500
+			fork wait_to_help
+			restore_game
+			objective_set(6,silent)
+			paths			
+		}
+	}
+}
+
+func void deathfall(void)
+{
+	cm_detach
+	sleep f90
+	chr_set_health 0 0
+}
+
+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.0)
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective_2
+	ai2_spawn B_Eb11
+	ai2_spawn B_Eb16
+	ai2_spawn B_Esb15
+	ai2_spawn B_N1
+	ai2_spawn B_Sr9
+	ai2_spawn C_Sr17
+	ai2_spawn C_Sr18
+	ai2_spawn C_Sb75
+	ai2_spawn C_Sb76
+#	ai2_spawn C_Sb77
+	ai2_spawn C_Sb78
+	objective_set(2)
+	target_set (558,30.0)
+	music_stop
+}
+
+func void set_objective_5(string ai_name)
+{
+	dprint set_objective_5
+	objective_set(5)
+#	target_set (258,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
+	}
+
+	ai2_dopath C_Sr17 patrol_17
+	ai2_setjobstate C_Sr17
+	ai2_dopath C_Sr18 patrol_18
+	ai2_setjobstate C_Sr18
+
+}
+
+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
+	}
+}
+
+##########################
+#	cut scene scripts  #
+##########################
+
+var int run_truck_once = 0;
+
+func void runTruck(string ai_name)
+{
+	dprint runTruck_check
+	if (run_truck_once eq 0)
+	{
+		ai2_tripalarm 1 char_0
+	}
+	run_truck_once = 1;
+
+	if (chr_has_lsi(0))
+	{
+		dprint LSI_OK
+		if (trigvolume_count(29) eq 0)
+		{
+			trigvolume_enable trigger_volume_23 0
+			dprint truck_ok
+			chr_delete C_b74
+			chr_delete C_Eb73
+			Truck
+			sleep 30
+			ai2_spawn D_R33	
+			chr_delete C_Eb21
+			chr_delete C_Eb22
+			chr_delete C_Eb27			
+			chr_delete C_Eb29
+			chr_delete C_Eb30
+			chr_delete C_N23
+			chr_delete C_N24
+			chr_delete C_Sb25
+			chr_delete C_Sb26
+			chr_delete C_Sr17
+			chr_delete C_Sr18
+			chr_delete C_Tb20
+			chr_delete C_Tr28	
+			#chr_delete C_Sb77
+			chr_delete C_Sb78		
+			objective_set(4)
+			target_set (501,30.0)
+			particle obj1 kill
+			s3
+		}	
+	}
+}
+
+
+func void t10(string ai_name)
+{
+
+	dprint t10
+	if (trigvolume_count(25) eq 0)
+	{
+		if (stairs_open eq 1)
+		{
+			trigvolume_enable trigger_volume_10 0
+			trigvolume_enable trigger_volume_12 0
+			trigvolume_enable trigger_volume_26 0
+			dprint ParkLeft
+			ParkLeft	
+			particle obj1 create
+			objective_set(3)
+			target_set(511,30.0)
+#			ai2_makeignoreplayer ParkStriker 1
+		}
+	}
+}
+
+func void t12(string ai_name)
+{
+
+	dprint t12
+	if (trigvolume_count(26) eq 0)
+	{	
+		if (stairs_open eq 1)
+		{
+			trigvolume_enable trigger_volume_12 0
+			trigvolume_enable trigger_volume_10 0
+			trigvolume_enable trigger_volume_25 0
+			dprint ParkRight
+			ParkRight
+			particle obj1 create
+			objective_set(3)
+			target_set(511,30.0)
+#			ai2_makeignoreplayer ParkStriker 1
+		}
+	}
+}
+
+func void patrolscript0027(string ai_name)
+{
+	dprint patrolscript0027
+	ai2_dopath C_Sb25 patrol_52
+	ai2_setjobstate C_Sb25
+	ai2_dopath C_Sb26 patrol_53
+	ai2_setjobstate C_Sb26
+	ai2_dopath C_Eb27 patrol_27b
+	ai2_setjobstate C_Eb27
+}
+
+func void com_ok(string ai_name)
+{
+	dprint final_ok
+	comdies_ok = 1
+}
+
+func void fconsole_ok(string ai_name)
+{
+	dprint fconsole_ok
+	conused_ok = 1
+	objective_set(6)
+	text_console level_19d
+	target_set(502,30.0)
+	particle green create
+	sleep 400
+	particle green2 create
+	particle green3 create
+}
+
+func void t31(string ai_name)
+{
+	dprint t31
+	if (conused_ok eq 1)
+	{
+#		if (comdies_ok eq 1)
+#		{
+			dprint TO_FINAL_BATTLE
+			target_set(1,0.0)
+			music_stop
+			dish
+#		}
+	}
+}
+
+func void check_death1a(string ai_name)
+{
+	dprint death1a
+	Round2a
+}
+
+func void check_death1b(string ai_name)
+{
+	dprint death1a
+	Round2b
+}
+
+func void final_round(string ai_name)
+{
+	dprint check_ROUND_3
+	counter = counter - 1
+	if(counter eq 0)
+	{
+		Round3
+	}
+}
+
+func void check_death2(string ai_name)
+{
+	Outro
+}
+
+func void Round2a(string ai_name)
+{
+	dprint ROUND_2a
+	round2_spawned = round2_spawned + 1;
+
+	ai2_spawn GrifElite04
+
+	ai2_passive GrifElite04 1
+
+	playback_block GrifElite04 GrifWave2_Run1
+
+	ai2_passive GrifElite04 0
+
+	if (muro_in_danger eq 1) {
+		# force the backup to go after konoko only
+		ai2_attack GrifElite04 char_0
+	}
+	if (muro_in_danger eq 0) {
+		ai2_makeaware GrifElite04 char_0
+	}
+}
+
+func void Round2b(string ai_name)
+{
+	dprint ROUND_2b
+	round2_spawned = round2_spawned + 1;
+
+	ai2_spawn GrifElite05
+
+	ai2_passive GrifElite05 1
+
+	playback_block GrifElite05 GrifWave2_Run1
+
+	ai2_passive GrifElite05 0
+
+	if (muro_in_danger eq 1) {
+		# force the backup to go after konoko only
+		ai2_attack GrifElite05 char_0
+	}
+	if (muro_in_danger eq 0) {
+		ai2_makeaware GrifElite05 char_0
+	}
+}
+
+func void Round3(string ai_name)
+{
+	dprint ROUND_3
+	round2_spawned = round2_spawned + 1;
+
+	ai2_spawn GrifElite06
+
+	ai2_passive GrifElite06 1
+
+	playback_block GrifElite06 GrifWave2_Run3
+
+	ai2_passive GrifElite06 0
+
+
+	if (muro_in_danger eq 1) {
+		# force the backup to go after konoko only
+		ai2_attack GrifElite06 char_0
+	}
+	if (muro_in_danger eq 0) {
+		# go after other dudes
+		ai2_makeaware GrifElite06 char_0
+	}
+}
+
+func void wait_to_help(void)
+{
+	chr_wait_health Muro 200
+	
+	dprint MURO_IN_DANGER
+	ai2_boss_battle = 0;
+	muro_in_danger = 1;
+	ai2_attack GrifElite01 char_0
+	ai2_attack GrifElite02 char_0
+	ai2_attack GrifElite03 char_0
+	ai2_attack GrifElite04 char_0
+	ai2_attack GrifElite05 char_0
+	ai2_attack GrifElite06 char_0
+}
+
+###################
+#	console	#
+###################
+
+func void console_truckinfo(void)
+{
+	text_console level_19e
+	console_reset 6
+}
+
+func void unlock44(string ai_name)
+{
+#	begin_cutscene
+#	ai2_makeignoreplayer C_Sb77 1
+#	ai2_makeignoreplayer C_Sb78 1
+#	ai2_makeignoreplayer C_Eb22 1
+#	ai2_makeignoreplayer C_Eb21 1
+#	ai2_makeignoreplayer C_Tb20 1
+#	ai2_makeignoreplayer C_Sr19 1
+#	ai2_makeignoreplayer C_Sr18 1
+#	ai2_makeignoreplayer C_Sr17 1
+#	ai2_makeignoreplayer C_Sb76 1
+#	ai2_makeignoreplayer C_Sb75 1
+	input 0
+	chr_invincible char_0 1
+	letterbox 1
+	fade_out 0 0 0 30
+	ai2_spawn C_Er79
+	music_guns
+	cm_interpolate door44 0
+	fade_in 30
+	target_set(559,30.0)
+}
+
+func void patrolscript0079(string ai_name)
+{
+	particle d1_locklight01 do start
+#	sleep 60
+	door_unlock 44
+	sleep 60
+	sound_dialog_play c18_70_13elite
+	sound_dialog_play_block
+}
+
+func void patrolscript0080(string ai_name)
+{
+	sleep 90
+	cm_interpolate door44b 300
+	sleep 160
+	sound_dialog_play c18_74_05elite
+#	sound_dialog_play_block
+	sleep 80
+	fade_out 0 0 0 60
+	sleep 60
+	cm_reset
+	fade_in 30
+	input 1
+#	end_cutscene
+	letterbox 0
+	chr_invincible char_0 0
+#	ai2_makeignoreplayer C_Sb77 0
+#	ai2_makeignoreplayer C_Sb78 0
+#	ai2_makeignoreplayer C_Eb22 0
+#	ai2_makeignoreplayer C_Eb21 0
+#	ai2_makeignoreplayer C_Tb20 0
+#	ai2_makeignoreplayer C_Sr19 0
+#	ai2_makeignoreplayer C_Sr18 0
+#	ai2_makeignoreplayer C_Sr17 0
+#	ai2_makeignoreplayer C_Sb76 0
+#	ai2_makeignoreplayer C_Sb75 0
+#	ai2_dopath C_Sr17 patrol_81
+#	ai2_dopath C_Sb75 patrol_81
+#	ai2_dopath C_Sb76 patrol_81
+	ai2_tripalarm 1 char_0
+}
+
+func void run1(string ai_name)
+{
+	dprint run1
+	ai2_doalarm A_Sb7 1
+	ai2_dopath A_Sb7 patrol_00
+#	ai2_setjobstate A_Sb7
+}
+
+func void patrolscript0054(string ai_name)
+{
+	dprint doalarm
+	ai2_doalarm A_Sb7 1
+}
+
+func void do_alarm_sound(void)
+{
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+func void run1_alarm(string ai_name)
+{
+	dprint run1_alarm
+	fork do_alarm_sound
+	ai2_dopath A_E3 patrol_49	
+	ai2_dopath A_E4 patrol_49
+	ai2_dopath A_E5 patrol_49
+	ai2_dopath A_E6 patrol_49
+	ai2_spawn B_Sr9
+	sleep 7
+	ai2_dopath B_Sr9 patrol_10
+	ai2_spawn B_Eb11
+	sleep 60
+	ai2_dopath B_Eb11 patrol_10
+}
+
+func void driverhurt(string ai_name)
+{
+	dprint driverhurt
+	ai2_tripalarm 1 char_0
+}
+
+func void AreaF(string ai_name)
+{
+	console_count = console_count + 1
+	if(console_count eq 1)
+	{
+		text_console level_19a
+		sound_dialog_play_block c15_57_01konoko
+		sound_dialog_play_block pause
+		end_cutscene
+	}
+	if(console_count eq 2)
+	{
+		text_console level_19b
+		sound_dialog_play_block c15_57_02konoko
+	}
+	if (console_count eq 3)
+	{
+		dprint Area_F_now_open
+		trigvolume_enable attack_1tv 1
+		trigvolume_enable attack_2tv 1
+		trigvolume_enable attack_3tv 1
+		trigvolume_enable attack_3tv_copy 1
+		trigvolume_enable attack_4tv 1
+		text_console level_19c
+		set_objective_5
+		sound_dialog_play_block c15_57_03konoko
+		sound_dialog_play_block pause
+		sleep 60
+		music_guns
+	}
+}
+
+func void target100(void)
+{
+	console100used = 1;
+	if(console200used eq 0)
+	{
+		target_set(556,30.0)
+	}
+	if(console200used eq 1)
+	{
+		if(console300used eq 0)
+		{
+			target_set(557,30.0)
+		}
+	}
+	if(console200used eq 1)
+	{
+		if(console300used eq 1)
+		{
+			target_set(547,30.0)
+		}
+	}
+}
+	
+func void target200(void)
+{
+	console200used = 1;
+	if(console300used eq 0)
+	{
+		target_set(557,30.0)
+	}
+	if(console300used eq 1)
+	{
+		if(console100used eq 0)
+		{
+			target_set(555,30.0)
+		}
+	}
+	if(console300used eq 1)
+	{
+		if(console100used eq 1)
+		{
+			target_set(547,30.0)
+		}
+	}
+}
+
+func void target300(void)
+{
+	console300used = 1;
+	if(console200used eq 0)
+	{
+		target_set(556,30.0)
+	}
+	if(console200used eq 1)
+	{
+		if(console100used eq 0)
+		{
+			target_set(555,30.0)
+		}
+	}
+	if(console200used eq 1)
+	{
+		if(console100used eq 1)
+		{
+			target_set(547,30.0)
+		}
+	}
+}
+
+#func void console100(string ai_name)
+#{
+#	dprint console100
+#	console_deactivate 101
+#	AreaF
+#	target100
+#}
+
+func void console101(string ai_name)
+{
+	dprint console101
+	console101used = 1;
+	target100
+#	console_deactivate 100
+	AreaF
+}
+
+func void console200(string ai_name)
+{
+	dprint console200
+	target200
+	AreaF
+}
+
+func void console300(string ai_name)
+{
+	music_guns_stop
+	dprint console300
+	console_deactivate 301
+	target300
+	AreaF
+}
+
+func void console301(string ai_name)
+{
+	music_guns_stop
+	dprint console301
+	console_deactivate 300
+	target300
+	AreaF
+}
+
+func void purp2(void)
+{
+	input 0
+	fade_out 0 0 0 30
+	cm_interpolate unlock_door 0
+	fade_in 30
+	sleep 60
+	particle purple2_locklight01 do start
+	door_unlock 20
+	door_unlock 21
+	door_unlock 22
+	door_unlock 23
+	door_unlock 24
+	door_unlock 25
+	door_unlock 26
+	door_unlock 27
+	door_unlock 28
+	sleep 90
+	fade_out 0 0 0 30
+	cm_reset
+	fade_in 30
+	input 1
+}
+
+func void purple2_unlock(string ai_name)
+{
+	dprint purple2_unlock
+	purp2()
+	trigvolume_enable trigger_volume_21 1
+	trigvolume_enable trigger_volume_21_copy 1
+	trigvolume_enable trigger_volume_44 1
+	trigvolume_enable trigger_volume_45 1
+	console_deactivate 100
+}
+
+func void purple2_unlock_b(string ai_name)
+{
+	dprint purple2_unlockb
+	purp2()
+	if(console101used eq 0)
+	{
+		target_set(555,30.0)
+	}
+	console_deactivate 200
+}
+
+func void unlock_stairs(string ai_name)
+{
+	dprint unlock_stairs
+	music_stop
+	door_unlock 10
+	door_unlock 15
+	door_unlock 16
+	door_unlock 17
+	particle stair_locklight01 do start
+	ai2_spawn S_Tr41
+	console_deactivate 4
+#	console_deactivate 5
+	console_deactivate 3
+	stairs_open = 1
+	target_set(1,0.0)
+}
+
+
+func void unlock_stairs2(string ai_name)
+{
+	dprint unlock_stairs
+	music_stop
+	door_unlock 10
+	door_unlock 15
+	door_unlock 16
+	door_unlock 17
+	particle stair_locklight01 do start
+	console_deactivate 3
+#	console_deactivate 5
+	ai2_spawn S_Tr41
+	ai2_spawn C_b74
+	ai2_spawn C_Eb73
+	chr_teleport C_b74 224
+	ai2_dopath C_b74 patrol_80
+	chr_teleport C_Eb73 237
+	ai2_dopath C_Eb73 patrol_80
+	stairs_open = 1
+}
+
+
+#########################
+#  trigger volume stuff #
+#########################
+func void t8(string ai_name)
+{
+	dprint t8
+#	ai2_spawn C_Sb77
+	ai2_spawn C_Sb78
+	ai2_spawn C_Sr19
+	ai2_spawn C_Tb20
+	ai2_spawn C_Eb21
+	ai2_spawn C_Eb22
+	ai2_spawn C_N23
+	ai2_spawn C_N24
+	ai2_spawn C_Eb29
+	ai2_spawn C_Eb30
+}
+
+
+func void t9(string ai_name)
+{
+	dprint t9
+	ai2_spawn B_Eb16
+}
+
+func void t11(string ai_name)
+{
+	dprint t11
+	ai2_dopath C_Sb25 patrol_48
+	sleep 60
+	ai2_dopath C_Sb26 patrol_48
+	sleep 60
+	ai2_dopath C_Eb27 patrol_48
+
+}
+
+
+func void t13(string ai_name)
+{
+	dprint t13
+	ai2_spawn E_Er34
+	sleep 60
+	door_unlock 24
+#	door_unlock 23
+#	door_unlock 22
+	particle purple_locklight01 do start
+	ai2_dopath E_Er34 patrol_34
+	ai2_setjobstate E_Er34
+	ai2_spawn E_Eb35
+	target_set(501,30.0)	
+}
+
+func void t14(string ai_name)
+{
+	dprint t14
+	ai2_spawn E_N36
+	ai2_spawn E_Tr40
+	trigvolume_enable trigger_volume_15 0	
+}
+
+func void t15(string ai_name)
+{
+	dprint t15
+	ai2_spawn E_N35
+	ai2_spawn E_Nr46
+	trigvolume_enable trigger_volume_14 0	
+}
+
+func void t16(string ai_name)
+{
+	dprint t16
+	ai2_spawn E_Nr36
+	ai2_spawn E_Nb37
+	ai2_spawn E_Nr39
+	target_set (556,30.0)
+	door_unlock 22
+	particle purple3_locklight01 do start
+}
+
+func void t20(string ai_name)
+{
+	dprint t20
+	ai2_spawn E_N42
+	trigvolume_enable trigger_volume_18 0
+#	console_deactivate 100	
+	
+}
+
+func void t18(string ai_name)
+{
+	dprint t18
+	ai2_spawn E_N44
+	ai2_spawn E_R46
+	trigvolume_enable trigger_volume_20 0	
+#	console_deactivate 101	
+
+}
+
+func void t19(string ai_name)
+{
+	dprint t19
+	ai2_spawn E_Er45
+	ai2_spawn E_N41
+	trigvolume_enable trigger_volume_17 0
+#	console_deactivate 300	
+}
+
+func void t17(string ai_name)
+{
+	dprint t17
+	ai2_spawn E_N43
+	trigvolume_enable trigger_volume_19 0
+#	console_deactivate 301	
+	
+}
+
+func void t45(string ai_name)
+{
+	ai2_makeignoreplayer E_Eb35 1
+	ai2_makeignoreplayer E_Er34 1
+	ai2_makeignoreplayer E_Er45 1
+	ai2_makeignoreplayer E_Nb37 1
+	ai2_makeignoreplayer E_Nb38 1
+	ai2_makeignoreplayer E_Nr36 1
+	ai2_makeignoreplayer E_Nr39 1
+	ai2_makeignoreplayer E_Nr46 1
+	ai2_makeignoreplayer E_R46 1
+	ai2_makeignoreplayer E_Tr40 1
+	sleep 600
+	if(thru_door eq 0)
+	{
+		dprint DIDNOTGOTHRUDOOR
+	ai2_makeignoreplayer E_Eb35 0
+	ai2_makeignoreplayer E_Er34 0
+	ai2_makeignoreplayer E_Er45 0
+	ai2_makeignoreplayer E_Nb37 0
+	ai2_makeignoreplayer E_Nb38 0
+	ai2_makeignoreplayer E_Nr36 0
+	ai2_makeignoreplayer E_Nr39 0
+	ai2_makeignoreplayer E_Nr46 0
+	ai2_makeignoreplayer E_R46 0
+	ai2_makeignoreplayer E_Tr40 0
+	}
+}
+
+func void t21(string ai_name)
+{
+	dprint t21
+	input 0
+	letterbox 1
+	cm_interpolate red1 260
+	music_guns
+	sleep 90
+	particle mainchamber_locklight01 do start
+	door_unlock 18
+	door_unlock 19
+	ai2_spawn D_R31
+	ai2_spawn D_R32
+	ai2_spawn D_E83
+	door_open 18
+	door_open 19
+	sleep 180
+	door_lock 18
+	door_lock 19
+	particle mainchamber_locklight01 do stop
+	sleep 15
+	cm_interpolate red2 400
+	sleep 90
+	fade_out 0 0 0 30
+	sleep 30
+	cm_reset
+	fade_in 30
+	letterbox 0
+	input 1
+	trigvolume_enable trigger_volume_21_copy 0
+	trigvolume_enable trigger_volume_45 0
+	sleep 60
+	ai2_makeignoreplayer E_Eb35 0
+	ai2_makeignoreplayer E_Er34 0
+	ai2_makeignoreplayer E_Er45 0
+	ai2_makeignoreplayer E_Nb37 0
+	ai2_makeignoreplayer E_Nb38 0
+	ai2_makeignoreplayer E_Nr36 0
+	ai2_makeignoreplayer E_Nr39 0
+	ai2_makeignoreplayer E_Nr46 0
+	ai2_makeignoreplayer E_R46 0
+	ai2_makeignoreplayer E_Tr40 0
+	thru_door = 1;
+	sleep 300
+}
+
+func void t22(string ai_name)
+{
+	dprint t22
+	ai2_makeignoreplayer E_Eb35 1
+	ai2_makeignoreplayer E_Er34 1
+	ai2_makeignoreplayer E_Er45 1
+	ai2_makeignoreplayer E_Nb37 1
+	ai2_makeignoreplayer E_Nb38 1
+	ai2_makeignoreplayer E_Nr36 1
+	ai2_makeignoreplayer E_Nr39 1
+	ai2_makeignoreplayer E_Nr46 1
+	ai2_makeignoreplayer E_R46 1
+	ai2_makeignoreplayer E_Tr40 1
+	input 0
+	letterbox 1
+	cm_interpolate red3 260
+	music_guns
+	sleep 90
+	particle mainchamber_locklight01 do start
+	door_unlock 18
+	door_unlock 19
+	ai2_spawn D_R31
+	ai2_spawn D_R32
+	ai2_spawn D_E83
+	door_open 18
+	door_open 19
+	sleep 180
+	door_lock 18
+	door_lock 19
+	particle mainchamber_locklight01 do stop
+	sleep 15
+	cm_interpolate red4 400
+	sleep 90
+	fade_out 0 0 0 30
+	sleep 30
+	cm_reset
+	fade_in 30
+	letterbox 0
+	input 1
+	trigvolume_enable trigger_volume_21 0
+	trigvolume_enable trigger_volume_44 0
+	sleep 60
+	ai2_makeignoreplayer E_Eb35 0
+	ai2_makeignoreplayer E_Er34 0
+	ai2_makeignoreplayer E_Er45 0
+	ai2_makeignoreplayer E_Nb37 0
+	ai2_makeignoreplayer E_Nb38 0
+	ai2_makeignoreplayer E_Nr36 0
+	ai2_makeignoreplayer E_Nr39 0
+	ai2_makeignoreplayer E_Nr46 0
+	ai2_makeignoreplayer E_R46 0
+	ai2_makeignoreplayer E_Tr40 0
+	thru_door = 1;
+	sleep 300
+	music_stop
+}
+
+func void wake_E(string ai_name)
+{
+	sleep 60
+	ai2_makeignoreplayer E_Eb35 0
+	ai2_makeignoreplayer E_Er34 0
+	ai2_makeignoreplayer E_Er45 0
+	ai2_makeignoreplayer E_Nb37 0
+	ai2_makeignoreplayer E_Nb38 0
+	ai2_makeignoreplayer E_Nr36 0
+	ai2_makeignoreplayer E_Nr39 0
+	ai2_makeignoreplayer E_Nr46 0
+	ai2_makeignoreplayer E_R46 0
+	ai2_makeignoreplayer E_Tr40 0
+}
+
+func void sleep_E(string ai_name)
+{
+	ai2_makeignoreplayer E_Eb35 1
+	ai2_makeignoreplayer E_Er34 1
+	ai2_makeignoreplayer E_Er45 1
+	ai2_makeignoreplayer E_Nb37 1
+	ai2_makeignoreplayer E_Nb38 1
+	ai2_makeignoreplayer E_Nr36 1
+	ai2_makeignoreplayer E_Nr39 1
+	ai2_makeignoreplayer E_Nr46 1
+	ai2_makeignoreplayer E_R46 1
+	ai2_makeignoreplayer E_Tr40 1
+}
+
+func void fpath(string ai_name)
+{
+	ai2_dopath F_Eb43 patrol_43
+	ai2_setjobstate F_Eb43
+	sleep 30
+	ai2_dopath F_Eb44 patrol_44
+	ai2_setjobstate F_Eb44
+	sleep 30
+	ai2_dopath F_Eb47 patrol_47
+	ai2_setjobstate F_Eb47
+	music_stop
+}
+
+func void attack_1(string ai_name)
+{
+	dprint attack_1
+	sleep_E
+	chr_invincible char_0 1
+	letterbox 1
+	sleep 15
+	input 0
+	cm_interpolate attack1 90
+	ai2_spawn F_Eb43
+	ai2_spawn F_Eb44
+	ai2_spawn F_Eb47
+	door_unlock 43	
+#	sleep 60
+	sleep 90
+	particle F_locklight01 do start
+	fpath
+
+	cm_interpolate attack2 240
+	sleep 300
+	cm_interpolate attack1 600
+	chr_teleport 0 506
+	sleep 90
+	letterbox 0
+	cm_reset
+	chr_invincible char_0 0
+	trigvolume_enable attack_2tv 0
+	trigvolume_enable attack_3tv 0
+	trigvolume_enable attack_3tv_copy 0
+	trigvolume_enable attack_4tv 0
+	input 1
+	ai2_dopath F_Eb43 patrol_43b
+	ai2_setjobstate F_Eb43
+	ai2_dopath F_Eb44 patrol_44b
+	ai2_setjobstate F_Eb44
+	ai2_dopath F_Eb47 patrol_47b
+	ai2_setjobstate F_Eb47
+	wake_E
+}
+
+func void attack_2(string ai_name)
+{
+	dprint attack_2
+	sleep_E
+	chr_invincible char_0 1
+	letterbox 1
+	sleep 15
+	input 0
+	cm_interpolate attack2b 120
+	sleep 120
+	cm_interpolate attack2 400
+	sleep 100
+	particle F_locklight01 do start
+	sleep 80
+	ai2_spawn F_Eb43
+	ai2_spawn F_Eb44
+	ai2_spawn F_Eb47
+	door_unlock 43
+	fpath
+	sleep 290
+	cm_interpolate attack2b 500
+	chr_teleport 0 507
+	sleep 90
+	letterbox 0
+	cm_reset
+	chr_invincible char_0 0
+	trigvolume_enable attack_1tv 0
+	trigvolume_enable attack_3tv 0
+	trigvolume_enable attack_3tv_copy 0
+	trigvolume_enable attack_4tv 0
+	input 1
+	ai2_dopath F_Eb43 patrol_43b
+	ai2_setjobstate F_Eb43
+	ai2_dopath F_Eb44 patrol_44b
+	ai2_setjobstate F_Eb44
+	ai2_dopath F_Eb47 patrol_47b
+	ai2_setjobstate F_Eb47
+	wake_E
+}
+
+
+func void attack_3(string ai_name)
+{
+  if(count_attack3 eq 0)
+  {
+	count_attack3 = count_attack3 + 1;
+	dprint attack_3
+	chr_invincible char_0 1
+	sleep_E
+	letterbox 1
+	sleep 15
+	input 0
+	cm_interpolate attack3 90
+	ai2_spawn F_Eb43
+	ai2_spawn F_Eb44
+	ai2_spawn F_Eb47
+	door_unlock 43	
+	sleep 90
+	cm_interpolate attack4 210
+	particle F_locklight01 do start
+	fpath
+	sleep 150
+	cm_interpolate attack3 400
+	chr_teleport 0 508
+	sleep 90
+	letterbox 0
+	cm_reset
+	chr_invincible char_0 0
+	trigvolume_enable attack_2tv 0
+	trigvolume_enable attack_3tv_copy 0
+	trigvolume_enable attack_3tv 0
+	trigvolume_enable attack_1tv 0
+	trigvolume_enable attack_4tv 0
+	input 1
+	ai2_dopath F_Eb43 patrol_43b
+	ai2_setjobstate F_Eb43
+	ai2_dopath F_Eb44 patrol_44b
+	ai2_setjobstate F_Eb44
+	ai2_dopath F_Eb47 patrol_47b
+	ai2_setjobstate F_Eb47
+	wake_E
+  }
+}
+
+func void attack_4(string ai_name)
+{
+	dprint attack_4
+	chr_invincible char_0 1
+	sleep_E
+	letterbox 1
+	sleep 15
+	input 0
+	cm_interpolate attack3b 120
+	sleep 120
+	cm_interpolate attack4 300
+	sleep 240
+	particle F_locklight01 do start
+	ai2_spawn F_Eb43
+	ai2_spawn F_Eb44
+	ai2_spawn F_Eb47
+	door_unlock 43
+	fpath
+	sleep 160
+	cm_interpolate attack3b 500
+	chr_teleport 0 509
+	sleep 90
+	letterbox 0
+	cm_reset
+	chr_invincible char_0 0
+	trigvolume_enable attack_2tv 0
+	trigvolume_enable attack_3tv 0
+	trigvolume_enable attack_3tv_copy 0
+	trigvolume_enable attack_1tv 0
+	input 1
+	ai2_dopath F_Eb43 patrol_43b
+	ai2_setjobstate F_Eb43
+	ai2_dopath F_Eb44 patrol_44b
+	ai2_setjobstate F_Eb44
+	ai2_dopath F_Eb47 patrol_47b
+	ai2_setjobstate F_Eb47
+	wake_E
+}
+
+
+func void t27(string ai_name)
+{
+	dprint t27
+	ai2_dopath C_Sb25 patrol_54
+	ai2_dopath C_Sb26 patrol_54
+	ai2_dopath C_Eb27 patrol_54
+}
+
+func void t30(string ai_name)
+{
+	dprint t30
+	ai2_makeignoreplayer F_C62 0
+	ai2_spawn F_Er89
+}
+
+func void t33(string ai_name)
+{
+	dprint t33
+	ai2_spawn F_Er86
+	ai2_spawn F_Nr87
+	target_set(258,30.0)
+	sound_dialog_play c15_57_04konoko
+}
+func void t41(string ai_name)
+{
+	dprint t41
+	ai2_spawn F_Er59
+}
+
+func void t42(string ai_name)
+{
+	dprint t42
+	ai2_spawn F_Nr60
+}
+
+func void t43(string ai_name)
+{
+	dprint t43
+	ai2_spawn F_R61
+	ai2_spawn F_Er88
+	ai2_spawn F_C62
+	ai2_makeignoreplayer F_C62 1
+}
+
+func void comalarm(string ai_name)
+{
+	dprint comalarm
+	ai2_tripalarm 2 char_0
+}
+
+func void t38(string ai_name)
+{
+	dprint t38
+	ai2_spawn A_E4
+	ai2_spawn A_Sb63
+	ai2_spawn A_E6
+	ai2_spawn A_Sb7
+	ai2_spawn new_2
+}
+
+func void t40(string ai_name)
+{
+	dprint t40
+	input 0
+	letterbox 1
+	cm_interpolate red1 240
+	sleep 60
+	particle purple2_locklight01 do start
+	sleep 90
+	fade_out 0 0 0 30
+	cm_reset
+	fade_in 30
+	input 1
+}
+
+func void swat_dies(void)
+{
+	count_swat_dies = count_swat_dies - 1;
+	if(count_swat_dies eq 0)
+	{
+		ai2_attack GrifElite01 char_0
+		ai2_attack GrifElite02 char_0
+		ai2_attack GrifElite03 char_0
+		ai2_attack GrifElite04 char_0
+		ai2_attack GrifElite05 char_0
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/compound/compound_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/compound/compound_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/compound/compound_cutscene.bsl	(revision 405)
@@ -0,0 +1,677 @@
+#
+# Compound_cutscene.bsl
+
+func void intro(void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate IntroCam00 0
+	sleep f14
+	begin_cutscene	
+	ai2_allpassive 0
+	gs_farclipplane_set 10000
+	letterbox 1
+	cm_interpolate IntroCam00 0
+	sleep f60
+	chr_super 0 1
+	fade_in 120
+	music_intro
+	sleep f240
+	#Konoko drops from sky
+	cm_interpolate IntroCam01 300
+	sleep f300
+	cm_anim both IntroCam01
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev7_Intro
+	sleep f90
+	cutscene_sync mark
+	sound_ambient_start c05_05_15kon_land
+	sleep f60
+	particle IntroImpact do explode
+	#close up of Konoko
+	cm_anim_block both IntroCam02
+	ai2_allpassive 1
+	#Vista shot
+	cm_wait
+	playback 0 IntroKonokoSet
+	cm_reset
+	end_cutscene
+	chr_set_health 0 400
+	chr_super 0 0
+	s1
+}
+
+
+func void ParkLeft(void)
+{
+	begin_cutscene
+	chr_teleport C_b74 541
+	ai2_dopath C_b74 patrol_74
+	chr_teleport C_Eb73 528
+	ai2_dopath C_Eb73 patrol_73
+	trigvolume_corpse 29
+	sleep f30
+	obj_create 51 59
+	env_anim 51 59
+	sleep f2
+	cm_interpolate ParkLeftCam01 0
+	#Show Truck objects
+	#see van entering from tunnel
+	sleep f8
+	cutscene_sync mark
+	sound_ambient_start c05_26_17_trucka
+	sleep f270
+	#Striker exits van
+	ai2_spawn ParkStriker
+	chr_lock_active ParkStriker
+	chr_neutral ParkStriker 1
+	cm_anim both ParkCam01
+	env_setanim 51 truckbackstop
+	env_setanim 52 truckcabstop
+	env_setanim 53 truckdoorstop
+	env_setanim 54 truckdoor2stop
+	env_setanim 55 truckwheel03stop
+	env_setanim 56 truckwheel04stop
+	env_setanim 57 truckwheel05stop
+	env_setanim 58 truckwheel06stop
+	env_setanim 59 truckwheel07stop
+	chr_envanim ParkStriker ParkStrikeBox01 norotation
+	sleep f40
+	cutscene_sync mark
+	sound_ambient_start c05_31_21_brake_doorsa
+	sleep f60
+	chr_animate ParkStriker STRIKElev7_Park
+	playback 0 ParkLeftKonoko
+	ai2_spawn C_Sb25
+	ai2_spawn C_Sb26
+	ai2_spawn C_Eb27
+	playback C_Sb25 truckers
+	sleep 40
+	playback C_Sb26 truckers
+	sleep 30
+	playback C_Eb27 truckers
+	sleep 60
+	#hide object van and unhide gunk van
+	obj_kill 51 59
+	env_show 151 1
+	env_show 152 1
+	env_show 153 1
+	env_show 154 1
+	env_show 155 1
+	env_show 156 1
+	env_show 157 1
+	env_show 158 1
+	env_show 159 1
+	#cm_wait
+	playback 0 ParkLeftKonoko01
+	#sleep f240
+	cm_reset
+	#chr_delete ParkStriker
+	#konoko talks
+	sleep f120
+	sound_dialog_play c15_57_05konoko
+	cinematic_start (KONlistening, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	cinematic_stop (KONlistening, 19, 20)
+	end_cutscene
+	music_truck
+}
+
+func void ParkRight(void)
+{
+	begin_cutscene
+	chr_teleport C_b74 541
+	ai2_dopath C_b74 patrol_74
+	chr_teleport C_Eb73 528
+	ai2_dopath C_Eb73 patrol_73
+ 	trigvolume_corpse 29
+	sleep f30
+	obj_create 51 59
+	env_anim 51 59
+	sleep f2
+	cm_interpolate ParkRightCam01 0
+	#Show Truck objects
+	#see van entering from tunnel
+	sleep f8
+	cutscene_sync mark
+	sound_ambient_start c05_26_17_trucka
+	sleep f270
+	#Striker exits van
+	ai2_spawn ParkStriker
+	chr_lock_active ParkStriker
+	chr_neutral ParkStriker 1
+	cm_anim both ParkCam01
+	env_setanim 51 truckbackstop
+	env_setanim 52 truckcabstop
+	env_setanim 53 truckdoorstop
+	env_setanim 54 truckdoor2stop
+	env_setanim 55 truckwheel03stop
+	env_setanim 56 truckwheel04stop
+	env_setanim 57 truckwheel05stop
+	env_setanim 58 truckwheel06stop
+	env_setanim 59 truckwheel07stop
+	chr_envanim ParkStriker ParkStrikeBox01 norotation
+	sleep f40
+	cutscene_sync mark
+	sound_ambient_start c05_31_21_brake_doorsa
+	sleep f60
+	chr_animate ParkStriker STRIKElev7_Park
+	playback 0 ParkRightKonoko
+	ai2_spawn C_Sb25
+	ai2_spawn C_Sb26
+	ai2_spawn C_Eb27
+	playback C_Sb25 truckers
+	sleep 40
+	playback C_Sb26 truckers
+	sleep f30
+	playback C_Eb27 truckers
+	sleep 60
+	#hide object van and unhide gunk van
+	obj_kill 51 59
+	env_show 151 1
+	env_show 152 1
+	env_show 153 1
+	env_show 154 1
+	env_show 155 1
+	env_show 156 1
+	env_show 157 1
+	env_show 158 1
+	env_show 159 1
+	#cm_wait
+	playback 0 ParkRightKonoko01
+	#sleep f240
+	cm_reset
+	#chr_delete ParkStriker
+	#kononko talks
+	sleep f120
+	sound_dialog_play c15_57_05konoko
+	cinematic_start (KONlistening, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	cinematic_stop (KONlistening, 19, 20)
+	end_cutscene
+	music_truck
+}
+
+
+func void Truck(void)
+{
+	trigvolume_corpse 29
+	begin_cutscene
+
+	#hide gunk and show object
+	obj_create 51 59
+	env_show 151 0
+	env_show 152 0
+	env_show 153 0
+	env_show 154 0
+	env_show 155 0
+	env_show 156 0
+	env_show 157 0
+	env_show 158 0
+	env_show 159 0
+	#Konoko enters Truck
+	cm_anim both TruckCam01
+	cutscene_sync mark
+	sound_ambient_start c05_26_17_truckb
+	chr_envanim 0 TruckKonBox01 norotation
+	chr_animate 0 KONOKOlev7_TruckEnter
+	env_setanim 54 truckdoor2enter
+	sound_dialog_play c15_57_06konoko
+	cinematic_start (KONintense, 180, 180, 19, 7, 20, false)
+
+	#Truck exhaust starts and truck peels out
+	#sleep f10
+	sound_ambient_start c05_31_21_brake_doorsb
+	cm_anim_block both TruckCam02
+	playback 0 TruckKonokoHide
+	ai2_allpassive 0
+	cinematic_stop (KONintense, 19, 20)
+	sleep f80
+	chr_teleport C_Sb25 238
+	ai2_dopath C_Sb25 patrol_70
+	chr_teleport C_Sb26 195
+	ai2_dopath C_Sb26 patrol_84
+	chr_teleport C_Eb27 227
+	ai2_dopath C_Eb26 patrol_85
+	env_setanim 51 truckbackdrive01
+	env_setanim 52 truckcabdrive01
+	env_setanim 53 truckdoordrive01
+	env_setanim 54 truckdoor2drive01
+	env_setanim 55 truckwheel03drive01
+	env_setanim 56 truckwheel04drive01
+	env_setanim 57 truckwheel05drive01
+	env_setanim 58 truckwheel06drive01
+	env_setanim 59 truckwheel07drive01
+
+	#Truck heads towrads camera
+	cm_interpolate_block TruckCam04 0
+	env_setanim 51 truckbackdrive02
+	env_setanim 52 truckcabdrive02
+	env_setanim 53 truckdoordrive02
+	env_setanim 54 truckdoor2drive02
+	env_setanim 55 truckwheel03drive02
+	env_setanim 56 truckwheel04drive02
+	env_setanim 57 truckwheel05drive02
+	env_setanim 58 truckwheel06drive02
+	env_setanim 59 truckwheel07drive02
+	sleep f160
+	fade_out 0 0 0 15
+	fade_in 15
+
+	#Truck heads towrads door
+	cm_anim both TruckCam03	
+	env_setanim 51 truckbackdrive02
+	env_setanim 52 truckcabdrive02
+	env_setanim 53 truckdoordrive02
+	env_setanim 54 truckdoor2drive02
+	env_setanim 55 truckwheel03drive02
+	env_setanim 56 truckwheel04drive02
+	env_setanim 57 truckwheel05drive02
+	env_setanim 58 truckwheel06drive02
+	env_setanim 59 truckwheel07drive02
+
+	#Truck crashes through door
+	cm_anim_block both TruckCam05
+	env_setanim 51 truckbackcrash
+	env_setanim 52 truckcabcrash
+	env_setanim 53 truckdoorcrash
+	env_setanim 54 truckdoor2crash
+	env_setanim 55 truckwheel03crash
+	env_setanim 56 truckwheel04crash
+	env_setanim 57 truckwheel05crash
+	env_setanim 58 truckwheel06crash
+	env_setanim 59 truckwheel07crash
+
+	#break door here
+	sleep f35
+	cutscene_sync mark
+	sound_ambient_start c05_53_27_crash
+	sleep f10
+	particle TruckDoor do explode
+	env_show 911 1
+	env_show 912 0
+	env_show 913 0
+	env_show 914 1
+
+	#Konoko exits truck
+	sleep f125
+	cutscene_sync mark
+	sound_ambient_start c05_31_21_brake_doorsc
+	cm_anim_block both TruckCam06
+	chr_envanim 0 TruckKonBox02 norotation
+	chr_animate 0 KONOKOlev7_TruckExit
+	env_setanim 54 truckdoor2exit
+
+	#gameplay resumes
+	cm_wait
+	env_show 915 1
+	env_show 916 1
+	env_show 251 1
+	env_show 252 1
+	env_show 253 1
+	env_show 254 1
+	env_show 255 1
+	env_show 256 1
+	env_show 257 1
+	env_show 258 1
+	env_show 259 1
+	obj_kill 51 59
+	cm_reset
+	playback 0 TruckExitKonoko
+	end_cutscene
+
+	stop_music_truck
+}
+
+func void sp_start_dish_loop(void)
+{
+	sound_ambient_start mc_dish_loop 0.6
+}
+
+func void sp_start_dish_and_wait(void)
+{
+	sleep 320
+	sound_ambient_start mc_dish_loop 0.1
+	sound_ambient_volume mc_dish_loop 0.6 4.0
+}
+
+func void dish(void)
+{
+	begin_cutscene
+	gs_farclipplane_set 5000
+	sleep f60
+	#hide and unhide dish stuff
+	obj_create 201 209
+	obj_shade 201 209 .5 .5 .5
+	env_show 301 0
+	env_show 302 0
+	env_show 303 0
+	env_show 304 0
+	env_show 305 0
+	env_show 306 0
+	env_show 307 0
+	env_show 308 0
+	env_show 309 0
+	cm_anim both DishCam01
+	chr_peace 0
+	chr_envanim 0 DishKonokoBox01
+	sleep f60
+	obj_force_draw 201 209
+	cutscene_sync mark
+	sound_ambient_start c06_08_03_basic
+	sleep f440
+	#dish thing starts to raise
+	env_anim 201 209
+	cm_anim_block both DishCam02
+	cm_anim_block both DishCam03
+	cm_anim_block both DishCam04
+	sleep f120
+	cutscene_sync mark
+	sound_ambient_start c06_35_00_servo
+	cm_anim_block both DishCam05
+	sleep f300
+	#close up of Konoko
+	env_show 401 1
+	env_show 402 1
+	env_show 403 1
+	env_show 404 1
+	env_show 405 1
+	env_show 406 1
+	env_show 407 1
+	env_show 408 1
+	env_show 409 1
+	obj_kill 201 209
+	#Vista shot
+	particle dish do explode
+	cutscene_sync mark
+	sound_ambient_start c16_49_01_amb2
+	gs_farclipplane_set 3000
+	cm_interpolate DishCam06 0
+	cm_interpolate_block DishCam07 940
+	sleep f600
+	cutscene_sync mark
+	sound_ambient_start c16_49_01_effectsa
+	sleep f330
+	cutscene_sync mark
+	sound_ambient_start c16_49_01_effectsb
+	fork sp_start_dish_and_wait
+	cm_wait
+	cm_interpolate DishCam08 0
+	particle dishpulse do start
+	particle sturm_ambient start
+	sleep f300
+	playback 0 GrifKonokoSet
+	cm_interpolate GrifCam01 180
+	sleep f120
+
+	#cm_reset
+	if (did_kill_griffen() eq 1)
+	{
+		mutant
+	}
+	if (did_kill_griffen() eq 0)
+	{
+		grif
+	}
+}
+
+
+func void grif(void)
+{
+	begin_cutscene
+	cutscene_sync mark
+	sound_ambient_start c07_17_19heli
+	#camera pans to see Konoko looking at dish
+	#playback 0 GrifKonokoSet
+	#cm_interpolate GrifCam01 180
+	#sleep f240
+
+	# CB: this sets up the AI target selection parameters for the group battle
+	ai2_boss_battle = 1
+
+	#camera pans to see Muro
+	ai2_spawn Muro
+	ai2_passive Muro 1
+	if (extra_guys eq 1) {
+		ai2_spawn GrifElite01
+		counter = counter + 1;
+	}
+	ai2_spawn GrifElite02
+	ai2_spawn GrifElite03
+	playback Muro GrifMuroSet
+	playback GrifElite01 GrifElite01Set
+	playback GrifElite02 GrifElite02Set
+	playback GrifElite03 GrifElite03Set
+	cm_interpolate GrifCam02 150
+	sleep f10
+	playback GrifElite02 GrifElite02Set
+	sleep f5
+	playback GrifElite03 GrifElite03Set
+	sleep f150
+	#Muro says  you shouldn't have come here alone
+	cm_interpolate GrifCamMuro01 0
+	sound_dialog_play c15_60_01muro
+	cinematic_start (MUROtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block pause
+	cinematic_stop (MUROtalking, 19, 20)
+	#Konoko looks pissed
+	playback 0 GrifKonokoSet02
+	cm_interpolate GrifCamKon01 0
+	sleep f15
+	#griffin appears in a helicopter behind her
+	cm_interpolate GrifCamHeli 240
+	sleep f20
+	obj_create 901 906
+	env_anim 901 906
+	ai2_spawn Griffin
+	if (extra_guys eq 1) {
+		ai2_spawn GrifOps01
+		count_swat_dies = count_swat_dies + 1;
+	}
+	ai2_spawn GrifOps02
+	ai2_spawn GrifOps03
+	chr_envanim Griffin GrifGrifBox01
+	if (extra_guys eq 1) {
+		chr_envanim GrifOps01 GrifOps01Box01
+		chr_envanim GrifOps02 GrifOps02Box01
+	}
+	if (extra_guys eq 0) {
+		chr_envanim GrifOps02 GrifOps01Box01
+	}
+	chr_envanim GrifOps03 GrifOps03Box01
+	chr_animate Griffin COMGUYlev7_helistand 500
+	chr_animate GrifOps01 STRIKEcrouch_idle 400
+	chr_animate GrifOps02 STRIKEcrouch_idle 400
+	chr_animate GrifOps03 STRIKEcrouch_idle 400
+	sleep f90
+	sound_dialog_play c15_60_02griffin
+	cinematic_start (GRIFshouting, 180, 180, 15, 1, 20, false)
+	sleep f200
+	cinematic_stop (GRIFshouting, 15, 20)
+	#Guys jump out of helicopter
+	env_setanim 901 heli_doors_rt08
+	env_setanim 902 heli_doors_lt08
+	env_setanim 903 heli_rotorblades08
+	env_setanim 904 heli_body08
+	env_setanim 905 heli_canopy08
+	env_setanim 906 heli_interior08
+	chr_envanim Griffin GrifGrifBox02 norotation
+	if (extra_guys eq 1) {
+		chr_envanim GrifOps01 GrifOps01Box02 norotation
+		chr_envanim GrifOps02 GrifOps02Box02 norotation
+	}
+	if (extra_guys eq 0) {
+		chr_envanim GrifOps02 GrifOps01Box02 norotation
+	}
+	chr_envanim GrifOps03 GrifOps03Box02 norotation
+	chr_animate Griffin COMGUYlev7_Grif
+	if (extra_guys eq 1) {
+		chr_animate GrifOps01 STRIKElev7_Ops01
+		chr_animate GrifOps02 STRIKElev7_Ops02
+	}
+	if (extra_guys eq 0) {
+		chr_animate GrifOps02 STRIKElev7_Ops01
+	}
+	chr_animate GrifOps03 STRIKElev7_Ops03
+	cm_anim both GrifCamOut
+	ai2_allpassive 1
+	sleep f240
+	#Guys run to help Konoko
+	playback Griffin GrifGrifRunAlt
+	if (extra_guys eq 1) {
+		playback GrifOps01 GrifOps01Run
+		playback GrifOps02 GrifOps02Run
+	}
+	if (extra_guys eq 0) {
+		playback GrifOps02 GrifOps01Run
+	}
+	sleep f10
+	playback GrifOps03 GrifOps03Run
+	cm_wait
+	#sleep f20
+	cm_interpolate GrifCamHelp01 0
+	sleep f20
+	cm_interpolate_block GrifCamHelp02 180
+	sleep f180
+	cm_interpolate GrifCamWatch01 0
+	cm_interpolate_block GrifCamWatch02 210
+	playback 0 GrifKonokoWatch
+	sleep f210
+
+	#Muro says you gonna trust him?
+	obj_kill 901 906
+	cm_interpolate GrifCamFace01 0
+	cm_interpolate_block GrifCamFace02 700
+	sound_dialog_play c15_60_03muro
+	cinematic_start (MUROtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block pause 
+
+	#Konoko says he dreamed of life
+	cm_interpolate GrifCamKonFace01 0
+	cm_interpolate_block GrifCamKonFace02 800
+	sound_dialog_play c15_60_04konoko
+	cinematic_start (KONintense, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c15_60_05konoko
+	sound_dialog_play_block pause
+
+	sound_music_start mus_ot
+
+	cm_interpolate GrifCamMuroFace01 0
+	sound_dialog_play c15_60_06muro
+	sound_dialog_play_block pause
+	cinematic_stop (MUROtalking, 19, 20)
+
+	chr_set_health Muro 500
+
+	cinematic_stop (KONintense, 20, 20)
+	end_cutscene
+	ai2_passive Muro 0
+	chr_boss_shield Muro
+	cm_reset
+	s4
+	fork wait_to_help
+	paths
+	objective_set(6)
+}
+
+
+func void mutant(void)
+{
+	begin_cutscene
+	#camera pans to see Konoko looking at dish
+	#playback 0 GrifKonokoSet
+	#cm_interpolate GrifCam01 180
+	#sleep f240
+	#camera pans to see Muro
+	ai2_spawn Muro
+	ai2_passive Muro 1
+	playback Muro GrifMuroSet
+	cm_interpolate GrifCam02 150
+	sleep f150
+	#Muro says  you shouldn't have come here alone
+	cm_interpolate GrifCamMuro01 0
+	cm_interpolate_block MutantCam01 900
+	sound_dialog_play c15_59_01muro
+	cinematic_start (MUROtalking, 180, 180, 19, 7, 20, false)
+	sleep f500
+	#Konoko looks pissed
+	playback 0 GrifKonokoSet02
+	cm_interpolate GrifCamKon01 0
+	sleep f150
+	cinematic_stop (MUROtalking, 19, 20)
+	#muro transforms
+	cm_interpolate GrifCam02 0
+	particle MutantTransform do explode
+	cutscene_sync mark
+	sound_ambient_start c08_06_25muro
+	sleep f150
+	chr_animate Muro MUROtransform
+	cm_interpolate_block MutantCam01 200
+	sleep f170
+	#show Konoko protecting herself from the blast
+	cm_interpolate MutantCamKon 0
+	chr_animate 0 KONOKOlev7_blown
+	sleep f100
+	#kill muro and spawn mutant muro
+	chr_delete Muro 
+	ai2_spawn MutantMuro
+	playback MutantMuro MutantMuroEnd01
+	sleep 1
+	ai2_allpassive=1
+	chr_neutral MutantMuro 1
+	sleep f10
+	chr_animate MutantMuro MUTCOMtransform
+	cm_interpolate MutantCam01 0
+	cm_interpolate_block  MutantCam03 240
+	sleep f60
+	sound_dialog_play c15_59_02muro
+	cinematic_start (MUTANTMUROface, 180, 180, 19, 7, 20, false)
+	cm_interpolate MutantCam04 700
+	sound_dialog_play_block pause
+	#Konoko says surrender
+	cm_interpolate MutantCamKonTalk 0
+	sound_dialog_play c15_59_03konoko
+	cinematic_start (KONangryfront, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+
+	sound_music_start mus_ot
+
+	#Muro says never
+	#playback MutantMuro MutantMuroEnd01
+	#cm_interpolate MutantCamMuroEnd 0
+	#sleep f60
+	#playback MutantMuro MutantMuroEnd02
+	#sleep f120
+	#gameplay resumes
+	cinematic_stop (KONangryfront, 20, 20)
+	cinematic_stop (MUTANTMUROface, 19, 20)
+	cm_reset	
+	end_cutscene
+	chr_boss_shield MutantMuro
+	ai2_passive MutantMuro 0
+	s4
+	objective_set(7)
+}
+
+
+
+func void
+Outro(
+	void)
+{
+	sound_music_stop mus_ot
+
+	begin_cutscene jello
+
+	#slowmo
+	#weird particle effect
+	sleep f120
+	chr_animate 0 KONOKOendpowerup
+	sleep f120
+	cm_interpolate EndCam 600
+	sound_ambient_volume mc_dish_loop 1.0 4.0
+	sleep f500
+	fade_out 0 0 0 120
+	sleep f120
+	win
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/compound/compound_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/compound/compound_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/compound/compound_main.bsl	(revision 405)
@@ -0,0 +1,64 @@
+#
+# compound_main.bsl
+#
+
+func void
+main(
+	void)
+{
+	env_shade 912 913 .4 .4 .4
+	env_show 911 0
+	env_show 914 0
+	env_show 915 0
+	env_show 916 0
+	input	1	
+	#hide animation Truck Gunk
+	env_show 151 0
+	env_show 152 0
+	env_show 153 0
+	env_show 154 0
+	env_show 155 0
+	env_show 156 0
+	env_show 157 0
+	env_show 158 0
+	env_show 159 0
+	env_show 251 0
+	env_show 252 0
+	env_show 253 0
+	env_show 254 0
+	env_show 255 0
+	env_show 256 0
+	env_show 257 0
+	env_show 258 0
+	env_show 259 0
+	#Hide dish2 gunk
+	env_show 401 0
+	env_show 402 0
+	env_show 403 0
+	env_show 404 0
+	env_show 405 0
+	env_show 406 0
+	env_show 407 0
+	env_show 408 0
+	env_show 409 0
+
+	my_save_point = save_point;
+
+	start
+
+	if (my_save_point eq 0)
+	{
+		gl_fog_blue=0.0
+		gl_fog_red=0.0
+		gl_fog_green=0.0
+		gl_fog_start=.985
+		intro
+		gs_farclipplane_set 1000
+	}
+
+	gl_fog_blue=0.0
+	gl_fog_red=0.0
+	gl_fog_green=0.0
+	gl_fog_start=.985
+	gs_farclipplane_set 1000
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/compound/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/compound/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/compound/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,43 @@
+#snow for the airfield
+func void snow1_start(string ai_name)
+{
+	dprint snow1_start
+	particle snow1 start
+}
+func void snow1_stop(string ai_name)
+{
+	dprint snow1_stop
+	particle snow1 stop
+}
+func void snow2_start(string ai_name)
+{
+	dprint snow2_start
+	particle snow2 start
+}
+func void snow2_stop(string ai_name)
+{
+	dprint snow2_stop
+	particle snow2 stop
+}
+func void snow3_start(string ai_name)
+{
+	dprint snow3_start
+	particle snow3 start
+}
+func void snow3_stop(string ai_name)
+{
+	dprint snow3_stop
+	particle snow3 stop
+}
+
+#peak particles form the mountain top
+func void peak_start(string ai_name)
+{
+	dprint peak_start
+	particle peak start
+}
+func void peak_stop(string ai_name)
+{
+	dprint peak_stop
+	particle peak stop
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_cutscene.bsl	(revision 405)
@@ -0,0 +1,441 @@
+#
+# dreamlab_cutscene.bsl
+#
+
+func void stop_xtr2_in_15(void)
+{
+	sleep 720
+	sound_music_stop mus_xtr2
+}
+
+
+func void
+intro(
+	void)
+{
+	fade_out 0 0 0 0
+	obj_create 131 132
+	cm_interpolate IntroCamOpen 0
+	sleep f14
+	begin_cutscene
+	env_show 231 0
+	env_show 232 0
+	sleep f90
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Sit 8000
+	cm_interpolate IntroCamOpen 0
+	fade_in 120
+	sleep f180
+	#Konoko opens up laptop
+	cm_anim both IntroCamOpen
+	sound_dialog_play c12_42_01konoko
+	
+	sound_music_start atm_cl16 0.75
+
+	sleep f285
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Open
+	env_anim 131 132
+	#Konoko puts in disk
+	cm_wait
+	obj_create 481 481
+	cm_anim both IntroCamDisk
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Disk
+	env_anim 481 481
+	sleep f83
+	obj_kill 481 481
+	cm_wait
+	#Konoko reads
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Sit 8000
+	cm_anim both ImageCam01
+	sound_dialog_play c12_43_01hasegawa
+	sleep f120
+	obj_create 101 107
+	env_anim 101 101
+	sleep f60
+	fadefog
+	sound_dialog_play_block pause
+	sound_dialog_play c12_43_02hasegawa
+	sound_dialog_play_block pause
+	sleep f15
+	sound_dialog_play c12_43_03hasegawa
+	env_anim 102 102
+	sound_dialog_play_block pause
+	sleep f15
+	sound_dialog_play c12_43_04hasegawa
+	env_anim 103 103
+	obj_kill 101 101
+	sound_dialog_play_block pause
+	sleep f15
+	sound_dialog_play c12_43_05hasegawa
+	sound_dialog_play_block pause
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Sit 8000
+	env_anim 104 104
+	sleep f90
+	sound_dialog_play c12_43_06hasegawa
+	sound_dialog_play_block pause
+	sleep f60
+	sound_dialog_play c12_43_07hasegawa
+
+	sound_music_volume atm_cl16 0.0 6.0
+	sound_music_start atm_cl05 0.1
+	sound_music_volume atm_cl05 0.5 6.0
+
+	obj_kill 102 102
+	sound_dialog_play_block pause
+	sleep f15
+	env_anim 105 105
+	sleep f50
+	sound_dialog_play c12_43_08hasegawa
+	obj_kill 103 103
+	sound_dialog_play_block pause
+	sleep f45
+	sound_dialog_play c12_43_09hasegawa
+	env_anim 106 106
+	obj_kill 104 104
+	sound_dialog_play_block pause
+	sleep f60
+	sound_dialog_play c12_43_10hasegawa
+	env_anim 107 107
+	obj_kill 105 105
+	sound_dialog_play_block pause
+	sleep f120
+	#put gunshot and sobbing in here
+
+	sound_ambient_start gunshot
+	sound_music_stop atm_cl16
+	sound_music_volume atm_cl05 0.0 0.25
+
+	sleep 120
+	
+	sound_music_stop atm_cl05
+	sound_music_start mus_xtr2 0.6
+
+	sleep 120
+	#sound_dialog_play hasegawa_cry
+	#sound_dialog_play_block pause
+	#sleep f90
+	#Konoko reads more
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Sit 8000
+	cm_interpolate IntroCamHighLeft 0
+	cm_interpolate_block IntroCamHighRight 1000
+	fork stop_xtr2_in_15
+	sound_dialog_play c12_43_11hasegawa
+	sound_dialog_play_block pause
+	#camera pans to see wall missing and Konoko looks up
+	env_show 200 0
+	env_show 227 0
+	env_show 201 0
+	env_show 999 0
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev13_Sit 8000
+	cm_interpolate IntroCamLowLeft 0
+	obj_kill 106 106
+	obj_kill 107 107
+	gl_fog_end=1
+	gl_fog_start=.975
+	cm_interpolate_block IntroCamLook 800
+	sound_dialog_play c12_44_01konoko
+
+	particle fog_floor1 do start
+	
+	sleep f360
+
+	ai2_spawn IntroMuro
+	chr_lock_active IntroMuro
+	ai2_passive IntroMuro 1
+	playback IntroMuro IntroMuroEnter
+	chr_nocollision IntroMuro 1
+	sound_dialog_play_block pause
+	cinematic_start (MUROevilgrin, 180, 180, 15, 1, 20, false)
+		
+	sound_music_start mus_om01 .75
+	
+	sound_dialog_play c12_44_02muro
+	chr_animate 0 KONOKOlev13_Look
+	sleep f75
+	#Konoko gets up
+	chr_envanim 0 IntroKonBox02 norotation
+	chr_animate 0 KONOKOlev13_Getup
+	cm_anim both IntroCamGetup
+	sound_dialog_play_block pause
+	sleep f60
+	sound_dialog_play c12_44_03konoko
+	cinematic_start (KONlistening, 180, 180, 20, 9, 20, true)
+	cm_wait
+	#Camera pans to show Konoko from behind
+	env_show 231 1
+	env_show 232 1
+	obj_kill 131 132
+	playback 0 IntroKonokoSet
+	cm_interpolate IntroCamDoor01 0
+	cm_interpolate_block IntroCamDoor02 180
+	sound_dialog_play_block pause
+	sound_dialog_play c12_44_04muro
+	sleep f240
+	cinematic_stop (KONlistening, 20, 20)
+	cinematic_stop (MUROevilgrin, 15, 20)
+	#gameplay resumes
+	cm_reset
+	end_cutscene
+	ai2_passive IntroMuro 1
+	chr_nocollision IntroMuro 0
+
+	save_point_1
+}
+
+
+
+func void
+murodeath(
+	void)
+{
+	dprint WE_KILLED_MURO
+
+	env_show 999 0
+	env_show 1010 0
+	gs_farclipplane_set 2000
+
+	# ensure that muro doesn't get knocked out of his "death" anim
+	chr_unstoppable IntroMuro 1
+
+	chr_animate IntroMuro COMCOMlev13_death 120
+	gl_fog_start_changeto .995 30
+	sleep f24
+	chr_delete IntroMuro
+
+	sound_music_volume mus_om01 0.0 1.0
+	sound_music_start atm_gr09 0.75
+
+	objective_set(1)
+
+	sleep 60
+	sound_music_stop mus_om01
+}
+
+
+func void
+griffindeath(
+	void)
+{
+	# ensure that griffin doesn't get knocked out of his "death" anim
+	chr_unstoppable griffin 1
+
+	chr_animate griffin COMCOMlev13_death 120
+	sleep f20
+	chr_delete griffin
+	door_unlock 3
+}
+
+func void
+fadefog(
+	void)
+{
+	gl_fog_start_changeto .8 45
+}
+
+
+func void
+murofog(
+	void)
+{
+	ai2_passive IntroMuro 0
+	env_show 201 1
+	env_show 999 1
+	env_show 250 0
+	env_show 252 0
+	gl_fog_start_changeto .95 12
+	sleep f12
+	gs_farclipplane_set 75
+}	
+
+
+
+
+
+func void
+Griffin01(
+	void)
+{
+	begin_cutscene
+	door_lock 2
+	chr_lock_active griffin
+	playback griffin GrifGriffinSet
+	cm_interpolate GrifCamGriffin 200
+	#griffin talks
+	sleep f120
+	sound_dialog_play c12_45_01griffin
+	cinematic_start (GRIFtalkangry, 180, 180, 16, 3, 20, true)
+	playback 0 GrifKonokoSet
+	sound_dialog_play_block pause
+	cm_interpolate GrifCamKonoko01 0
+	cm_interpolate_block GrifCamKonoko02 800
+	sound_dialog_play c12_45_02konoko
+	cinematic_start (KONintense, 180, 180, 19, 7, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c12_45_03griffin
+	sound_dialog_play_block pause
+	cm_interpolate GrifCamBoth01 0
+	cm_interpolate_block GrifCamBoth02 800
+	sound_dialog_play c12_45_04konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_45_05griffin
+	sound_dialog_play_block pause
+	cinematic_stop (KONintense, 20, 20)
+	cinematic_stop (GRIFtalkangry, 15, 20)
+	cm_reset
+	end_cutscene
+	save_point_2
+}
+
+func void
+Konoko01(
+	void)
+{
+	begin_cutscene weapon
+	chr_lock_active evilkonoko
+	playback evilkonoko KonKonoko01Set
+	cm_interpolate KonCamKon01 200
+	#griffin talks
+	sleep f120
+	sound_dialog_play c12_46_01badasskon
+	cinematic_start (KONevil, 180, 180, 15, 1, 20, true)
+	playback 0 KonKonokoSet
+	sound_dialog_play_block pause
+	cm_interpolate KonCamBoth01 0
+	cm_interpolate_block KonCamBoth02 1000
+	sound_dialog_play c12_46_02konoko
+	cinematic_start (KONintense, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_03badasskon
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_04konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_05badasskon
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_06konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_07badasskon
+	cinematic_stop (KONintense, 20, 20)
+	sound_dialog_play_block pause
+	cinematic_stop (KONevil, 15, 20)
+	cm_reset
+	chr_animate evilkonoko KONOKOpowerup 0
+	chr_set_health evilkonoko 400
+	sleep f245
+	end_cutscene
+	env_show 250 1
+	env_show 252 1
+}
+
+func void
+Konoko02(
+	void)
+{
+	begin_cutscene
+	chr_lock_active evilkonoko
+	playback evilkonoko Kon2Konoko02Set
+	cm_interpolate Kon2CamKon201 140
+	sleep f120
+	cm_interpolate Kon2CamKon202 180	
+	#griffin talks
+	sleep f120
+	sound_dialog_play c12_46_01badasskon
+	cinematic_start (KONevil, 180, 180, 15, 1, 20, true)
+	playback 0 Kon2KonokoSet
+	sound_dialog_play_block pause
+	cm_interpolate Kon2Both01 0
+	cm_interpolate_block Kon2Both02 1000
+	sound_dialog_play c12_46_02konoko
+	cinematic_start (KONintense, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_03badasskon
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_04konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_05badasskon
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_06konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_46_07badasskon
+	cinematic_stop (KONintense, 20, 20)
+	sound_dialog_play_block pause
+	cinematic_stop (KONevil, 15, 20)
+	cm_reset
+	chr_animate evilkonoko KONOKOpowerup 0
+	chr_set_health evilkonoko 400
+	sleep f245
+	end_cutscene
+}
+
+
+func void
+Griffin02(
+	void)
+{
+	begin_cutscene
+	chr_lock_active griffin_2
+	playback griffin_2 Grif2GrifSet
+	cm_interpolate Kon2CamKon201 140
+	sleep f120
+	cm_interpolate Kon2CamKon202 180
+	#griffin talks
+	sleep f120
+	sound_dialog_play c12_45_01griffin
+	cinematic_start (GRIFtalkangry, 180, 180, 15, 1, 20, true)
+	playback 0 Kon2KonokoSet
+	sound_dialog_play_block pause
+	cm_interpolate Kon2Both01 0
+	cm_interpolate_block Kon2Both02 1000
+	sound_dialog_play c12_45_02konoko
+	cinematic_start (KONintense, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	sound_dialog_play c12_45_03griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c12_45_04konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c12_45_05griffin
+	sound_dialog_play_block pause
+	cinematic_stop (KONintense, 20, 20)
+	cinematic_stop (GRIFtalkangry, 15, 20)
+	cm_reset
+	end_cutscene
+}
+
+
+func void delay_then_play_wakeup(void)
+{
+	sleep 5
+	sound_impulse_play konoko_wakeup
+
+}
+
+func void
+outro(
+	void)
+{
+	begin_cutscene
+	env_show 252 1
+	env_show 250 1
+	env_show 200 1
+	env_show 227 1
+	env_show 231 0
+	env_show 232 0
+	fade_out 0 0 0 10
+	sleep f10
+	delay_then_play_wakeup
+	ai2_spawn outro_konoko
+	chr_envanim outro_konoko OutroKonBox01 norotation
+	chr_animate outro_konoko KONOKOlev13_outro
+	cm_anim both OutroCam01
+	fade_in 5
+	sleep f240
+	fade_out 0 0 0 60
+	sleep 90
+	end_cutscene
+	win
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_logic.bsl	(revision 405)
@@ -0,0 +1,771 @@
+### DREAMLAB LEVEL LOGIC ###
+
+### START, SAVE & OBJECTIVES ###
+
+# START
+func void start(string ai_name)
+{
+	door_lock 3
+	door_lock 1
+	env_show 1976 0
+	trigvolume_enable splash_trigger 0
+
+	if (save_point eq 0)
+		{
+		my_save_point=0;
+		trigvolume_enable shinatama1a 1
+		trigvolume_enable shinatama1b 1
+		#env_show 999 0
+		ai2_spawn ghost_1
+		ai2_spawn ghost_2
+		set_objective_1
+		}
+
+	if (save_point eq 1)
+		{
+		my_save_point=1;
+		dprint restore1
+		ai2_spawn IntroMuro
+		playback IntroMuro IntroMuroSet
+		ai2_passive IntroMuro 1
+		playback 0 IntroKonokoSet
+		env_show 200 0
+		env_show 201 0
+		env_show 227 0
+		env_show 231 1
+		env_show 232 1
+		env_show 999 0
+		particle fog_floor1 do start
+		sound_music_start mus_om01 .75
+		trigvolume_enable shinatama1a 1
+		trigvolume_enable shinatama1b 1
+		set_objective_1
+		restore_game
+		ai2_spawn ghost_1
+		ai2_spawn ghost_2
+		}
+
+	if (save_point eq 2)
+		{
+		my_save_point=2;	
+		dprint restore2
+		particle fog_room1 do start
+		ai2_spawn griffin
+		playback griffin GrifGriffinSet
+		door_lock 3
+		trigvolume_enable room1a 0
+		trigvolume_enable room1b 0
+		set_objective_2
+		restore_game
+		sound_music_start mus_wls .75
+		}
+}
+
+func void you_lose(string ai_name)
+{
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	all_music_counters
+	lose
+}
+
+func void you_win(string char_index)
+{
+	sound_music_volume mus_wls 0.0 2.0
+	sleep 180
+	fade_out 0 0 0 180 
+	outro
+}
+
+func void save_point_1(string player_name)
+{
+	dprint save_1
+	save_game 1 autosave
+}
+
+func void save_point_2(string player_name)
+{
+	dprint save_2
+	save_game 2 autosave
+	chr_delete liliput_striker_1
+	chr_delete liliput_striker_2
+	chr_delete liliput_striker_3
+	set_objective_2
+}
+
+func void set_objective_1(string chr_index)
+{
+	dprint objective_1
+	objective_set(1)
+}
+
+func void set_objective_2(string chr_index)
+{
+	dprint objective_2
+	objective_set(2)
+}
+
+### MUSIC ###
+
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+	if (0 ne music_counter) 
+		{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+		}
+}
+
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void striker_lullaby_1(string ai_name)
+{
+	dprint striker_lullaby1
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+}
+
+func void striker_lullaby_2(string ai_name)
+{
+	dprint striker_lullaby2
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+}
+
+func void all_music_counters(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop atm_cl16
+	sound_music_stop mus_om01
+	sound_music_stop atm_gr09
+	sound_music_stop mus_wls
+	sound_music_stop atm_ft81
+}
+
+### FOLLOW THE WHITE SHINATAMA ###
+
+# SHINATAMA 1a
+func void shinatama_1a(string ai_name)
+{
+	sound_dialog_play c12_63_01shinatama
+	ai2_spawn shinatama_1a
+	ai2_lookatme shinatama_1a
+}
+
+# SHINATAMA 1b
+func void shinatama_1b(string ai_name)
+{
+	ai2_dopath shinatama_1a shinatama_flee_1
+	door_lock 8
+}
+
+# SHINATAMA 1a DEATH
+func void patrolscript0100(string ai_name)
+{
+	chr_delete shinatama_1a
+	door_lock 7	
+}
+
+# SHINATAMA 2
+func void shinatama_2(string ai_name)
+{
+	sound_dialog_play c12_63_03shinatama
+	dprint shinatama_2
+	ai2_spawn shinatama_2
+	ai2_spawn liliput_striker_1
+	ai2_spawn liliput_striker_2
+	ai2_spawn liliput_striker_3
+	chr_lock_active shinatama_2
+	door_lock 8
+	door_open 11
+	door_open 12
+}
+
+# SHINATAMA 2 DEATH
+func void patrolscript0101(string ai_name)
+{
+	chr_delete shinatama_2
+}
+
+# SHINATAMA 3
+func void shinatama_3(string ai_name)
+{
+	chr_delete ghost_1
+	chr_delete ghost_2
+	sound_dialog_play c12_63_04shinatama
+	ai2_spawn shinatama_3
+	ai2_spawn shin_striker_1
+	ai2_spawn shin_striker_2
+	ai2_spawn shin_striker_3
+	ai2_spawn shin_striker_4
+}
+
+# SHINATAMA 3 DEATH
+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
+	chr_delete shin_striker_5
+	chr_delete shin_striker_6
+	chr_delete shin_striker_7
+}
+
+func void delay_and_play_shin(void)
+{
+	sleep 240
+	sound_dialog_play c12_63_05shinatama
+}
+
+# SHINATAMA NO-GRAV
+func void shinatama_nograv(string ai_name)
+{
+	dprint shinatama_nograv
+	sound_music_volume atm_gr09 0.0 2.0
+	sound_music_stop atm_gr09
+	sound_music_start atm_ft81 .75	
+	particle fog_room1 do stop
+	particle fog_room2 do start
+	door_lock 5
+	door_lock 6
+	ai2_spawn shinatama_nograv
+	chr_invincible shinatama_nograv 1
+	chr_nocollision shinatama_nograv 1
+	sound_music_start atm_cl22 0.1
+	sound_music_volume atm_cl22 1.0 4
+	fork delay_and_play_shin
+	playback_block shinatama_nograv shinatama_nograv interp 30
+	chr_delete shinatama_nograv
+	door_unlock 6
+	door_close 5
+	door_jam 5
+	invincible = 0
+	sound_music_volume atm_cl22 0.0 6
+	sleep 250
+	sound_music_stop atm_cl22
+}
+
+### AMBUSHES, BACKUPS ###
+
+func void ghost_1(string ai_name)
+{
+	dprint vanish_ghost1
+	chr_delete ghost_1
+}
+
+func void ghost_2(string ai_name)
+{
+	dprint vanish_ghost2
+	chr_delete ghost_2
+}
+
+# AMBUSH 1a
+func void ambush_1a(string ai_name)
+{
+	dprint ambush_1a
+	ai2_spawn ambush_tanker_1a
+	sound_music_stop atm_gr09
+	sound_music_start mus_wls .75
+}
+
+# AMBUSH 1b
+func void ambush_1b(string ai_name)
+{
+	dprint ambush_1b
+	ai2_spawn ambush_tanker_1b
+	door_open 8
+	door_jam 8
+}
+
+# AMBUSH 2
+func void ambush_2(string ai_name)
+{
+	dprint ambush_2
+	ai2_spawn ambush_red_1
+	sound_music_stop atm_ft81 
+	sound_music_start mus_wls .75
+}
+
+# TANKER VARIABLE
+func void tanker_1_var(string ai_name)
+{
+	dprint tanker_var1
+	tanker_counter = tanker_counter - 1
+	chr_inv_reset ambush_tanker_1a
+	if (tanker_counter eq 0)
+		{
+		new_music();
+		}
+}
+
+func void tanker_2_var(string ai_name)
+{
+	dprint tanker_var2
+	tanker_counter = tanker_counter - 1
+	chr_inv_reset ambush_tanker_1b
+	if (tanker_counter eq 0)
+		{
+		new_music();
+		}
+}
+
+func void new_music(string ai_name)
+{
+	dprint change_the_track
+	door_unlock 9
+	sound_music_stop mus_wls
+	sound_music_start atm_ft81 .75
+}
+
+# RED VARIABLE
+func void red_1_var(string ai_name)
+{
+	dprint red_var
+	red_counter = red_counter - 1
+	if (red_counter eq 0)
+		{
+		redbackup();
+		}
+}
+
+# RED BACKUP
+func void redbackup(string ai_name)
+{
+	dprint red_backup
+	ai2_spawn ambush_red_2
+	door_unlock 1
+	door_lock 2
+	door_unjam 8
+	chr_delete liliput_striker_1
+	chr_delete liliput_striker_2
+	chr_delete liliput_striker_3
+}
+
+# RED RETREAT
+func void red_retreat(string ai_name)
+{
+	dprint retreat_reds
+	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)
+{
+	dprint red_react
+	ai2_makeignoreplayer ambush_red_1 0
+	ai2_makeignoreplayer ambush_red_2 0
+}
+
+# RED (MUSIC) SHIFT
+func void redmusic_1_var(string ai_name)
+{
+	dprint redmusic_1
+	rmusic_counter = rmusic_counter - 1
+	if (rmusic_counter eq 0)
+		{		
+		red_shift();
+		}
+}
+
+func void redmusic_2_var(string ai_name)
+{
+	dprint redmusic_2
+	rmusic_counter = rmusic_counter - 1
+	if (rmusic_counter eq 0)
+		{		
+		red_shift();
+		}
+}
+
+func void red_shift(string player_name)
+{
+	dprint redshift
+	sound_music_stop mus_wls
+	sound_music_start atm_gr09 0.75
+	door_unlock 2
+}
+
+
+# SWAT VARIABLE
+func void swat_1_var(string ai_name)
+{
+	dprint swat_var
+	swat_counter = swat_counter - 1
+	if (swat_counter eq 0)
+		{
+		swatbackup();
+		}
+}
+
+# SWAT BACKUP
+func void swatbackup(string ai_name)
+{
+	dprint swat_backup
+	door_unlock 2
+	ai2_spawn griffin_b1
+	ai2_spawn griffin_b2
+}
+
+# ROOM 1 END VAR
+func void end_1a_var(string ai_name)
+{
+	dprint swat_var
+	end1_counter = end1_counter - 1
+	if (end1_counter eq 0)
+		{
+		room1_end();
+		}
+}
+
+func void end_1b_var(string ai_name)
+{
+	dprint swat_var
+	end1_counter = end1_counter - 1
+	if (end1_counter eq 0)
+		{
+		room1_end();
+		}
+}
+
+func void end_1c_var(string ai_name)
+{
+	dprint swat_var
+	end1_counter = end1_counter - 1
+	if (end1_counter eq 0)
+		{
+		room1_end();
+		}
+}
+
+# ROOM 1 END
+func void room1_end(string ai_name)
+{
+	dprint room1_end
+	door_unlock 3
+	trigvolume_enable nodark 1
+}
+
+### GOTTA CATCH 'EM ALL! (WITH NO APOLOGIES TO YOU KNOW WHAT) ###
+
+# MINISTRIKE
+func void mini_strike(string ai_name)
+{
+	dprint mini_strike
+	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
+}
+
+# MINISTRIKE 1 FLEE
+func void mini_strike_flee_1(string ai_name)
+{
+	ai2_dopath mini_strike_1 mini_strike_flee_1
+}
+
+# MINISTRIKE 2 FLEE
+func void mini_strike_flee_2(string ai_name)
+{
+	ai2_dopath mini_strike_2 mini_strike_flee_2
+}
+
+# MINISTRIKE 3 FLEE
+func void mini_strike_flee_3(string ai_name)
+{
+	ai2_dopath mini_strike_3 mini_strike_flee_3
+}
+
+# MINISTRIKE 4 FLEE
+func void mini_strike_flee_4(string ai_name)
+{
+	ai2_dopath mini_strike_4 mini_strike_flee_4
+}
+
+# SWISS CHEESE
+
+func void patrolscript0001(string ai_name)
+{
+	dprint swisscheese_1
+	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)
+{
+	dprint swisscheese_2
+	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)
+{
+	dprint swisscheese_3
+	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)
+{
+	dprint swisscheese_4
+	chr_nocollision mini_strike_4 1
+	playback_block mini_strike_4 cheese4 interp 30
+	chr_delete mini_strike_4
+}
+
+# MINISTRIKE 1 HOLE
+func void patrolscript0110(string ai_name)
+{
+	chr_delete mini_strike_1
+}
+
+# MINISTRIKE 2 HOLE
+func void patrolscript0111(string ai_name)
+{
+	chr_delete mini_strike_2
+}
+
+# MINISTRIKE 3 HOLE
+func void patrolscript0112(string ai_name)
+{
+	chr_delete mini_strike_3
+}
+
+# MINISTRIKE 4 HOLE
+func void patrolscript0113(string ai_name)
+{
+	chr_delete mini_strike_4
+}
+
+### EVERYBODY WAS DREAM LAB FIGHTIN' ###
+
+# ROOM 1
+func void room_1(string ai_name)
+{
+	dprint room_1
+	sound_music_stop atm_gr09
+	sound_music_start mus_wls .75
+	particle fog_room1 do start
+	ai2_spawn griffin
+	Griffin01
+	trigvolume_enable room1a 0
+	trigvolume_enable room1b 0
+	trigvolume_enable room1c 0
+}
+
+# ROOM 2
+func void room_2(string ai_name)
+{
+	dprint room_2
+	ai2_spawn evilkonoko
+	Konoko02
+	door_lock 6
+	trigvolume_enable room2 0
+}
+
+# ROOM 2 MUSIC
+func void room2_music(string ai_name)
+{
+	dprint room2music
+	sound_music_volume atm_ft81 0.0 2.0
+	sound_music_stop atm_ft81 .75
+	sound_music_start mus_wls .75
+}
+
+### GENERAL CHICANERY ###
+
+# MURO'S WALL
+func void bring_the_wall(string char)
+{
+	dprint oops
+	env_show 1010 1
+}
+
+# FOG ON 1
+func void fog_floor1on(void)
+{
+	dprint fog_on
+	particle fog_floor1 do start
+	particle fog_floor2a do stop
+}
+
+# FOG OFF 1
+func void fog_floor1off(void)
+{
+	dprint fog_off
+	particle fog_floor1 do stop
+	particle fog_floor2a do start
+}
+
+# FOG ON 2
+func void fog_floor2boff(void)
+{
+	dprint fog_on
+	particle fog_floor2a do start
+	particle fog_floor2b do stop
+}
+
+# FOG OFF 2
+func void fog_floor2bon(void)
+{
+	dprint fog_off
+	particle fog_floor2a do stop
+	particle fog_floor2b do start
+}
+
+func void show_the_acid(string char)
+{
+	dprint show_acid
+	sound_music_volume mus_wls 0.0 2.0	
+	sound_music_stop mus_wls
+	sound_music_start atm_gr09 0.75
+	env_show 1976 1
+	trigvolume_enable splash_trigger 1
+	particle fog_floor1 do stop
+}
+
+# ACID DOOOOOM
+func void splash(string char)
+{
+  	var bool eggman;
+	eggman = chr_is_player(char);
+  	if (eggman eq 0)
+  		{
+    		chr_animate(char, KONOKOacid);
+    		sleep f10
+    		chr_set_health(char, 0);
+  		}
+
+  	if (eggman eq 1)
+  		{
+		input 0
+		chr_animate(char, KONOKOacid);
+		cm_detach
+
+		sound_impulse_play konoko_gruesome_death
+
+		sleep f5
+		chr_set_health(char, 0);
+  		}
+}
+
+func void laser_cutscene_fog(void)
+{
+	gs_farclipplane_set 2000
+	gl_fog_start_changeto .995 45
+}
+
+# LASER CUTSCENE
+func void laser_cutscene(string ai_name)
+{
+	dprint laser_cutscene
+	fork laser_cutscene_fog
+	begin_cutscene
+	sleep 90
+	trig_activate 1 
+	cm_interpolate laser_4 0
+	door_close 4
+	door_jam 4
+	cm_interpolate_block laser_3 250
+	sleep 250
+	cm_interpolate laser_2 0
+	cm_interpolate_block laser_8 200
+	ai2_spawn laser_ops_1
+	playback_block laser_ops_1 lstriker_1 interp 30
+	sleep 60
+	ai2_allpassive 0
+	cm_reset
+	door_lock 4
+	door_lock 5
+	trigvolume_enable lasercutscene 0
+	trigvolume_enable death_by_bungie 1
+	trigvolume_enable splash 1
+	sleep 15
+	end_cutscene
+}
+
+func void laser_cleanup(string ai_name)
+{
+	dprint laser_unlock
+	door_unlock 5
+}
+
+# BIG HEAD VAR
+func void bighead_1a_var(string ai_name)
+{
+	dprint bighead_var
+	bighead_counter = bighead_counter - 1
+	if (bighead_counter eq 0)
+		{
+		big_head();
+		}
+}
+
+func void bighead_1b_var(string ai_name)
+{
+	dprint bighead_var
+	bighead_counter = bighead_counter - 1
+	if (bighead_counter eq 0)
+		{
+		big_head();
+		}
+}
+
+func void bighead_1c_var(string ai_name)
+{
+	dprint bighead_var
+	bighead_counter = bighead_counter - 1
+	if (bighead_counter eq 0)
+		{
+		big_head();
+		}
+}
+
+func void bighead_1d_var(string ai_name)
+{
+	dprint bighead_var
+	bighead_counter = bighead_counter - 1
+	if (bighead_counter eq 0)
+		{
+		big_head();
+		}
+}
+
+# BIG HEAD
+func void big_head(string ai_name)
+{
+	dprint bighead
+	sleep 200
+	chr_big_head = 1
+	timer_start 120 small_head
+}
+
+func void small_head(string ai_name)
+{
+	dprint smallhead
+	chr_big_head = 0
+}
+
+### Level scripted by Joseph ###
Index: /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/dream_lab/dream_lab_main.bsl	(revision 405)
@@ -0,0 +1,29 @@
+#
+# dream_lab_main.bsl
+#
+
+var int my_save_point=0;
+var int rmusic_counter=2;
+var int tanker_counter=2;
+var int red_counter=1;
+var int swat_counter=1;
+var int end1_counter=3;
+var int bighead_counter=4;
+
+func void main(void)
+{
+	sound_ambient_start roomtone_softhum03 0.8
+
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.995
+	gs_farclipplane_set 2000
+	start
+
+	if (my_save_point eq 0)
+	{
+		intro
+	}
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/dream_lab/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/dream_lab/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/dream_lab/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,99 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+
+#room1
+func void room1_start(string ai_name)
+{
+	dprint room1_start
+	particle room1 do start
+}
+func void room1_stop(string ai_name)
+{
+	dprint room1_stop
+	particle room1 do stop
+}
+#room2
+func void room2_start(string ai_name)
+{
+	dprint room2_start
+	particle room2 do start
+}
+func void room2_stop(string ai_name)
+{
+	dprint room2_stop
+	particle room2 do stop
+}
+
+#room3
+func void room3_start(string ai_name)
+{
+	dprint room3_start
+	particle room3 do start
+}
+func void room3_stop(string ai_name)
+{
+	dprint room3_stop
+	particle room3 do stop
+}
+
+#room4
+func void room4_start(string ai_name)
+{
+	dprint room4_start
+	particle room4 do start
+}
+func void room4_stop(string ai_name)
+{
+	dprint room4_stop
+	particle room4 do stop
+}
+
+#room5
+func void room5_start(string ai_name)
+{
+	dprint room5_start
+	particle room5 do start
+}
+func void room5_stop(string ai_name)
+{
+	dprint room5_stop
+	particle room5 do stop
+}
+
+#room4
+func void room6_start(string ai_name)
+{
+	dprint room6_start
+	particle room6 do start
+}
+func void room6_stop(string ai_name)
+{
+	dprint room6_stop
+	particle room6 do stop
+}
+
+#room7
+func void room7_start(string ai_name)
+{
+	dprint room7_start
+	particle room7 do start
+}
+func void room7_stop(string ai_name)
+{
+	dprint room7_stop
+	particle room7 do stop
+}
+
+#room8
+func void room8_start(string ai_name)
+{
+	dprint room8_start
+	particle room8 do start
+}
+func void room8_stop(string ai_name)
+{
+	dprint room8_stop
+	particle room8 do stop
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/lab/lab_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/lab/lab_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/lab/lab_cutscene.bsl	(revision 405)
@@ -0,0 +1,368 @@
+#
+# lab_cutscene.bsl
+#
+
+func void shin_intro_dialogue(void)
+{
+	sound_dialog_play c00_01_99shinatama
+	cinematic_start (SHINtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	cinematic_stop (SHINtalking, 15, 20)
+}
+
+func void intro(void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate Camout01 0
+	sleep 13
+	begin_cutscene		
+	#hide motorcycle gunk
+	env_show 8 0
+	env_show 9 0
+	env_show 10 0
+	chr_nocollision 0 1
+	chr_forceholster 0 1
+	sleep 60
+	fade_in 120
+	#fork camcontrol
+	cm_anim both Camout01
+	obj_create 8 10
+	env_anim 8 10
+	chr_envanim 0 KonBipedBox01
+	chr_animate 0 KONOKOcycle_ride 880
+	sleep 15
+	cutscene_sync mark
+	sound_ambient_start c02_02_01_motorcyclea
+	cm_wait
+	cm_anim both Camout02
+	cutscene_sync mark
+
+	fork shin_intro_dialogue
+
+	sound_ambient_start c02_02_01_motorcycleb 0.7
+
+	cm_wait
+	cm_anim both Camout03
+	cutscene_sync mark
+
+	sound_ambient_start c02_02_01_motorcyclec 0.7
+
+	ai2_spawn Barabus
+	ai2_setmovementmode Barabus walk
+	playback Barabus IntroSubboss01
+	cm_wait
+	cm_anim both Camout04
+	sleep 20
+	cutscene_sync mark
+
+	sound_ambient_start c02_14_27_jump_land_skid
+
+	sleep 40
+	chr_animate Barabus STRIKElev3_startle
+	cm_wait
+	cm_anim both Camout05
+	chr_animate 0 KONOKOlev3_intro_stop
+	env_setanim 8 hubs_stop
+	env_setanim 9 hubs_rear_stop
+	env_setanim 10 motorcycle02_stop
+	chr_envanim 0 KonBipedBox02 norotation
+	cm_wait
+	cm_interpolate Camout06 0
+	#chr_create 1000 start
+	#chr_neutral 1000 1
+	cinematic_start (BOSS1talking, 180, 180, 20, 8, 20, false)
+	sleep 20
+	sound_dialog_play c03_10_01barabas
+	sound_dialog_play_block pause
+	sleep 20
+	cinematic_stop (BOSS1talking, 19, 20)
+	#hide motorcycle object
+	obj_kill 8 10
+	#unhide motorcycle gunk
+	env_show 10 1
+	env_show 9 1
+	env_show 8 1
+	#setup Konoko for scene
+	playback 0 IntroKonoko01
+	sleep 10
+	cm_reset
+	chr_nocollision 0 0
+	end_cutscene
+	set_objective_1
+	trigvolume_enable save_1_trig 1
+	ai2_attack Barabus konoko
+
+	sound_music_start mus_main01_hd	0.8
+}
+
+func void camcontrol(void)
+{
+	cm_anim both Camout01
+	cm_anim both Camout02
+	cm_anim both Camout03
+	cm_anim both Camout04
+	cm_anim both Camout05
+	cm_wait
+	letterbox 0
+	cm_jello 1
+	cm_reset
+	chr_nocollision 0 0
+	input 1
+}
+
+func void rocket(void)
+{
+	sound_music_stop mus_main01_hd	
+
+	begin_cutscene jello
+	chr_animate Barabus STRIKEknockdown1
+	sleep 60
+	ai2_takecontrol 1
+	ai2_lookatchar 0 Barabus
+	chr_animate Barabus BARABstunned 1000
+	sound_dialog_play c03_10_02barabas
+	cinematic_start (BOSS1talking, 180, 180, 16, 1, 20, false)	
+	sleep 280
+	chr_nocollision Barabus 1
+	chr_animate Barabus BARABrocket 250
+	sleep 130
+	cutscene_sync mark
+	sound_ambient_start c01_00_02barjet
+	#Barabas flies into the sky
+	chr_animate_block Barabus BARABlev3_rocket
+	chr_envanim Barabus RocketBox01
+	cm_anim both RocketCam01
+	sleep 90
+	sound_dialog_play c03_11_01barabas
+	sound_dialog_play_block pause
+	sound_dialog_play c03_11_02muro
+	cinematic_start (MUROtalking, 180, 180, 16, 3, 20, true)	
+	sound_dialog_play_block pause
+	sound_dialog_play c03_11_03barabas
+	sound_dialog_play_block pause
+	sound_dialog_play c03_11_04muro
+	sound_dialog_play_block pause
+	sound_dialog_play c03_11_05barabas
+	sound_dialog_play_block pause
+	sleep 30
+	cinematic_stop (BOSS1talking, 15, 20)
+	cinematic_stop (MUROtalking, 16, 20)
+	sleep 10
+	cm_reset
+	end_cutscene
+	ai2_takecontrol 0
+	chr_delete Barabus
+	set_objective_2
+	trigvolume_enable floor1 1
+	trigvolume_enable outside_left 1
+	trigvolume_enable outside_right 1
+	trigvolume_enable outside_back 1
+
+	target_set(143, 30.0)
+
+	sleep 180
+
+	sound_ambient_start c00_01_98shinatama
+
+#	dprint savegame_1	
+#	save_game 1
+}
+
+
+func void bomber(void)
+{
+	chr_animate Tower_MB_1 STRIKEknockdown1
+	chr_invincible Tower_MB_1 1
+	chr_unstoppable Tower_MB_1 1
+	dprint(ainame);
+	begin_cutscene
+	#input 0
+	#cm_jello 0		
+	#letterbox 1
+	#add dialogue "Help Konoko!  We're pinned down!!"
+	sleep f60
+	sound_dialog_play c03_12_02tctfag1
+	door_unlock 60
+	door_unlock 61
+	sleep 60
+	cm_interpolate BomberCam01 0
+	cm_interpolate_block BomberCam02 300
+	ai2_spawn BombComguy
+	ai2_setmovementmode BombComguy run
+	playback BombComguy COMGUYfiring
+	sleep 180
+	#sound_dialog_play
+	ai2_spawn BombTCTF1
+	ai2_spawn BombTCTF2
+	chr_create 1004 start
+	ai2_setmovementmode BombTCTF1 run
+	ai2_setmovementmode BombTCTF2 run
+	playback BombTCTF1 TCTFfiring01
+	playback BombTCTF2 TCTFfiring02
+	playback 1004 TCTFradio
+	playback BombComguy COMGUYfiring
+	chr_animate 1004 COMGUYtalk_radio 380
+	sound_dialog_play_block pause
+	# CB: this sound file no longer exists (it was a duplicate)
+	sound_dialog_play c03_12_12TCTFAG1
+
+	cinematic_start (TCTFshouting, 180, 180, 16, 3, 20, true)	
+	sound_dialog_play_block pause
+	#env_show 777 1
+	#env_show 778 0
+	cinematic_stop (TCTFshouting, 16, 20)
+	#back in the tower Bomber man staggers to his feet
+	playback 0 KonBomb
+	chr_envanim Tower_MB_1 BomberBox01 norotation
+	chr_animate Tower_MB_1 BOMBlev3_stagger
+	cm_interpolate BomberCam03 0
+	cm_interpolate_block BomberCam04 330
+	cinematic_start (KONtalkangryfront, 180, 180, 18, 6, 20, true)
+	sleep 40
+	sound_dialog_play c03_12_03konoko
+	sound_dialog_play_block pause
+	sleep 60
+	cinematic_stop (KONtalkangryfront, 17, 20)
+	chr_envanim_block Tower_MB_1 BomberBox02 norotation
+	chr_animate Tower_MB_1 BOMBlev3_stand 1200
+	cm_interpolate_block BomberCam05 0
+	cinematic_start (BOMBbeatup, 180, 180, 18, 4, 30, false)
+	sound_dialog_play c03_12_04bombgreen
+	sound_dialog_play_block pause
+	cinematic_stop (BOMBbeatup, 17, 30)
+	playback BombComguy COMGUYfiring
+	chr_envanim 0 KonBomBox01
+	chr_animate 0 KONOKOlev3_bomber
+	cm_interpolate BomberCam06 0
+	sleep 195
+	cm_anim both BomberCam07
+	chr_envanim Tower_MB_1 BomberBox03 norotation
+	sleep 110
+	chr_animate Tower_MB_1 BOMBlev3_fall1 100
+	sleep 13
+	#break tower glass here
+	#env_show 776 1
+
+	sound_impulse_play glass_big 1.0
+
+	env_show 777 1
+	env_show 778 0
+	particle BomberCharge01 do explode
+	cm_wait
+	cm_anim both BomberCam08
+	chr_envanim Tower_MB_1 BomberBox04 norotation
+	chr_animate Tower_MB_1 BOMBlev3_fall2
+	sleep 50
+	#break atrium glass here
+	particle BomberCharge02 do explode
+	sleep 105
+	#explode bomber here
+	particle BomberExplosion create
+	chr_delete BombComguy
+	cm_wait
+	sleep 60
+	playback 0 KonBomb02
+	cm_interpolate BomberCam09 0
+	cinematic_start (TCTFtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play c03_12_05tctfag1
+	sound_dialog_play_block pause
+	cinematic_stop (TCTFtalking, 20, 20)
+	# sounds of TCTF saying "uhhhh, we're not pinned down.
+	#cm_reset
+	#end_cutscene
+	set_objective_5
+	door_unlock 38
+	door_unlock 41
+	door_unlock 42
+	door_lock 60
+	door_lock 61
+	particle locktower_locklight01 do start
+	chr_delete BombTCTF1
+	chr_delete BombTCTF2
+	chr_delete BombComguy
+	chr_delete 1004
+	chr_delete Tower_MB_1
+	playback 0 BomberKonRun01
+	sleep 120
+	cm_interpolate BomberCamRun01 0
+	playback 0 BomberKonRun02
+	cm_interpolate_block BomberCamRun02 200
+	sleep 210
+	#begin_cutscene
+	sleep 30
+	chr_nocollision 0 1
+	cm_anim both ElevCam01
+	chr_envanim 0 ElevBox01
+	chr_animate 0 KONOKOidle1
+
+	sound_ambient_start rl_elevator 1.0
+
+	env_show 540 0 
+	cm_wait
+	end_cutscene
+	cm_reset
+	chr_nocollision 0 0
+	obj_create 2 7
+	sapper_damage_off
+#	save_game_3
+}
+
+
+func void fallinthevat(string char)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(char);
+
+  if (eggman eq 0)
+  {
+    chr_animate(char, KONOKOacid);
+    sleep 10
+    chr_set_health(char, 0);
+  }
+
+  if (eggman eq 1)
+  {
+    cm_detach
+
+    sound_impulse_play konoko_gruesome_death
+
+    chr_animate(char, KONOKOacid);
+    sleep 10
+    chr_set_health(char, 0);
+  }
+}
+
+func void outro(void)
+{
+	target_set(256, 0.0)
+	ai2_allpassive=1
+	#begin_cutscene
+	#ai2_takecontrol 1
+	#ai2_movetoflag 0 257
+	env_anim 2 7
+	sound_ambient_start truck_driveaway
+	#cm_interpolate OutroCam01 360
+	sound_dialog_play c03_13_01konoko
+	cinematic_start (KONintense, 180, 180, 19, 7, 15, true)
+	sound_dialog_play_block pause
+	cm_interpolate OutroCam01 200
+	sleep 30
+	cinematic_stop (KONintense, 19, 30)
+	begin_cutscene
+	ai2_takecontrol 1
+	ai2_movetoflag 0 257
+	#camera cut to van
+	sound_dialog_play c03_13_02synhench1
+	cinematic_start (COMGUYtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	sound_dialog_play c03_13_03muro
+	sleep 120
+	fade_out 0 0 0 60
+	cinematic_start (MUROtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (MUROtalking, 16, 15)
+	cinematic_stop (COMGUYtalking, 15, 15)
+	sleep 30
+	win
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/lab/lab_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/lab/lab_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/lab/lab_level_logic.bsl	(revision 405)
@@ -0,0 +1,898 @@
+################## RESEARCH LAB LEVEL LOGIC ##########################
+
+################ SCRIPTS BY Hardy AND Joseph #########################
+
+################# START, SAVE & OBJECTIVES ###########################
+
+
+# creates counterS for stuff
+
+var int door_counter=3;
+var int passage_counter=3;
+var int count_dead_end=2;
+
+func void turnoffcompass(string ai_name)
+{
+	target_set(143, 0.0)
+}
+
+func void level_start(string ai_name)
+{
+	dprint func_void_start
+
+	if (my_save_point eq 1)
+		{
+		dprint restore_game_1
+
+		set_objective_1
+
+		ai2_spawn Barabus
+
+		dprint SPAWN_BARABUS
+
+		ai2_attack Barabus konoko
+
+		env_show 10 1
+		env_show 9 1
+		env_show 8 1
+
+		#obj_kill 8 10
+
+		trigvolume_enable save_1_trig 0
+		trigvolume_enable floor1 0
+		trigvolume_enable outside_left 0
+		trigvolume_enable outside_right 0
+		trigvolume_enable outside_back 0
+
+		#chr_animate Barabus STRIKElev3_startle
+		#ai2_setmovementmode Barabus walk
+		#playback Barabus IntroSubboss01
+		playback 0 IntroKonoko01
+
+		sound_music_start mus_main01_hd	0.8
+
+		restore_game
+		}
+
+	if (my_save_point eq 2)
+		{
+		dprint restore_game_2
+
+		set_objective_2_from_save
+
+		dprint restore_game_2_a
+
+		door_lock 43
+
+		dprint restore_game_2_b
+
+		particle lock99_locklight01 do stop
+
+		dprint restore_game_2_c
+
+		spawn_floor1_guards
+
+		dprint restore_game_2_d
+
+		restore_game
+		cm_reset
+		}
+	
+	if (my_save_point eq 3)
+		{
+		dprint restore_game_3
+
+		spawn_lobby_tctf
+
+		trigvolume_enable save_3_trig 0
+
+		door_lock 35
+		dprint objective5
+		objective_set(5, silent)
+		target_set(142, 30.0)
+		
+		restore_game
+		}
+}
+
+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 save_game_1(string ai_name)
+{
+	dprint savegame_1	
+	if (my_save_point ne 1)
+	{
+		save_game 1 autosave
+	}
+}
+
+func void save_game_2(string ai_name)
+{
+	dprint savegame_2
+	if (my_save_point ne 2)
+	{
+		save_game 2 autosave
+	}
+}
+
+func void save_game_3(string ai_name)
+{
+	dprint savegame_3	
+
+	if (my_save_point ne 3)
+	{
+		save_game 3 autosave
+	}
+}
+
+########### GAME OBJECTIVES ############################3
+
+func void set_objective_1(void)
+{
+	dprint objective_1
+	objective_set(1)
+}
+
+func void set_objective_2_from_save(void)
+{
+	objective_set(2)	
+}
+
+func void set_objective_2(string chr_index)
+{
+	sleep 180
+	dprint objective_2
+	objective_set(2)
+	particle lock99_locklight01 do start
+	door_unlock 43
+}
+
+func void set_objective_3(string chr_index)
+{
+	dprint objective_3
+	#sound_dialog_play_block c00_01_20shinatama
+	#sound_dialog_play_block pause
+	objective_set(3)
+	target_set(205, 30.0)
+}
+
+func void set_objective_4(string chr_index)
+{
+	dprint objective_4
+	sound_dialog_play_block c00_01_19shinatama
+	sound_dialog_play_block pause
+	objective_set(4)
+	target_set(110, 30.0)
+}
+
+func void set_objective_5(string chr_index)
+{
+	dprint objective_5
+	#sound_dialog_play_block c00_01_18shinatama
+	#sound_dialog_play_block pause
+	objective_set(5)
+	target_set(142, 30.0)
+}
+
+func void set_objective_6(string chr_index)
+{
+	dprint objective_6
+	sound_dialog_play_block c00_01_22shinatama
+	sound_dialog_play_block pause
+	objective_set(6)
+	target_set(256, 30.0)
+}
+
+func void set_target_4(string chr_index)
+{
+	sound_dialog_play_block c00_01_26shinatama
+	sound_dialog_play_block pause
+	target_set(253, 30.0)
+}
+
+func void set_target_5(string chr_index)
+{
+	sound_dialog_play_block c00_01_28shinatama
+	sound_dialog_play_block pause
+	target_set(254, 30.0)
+}
+
+func void set_target_6(string chr_index)
+{
+	target_set(256, 30.0)
+}
+
+
+### MARTY'S HUGE SACK ###
+
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+
+	if (0 ne music_counter) 
+	{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+	}
+}
+
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void striker_siesta_1(string ai_name)
+{
+	dprint striker_siesta1
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+
+}
+func void striker_siesta_2(string ai_name)
+{
+	dprint striker_siesta2
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+}
+
+func void all_music_counters(void)
+{
+	dprint WHEN_THE_LIGHTS_GO_DOWN_IN_THE_CITY
+	
+	sound_music_stop mus_trt
+#	sound_music_stop mus_fiteb
+#	sound_music_stop mus_asian
+}
+
+
+### TEXT CONSOLES ###
+
+func void level3a(string chr_index)
+{
+	dprint text3a
+	text_console level_3a
+	console_reset 7
+}
+
+func void level3b(string chr_index)
+{
+	dprint text3b
+	text_console level_3b
+	console_reset 6
+}
+
+func void level3c(string chr_index)
+{
+	dprint text3c
+	text_console level_3c
+	console_reset 1
+}
+
+func void level3d(string chr_index)
+{
+	dprint text3d
+	text_console level_3d
+	day_264
+}
+
+
+
+
+### GAMEPLAY PROGRESSION ###
+
+func void tower_lock_1(string chr_index)
+{
+	sound_music_stop mus_main03
+
+	ai2_spawn Tower_MB_1
+	trigvolume_enable towertrig_2 0
+	door_lock 41
+}
+
+func void sapper_damage_on(string chr_index)
+{
+	dprint sapper_dmg_start
+	particle sapper start
+}
+
+func void sapper_damage_off(string chr_index)
+{
+	dprint sapper_dmg_stop
+	particle sapper stop
+}
+
+func void spawn_floor1_guards(string ai_name)
+{
+	dprint spawn_floor1
+	particle lock1_locklight01 do stop
+	particle lockA_locklight01 do start
+	ai2_spawn Floor1_Striker_1
+	ai2_spawn Floor1_Striker_2
+	ai2_spawn Floor1_Sci_1
+	ai2_spawn Floor1_Sci_2
+	ai2_spawn Floor1_Sci_3
+	ai2_spawn Floor1_Sci_4
+
+	set_objective_3
+}
+
+func void spawn_right_patrol(string ai_name)
+{
+	dprint spawn_right_patrol
+	ai2_spawn right_patrol_striker_1
+}
+
+func void spawn_left_patrol(string ai_name)
+{
+	dprint spawn_right_patrol
+	ai2_spawn left_patrol_striker_1
+}
+
+func void spawn_back_patrol(string ai_name)
+{
+	dprint spawn_right_patrol
+	ai2_spawn back_patrol_striker_1
+	ai2_spawn back_patrol_striker_2
+}
+
+func void spawn_floor1_striker_10(string ai_name)
+{
+	dprint spawn_ambush_striker_10
+#	trig_activate 1
+	ai2_spawn Floor1_Striker_10
+	ai2_spawn Floor1_Striker_12
+}
+
+func void spawn_floor1_striker_11(string ai_name)
+{
+	dprint spawn_ambush_striker_11
+#	trig_activate 1
+	ai2_spawn Floor1_Striker_11
+	ai2_spawn Floor1_Striker_12
+}
+
+func void fake_console(string ai_name)
+{
+	sleep 180
+	dprint fake_console
+
+	door_unlock 2
+	door_unlock 9
+	door_unlock 12
+	door_unlock 15
+	door_unlock 18
+	door_unlock 21
+	door_unlock 24
+	door_unlock 27
+
+	particle lock2_locklight01 do start
+}
+
+func void spawn_floor2_guards(string ai_name)
+{
+	dprint spawn_floor2
+
+	particle lock2_locklight01 do stop
+
+	ai2_spawn Floor2_Striker_2
+	ai2_spawn Floor2_Striker_3
+	ai2_spawn Floor2_Striker_4
+
+	sleep 15
+
+	ai2_spawn Floor2_Striker_1
+	ai2_doalarm Floor2_Striker_1 3
+
+	sleep 15
+
+	ai2_spawn Floor2_Sci_1
+	ai2_spawn Floor2_Sci_2
+	ai2_spawn Floor2_Sci_3
+	ai2_spawn Floor2_Sci_4
+	ai2_spawn Floor2_Sci_5
+
+	trigvolume_enable attack_trigger 0
+}
+
+func void commence_attack(string ai_name)
+{
+	dprint commence_attack
+
+	ai2_setalert Floor2_Striker_2 high
+	ai2_setalert Floor2_Striker_3 high
+	ai2_setalert Floor2_Striker_4 high
+
+	ai2_dopath Floor2_Striker_1 Floor2_Stk_1
+	ai2_dopath Floor2_Striker_2 scram_path
+	ai2_dopath Floor2_Striker_3 attack_path_1
+	ai2_dopath Floor2_Striker_4 attack_path_2
+
+	ai2_setjobstate Floor2_Striker_1
+	ai2_setjobstate Floor2_Striker_2
+	ai2_setjobstate Floor2_Striker_3
+	ai2_setjobstate Floor2_Striker_4
+
+	ai2_attack Floor2_Striker_4 Floor2_Sci_4
+	ai2_attack Floor2_Striker_3 Floor2_Sci_1
+}
+
+func void death_sentence_1(string ai_name)
+{
+	dprint death_sentence_1
+	ai2_attack Floor2_Striker_4 Floor2_Sci_5
+}
+
+func void death_sentence_2(string ai_name)
+{
+	dprint death_sentence_2
+	ai2_attack Floor2_Striker_3 Floor2_Sci_2
+}
+
+func void death_sentence_3(string ai_name)
+{
+	dprint death_sentence_2
+	ai2_attack Floor2_Striker_3 Floor2_Sci_3
+}
+
+func void spawn_floor3_guards(string ai_name)
+{
+	dprint spawn_floor3
+
+	ai2_spawn Floor3_Striker_1
+	ai2_spawn Floor3_Striker_2
+	ai2_spawn Floor3_Striker_3
+	ai2_spawn Floor3_Striker_4
+
+	ai2_spawn Floor3_Comguy_1
+	
+	particle lock3_locklight01 do stop
+}
+
+func void spawn_roof_guards(string ai_name)
+{
+	dprint spawn_roof_guards
+
+	ai2_spawn Roof_Striker_1
+	ai2_spawn Roof_Striker_2
+	ai2_spawn Roof_Striker_3
+
+#	particle lock3_locklight01 do start
+}
+
+func void roof_surprise(string ai_name)
+{
+	dprint roof_surprise
+	ai2_dopath Roof_Striker_3 Roof_Striker_3b
+	ai2_setjobstate	Roof_Striker_3
+}
+
+func void spawn_tower_guards(string ai_name)
+{
+	dprint spawn_tower_guards
+
+	ai2_spawn Tower_Striker_1
+	ai2_spawn Tower_Striker_2
+#	particle lock3_locklight01 do start
+}
+
+func void spawn_lobby_tctf(string ai_name)
+{
+	dprint spawn_lobby_guards
+	ai2_spawn Lobby_TCL_1
+	ai2_spawn Lobby_TCL_2
+	ai2_spawn Lobby_TCS_1
+
+#	particle lock3_locklight01 do start
+}
+
+func void spawn_lobby_synd(string ai_name)
+{
+	dprint spawn_lobby_attackers
+
+	sleep 600
+
+	ai2_spawn Lobby_Striker_1
+	ai2_spawn Lobby_Striker_2
+	ai2_spawn Lobby_Striker_3
+	ai2_spawn Lobby_Striker_4
+
+	door_lock 35
+
+#	particle lock3_locklight01 do start
+}
+
+func void spawn_lively_1(string ai_name)
+{
+	dprint spawn_lively_1
+
+	ai2_spawn lively_striker_1
+}
+
+func void spawn_lively_2(string ai_name)
+{
+	dprint spawn_lively_2
+
+	ai2_spawn lively_striker_2
+}
+
+func void spawn_lively_3(string ai_name)
+{
+	dprint spawn_lively_3
+
+	ai2_spawn lively_striker_3
+	ai2_spawn lively_striker_4
+}
+
+func void spawn_opposite_striker_1(string ai_name)
+{
+	dprint spawn_opposite_1
+
+	ai2_spawn opposite_striker_1
+	trigvolume_enable spawn_opposite_2 0
+}
+
+func void spawn_opposite_striker_2(string ai_name)
+{
+	dprint spawn_opposite_2
+
+	ai2_spawn opposite_striker_2
+	trigvolume_enable spawn_opposite_1 0
+}
+
+func void backdoor(string ai_name)
+{
+	dprint spawn_backdoor_squad
+
+	ai2_spawn backdoor_striker_1
+	ai2_spawn backdoor_striker_3
+}
+
+func void spawn_vats(string ai_name)
+{
+	dprint spawn_vats
+
+	ai2_spawn Vat_Striker_1
+	ai2_spawn Vat_Striker_2
+	ai2_spawn Vat_Striker_3
+	ai2_spawn Vat_Striker_4
+	ai2_spawn Vat_Striker_5
+
+	particle lock4_locklight01 do stop
+	trigvolume_enable final_ambush 0
+	trigvolume_enable outro_volume_1 0
+	door_lock 49
+	door_lock 50
+}
+
+func void gethelp(string ai_name)
+{
+	trigvolume_enable outro_volume_1 1
+	sleep 120
+	door_unlock 49
+	door_unlock 50
+	ai2_attack Ambush_Striker_2 Konoko
+	particle lock177_locklight01 do start
+	sound_music_stop mus_main03
+}
+
+func void final_ambush(string ai_name)
+{
+	dprint spawn_final_ambush
+	ai2_spawn Ambush_Striker_1
+	ai2_spawn Ambush_Striker_2
+}
+
+func void unlock_floor1_doors(string ai_name)
+{
+	dprint unlock_floor1_doors
+
+	trigvolume_enable trigger_volume_10 0
+
+	door_unlock 3
+	door_unlock 8
+	door_unlock 11
+	door_unlock 14
+	door_unlock 17
+	door_unlock 20
+	door_unlock 23
+	door_unlock 26
+
+	if(trigvolume_count(36) eq 0)
+		{
+		input 0
+#		begin_cutscene
+		cm_interpolate lock1 0
+		sleep 60
+		particle lock1_locklight01 do start
+		sleep 150
+		cm_interpolate tophint 0
+		sleep 60
+		particle lock4a_locklight01 do start
+		sleep 150
+		cm_reset
+		end_cutscene
+		input 1
+		cm_reset
+#		end_cutscene
+		input 1
+		}
+
+	particle lock1_locklight01 do start
+	particle lock4a_locklight01 do start
+
+	door_counter = door_counter - 1
+	if (door_counter eq 0)
+		{
+		unlock_roof();
+		}
+}
+
+func void unlock_floor2_doors(string ai_name)
+{
+	dprint unlock_floor2_doors
+
+	trigvolume_enable attack_trigger 1
+
+	door_unlock 2
+	door_unlock 9
+	door_unlock 12
+	door_unlock 15
+	door_unlock 18
+	door_unlock 21
+	door_unlock 24
+	door_unlock 27
+
+	if(trigvolume_count(37) eq 0)
+		{
+		input 0
+#		begin_cutscene
+		cm_interpolate lock2 0
+		sleep 60
+		particle lock2_locklight01 do start
+		sleep 150
+		cm_interpolate tophint 0
+		sleep 60
+		particle lock4b_locklight01 do start
+		sleep 150
+		cm_reset
+		end_cutscene
+		input 1
+		cm_reset
+#		end_cutscene
+		input 1
+		}
+
+	particle lock2_locklight01 do start
+	particle lock4b_locklight01 do start
+
+	door_counter = door_counter - 1
+	if (door_counter eq 0)
+		{
+		unlock_roof();
+		}
+
+	sleep 60
+
+	ai2_dopath Floor2_Striker_1 Floor2_Stk_1
+	ai2_setjobstate	Floor2_Striker_1
+}
+
+func void unlock_floor3_doors(string ai_name)
+{
+	dprint unlock_floor3_doors
+
+	door_unlock 28
+	door_unlock 22
+	door_unlock 16
+	door_unlock 1
+	door_unlock 10
+	door_unlock 13
+	door_unlock 19
+	door_unlock 25
+
+	if(trigvolume_count(37) eq 0)
+		{
+		input 0
+#		begin_cutscene
+		cm_interpolate lock3 0
+		sleep 60
+		particle lock3_locklight01 do start
+		sleep 150
+		cm_interpolate tophint 0
+		sleep 60
+		particle lock4c_locklight01 do start
+		sleep 150
+		cm_reset
+#		end_cutscene
+		input 1
+		}
+
+	particle lock3_locklight01 do start
+	particle lock4c_locklight01 do start
+
+	door_counter = door_counter - 1
+	if (door_counter eq 0)
+		{
+		unlock_roof();
+		}
+}
+
+func void unlock_roof(string ai_name)
+{
+	dprint unlock_roof
+	door_unlock 4
+	spawn_roof_guards
+	door_unlock 56
+
+	sound_music_start mus_main03	
+}
+
+func void passage_1(string ai_name)
+{
+	dprint unlock_floor1_doors
+
+	input 0
+	cm_interpolate passage 0
+	sleep 60
+	particle lock69a_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	passage_counter = passage_counter - 1
+	if (passage_counter eq 0)
+		{
+		unlock_passage();
+		}
+}
+
+func void passage_2(string ai_name)
+{
+	dprint unlock_floor1_doors
+
+	input 0
+	cm_interpolate passage 0
+	sleep 60
+	particle lock69b_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	passage_counter = passage_counter - 1
+	if (passage_counter eq 0)
+		{
+		unlock_passage();
+		}
+}
+
+func void passage_3(string ai_name)
+{
+	dprint unlock_floor1_doors
+
+	input 0
+	cm_interpolate passage 0
+	sleep 60
+	particle lock69c_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	passage_counter = passage_counter - 1
+	if (passage_counter eq 0)
+		{
+		unlock_passage();
+		}
+}
+
+func void unlock_passage(string ai_name)
+{
+	dprint unlock_passage
+
+	sound_music_start mus_main03 1.0
+
+	door_unlock 48
+	#target_set(256, 0.0)
+}
+
+func void unlock_end_door(string ai_name)
+{
+	dprint unlock_end_door
+
+	door_unlock 56
+
+	trigvolume_enable final_ambush 1
+
+	input 0
+	cm_interpolate lock5 0
+	sleep 60
+	particle lockend_locklight02 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	target_set(52, 30.0)
+	sleep 30
+	ai2_spawn Vat_MB_1
+}
+
+
+func void Lobby_Hurt_TCL_1(string ai_name)
+{
+	dprint Hurt_TCL_1
+	ai2_dopath Lobby_TCL_1 Lobby_Hurt_TCL_1
+}
+
+
+func void Lobby_Hurt_TCL_2(string ai_name)
+{
+	dprint Hurt_TCL_2
+
+	sleep 120
+
+	ai2_dopath Lobby_TCL_2 Lobby_Hurt_TCL_2
+}
+
+
+### MISE EN SCENE ###
+
+
+func void miseenscene_start(string ai_name)
+{
+	dprint scene_start
+	particle scene create
+
+	ai2_spawn scene_thug_1
+	ai2_spawn scene_thug_2
+}
+
+func void miseenscene_stop(string ai_name)
+{
+	dprint scene_stop
+	particle scene kill
+}
+
+func void day_264(string ai_name)
+{
+	dprint day264
+	
+	sleep 150
+	particle day264 create
+	particle dayafter create
+	particle dayafter start
+
+	ai2_dopath scene_thug_1 scene_flee_1 1
+	ai2_dopath scene_thug_2 scene_flee_2 1
+
+	sleep 300
+	ai2_spawn arcy
+	
+	sleep 1000
+	chr_delete scene_thug_1
+	chr_delete scene_thug_2
+
+	sleep 500
+	chr_delete arcy
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/lab/lab_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/lab/lab_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/lab/lab_main.bsl	(revision 405)
@@ -0,0 +1,39 @@
+#
+# lab_main.bsl
+#
+
+
+var int my_save_point;
+
+func void main(void)
+{
+	trigvolume_enable save_1_trig 0
+	env_show 776 0
+	env_show 777 0
+	gl_fog_blue=.15
+	gl_fog_red=.30
+	gl_fog_green=.17
+	gl_fog_start=.99
+	gs_farclipplane_set 5000
+
+	obj_create 2 7
+
+	my_save_point = save_point;
+
+	level_start
+
+	if (my_save_point eq 0)
+	{
+		trigvolume_enable outside_left 0
+		trigvolume_enable outside_right 0
+		trigvolume_enable outside_back 0
+
+		intro
+	}
+}
+
+func void chase1(void)
+{
+}
+
+
Index: /AE/packages_bak/VanillaBSL/IGMD/lab/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/lab/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/lab/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,10 @@
+func void splash(string ai_name)
+{
+	dprint we_entered_splash
+	chr_animate ai_0 KONOKOacid
+}
+func void entry(string character)
+{
+	dprint EWW_GROSS
+	particle bug pulse
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_anim_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_anim_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_anim_scripts.bsl	(revision 405)
@@ -0,0 +1,39 @@
+#
+# anim_scripts.bsl
+#
+
+func void patrolscript0001 (string ai_name)
+{
+	playback_block Pod1_TCL_1 alarm1 interp 20
+}
+func void patrolscript0002 (string ai_name)
+{
+	playback_block Pod1_TCL_2 alarm2 interp 20
+}
+func void patrolscript0003 (string ai_name)
+{
+	playback_block Pod2_TCL_1 pod2alarm1 interp 20
+}
+func void patrolscript0004 (string ai_name)
+{
+	playback_block Pod2_TCL_2 pod2alarm2 interp 20
+}
+
+
+func void patrolscript0009 (string ai_name)
+{
+	particle lock99_locklight01 do start
+	door_unlock 11
+	sleep 540
+	particle lock99_locklight01 do stop
+	door_lock 11
+}
+func void patrolscript0010 (string ai_name)
+{
+	particle lock99_locklight01 do start
+	door_unlock 11
+# WAIT AND RELOCK DOORS
+	sleep 540
+	particle lock99_locklight01 do stop
+	door_lock 11
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_cutscene.bsl	(revision 405)
@@ -0,0 +1,411 @@
+#
+# manplant_cutscene.bsl
+#
+
+func void
+manplant_cs_intro(void)
+{
+
+}
+
+
+func void intro(void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate Camout01 0
+	env_show 561 0
+	sleep f14
+	begin_cutscene
+	sleep f30
+	#Outside shot of cops walking in
+	ai2_spawn Recep
+	ai2_spawn partner_cop_1
+	ai2_spawn partner_cop_2
+	playback 0 IntroKonoko01
+	playback partner_cop_1 IntroCop01
+	playback partner_cop_2 IntroCop02
+	#cm_interpolate Camout01 0
+	
+	sound_music_start mus_ambgrv1b 0.90
+	#music_script_start();
+
+	fade_in 120
+
+	sleep f240
+	#cops enter building, shot behind the receptionist
+	cm_anim both Camin02
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_prehello 540
+	chr_lock_active Recep
+	chr_lock_active partner_cop_1
+	chr_lock_active partner_cop_2
+	#receptionist looks up and Cop introduces himself
+	cm_interpolate_block Camin03 0
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_prehello 120
+	chr_animate_block Recep SECRETsit_hello 90
+
+	sound_music_volume mus_ambgrv1b 0.6 1
+
+	chr_animate_block Recep SECRETsit_talk 600
+	chr_envanim Recep IntroSecBox01 norotation
+
+	sound_dialog_play c01_04_01receptionist
+	cinematic_start (RECEPtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (RECEPtalking, 20, 20)
+	cinematic_start (TCTFtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play c01_04_02tctfag1
+	chr_envanim Recep IntroSecBox01 norotation
+	#Konoko interrupts Cop guy
+	playback 0 IntroKonokoInt
+	sleep f100
+	#sound_dialog_play_block pause
+	chr_envanim Recep IntroSecBox01 norotation
+	cm_interpolate IntroCamInterrupt 0
+	cinematic_start (KONpsychedup, 180, 180, 20, 7, 20, false)
+	playback partner_cop_1 IntroCopInt
+	sound_dialog_play_interrupt c01_04_03konoko
+	cinematic_stop (TCTFtalking, 19, 20)
+	sound_dialog_play_block pause
+	cinematic_stop (KONpsychedup, 19, 20)
+	#Receptionis says ok officer
+	cm_interpolate Camin03 0
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_talk 400
+	sleep f30
+	cinematic_start (RECEPtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play c01_04_04receptionist
+	sleep f90
+	#Receptionis hits alarm
+	cm_anim both IntroCamAlarm
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_alarm 400
+	sleep f110
+	particle IntroLight01 create
+	particle IntroLight01 do start
+	cinematic_stop (RECEPtalking, 20, 20)
+	#Bad guys see alarm is hit
+	cm_wait
+	chr_create 1050 start
+	ai2_spawn Barabus
+	chr_neutral 1050 1
+	#chr_neutral 1051 1
+	playback 1050 IntroMuroSet
+	playback Barabus IntroBossSet
+	cm_interpolate IntroCamBadGuys00 0
+
+	sound_ambient_start alarm_loop
+
+	cm_interpolate_block IntroCamBadGuys01 240
+	sleep f120
+	cinematic_start (BOSS1nametag, 180, 180, 16, 3, 20, false)
+	sound_dialog_play c02_05_01barabas
+
+	sound_ambient_volume alarm_loop .35 1.0
+	
+	sound_dialog_play_block pause
+	#Muro turns to Bossman
+	playback 1050 IntroMuro01
+	cm_interpolate IntroCamMuro01 0
+	cinematic_start (MUROnametag, 180, 180, 15, 1, 20, false)	
+	sound_dialog_play c02_05_02muro
+	sound_dialog_play_block pause
+	#Bossman and Muro talk
+	cm_interpolate IntroCamBothLt 0
+	cm_interpolate_block IntroCamBothRt 500
+	sound_dialog_play c02_05_03barabas
+	sound_dialog_play_block pause
+	sound_dialog_play c02_05_04muro
+	sound_dialog_play_block pause
+	sound_dialog_play c02_05_05barabas
+	sound_dialog_play_block pause
+	#Muro talks
+	cm_interpolate IntroCamMuro02 0
+
+	sound_ambient_volume alarm_loop 0.0 1.0
+	sound_ambient_stop alarm_loop
+
+	sound_dialog_play c02_05_06muro
+	sound_dialog_play_block pause
+	#Bossman and Muro talk
+	cm_interpolate IntroCamBothRtHigh 0
+	cm_interpolate_block IntroCamBothLtHigh 500
+	sound_dialog_play c02_05_07muro
+	sound_dialog_play_block pause
+	sound_dialog_play c02_05_08barabas
+	sound_dialog_play_block pause
+	sound_dialog_play c02_05_09muro
+	sound_dialog_play_block pause
+	sound_dialog_play c02_05_10barabas
+	sound_dialog_play_block pause
+	#Muro talks
+	cm_interpolate IntroCamMuro01 0
+	sound_dialog_play c02_05_11muro
+	sound_dialog_play_block pause
+	cinematic_stop (MUROnametag, 15,20)
+	cinematic_stop (BOSS1nametag, 16,20)
+	#Receptionist says hold on
+	cm_interpolate Camin03 0
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_unalarm 180
+	chr_animate_block Recep SECRETsit_talk 500
+	sound_dialog_play c02_05_12receptionist
+	cinematic_start (RECEPtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (RECEPtalking, 20,20)
+	#Strikers Rush in
+
+	sound_ambient_volume mus_ambgrv1b 0 .5
+
+	music_script_start();
+
+	ai2_spawn ambush_striker_3
+	ai2_spawn ambush_striker_2
+	#chr_neutral ambush_striker_3 1
+	#chr_neutral ambush_striker_2 1
+	
+	door_open 21
+	door_jam 21
+
+	playback ambush_striker_3 IntroStrikerRight01
+	playback ambush_striker_2 IntroStrikerRight02
+	cm_interpolate IntroCamDoorRight01 0
+	sleep f180
+	#Cop says what the?
+	playback partner_cop_2 IntroCop02Surprise
+	chr_envanim 1003 IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_talk 400
+	cm_interpolate IntroCamSurprise 0
+	cm_interpolate_block IntroCamSurprise02 90
+	sound_dialog_play c02_05_13tctfag1
+	ai2_spawn ambush_striker_1
+	#chr_neutral ambush_striker_1 1
+
+	door_unlock 4
+	door_open 4
+	door_jam 4
+	
+	playback ambush_striker_1 IntroStrikerLeft01
+	sleep f60
+	#Konoko looks around
+	chr_envanim Recep IntroSecBox01 norotation
+	chr_animate Recep SECRETsit_talk 180
+	cm_reset
+	playback 0 IntroKonokoLook
+	sleep f30
+	cinematic_start (KONangryfront, 180, 180, 20, 7, 10, false)
+	sleep f170
+	#Konoko says we got company
+	playback Recep IntroRecepRun
+	cm_interpolate IntroCamCompany 0
+	sound_dialog_play c02_05_14konoko
+	sleep f30
+	playback Recep IntroRecepRun
+	sound_dialog_play_block pause
+	cinematic_stop (KONangryfront, 19 ,20)
+	#gameplay resumes
+	cm_reset
+	env_show 561 1
+	env_show 560 0
+	end_cutscene
+
+	ai2_attack partner_cop_1 ambush_striker_1
+	ai2_attack partner_cop_2 ambush_striker_3
+
+	chr_delete 1050
+	chr_delete Barabus
+	particle IntroLight01 kill
+	sleep f90
+	#chr_delete Recep
+	
+	door_lock 1
+	door_unjam 4
+	door_lock 4
+	door_unjam 21
+	set_objective_1
+	
+	save_point_1
+}
+
+func void
+Chase(
+	void)
+{
+	sleep 60
+	begin_cutscene jello
+#	sleep f10
+#	cm_orbit .1
+	sleep f30
+	chr_animate 0 KONOKOwatch_start 60
+	sleep f40
+	cinematic_start (KONtalking, 180, 180, 15, 1, 20, false)
+	cinematic_start (GRIFtalking, 180, 180, 16, 3, 20, true)
+	sleep f19
+	chr_animate 0 KONOKOwatch_idle 3000
+
+	sound_music_volume atm_low_perc1 0.35 1.0
+
+	sound_dialog_play c02_06_01konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_02griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_03konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_04griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_05konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_06griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_06_07konoko
+	sound_dialog_play_block pause
+	cinematic_stop (KONtalking, 15,20)
+	cinematic_stop (GRIFtalking, 16,20)
+	chr_animate 0 KONOKOwatch_stop
+	sleep f15
+	cm_reset
+	end_cutscene
+
+	sound_music_volume atm_low_perc1 .90 1.0
+	
+	striker_counter = striker_counter + 2
+	particle save1b_locklight01 do start
+	door_unlock 11
+	console_deactivate 15
+	
+	if (alarm_counter eq 1)		
+		{
+		ai2_spawn hall_striker_2
+		ai2_tripalarm konoko 1
+		}
+}
+
+
+func void
+Griffin_1(
+	void)
+{
+	begin_cutscene jello
+	sound_ambient_stop alarm_loop
+	sleep f30
+	chr_animate 0 KONOKOwatch_start 60
+	sleep 40
+	cinematic_start (KONtalking, 180, 180, 15, 1, 20, false)
+	cinematic_start (GRIFtalking, 180, 180, 16, 3, 20, true)
+	sleep f19
+	chr_animate 0 KONOKOwatch_idle 3000
+	sound_dialog_play c02_07_01griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_07_02konoko
+	sound_dialog_play_block pause
+	chr_animate 0 KONOKOwatch_stop
+	cinematic_stop (KONtalking, 15,20)
+	cinematic_stop (GRIFtalking, 16,20)
+	sleep f15
+	cm_reset
+	end_cutscene
+}
+
+
+func void
+outro(
+	void)
+{
+	begin_cutscene
+	env_show 555 1
+	env_show 556 0
+	#Konok talks on watch radio to Griffin
+	#playback 0 OutroKonokoSet
+	##cm_interpolate OutroCam00 0
+	##cm_interpolate_block OutroCam01 180
+	fork soundplay
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_end=.999
+	gl_fog_start_changeto 0.92 60
+	sleep f60
+	sleep f30
+	playback 0 OutroKonokoRun
+	cm_interpolate OutroCam00 0
+	cm_interpolate_block OutroCam01 180
+	sleep f120
+	#Konoko jumps out of room
+	playback 0 OutroKonoko01
+	cm_interpolate OutroCam02 0
+	sleep f60
+	#cm_interpolate_block OutroCam03 180
+	sleep f40
+	particle OutroCharge do explode
+	sleep f200
+	#Konoko runs out of room
+	playback 0 OutroKonoko02
+	door_open 4
+	door_jam 4
+	cm_interpolate OutroCam04 0
+	sleep f90
+	cm_interpolate_block OutroCam05 180
+	sleep f180
+	#Konoko runs out of front door
+	cm_interpolate OutroCam06 0
+	cm_interpolate_block OutroCam07 180
+	sleep f100
+	door_open 1
+	door_jam 1
+	sleep f140
+	fade_out 0 0 0 120
+	#win
+}
+
+func void
+soundplay(
+	void)
+{
+	cinematic_start (GRIFtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play c02_09_01griffin
+	sleep f60
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_02kerr
+	cinematic_start (KERRtalking, 180, 180, 16, 3, 20, true)	
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_03griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_04kerr
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_05griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_06kerr
+	sound_dialog_play_block pause
+	sound_dialog_play c02_09_07griffin
+	sound_dialog_play_block pause
+	cinematic_stop (KERRtalking, 16,20)
+	cinematic_stop (GRIFtalking, 15,20)
+	sleep f100
+	gl_fog_end=1
+	gl_fog_start=.975
+	win
+}
+
+
+
+func void
+animate(
+	void)
+{
+	env_anim 1101 1
+	env_anim 1102 1
+	env_anim 1103 1
+	env_anim 1104 1
+	env_anim 1105 1
+	env_anim 1106 1
+	env_anim 1107 1
+	env_anim 1108 1
+	env_anim 1109 1
+	env_anim 1110 1
+	env_anim 1111 1
+	env_anim 1201 1
+	env_anim 1202 1
+	env_anim 1203 1
+	env_anim 1204 1
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_level_logic.bsl	(revision 405)
@@ -0,0 +1,1091 @@
+### MANPLANT LEVEL LOGIC###
+
+# START, SAVE & OBJECTIVES
+
+func void func_start(string ai_name)
+{
+	dprint start_active	
+	particle lock_1_locklight01 do start
+	particle guardroom_2_locklight01 do start
+	particle foyer_right_locklight01 do start
+	particle brainlock_2_locklight01 do start
+	chr_forceholster 0 1
+	trig_hide 205	
+	trig_hide 204
+	trig_hide 2042	
+	trig_hide 203
+	trig_hide 2032		
+	trig_hide 202
+	trig_hide 2022
+	trig_hide 2023
+	trig_hide 201	
+	trig_hide 2012
+	trig_hide 2013
+	particle febtober1_locklight01 do start
+	particle save1a_locklight01 do start
+
+	if (save_point eq 0)
+		{
+		my_save_point=0;	
+		particle vent03 start
+		}
+	
+	if (save_point eq 1)
+		{
+		my_save_point=1;	
+		particle vent03 start
+		ai2_spawn partner_cop_1
+		ai2_spawn partner_cop_2
+		ai2_spawn ambush_striker_1
+		ai2_spawn ambush_striker_2
+		ai2_spawn ambush_striker_3
+		chr_delete Recep
+		door_lock 1
+		door_lock 4
+		restore_game
+		ai2_attack partner_cop_1 ambush_striker_1
+		ai2_attack partner_cop_2 ambush_striker_3
+		music_script_start();
+		sleep 30
+		set_objective_1
+		}
+
+	if (save_point eq 2)
+		{
+		my_save_point=2;	
+		dprint restore2_active
+		door_lock 1
+		door_lock 4
+		door_lock 11
+		door_lock 12
+		door_lock 13
+		door_unlock 3
+		door_unlock 19
+		trigvolume_enable nook_1 0
+		trigvolume_enable nookright 0
+		trigvolume_enable tech_1 0
+		trigvolume_enable bait_1 0
+		trigvolume_enable tech_ambush_1 0
+		chr_delete Recep
+		chr_delete extra_thug_1
+		ai2_spawn hall_striker_1
+		console_deactivate 1
+		console_deactivate 9
+		particle lock_1b_locklight01 do start
+		particle lock_1a_locklight01 do start
+		particle save1b_locklight01 do stop
+		particle febtober1_locklight01 do start
+		particle vent01 start
+		particle vent03 start
+		restore_game
+		sound_music_start atm_low_perc1 0.90
+		sleep 30
+		set_objective_1
+		target_set (123,30)
+		}
+
+	if (save_point eq 3)
+		{
+		my_save_point=3;	
+		dprint restore3_active
+		door_lock 1
+		door_lock 12
+		door_lock 13
+		door_lock 25
+		door_unlock 19
+		door_unlock 3
+		trigvolume_enable nook_1 0
+		trigvolume_enable nookright 0
+		trigvolume_enable tech_1 0
+		trigvolume_enable bait_1 0
+		trigvolume_enable Griffin 0
+		trigvolume_enable lowthug_1 0
+		trigvolume_reset febtober
+		trigvolume_reset febtober2
+		chr_delete Recep
+		console_deactivate 10
+		particle lock_1b_locklight01 do start
+		particle lock_1a_locklight01 do start
+		particle vent01 start
+		particle vent03 start
+		ai2_spawn low_thug_1
+		ai2_spawn low_thug_2
+		restore_game
+		sleep 30
+		set_objective_3
+		}
+
+	if (save_point eq 4)
+		{
+		dprint save_point_4
+		my_save_point=4;	
+		dprint restore4_active
+		particle brainlock_2_locklight01 do stop
+		particle brainlock_3_locklight01 do start
+		door_lock 26
+		door_unlock 27
+		trigvolume_reset lockit 
+		trigvolume_enable save_point4 0
+		brain_counter
+		trig_show 202
+		trig_show 204
+		trig_speed 202 .2
+		trig_speed 204 .2
+		trig_hide 2023
+		trig_hide 2013
+		particle brain start
+		particle brain1 start
+		restore_game
+		sound_ambient_start deadlybrain_sound 0.75
+		sleep 30
+		set_objective_4	
+		}
+}
+
+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)
+{
+	win
+}
+
+func void save_point_1(string player_name)
+{
+	dprint save_point_1_active
+	save_game 1 autosave
+}
+
+func void save_point_2(string player_name)
+{
+	dprint save_point_2_active
+	save_game 2 autosave
+}
+
+func void save_point_3(string player_name)
+{
+	dprint save_point_3_active
+	save_game 3
+	door_lock 25 autosave
+}
+
+func void save_point_4(string player_name)
+{
+	dprint save_point_4_active
+	save_game(4, autosave); 
+	particle(brainlock_2_locklight01, do, stop);
+	particle(brainlock_3_locklight01, do, start);
+	door_lock(26);
+	door_unlock(27);
+	particle vent01 kill
+	particle vent02 kill
+}
+
+func void set_objective_1(string ai_name)
+{
+	dprint set_objective1
+	objective_set(1)
+	target_set (38,30)
+	sound_dialog_play c00_01_22shinatama
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective2
+	objective_set(2)
+	target_set (128,30)
+	sound_dialog_play c00_01_26shinatama
+}
+
+func void set_target(string ai_name)
+{
+	dprint new_target
+	target_set (124,30)
+	sound_dialog_play c00_01_27shinatama
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective3
+	objective_set(3)
+	target_set (125,30)
+	trigvolume_enable Griffin 0
+	sound_dialog_play c00_01_18shinatama
+}
+
+func void set_objective_4(string ai_name)
+{
+	dprint set_objective4
+	objective_set(4)
+	sound_dialog_play c00_01_20shinatama
+}
+
+### MUSIC ###
+
+var int music_counter=3;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+
+	if (0 ne music_counter) 
+	{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+	}
+}
+
+func void music_script_start(void)
+{
+	sound_music_start mus_fiteb_hd 0.75
+	music_counter=3;
+}
+
+func void striker_lullaby_1(string ai_name)
+{
+	dprint striker_lullaby1
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+
+}
+
+func void striker_lullaby_2(string ai_name)
+{
+	dprint striker_lullaby2
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+}
+
+func void striker_lullaby_3(string ai_name)
+{
+	dprint striker_lullaby3
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+}
+
+
+func void all_music_counters(void)
+{
+	dprint ELVIS_HAS_LEFT_THE_BUILDING
+	sound_music_stop mus_ambgrv1b
+	sound_music_stop mus_fiteb_hd
+	sound_music_stop atm_low_perc1
+	sound_music_stop atm_cl12
+	sound_music_stop atm_cl11
+	sound_music_stop mus_sv
+}
+
+# SCRAMBLE SOUND ON
+func void scramble_sound_on(void)
+{
+	dprint scramble_sound_start
+	sound_music_start atm_cl12 0.75
+}
+
+# SCRAMBLE SOUND OFF
+func void scramble_sound_off(void)
+{
+	dprint scramble_sound_end
+	sound_music_stop atm_cl12
+}
+
+### TEXT CONSOLES ###
+
+func void level2a(string chr_index)
+{
+	dprint text2a
+	text_console level_2a
+	console_reset 2
+}
+
+func void level2b(string chr_index)
+{
+	dprint text2b
+	text_console level_2b
+	console_reset 12
+}
+
+func void level2c(string chr_index)
+{
+	dprint text2c
+	text_console level_2c
+	console_reset 13
+}
+
+func void level2d(string chr_index)
+{
+	dprint text2d
+	text_console level_2d
+	console_reset 14
+}
+
+func void level2e(string chr_index)
+{
+	dprint text2e
+	text_console level_2e
+	console_reset 11
+}
+
+### GAMEPLAY PROGRESSION ###
+
+# FIRST ROOM GUARDS
+func void tech_1(string ai_name)
+{
+
+	dprint trigger_tech_1_active
+	ai2_spawn tech_thug_1
+	ai2_spawn tech_thug_1a
+	ai2_dopath partner_cop_1 cop_backup_1a 1
+	ai2_dopath partner_cop_2 cop_backup_1b 1
+}
+
+# FIRST CONSOLE
+func void door_1(string ai_name)
+{
+
+	dprint trigger_door_1_active
+	input 0
+	begin_cutscene
+	door_unlock 19
+	door_unlock 3
+	cm_interpolate lock_1a 0
+	sleep 60
+	particle lock_1a_locklight01 do start
+	sleep 150
+	cm_interpolate lock_1b 0
+	sleep 60
+	particle lock_1b_locklight01 do start
+	sleep 150
+	cm_reset
+	end_cutscene
+	input 1
+	target_set (123,30)
+}
+
+# NOOK 1
+func void nook_1(string ai_name)
+{
+	dprint nook_1_active
+	ai2_spawn nookleft_thug_1
+}
+
+# FOYER RETURN REWARD
+func void nookright(string ai_name)
+{
+	dprint nookright_active
+	ai2_spawn nookright_thug_1
+}
+
+# FLYWAY AMBUSH
+func void flyway_1(string ai_name)
+{
+	dprint flyway_1_active
+	ai2_spawn flyway_striker_1
+}
+
+# COMMGUY BAIT
+func void bait_1(string ai_name)
+{
+	dprint bait_1_active
+	trigvolume_enable alarm_1 1
+	ai2_spawn bait_commguy_1
+	ai2_spawn tech_thug_2
+	sleep 120
+	ai2_doalarm bait_commguy_1 15
+	sound_music_start atm_low_perc1 0.90
+}
+
+# ALARM 
+func void patrolscript0300(string ai_name)
+{
+	dprint alarm
+	ai2_doalarm bait_commguy_1 1
+}
+
+# PLASMA STRIKER 1
+func void plasma_striker_1(string ai_name)
+{
+	dprint plasma_striker_1_active
+	ai2_spawn plasma_striker_1
+}
+
+# ALARM 1 AMBUSH
+func void alarm_1(string ai_name)
+{
+	dprint alarm_1_active
+	alarm_counter = alarm_counter + 1
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+
+
+### CUTSCENE COUNTDOWN
+
+func void hall_striker_var(string ai_name)
+{
+	dprint striker_var
+	striker_counter = striker_counter - 1
+
+	if (striker_counter eq 0)
+	{		
+		sayonara_strikey();
+	}
+}
+
+func void hall_commguy_var(string ai_name)
+{
+	dprint commguy_var
+	striker_counter = striker_counter - 1
+
+	if (striker_counter eq 0)
+	{		
+		sayonara_strikey();
+	}
+}
+
+func void hall_thug1_var(string ai_name)
+{
+	dprint thug1_var
+	striker_counter = striker_counter - 1
+
+	if (striker_counter eq 0)
+	{		
+		sayonara_strikey();
+	}
+}
+
+func void sayonara_strikey
+{
+	dprint sayonara
+	Chase
+}
+
+### BACK TO THE LOGIC
+
+# TECH AMBUSH
+func void tech_ambush_1(string ai_name)
+{
+	dprint tech_ambush_1_active
+	ai2_spawn hall_striker_1
+}
+
+# SECOND CONSOLE
+func void door_2(string ai_name)
+{
+	dprint trigger_door_2_active
+	letterbox 1
+	door_lock 4
+	input 0
+	cm_interpolate lock_2 0
+	sleep 60
+	particle lock88_locklight02 do start
+	door_unlock 23
+	door_open 23
+	ai2_spawn patrol_striker_2
+	sleep 350
+	cm_reset
+	letterbox 0
+	input 1
+	door_lock 12
+	particle save1a_locklight01 do stop
+	target_set (124,30)
+	console_activate 4 1	
+}
+
+# THIRD CONSOLE
+func void door_3(string ai_name)
+{
+	dprint trigger_door_3_active
+	door_unlock 4
+	input 0
+	cm_interpolate lock_3 0
+	sleep 60
+	particle lock_3_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	set_objective_2
+	sound_music_stop atm_low_perc1
+}
+
+# CRUEL COMMGUY
+func void cruel_1(string ai_name)
+{
+
+	dprint cruel_1_active_active
+	ai2_spawn cruel_commguy_1
+	ai2_spawn victim_femsci_1
+}
+
+# TECH 3 PATROL
+func void tech_3(string ai_name)
+{
+	dprint tech_3_active_active
+	ai2_spawn tech_thug_3
+}
+
+# NEW TARGET 1
+func void new_target_1(string ai_name)
+{
+	dprint new_target_1_active
+	target_set (54,30)
+}
+
+# BEATER ROOM 1
+func void beaters_1(string ai_name)
+{
+	dprint beaters_1_active
+	ai2_spawn scram_striker_1
+	ai2_spawn beater_thug_1
+	particle vent01 start
+	chr_delete plasma_striker_1
+}
+
+# BEATER THUG 2
+func void beater_thug_2(string ai_name)
+{
+	dprint beater_thug_2_active
+	ai2_spawn beater_thug_2
+}
+
+
+# BEATER BACKUP 1
+func void backup_1(string ai_name)
+{
+	dprint backup_1_active
+	ai2_spawn backup_thug_1
+	ai2_tripalarm 1 0
+}
+
+# BEATER BACKUP 2
+func void backup_2(string ai_name)
+{
+	dprint backup_2_active
+	ai2_spawn backup_thug_2
+	ai2_tripalarm 2 0
+}
+
+# NEW TARGET 2
+func void new_target_2(string ai_name)
+{
+	dprint new_target_2_active
+	target_set (54,30)
+}
+
+# NEW TARGET 3
+func void new_target_3(string ai_name)
+{
+	dprint new_target_3_active
+	target_set (126,30)
+}
+
+# LOW THUGS 1
+func void lowthug_1(string ai_name)
+{
+	dprint lowthug_1_active
+	ai2_spawn low_thug_1
+	ai2_spawn low_thug_2
+}
+
+# DISABLE OBJECTIVE TRIGGER 1
+func void disable_obj_trig_1(string ai_name)
+{
+	dprint_disable_obj_trig_1_active
+	trigvolume_enable low_thug_1 1
+}
+
+# HIDDEN LOCK 1
+func void hidden_1(string ai_name)
+{
+	dprint trigger_door_3_active
+	door_unlock 22
+	ai2_spawn hidden_sci_1
+	particle vent02 start
+	input 0
+	begin_cutscene
+	cm_interpolate hlock_1 0
+	sleep 60
+	particle hlock_1_locklight01 do start
+	sleep 150
+	cm_interpolate ShinatamaCam01 0
+	cm_interpolate_block ShinatamaCam02 900
+	chr_animate 0 KONOKOwatch_start 60
+	sleep f40
+	cinematic_start (SHINtalking, 180, 180, 16, 3, 20, true)
+	sleep f19
+	chr_animate 0 KONOKOwatch_idle 3000
+	sound_dialog_play c02_08_01shinatama
+	sound_dialog_play_block pause
+	sound_dialog_play c02_08_02konoko
+	cinematic_start(KONtalking, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	sound_dialog_play c02_08_03shinatama
+	sound_dialog_play_block pause
+	cm_interpolate brain_off_1b 0
+	cm_interpolate_block brain_off_1a 1000
+	particle brain start
+	particle brain1 start	
+	sound_ambient_start deadlybrain_sound 0.75		
+	sound_dialog_play c02_08_04konoko
+	sound_dialog_play_block pause
+	sound_dialog_play c02_08_05shinatama
+	sound_dialog_play_block pause
+	sound_dialog_play c02_08_06konoko
+	sound_dialog_play_block pause
+	chr_animate 0 KONOKOwatch_stop 15
+	cinematic_stop(KONtalking, 15, 20)
+	cinematic_stop(SHINtalking, 16, 20)
+	sleep f15
+	sound_ambient_volume deadlybrain_sound 0
+	cm_reset
+	end_cutscene
+	particle brain stop
+	particle brain1 stop
+	target_set (127,30)
+	sleep 10
+	sound_ambient_stop deadlybrain_sound
+}
+
+# HIDDEN TRIGGER 1A
+func void hidden_1a(string ai_name)
+{
+	dprint hidden_1a_active
+	trigvolume_enable hidden_1b 1
+	particle vent02 start
+}
+
+# HIDDEN TRIGGER 1B
+func void hidden_1b(string ai_name)
+{
+	dprint hidden_1b_active
+	ai2_spawn patrol_striker_3
+}
+
+# TRIGGER DEACTIVATE 4
+func void trigger_deactivate_4(string ai_name)
+{
+	dprint trigger_deactivate_4_active
+	input 0
+	cm_interpolate trigger_4 0
+	sleep 90
+	trig_deactivate 4
+	sleep 150
+	cm_reset
+	input 1
+	target_set (125,30)
+}
+
+# LOW STRIKER 1
+func void low_striker_1(string ai_name)
+{
+	dprint low_striker_1_active
+	ai2_spawn low_striker_1
+	ai2_spawn low_striker_2
+}
+
+# HALL TRIGGER ACTIVATE
+func void trigger_active_1(string ai_name)
+{
+	dprint trigger_active_1_active
+	trig_activate 2
+}
+
+# GUARD ROOM 1
+func void guardroom_1(string ai_name)
+{
+	dprint guardroom_1_active
+	door_unlock 14
+	input 0
+	cm_interpolate guardroom_1 0
+	sleep 60
+	particle guardroom_1_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+	target_set (65,30)
+}
+
+# BRAIN COMMGUY 1
+func void brain_commguy_1(string ai_name)
+{
+	dprint brain_commguy_1_active
+	ai2_spawn brain_commguy_1
+	ai2_spawn brain_commguy_2
+}
+
+# BRAIN LOCK 1
+func void brainlock_1(string ai_name)
+{
+	dprint brainlock_1_active
+	door_unlock 6
+	input 0
+	cm_interpolate brainlock_1 0
+	sleep 60
+	particle brainlock_1_locklight02 do start
+	sleep 150
+	cm_reset
+	input 1
+	target_set (129,30)
+	trigvolume_enable cruel_striker_1 1
+}
+
+# BRAIN DEFEAT
+func void braindefeat(string ai_name)
+{
+	target_set (130,30)
+}
+
+# CRUEL STRIKER
+func void cruel_striker_1(string ai_name)
+{
+	dprint cruel_striker_1_active
+	ai2_spawn cruel_striker_1
+	ai2_spawn victim_mansci_1
+	particle vent01 stop
+	particle vent02 stop
+	particle brain start
+	particle brain1 start
+}
+
+# AAIIEE!
+func void flee(string ai_name)
+{
+	dprint we_are_in_flee
+	chr_talk victim_mansci_1 c02_62_11sci 0 0
+	ai2_dopath victim_mansci_1 victim_2
+	sleep 300
+	set_objective_4
+}
+
+# LOCKIT
+func void lockit(string ai_name)
+{
+	dprint lockit_active
+	particle brainlock_3_locklight01 do stop
+	door_close 27
+	door_jam 27
+	particle vent01 kill
+	if (mus_cool4_playing eq 0)
+		{
+		sound_music_start mus_cool4_hd 1
+		mus_cool4_playing = 1;
+		}
+}
+
+### GLORIOUS DEADLY BRAIN FIGHT ###
+
+var int console_count = 4;
+
+func void brain_counter(string player_name)
+{
+	console_count = console_count - 1;
+
+	if (console_count eq 0)
+	{
+		console_count = 4;
+
+		dprint brain_counter_active
+		brain_counter_var = brain_counter_var + 1;
+
+		if (brain_counter_var eq 0)
+		{
+			brain_round_1
+		}
+
+		if (brain_counter_var eq 1)
+		{
+			brain_round_2
+		}
+
+		if (brain_counter_var eq 2)
+		{
+			brain_round_3
+		}
+
+		if (brain_counter_var eq 3)
+		{
+			brain_round_4
+		}
+	}
+}
+
+# BRAIN ROUND 1
+func void brain_round_1(string ai_name)
+{
+	ai2_allpassive 1
+	turret_deactivate 20
+	input 0
+	begin_cutscene jello
+	#sound_music_start atm_cl11 0.75
+	sound_ambient_start deadlybrain_sound 1.0
+	sleep 60
+	cm_interpolate brain_off_1b 0
+	sleep 30
+	cm_interpolate brain_off_1a 800
+	sleep 5
+	trig_show 202
+	trig_show 204
+	trig_speed 202 .2
+	trig_speed 204 .2
+	trig_hide 2023
+	trig_hide 2013
+	cinematic_start (SHINtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play c00_01_106Shinatama
+	sound_dialog_play_block pause
+	sound_dialog_play c00_01_107Shinatama
+	sound_dialog_play_block pause
+	sleep 30
+	sound_dialog_play c00_01_108Shinatama
+	sound_dialog_play_block pause
+	cinematic_stop(SHINtalking, 16, 20)
+	cm_interpolate_block brain_closeup 0
+	sleep 30
+	sound_dialog_play brain07final
+	sleep 200 
+	sound_music_stop atm_cl11
+	cm_reset
+	end_cutscene
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	save_point_4
+	console_reset 21
+	console_reset 22
+	console_reset 23
+	console_reset 24
+}
+
+# BRAIN ROUND 2
+func void brain_round_2(string ai_name)
+{
+	ai2_allpassive 1
+	turret_deactivate 20
+	input 0
+	begin_cutscene jello	
+	#sound_music_start atm_cl11 0.75
+	sound_music_volume mus_cool4_hd 0.7 1
+	sleep 60
+	cm_interpolate brain_off_1a 0
+	sleep 30
+	cm_interpolate brain_off_1b 850
+	cinematic_start (SHINtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play c00_01_113Shinatama
+	sleep 120
+	trig_hide 204
+	trig_hide 202
+	sleep 120
+	trig_speed 2012 0
+	trig_speed 2022 0
+	trig_show 2012
+	trig_show 2022
+	sleep 90
+	trig_speed 2012 .2
+	trig_speed 2022 .2
+	sound_dialog_play_block pause
+	cinematic_stop(SHINtalking, 16, 20)
+	sleep 60
+	cinematic_start (SHINscared, 180, 180, 16, 3, 20, true)
+	sound_dialog_play c00_01_114Shinatama
+	sound_dialog_play_block pause
+	cinematic_stop(SHINscared, 16, 20)
+	cm_interpolate_block brain_closeup 0
+	sleep 30
+	sound_dialog_play brain03final
+	sleep 200
+	end_cutscene
+	#sound_music_stop atm_cl11
+	sound_music_volume mus_cool4_hd 1 1
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	console_reset 21
+	console_reset 22
+	console_reset 23
+	console_reset 24
+}
+
+# BRAIN ROUND 3
+func void brain_round_3(string ai_name)
+{
+	ai2_allpassive 1
+	turret_deactivate 20
+	input 0
+	begin_cutscene jello	
+	#sound_music_start atm_cl11 0.75
+	sound_music_volume mus_cool4_hd 0.7 1
+	sleep 60
+	cm_interpolate brain_off_1b 0
+	sleep 30
+	cm_interpolate brain_off_1a 1200
+	cinematic_start (SHINtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play c00_01_115Shinatama
+	sleep 120
+	trig_hide 2012	
+	trig_hide 2022
+	sleep 120
+	trig_speed 205 0	
+	trig_speed 2042 0	
+	trig_speed 2032 0	
+	trig_speed 2023 0	
+	trig_speed 2013 0		
+	trig_show 205
+	sleep 60	
+	trig_show 2042
+	sleep 60	
+	trig_show 2032
+	sleep 60	
+	trig_show 2023
+	sleep 60	
+	trig_show 2013
+	sound_dialog_play_block pause
+	sleep 60
+	sound_dialog_play c00_01_117Shinatama
+	sound_dialog_play_block pause	
+	trig_speed 205 .4
+	trig_speed 2042 .4
+	trig_speed 2032 .4
+	trig_speed 2023 .4
+	trig_speed 2013 .4
+	cinematic_stop(SHINtalking, 16, 20)
+	cm_interpolate_block brain_closeup 0
+	sleep 30
+	sound_dialog_play brain08final
+	sleep 200
+	end_cutscene
+	#sound_music_stop atm_cl11
+	sound_music_volume mus_cool4_hd 1.0 1
+	cm_reset
+	input 1
+	sleep 90
+	ai2_allpassive 0
+	console_reset 21
+	console_reset 22
+	console_reset 23
+	console_reset 24
+}
+
+# BRAIN ROUND 4
+func void brain_round_4(string ai_name)
+{
+	ai2_allpassive 1
+	turret_deactivate 20
+	input 0
+	sound_music_stop mus_cool4_hd
+	sound_music_start mus_sv 0.75
+	begin_cutscene jello	
+	sleep 60
+	cm_interpolate brain_off_1a 0
+	sleep 30
+	cm_interpolate brain_off_1b 1000 
+	sleep 90
+	trig_speed 205 1
+	sleep 90	
+	trig_speed 2042 2
+	sleep 90	
+	trig_speed 2032 1
+	sleep 90
+	trig_speed 2023 2
+	sleep 90
+	trig_speed 2013 2
+	sleep 60
+	trig_hide 205
+	trig_hide 2013
+	sleep 60	
+	trig_hide 2042
+	sleep 60	
+	trig_hide 2032
+	trig_hide 2023
+	sleep 60
+	trig_hide 402
+	sound_ambient_stop deadlybrain_sound
+	particle brain1 kill
+	sleep 10
+	particle brain1 create
+	particle brain1 start
+	sleep 20
+	particle brain1 kill
+	particle brain1 create
+	particle brain1 start
+	sleep 30
+	particle brain1 kill
+	sleep 30
+	particle brain kill
+	sleep 250
+	trigvolume_enable febtober 0
+	door_unlock 1
+	door_unlock 4
+	particle lock_3_locklight01 do start
+	outro
+}
+
+### FEBTOBER ###
+
+# FEBTOBER TRIGGER 1
+func void feb_tober(string ai_name)
+{
+	dprint febtober_active
+
+	all_music_counters();
+
+	door_lock 10
+	door_lock 13
+	door_unlock 25
+	door_unlock 23
+	ai2_spawn febtober_striker_1
+	trigvolume_reset feb_tober2
+	trigvolume_enable cruel_1 0
+	trigvolume_enable flyway_1 0
+	trigvolume_enable beaters_1 0
+	console_deactivate 1
+	console_deactivate 4
+	particle lock_3_locklight01 do start
+	particle lock88_locklight02 do start
+	particle febtober1_locklight01 do stop
+}
+
+# FEBTOBER TRIGGER 2
+func void feb_tober2(string ai_name)
+{
+	dprint febtober_2_active
+	trigvolume_reset febtober
+}
+
+### I NEED SOME BACKUP ###
+
+func void calling_all_cars(string ai_name)
+{
+	dprint callingallcars
+	ai2_dopath partner_cop_1 cop_backup_2a 1
+	ai2_dopath partner_cop_2 cop_backup_2b 1
+}
+
+func void calling_all_cars2(string ai_name)
+{
+	dprint callingallcars
+	
+	ai2_dopath partner_cop_1 cop_backup_2a 1
+	ai2_dopath partner_cop_2 cop_backup_2b 1
+}
+
+### Level scripted by Joseph ###
Index: /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/manplant/manplant_main.bsl	(revision 405)
@@ -0,0 +1,30 @@
+#
+# CZ_main.bsl
+#
+
+var int my_save_point;
+var int brain_counter_var=0;
+var int striker_counter=2;
+var int backup1a_counter=1;
+var int backup1b_counter=1;
+var int mus_cool4_playing=0;
+var int alarm_counter;
+
+func void main(void)
+{
+	env_show 555 0
+	#obj_create 1101 1111
+	obj_create 1201 1208
+	#env_anim 1101 1111
+	env_anim 1201 1208
+	gl_fog_blue=.15
+	gl_fog_red=.15
+	gl_fog_green=.15
+	gl_fog_start=.98
+	gs_farclipplane_set 5000
+	func_start
+	if (my_save_point eq 0)
+	{
+	intro
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/manplant/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/manplant/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/manplant/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,16 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+####################################
+##             brain1		    ##
+####################################
+func void brain1_on(string ai_name)
+{
+	dprint begin_evil_particles
+	particle brain1 do start
+}
+func void brain1_off(string ai_name)
+{
+	dprint stop_the_evil
+	particle brain1 do stop
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_cutscene.bsl	(revision 405)
@@ -0,0 +1,915 @@
+#
+# neuro_cutscene.bsl
+#
+
+func void
+neuro_cs_intro(
+	void)
+{
+	fade_out 0 0 0 0		
+	env_show 271 0
+	env_show 272 0
+	obj_create 271 272
+	cm_interpolate IntroCamOut01 0
+	sleep f14
+	obj_shade 271 272 .4 .4 .2
+	begin_cutscene							
+	sleep f1
+	sound_music_start mus_low1 1.0
+	#fork music_force_stop
+	#Camera shot outside
+	cm_interpolate IntroCamOut01 0
+	ai2_spawn IntroTCTF01
+	playback IntroTCTF01 IntroSecSet
+	fade_in 60
+	sleep f100
+	playback IntroTCTF01 IntroSecStart
+	sleep f200
+	#Lobby shot
+	cm_interpolate IntroCamIn01 0
+	sleep f180
+	sound_dialog_play c13_47_03blackops
+	cinematic_start (TCTFtalking, 180, 180, 20, 9, 20, true)
+	sleep f60
+	#Security lets guy in
+	cm_interpolate IntroCamSecSet 0
+	playback IntroTCTF01 IntroSecSet
+	sleep f150
+	sound_dialog_play c13_47_04opsguard2
+	cinematic_start (BOPSface, 180, 180, 15, 1, 20, false)	
+	sleep f150
+	cinematic_stop (BOPSface, 15, 20)
+	cinematic_stop (TCTFtalking, 20, 20)
+	#Door opens
+	ai2_spawn IntroTCTF02
+	cm_interpolate IntroCamDoorOpen 0
+	playback IntroTCTF01 IntroSecSet
+	playback IntroTCTF02 IntroSecWalk
+	env_anim 271 272
+	sound_ambient_start c12_42_00door
+	sleep f240
+	#camera inside looking down
+	cm_interpolate IntroCamTopDown 0
+	playback 0 IntroKonCrouch
+	chr_animate 0 KONOKOcrouch_idle 1000
+	sleep f300
+	#camera showing security talking
+	playback IntroTCTF01 IntroSecMonitor01
+	#cm_interpolate IntroCamBothTalk 0
+	#sleep f180
+	#Security goes over to monitors
+	cm_interpolate IntroCamMonitorMid 0
+	playback IntroTCTF02 IntroSecMonitor02
+	#next line was 180
+	sleep f120
+	sound_dialog_play c13_47_01opsguard1
+	cinematic_start (TCTFtalking, 180, 180, 20, 9, 20, true)
+	sleep f60
+	#konoko jumps down behind Security
+	cm_interpolate IntroCamKonDrop 0
+	sleep f120
+	chr_envanim 0 IntroKonBox01 norotation
+	chr_animate 0 KONOKOlev14_IntroJump
+	#Konoko hides from guys
+	chr_envanim_block 0 IntroKonBox02 norotation
+	cm_anim both IntroCamHide
+	sound_dialog_play c13_47_02opsguard2
+	cinematic_start (BOPSface, 180, 180, 15, 1, 20, false)	
+	sleep f100
+	chr_animate 0 KONOKOlev14_IntroHide
+	sound_dialog_play_block pause
+	cinematic_stop (BOPSface, 15, 20)
+	cinematic_stop (TCTFtalking, 20, 20)
+	#Show doors closing
+	cm_wait
+	cm_interpolate IntroCamDoors 0
+	env_setanim 271 IntroDoorRt01
+	env_setanim 272 IntroDoorLt01
+	sound_ambient_start c13_04_03doorclose
+	sleep f120
+	#Konoko makes a run for it
+	env_setanim 271 IntroDoorRt01
+	env_setanim 272 IntroDoorLt01
+	cm_anim both IntroCamKonRun
+	chr_envanim 0 IntroKonBox03 norotation
+	chr_animate 0 KONOKOlev14_IntroRun
+	sound_music_stop mus_low1
+	#Konoko dives through closing door and sec turns around
+	cm_anim_block both IntroCamKonDive
+	chr_envanim 0 IntroKonBox04 norotation
+	chr_animate 0 KONOKOlev14_IntroDive
+	playback IntroTCTF01 IntroSecEnd
+	chr_envanim IntroTCTF02 IntroSecBox01 norotation
+	chr_animate IntroTCTF02 SECURIlev14_IntroTurn
+	#reset cam outside
+	cm_wait
+	playback 0 IntroKonstart
+	sleep f10
+	cm_reset
+	chr_delete IntroTCTF01
+	chr_delete IntroTCTF02
+	obj_kill 271 272
+	env_show 271 1
+	env_show 272 1
+	env_shade 271 272 .4 .4 .2
+	fork Setup_Intro
+	fork set_objective_1
+	end_cutscene
+}
+
+
+func void
+spawn_kerr(
+	void)
+{
+	ai2_spawn ScanKerr01
+	ai2_passive ScanKerr01 1
+	chr_unstoppable KerrKerr 1
+	chr_delete KerrKerr
+}
+
+
+func void
+scanner_start(
+	void)
+{
+	var int number_near = 0;
+
+	number_near = number_near + trigvolume_count(68);
+	number_near = number_near + trigvolume_count(69);
+	number_near = number_near + trigvolume_count(70);
+	number_near = number_near + trigvolume_count(71);
+
+	if (number_near eq 0) 
+	{
+		trigvolume_enable trigger_volume_13 0
+		doscanscene
+	}
+}
+
+##############################
+
+func void wait_and_play_xtr5(void)
+{
+	sleep 60
+	sound_music_start mus_xtr5 1.0
+}
+
+
+func void
+doscanscene(
+	void)
+{
+		sound_ambient_start lab_amb1 0.1
+		sound_ambient_volume lab_amb1 1 2
+		fork Scan_Guards	
+		has_probed = 1
+		begin_cutscene
+		#hide scanner gunk
+		env_show 51 0
+		env_show 52 0
+		env_show 53 0
+		env_show 54 0
+		env_show 55 0
+		env_show 56 0
+		env_show 57 0
+		env_show 58 0
+		env_show 59 0
+		obj_create 51 59
+		#create this character before konoko gets into the scanner room
+		cm_interpolate ScanCamDocTalk 200
+		#patrol Konoko to flag 1009
+		ai2_takecontrol 1
+		ai2_movetoflag 0 1009
+		sleep f200
+		#Konoko talks
+		ai2_takecontrol 0
+		playback 0 ScanKonokoSet
+		sound_dialog_play c13_64_01konoko
+		cinematic_start (KONlistening, 180, 180, 19, 7, 20, false)	
+		sound_dialog_play_block pause
+		sleep f15
+		#Doctor says Go Sit in That Chair
+		cm_interpolate ScanCamDocTalk 0
+		sound_dialog_play c13_65_01kerr
+		cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+		sound_dialog_play_block pause
+		sleep f25
+		#Is this necessary?
+		cm_interpolate ScanCamBoth 0
+		sound_dialog_play c13_65_02konoko
+		sound_dialog_play_block pause
+		sleep f10
+		sound_dialog_play c13_65_03kerr
+		sound_dialog_play_block pause
+		cinematic_stop (KERRtalking, 20, 20)
+		#Konoko walk to chair & doctor walks to booth
+		playback 0 ScanKonokoWalk
+		cm_interpolate ScanCamKonWalk 0
+		playback ScanKerr01 ScanDoctorWalk
+		sleep f120
+		sound_dialog_play c13_65_04konoko
+		sleep f140
+		cinematic_stop (KONlistening, 19, 20)
+		#chair drops
+		cm_interpolate ScanCamChairDown 0
+		sleep f30
+		cutscene_sync mark
+		sound_ambient_start c18_01_29_effectsa
+		sleep f30
+		env_setanim 53 Scan_chair01
+		env_setanim 54 Scan_chair02
+		env_setanim 55 Scan_chair03
+		sleep f30
+		sleep f150
+		#Doctor enters booth
+		cm_interpolate ScanCamBoothIn 0
+		sleep f200
+		#show doctor in booth
+		playback ScanKerr01 ScanDocBooth
+		cm_interpolate ScanCamBooth 0
+		chr_envanim 0 ScanKonBox04
+		chr_animate 0 KONOKOlev14_scan 500
+		sound_dialog_play c13_65_05kerr
+		cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+		sound_dialog_play_block pause
+		cinematic_stop (KERRtalking, 20, 20)
+		sleep f30
+		#scanner starts
+		env_setanim 51 Scan_arm01
+		env_setanim 52 Scan_arm02
+		env_setanim 53 Scan_chair0101
+		env_setanim 54 Scan_chair0201
+		env_setanim 55 Scan_chair0301
+		env_setanim 56 Scan_tube01
+		env_setanim 57 Scan_tube02
+		env_setanim 58 Scan_tube03
+		env_setanim 59 Scan_tube04
+		chr_envanim 0 ScanKonBox01
+		chr_animate 0 KONOKOlev14_scan 2000
+		cm_interpolate ScanCamScan01 0
+		sleep f60
+		cutscene_sync mark
+		sound_ambient_start c18_01_29_effectsb
+		sleep f120
+		cm_interpolate_block ScanCamScan02 300
+		#Konoko gets scanned
+		chr_envanim_block 0 ScanKonBox02
+		chr_animate 0 KONOKOlev14_scan 2000
+		cm_interpolate ScanCamScan03 0
+		cm_interpolate_block ScanCamScan04 360
+		particle brainscan do start
+		sound_ambient_start scanner
+		sleep f120
+		sound_ambient_volume scanner .5 2
+		sleep f60
+		#Doctor in booth
+		sound_dialog_play c13_65_07kerr
+		cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+		cm_interpolate_block ScanCamBoothOut 0
+		sleep f10
+		sound_dialog_play c13_65_08konoko
+		cinematic_start (KONdeepthought, 180, 180, 19, 7, 20, false)	
+		sound_dialog_play_block pause
+		#Doctrof rom inside booth
+		cm_interpolate ScanCamBooth 0
+		sound_dialog_play c13_65_09kerr
+		sound_dialog_play_block pause
+		#konoko scanned
+		chr_envanim 0 ScanKonBox02
+		chr_animate 0 KONOKOlev14_scan 2000
+		cm_interpolate ScanCamScan02 0
+		cm_interpolate_block ScanCamScan01 1000
+		sound_dialog_play c13_65_10konoko
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_11kerr
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_12konoko
+		sound_dialog_play_block pause
+		cm_interpolate ScanCamBoothOut02 0
+		cm_interpolate_block ScanCamBoothOut 900
+		sound_dialog_play c13_65_13kerr
+		sound_dialog_play_block pause
+		cm_interpolate ScanCamScan04 0
+		cm_interpolate_block ScanCamScan03 800
+		sound_dialog_play c13_65_14konoko
+		sound_dialog_play_block pause
+		sleep f75
+		cm_interpolate ScanCamBoothOut 0
+		cm_interpolate_block ScanCamBoothOut02 900
+		sound_dialog_play c13_65_15kerr
+		sound_dialog_play_block pause
+		sleep f25
+		sound_dialog_play c13_65_16konoko
+		sound_dialog_play_block pause
+		sleep f20
+		#Doc in Booth
+		sound_dialog_play c13_65_17kerr
+		sleep f100
+		#Scanner stops
+		particle brainscan do stop
+		cutscene_sync_mark
+		sound_ambient_stop scanner
+		env_setanim 51 Scan_arm0102
+		env_setanim 52 Scan_arm0202
+		env_setanim 53 Scan_chair0102
+		env_setanim 54 Scan_chair0202
+		env_setanim 55 Scan_chair0302
+		env_setanim 56 Scan_tube0102
+		env_setanim 57 Scan_tube0202
+		env_setanim 58 Scan_tube0302
+		env_setanim 59 Scan_tube0402
+		chr_envanim 0 ScanKonBox03
+		chr_animate 0 KONOKOlev14_scan 730
+		cm_interpolate ScanCamScan01 0
+		cutscene_sync mark
+		sound_ambient_start c18_01_29_effectsc
+		cm_interpolate_block ScanCamScanStop 300
+		sleep f700
+		cinematic_stop (KONdeepthought, 19, 20)
+		cinematic_stop (KERRtalking, 20, 20)
+		#Doctor comes out of booth
+		playback ScanKerr01 ScanDocWalkOut
+		cm_interpolate ScanCamBoothOut 0
+		sleep f60
+		playback 0 ScanKonDone
+		sleep f150
+		sleep f80
+		#Konoko and Doc meet to talk
+		cm_interpolate ScanCamBoth02 0
+		cm_interpolate_block ScanCamBoth03 300
+		sleep f120
+		sound_dialog_play c13_65_18konoko
+		cinematic_start (KONlistening, 180, 180, 19, 7, 20, false)	
+		sleep f240
+		#Doc talks
+		playback ScanKerr01 ScanDoctorSet
+		cm_interpolate ScanCamDocTalk 0
+		cm_interpolate_block ScanCamDocTalk02 1100
+		sound_dialog_play c13_65_19kerr
+		cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_20konoko
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_21kerr
+		sound_music_start mus_sad1 0.8
+		sound_dialog_play_block pause
+		#KOnoko talks
+		playback 0 ScanKonokoSet
+		cm_interpolate ScanCamKonTalk 0
+		cm_interpolate_block ScanCamKonTalk03 600
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_22konoko
+		sound_dialog_play_block pause
+		sleep f25
+		sound_dialog_play c13_65_23kerr
+		sound_dialog_play_block pause
+		#Both talk
+		cm_interpolate ScanCamTalkBoth 0
+		cm_interpolate_block ScanCamTalkBoth02 800
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_24konoko
+		sound_dialog_play_block pause
+		sleep f55
+		sound_dialog_play c13_65_25kerr
+		sound_dialog_play_block pause
+		sleep f40
+		#Konoko cam
+		cm_interpolate ScanCamKonTalk04 0
+		cm_interpolate_block ScanCamKonTalk 1000
+		sound_dialog_play c13_65_26konoko
+		sound_dialog_play_block pause
+		#KerrCam
+		cm_interpolate ScanCamDocTalk02 0
+		cm_interpolate_block ScanCamDocTalk03 800
+		sound_dialog_play c13_65_27kerr
+		sound_dialog_play_block pause
+		#BothCam
+		cm_interpolate ScanCamTalkBoth02 0
+		cm_interpolate_block ScanCamTalkBoth 1000
+		sound_dialog_play c13_65_28konoko
+		sound_dialog_play_block pause
+		sleep f25
+		sound_dialog_play c13_65_29kerr
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_30konoko
+		sound_dialog_play_block pause
+		sleep f20
+		sound_dialog_play c13_65_31kerr
+		sound_dialog_play_block pause
+		sleep f20
+		sound_dialog_play c13_65_32konoko
+		sound_dialog_play_block pause
+		sleep f20
+		#KerrCam
+		cm_interpolate ScanCamDocTalk 0
+		cm_interpolate_block ScanCamDocTalk03 1000
+		sound_dialog_play c13_65_33kerr
+		sound_dialog_play_block pause
+		sleep f20
+		#Konoko cam
+		cm_interpolate ScanCamKonTalk02 0
+		cm_interpolate_block ScanCamKonTalk 800
+		sound_dialog_play c13_65_34konoko
+		sound_dialog_play_block pause
+		#BothCam
+		cm_interpolate ScanCamTalkBoth02 0
+		cm_interpolate_block ScanCamTalkBoth 800
+		sound_dialog_play c13_65_35kerr
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_36konoko
+		sound_dialog_play_block pause
+		sleep f20
+		#show scanner gunk and hide scanner objects
+		env_show 51 1
+		env_show 52 1
+		env_show 53 1
+		env_show 54 1
+		env_show 55 1
+		env_show 56 1
+		env_show 57 1
+		env_show 58 1
+		env_show 59 1
+		obj_kill 51 59
+		sound_dialog_play_block pause
+		sound_dialog_play c13_65_37kerr
+		sound_dialog_play_block pause
+#		#Ambush sequence starts
+		#dOORS start to open
+		sound_music_stop mus_sad1
+		door_open 7
+		ai2_spawn ScanOps01
+		ai2_setmovementmode ScanOps01 run
+		playback ScanOps01 AmbushTCTFenter
+		sleep f60
+		#Konoko and Doctor hear doors opening
+		cm_interpolate AmbushCamTurn 0
+		playback ScanKerr01 AmbushDoctorTurn
+		sleep f10
+		chr_animate 0 KONCOMstartle_lt1
+		sleep f60
+		#TCTF is shown entering
+		playback ScanOps01 AmbushTCTFenter011
+		cinematic_stop (KONlistening, 19, 20)
+		cinematic_stop (KERRtalking, 20, 20)
+		cm_interpolate AmbushCamTCTFenter02 160
+		sleep f120
+		sound_dialog_play c13_65_38opsguard1
+		cinematic_start (BOPSface, 180, 180, 15, 1, 20, false)
+		particle_temp_start
+		sound_dialog_play_block
+		cinematic_stop (BOPSface, 15, 20)
+		#TCTF shoots gun
+		playback ScanOps01 AmbushTCTFshoot fromhere
+		sleep f40
+		particle_temp_kill
+		#Doctor takes bullets for konoko
+		#chr_envanim 0 AmbushKonBox02 norotation
+		#chr_animate 0 KONOKOlev14_Ambush01
+		#chr_envanim ScanKerr01 AmbushKerrBox02 norotation
+		#chr_animate ScanKerr01 DOClev14_Ambush01
+		#cm_anim both AmbushCamDie01
+		#sleep f30
+		#other angle of above
+		slowmo 120
+		cm_anim both AmbushCamDie02
+		chr_envanim 0 AmbushKonBox02 norotation
+		chr_animate 0 KONOKOlev14_Ambush01
+		chr_envanim ScanKerr01 AmbushKerrBox02 norotation
+		chr_animate ScanKerr01 DOClev14_Ambush01
+		cm_anim both AmbushCamDie02
+		sleep f22
+		particle_temp_stop
+		particle ScanMerc pulse
+		sleep f1
+		particle scanexplode create
+		sound_dialog_play kerr_dth1
+
+		fork wait_and_play_xtr5
+
+		#TCTF says you're next
+		cm_wait
+		ai2_kill ScanKerr01
+		#chr_set_health ScanKerr01 0
+		cm_interpolate ScanCamSynDie 0
+		playback 0 ScanKonDie
+		sleep f120
+		#konoko says let's get it on gameplay resumes
+		cm_interpolate ScanCamKonDie 0
+		sound_dialog_play c13_65_39konoko
+		cinematic_start (KONangryfront, 180, 180, 19, 7, 20, true)	
+ 		sound_dialog_play_block pause
+		cinematic_stop (KONangryfront, 20, 20)
+		cm_reset
+		fork set_objective_3
+		trigvolume_enable trigger_volume_13 0
+
+		# CB: set up the monologue for konoko telling herself about her next objective
+		prepare_vat_monologue();
+
+		end_cutscene
+		env_show 823 0
+		save_point_3
+
+		sound_ambient_volume lab_amb1 0 4
+
+		sleep 120
+		post_scan_music_start
+}
+
+func void
+KerrSpawn(void)
+{
+		ai2_spawn KerrKerr
+		#playback KerrKerr KerrKerrSet
+		ai2_passive KerrKerr 1
+}
+
+func void
+Kerr(void)
+{
+	if(trigvolume_count(36) eq 0)
+	{
+		sound_music_start mus_sad1 0.8
+		begin_cutscene
+		#ai2_spawn KerrKerr
+		ai2_takecontrol 1
+		ai2_movetoflag 0 1261 setfacing
+		playback KerrKerr KerrKerrSet
+		cm_interpolate KerrCamKerr 180
+		sleep f100
+		#Konoko says Hi Uncle
+		sound_dialog_play c13_64_01konoko
+		cinematic_start (KONlistening, 180, 180, 19, 9, 20, true)
+		sound_dialog_play_block pause
+		#Kerr says what are you doing here?
+		cm_interpolate KerrCamKerr 180
+		sound_dialog_play c13_64_02kerr
+		cinematic_start (KERRtalking, 180, 180, 16, 1, 20, false)
+		sound_dialog_play_block pause
+		#Konoko says I need your help
+		playback 0 KerrKonSet
+		cm_interpolate KerrCamLt02 0
+		cm_interpolate_block KerrCamLt01 800
+		sound_dialog_play c13_64_03konoko
+		sound_dialog_play_block pause
+		#Kerr says yep, you do
+		sound_dialog_play c13_64_04kerr
+		sound_dialog_play_block pause
+		sleep f20
+		#Konoko says I'm on it
+		sound_dialog_play c13_64_05konoko
+		sound_dialog_play_block pause
+		sleep f30
+		#Kerr says meet me in lab
+		sound_dialog_play c13_64_06kerr
+		sound_dialog_play_block pause
+		cinematic_stop (KONlistening, 20, 20)
+		cinematic_stop (KERRtalking, 15, 20)
+		cm_reset
+		letterbox 0
+		playback KerrKerr KerrKerrGive fromhere
+		sleep f90
+		chr_animate KerrKerr COMGUYact_give
+		chr_animate 0 KONOKOact_give
+		sleep f90
+		give_powerup hypo
+		sleep f2
+		give_powerup hypo
+		ai2_takecontrol 0
+		fork set_objective_2
+		end_cutscene
+		trigvolume_enable Kerr_trig 0
+		trigvolume_enable Kerr_trig_copy 0
+		console_activate 13
+		save_point_2
+		sound_music_volume mus_sad1 0 2
+		kerr_console_music
+	}	
+}
+
+
+func void Acid01(string char)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(char);
+
+  if (eggman eq 0)
+  {
+    chr_animate(char, KONOKOacid);
+    sleep 10
+    chr_set_health(char, 0);
+  }
+
+  if (eggman eq 1)
+  {
+	chr_animate(char, KONOKOacid);
+	trigvolume_enable LastVat 0
+	cm_interpolate AcidCam01 500
+	sleep 5
+	input 0
+	invincible=1
+	sleep 525
+	chr_animate(char, KONOKOlev14_grinder);
+	chr_envanim(char, GrinderKonBox01, norotation);
+	sleep f60
+	sound_ambient_start c13_47_11_bonecrunch
+	sleep f10
+	sound_impulse_play konoko_gruesome_death
+	sleep f75
+	chr_set_health(char, 0);
+  }
+}
+
+
+func void Acid02(string char)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(char);
+
+  if (eggman eq 0)
+  {
+    chr_animate(char, KONOKOacid);
+    sleep f10
+    chr_set_health(char, 0);
+  }
+
+  if (eggman eq 1)
+  {
+	chr_animate(char, KONOKOacid);
+	input 0
+	trigvolume_enable LastVat 0
+	cm_interpolate AcidCam01 400
+	sleep f5
+	invincible=1
+	sleep f430
+	chr_animate(char, KONOKOlev14_grinder);
+	chr_envanim(char, GrinderKonBox01, norotation);
+	sleep f60
+	sound_ambient_start c13_47_11_bonecrunch
+	sleep f10
+	sound_impulse_play konoko_gruesome_death
+	sleep f75
+	chr_set_health(char, 0);
+  }
+}
+
+
+
+func void Acid03(string char)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(char);
+
+  if (eggman eq 0)
+  {
+    chr_animate(char, KONOKOacid);
+    sleep f10
+    chr_set_health(char, 0);
+  }
+
+  if (eggman eq 1)
+  {
+	input 0
+	trigvolume_enable LastVat 0
+	chr_animate(char, KONOKOacid);
+	cm_interpolate AcidCam01 200
+	sleep f5
+	invincible=1
+	sleep 230
+	chr_animate(char, KONOKOlev14_grinder);
+	chr_envanim(char, GrinderKonBox01, norotation);
+	sleep f60
+	sound_ambient_start c13_47_11_bonecrunch
+	sleep f10
+	sound_impulse_play konoko_gruesome_death
+	sleep f75
+	chr_set_health(char, 0);
+  }
+}
+
+
+
+func void acid04(string char)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(char);
+
+  if (eggman eq 0)
+  {
+    chr_animate(char, KONOKOacid);
+    sleep f10
+    chr_set_health(char, 0);
+  }
+
+  if (eggman eq 1)
+  {
+	cm_detach
+	input 0
+	trigvolume_enable LastVat 0
+	chr_animate(char, KONOKOacid);
+	sleep f5
+	invincible=1
+	sleep 40
+	cm_interpolate GrinderCamEnd 0
+	sleep f10
+	chr_animate(char, KONOKOlev14_grinderend);
+	chr_envanim(char, EndGrinderKonBox01, norotation);
+	sleep f60
+	sound_ambient_start c13_47_11_bonecrunch
+	sleep f10
+	sound_impulse_play konoko_gruesome_death
+	sleep f75
+	chr_set_health(char, 0);
+  }
+}
+
+
+
+
+
+func void
+EndScan(
+	void)
+{
+	sound_dialog_play c13_66_01konoko
+	cinematic_start (KONtalkangryfront, 180, 180, 19, 7, 20)
+	sound_dialog_play_block
+	sleep f60
+	cinematic_stop (KONtalkangryfront, 19, 20)
+}
+
+
+func void
+CraneTalk(
+	void)
+{
+	sound_dialog_play c13_66_03konoko
+	cinematic_start (KONtalkangryfront, 180, 180, 19, 7, 20)
+	sound_dialog_play_block
+	sleep f60
+	cinematic_stop (KONtalkangryfront, 19, 20)	
+}
+
+func void
+BeginVat(
+	void)
+{
+	sound_dialog_play c13_66_02konoko	
+	cinematic_start (KONtalkangryfront, 180, 180, 19, 7, 20)
+	sound_dialog_play_block
+	sleep f60
+	cinematic_stop (KONtalkangryfront, 19, 20)
+}
+
+
+func void
+Outro(
+	void)
+{
+	if(final_check eq 0)
+	{
+		dprint OUTRO_1
+		begin_cutscene
+		trigvolume_enable LastVat 0
+		ai2_takecontrol 1
+		ai2_movetoflag 0 222
+		sleep f200
+		Outro2
+	}
+
+	if(final_check ne 0)
+	{
+		Outro2
+	}
+}
+
+func void
+Outro2(
+	void)
+{
+	dprint OUTRO_2
+	begin_cutscene
+	trigvolume_enable LastVat 0
+	ai2_takecontrol 1	
+	#dialog talking about how to get to the crane
+	#Konoko runs to Crane
+	cm_interpolate OutroCam01 0
+	sound_dialog_play c13_66_04konoko
+	cinematic_start (KONintense, 180, 180, 19, 7, 20)
+	sound_dialog_play_block
+	chr_envanim 0 OutroKonBox01 norotation
+	env_anim 71 74
+	cm_anim both OutroCam01
+	cutscene_sync mark
+	sound_ambient_start c13_59_22_crane
+	sleep f150
+	chr_animate 0 KONOKOlev14_Run
+	#Konoko jumps to Crane
+	cm_anim_block both OutroCamJump
+	chr_envanim 0 OutroKonBox02 norotation
+	chr_animate 0 KONOKOlev14_Jump
+	env_setanim 71 cranehook_jump
+	env_setanim 72 cranerope_jump
+	#Konoko tucks over shredders
+	cm_anim_block both OutroCamTuck
+	chr_envanim 0 OutroKonBox03 norotation
+	chr_animate 0 KONOKOlev14_Tuck
+	env_setanim 71 cranehook_tuck
+	env_setanim 72 cranerope_tuck
+	sleep f160
+	sound_dialog_play c13_66_05konoko
+	#Konoko dives into acid
+	chr_nocollision 0 1
+	cm_anim_block both OutroCamDive
+	chr_envanim 0 OutroKonBox04 norotation
+	chr_animate 0 KONOKOlev14_Dive
+	env_setanim 71 cranehook_dive
+	env_setanim 72 cranerope_dive
+	sleep f90
+	cinematic_stop (KONintense, 20, 20)
+	sleep f60
+	particle OutroSplash create
+	sound_ambient_start c14_15_12_splash
+	sleep f120
+	sound_ambient_start c14_16_18_bubbles	
+	sleep f80
+
+
+
+	### CB: this is the two-guys-at-the-acid-pool script
+#	playback OutroTCTF1 OutroTCTFSwat01
+#	playback OutroTCTF2 OutroTCTFLite01
+#	sleep f100
+#	cm_interpolate OutroCamWater01 0
+#	sleep f120
+#	sound_dialog_play c13_67_01opsguard1
+#	cinematic_start (TCTFtalking, 180, 180, 19, 7, 20, false)
+#	sound_dialog_play_block
+#	sound_dialog_play c13_67_02opsguard2
+#	cinematic_start (BOPSface, 180, 180, 20, 9, 20, true)
+#	sound_dialog_play_block
+#	#TCTFguys from birds eye
+#	cm_interpolate OutroCamWater02 0
+#	#sound_dialog_play c13_67_03opsguard3
+#	#sound_dialog_play_block
+#	#sound_dialog_play c13_67_04opsguard1
+#	#sound_dialog_play_block
+#	sleep f30
+#	sound_dialog_play c13_67_05opsguard2
+#	sound_dialog_play_block
+#	cinematic_stop (BOPSface, 20, 20)
+#	cinematic_stop (TCTFtalking, 19, 20)
+
+
+
+
+
+
+	### CB: this is the same script with a third character added
+	ai2_spawn OutroTCTF1
+	ai2_spawn OutroTCTF2
+	ai2_spawn OutroTCTF3
+	playback OutroTCTF1 OutroTCTFSwat01
+	playback OutroTCTF2 OutroTCTFLite01
+	sleep f40
+	playback OutroTCTF3 OutroTCTFLite02
+	sleep f60
+	cm_interpolate OutroCamWater01 0
+	sleep f120
+	sound_dialog_play c13_67_01opsguard1
+	cinematic_start (TCTFtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	sound_dialog_play c13_67_02opsguard2
+	cinematic_start (BOPSface, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block
+	sound_dialog_play c13_67_03opsguard3
+	sound_dialog_play_block
+	cinematic_stop (BOPSface, 20, 20)
+	cinematic_stop (TCTFtalking, 19, 20)
+
+	#TCTFguys from birds eye
+	cm_interpolate OutroCamWater02 0
+	sleep f40
+	cinematic_start (TCTFtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play c13_67_04opsguard1
+	sound_dialog_play_block
+	sleep f30
+	cinematic_start (BOPSface, 180, 180, 19, 7, 20, false)
+	sound_dialog_play c13_67_05opsguard2
+	sound_dialog_play_block
+	sleep f140
+	cinematic_stop (BOPSface, 19, 20)
+	cinematic_stop (TCTFtalking, 20, 20)
+
+
+
+
+	sleep f140
+	win
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_level_logic.bsl	(revision 405)
@@ -0,0 +1,1166 @@
+# neuro_spawn_guards.bsl
+#
+# SCRIPTS TO SPAWN SECURITY GUARDS
+#
+
+################# START GAME LOGIC #############################
+
+# creates counterS for stuff
+var int neuro_counter;
+var int kerr_counter;
+var int has_probed = 0;
+var int ambush_counter = 2;
+var int final_check = 0;
+var int FTS_variable = 2;
+
+func void level_start(void)
+{
+# set counter values
+
+	neuro_counter = 3
+	end_counter = 2
+	kerr_counter = 3
+
+	############# SAVE GAME SCRIPTS #############
+
+# These functions are used when the game is restored.
+
+	if (save_point eq 0)
+	{
+		dprint SAVE_POINT_0
+#		VOODOO COMPUTING
+	}
+
+	if (save_point eq 1)
+	{
+		fork Setup_Intro
+		fork set_objective_1
+		dprint Restore_Autosave_Point_1
+		restore_game
+	}
+
+	if (save_point eq 2)
+	{
+		dprint Restore_Autosave_Point_2
+
+		objective_set 1 silent
+		target_set(1261, 30.0)
+
+		dprint Restore_Pod_1
+		ai2_spawn Pod1_TCL_1
+		ai2_spawn Pod1_TCL_2
+		ai2_spawn Pod1_TCL_3
+		ai2_spawn Pod1_Scientist_1
+		ai2_spawn Pod1_Scientist_2
+		#particle lock1_locklight01 do start
+		door_lock(11);
+		trigvolume_enable(autosave_trigger_1, 0);
+
+		restore_game
+
+#		console_deactivate 10
+#		trigvolume_enable(trig_train_saves, 0);
+#		trigvolume_enable(trig_train_objectives, 1);
+	}
+
+	if (save_point eq 3)
+	{
+		dprint RESTORE_SAVE_POINT_3
+
+		objective_set 2 silent
+		target_set(366, 30.0)
+
+		particle lock3_locklight02 do start
+		particle lock4_locklight02 do start
+
+		door_unlock(58);
+
+		door_lock(32);
+		door_lock(33);
+		door_lock(34);
+		door_lock(35);
+
+		trig_deactivate 2
+
+		trigvolume_enable(trigger_volume_76, 0);
+		trigvolume_enable(trigger_volume_06, 1);
+		trigvolume_enable(Kerr_trig, 0);
+		console_deactivate 12
+		console_deactivate 13
+
+		restore_game
+
+		kerr_console_music
+	}
+
+	if (save_point eq 4)
+	{
+		dprint RESTORE_SAVE_POINT_4
+
+		env_show 823 0
+
+		objective_set 3 silent
+		target_set(346, 30.0)
+
+		door_lock 58
+
+		door_unlock(1);
+		door_unlock(6);
+		door_unlock(7);
+
+		particle lock5a_locklight01 do start
+		particle lock5b_locklight01 do start
+		particle lock5c_locklight01 do start
+
+		particle labalarm1_emlight01 do stop
+		particle labalarm2_emlight01 do stop
+		particle labalarm3_emlight01 do stop
+
+		particle labalarm1 do stop
+		particle labalarm2 do stop
+		particle labalarm3 do stop
+
+		particle lock6_locklight02 do start
+
+		trigvolume_enable(trigger_volume_13, 0);
+		trigvolume_enable(spawn_kerr_trig, 0);
+		#trigvolume_enable(Setup_Security_Trig, 1);
+		#trigvolume_enable(chase_trigger, 1);
+
+		# CB: set up the monologue for konoko telling herself about her next objective
+		prepare_vat_monologue();
+
+		console_deactivate 3
+		console_deactivate 4
+		console_deactivate 5
+		console_deactivate 14
+		console_deactivate 88
+
+		ai2_spawn Scan_BOS_1
+		ai2_spawn Scan_BOS_2
+		ai2_spawn Scan_BOS_3
+		ai2_spawn Scan_BOS_4
+
+		ai2_spawn CS_ScanOps01
+
+		restore_game
+
+		post_scan_music_start
+	}
+}
+
+# This is an example of a save game console.
+
+func void autosave_1(string player_name)
+{
+	dprint autosave_1
+#	PLAY AUTOSAVE SOUND - ADD LATER!!!
+	save_game 2 autosave
+}
+
+func void save_point_2(string player_name)
+{
+	dprint saveit_2
+	save_game 3 autosave
+}
+
+func void save_point_3(string player_name)
+{
+	dprint saveit_3
+	save_game 4 autosave
+}
+
+########################################################
+
+func void start_trap_music(string ai_name)
+{
+	dprint martys_baby
+	sound_music_start mus_space01 0.8
+}
+
+func void Die_For_Kerr_1(string ai_name)
+{
+	dprint DFK_1
+	kerr_counter = kerr_counter - 1
+
+	if (kerr_counter eq 0)
+	{
+		Kerr_Console_All_Counters();
+	}
+}
+
+func void Die_For_Kerr_2(string ai_name)
+{
+	dprint DFK_2
+	kerr_counter = kerr_counter - 1
+
+	if (kerr_counter eq 0)
+	{
+		Kerr_Console_All_Counters();
+	}
+}
+
+func void Die_For_Kerr_3(string ai_name)
+{
+	dprint DFK_3
+	kerr_counter = kerr_counter - 1
+
+	if (kerr_counter eq 0)
+	{
+		Kerr_Console_All_Counters();
+	}
+}
+
+func void Kerr_Console_All_Counters(void)
+{
+	dprint START_KERR
+	trigvolume_enable(Kerr_trig, 1);
+	fork Pod3_Unlock_Doors
+}
+
+func void Setup_Intro(string ai_name)
+{
+# SETUP POD 1 AREA
+	dprint Setup_Intro
+	trig_activate 1
+	particle lock99_locklight02 do start
+	particle lock100_locklight01 do stop
+
+	door_unlock 11
+}
+
+func void Setup_Pod1(string ai_name)
+{
+# SETUP POD 1 AREA
+	dprint SetupPod1
+
+	door_lock 20
+	door_lock 21
+	door_lock 22
+	door_lock 23
+
+	ai2_spawn Pod1_TCL_1
+	ai2_spawn Pod1_TCL_2
+	ai2_spawn Pod1_TCL_3
+	ai2_spawn Pod1_Scientist_1
+	ai2_spawn Pod1_Scientist_2
+
+	particle lock1_locklight01 do stop
+	#particle lock1_locklight01 do start
+	sound_music_stop mus_space01
+}
+#########################################
+func void Pod1_RTAlarm_A(string ai_name)
+{
+	dprint Guard_A_RTAlarm
+	ai2_doalarm Pod1_TCL_1 10
+}
+
+func void Pod1_RTAlarm_B(string ai_name)
+{
+	dprint Guard_B_RTAlarm
+	ai2_doalarm Pod1_TCL_2 10
+}
+#########################################
+
+func void Pod1_Alarm_Sound(void)
+{
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+func void Pod1_Alarm(string ai_name)
+{
+	dprint Pod1Alarm
+	door_unlock(11);
+	particle lock99_locklight02 do start
+	sleep 180
+# SPAWN ALARM CHARACTERS
+	ai2_spawn Pod1_BOL_Alarm_1
+	ai2_spawn Pod1_BOL_Alarm_2
+	ai2_spawn pod1_a_1
+	ai2_spawn pod1_a_2
+# SET ALERT LEVELS
+	ai2_setalert Pod1_TCL_1 high 
+	ai2_setalert Pod1_TCL_2 high 
+	ai2_setalert Pod1_TCL_3 high 
+	ai2_setalert Pod1_BOL_Alarm_1 high 
+	ai2_setalert Pod1_BOL_Alarm_2 high 
+# EXECUTE ALARM PATHS
+	ai2_dopath Pod1_TCL_1 Pod1_Final_Guard_A
+	ai2_dopath Pod1_TCL_2 Pod1_Final_Guard_B
+	ai2_dopath Pod1_TCL_3 Pod1_Final_Guard_C
+	ai2_dopath Pod1_Scientist_1 Pod1_Final_Sci_A
+	ai2_dopath Pod1_Scientist_2 Pod1_Final_Sci_B
+# MAKE ALARM PATHS THEIR JOBS
+	ai2_setjobstate Pod1_TCL_1
+	ai2_setjobstate Pod1_TCL_2
+	ai2_setjobstate Pod1_TCL_3
+
+	ai2_setjobstate Pod1_Scientist_1
+	ai2_setjobstate Pod1_Scientist_2
+
+# TRIP ALARM FOR BADDIES TO PURSUE KONOKO
+
+	ai2_tripalarm 11 Konoko
+
+	particle lock1_locklight01 do stop
+
+	particle alarm1_emlight01 do start
+
+# DOOR LOCK COMMAND
+	door_lock 20
+	door_lock 21
+	door_lock 22
+	door_lock 23
+
+# annoy the player with alarm sound
+	fork Pod1_Alarm_Sound
+
+	console_reset 1
+}
+
+# UNLOCK DOORS FROM CONSOLE
+func void Pod1_UnlockDoors(string ai_name)
+{
+	dprint Pod1UnlockDoors
+
+	door_unlock 20
+	door_unlock 21
+	door_unlock 22
+	door_unlock 23
+	door_lock(11);
+	particle lock99_locklight02 do stop
+
+	input 0
+	cm_interpolate lock1 0
+	sleep 30
+	particle alarm1_emlight01 do stop
+	sleep 30
+	particle lock1_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	console_reset 10
+}
+###################### POD 2 #################################
+func void Pod2_Setup(string ai_name)
+{
+	dprint SetupPod2
+	ai2_spawn Pod2_TCL_1
+	ai2_spawn Pod2_TCL_2
+	ai2_spawn Pod2_Sci_1
+
+	particle lock2_locklight01 do stop
+}
+##############################################################
+func void Pod2_RTAlarm_A(string ai_name)
+{
+	dprint Guard_A_RTAlarm
+	ai2_doalarm Pod2_TCL_1 11
+}
+
+func void Pod2_RTAlarm_B(string ai_name)
+{
+	dprint Guard_B_RTAlarm
+	ai2_doalarm Pod2_TCL_2 11
+}
+##############################################################
+
+func void Pod2_Alarm_Sound(void)
+{
+	sound_ambient_start alarm_loop
+	sleep 900
+	sound_ambient_stop alarm_loop
+}
+
+func void Pod2_Alarm(string ai_name)
+{
+	dprint Pod2Alarm
+	door_unlock(11);
+	particle lock99_locklight02 do start
+	sleep 180
+
+# SPAWN ALARM CHARACTERS
+	#ai2_spawn Pod2_BOS_1
+	ai2_spawn Pod2_BOL_Alarm_1
+	ai2_spawn pod2_a_1
+	ai2_spawn pod2_a_2
+
+# SET ALERT LEVELS
+	ai2_setalert Pod2_TCL_1 high 
+	ai2_setalert Pod2_TCL_2 high 
+	ai2_setalert Pod2_BOS_1 high 
+
+# EXECUTE ALARM PATHS
+	ai2_dopath Pod2_TCL_1 Pod2_End_TCL_1
+	ai2_dopath Pod2_TCL_2 Pod2_End_TCL_2
+	ai2_dopath Pod2_BOS_1 Pod2_End_BOS_1
+	ai2_dopath Pod2_Sci_1 Pod2_End_Sci_1
+
+# MAKE ALARM PATHS THEIR JOBS
+	ai2_setjobstate Pod2_TCL_1
+	ai2_setjobstate Pod2_TCL_2
+	ai2_setjobstate Pod2_BOS_1
+
+	ai2_setjobstate Pod2_Sci_1
+
+# TRIP ALARM FOR BADDIES TO PURSUE KONOKO
+
+	ai2_tripalarm 12 Konoko
+
+	particle lock2_locklight01 do stop
+
+	particle alarm2_emlight01 do start
+
+# DOOR LOCK COMMANDS
+	door_lock 28
+	door_lock 29
+	door_lock 30
+	door_lock 31
+
+	console_reset 2
+
+	fork Pod2_Alarm_Sound
+}
+
+# UNLOCK DOORS FROM CONSOLE
+
+func void Pod2_UnlockDoors(string ai_name)
+{
+	dprint Pod2UnlockDoors
+
+	door_unlock 28
+	door_unlock 29
+	door_unlock 30
+	door_unlock 31
+	door_lock(11);
+	particle lock99_locklight02 do stop
+
+	input 0
+	cm_interpolate lock2 0
+	sleep 30
+	particle alarm2_emlight01 do stop
+	sleep 30
+	particle lock2_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	console_reset 11
+}
+
+func void chase_after_scan(string ai_name)
+{
+	ai2_dopath Scan_BOS_3 chase_after_3
+	ai2_dopath Scan_BOS_4 chase_after_4
+
+	ai2_setjobstate Scan_BOS_3
+	ai2_setjobstate Scan_BOS_4
+
+	ai2_tripalarm 11 Konoko
+
+	sleep 1200
+
+	ai2_dopath Scan_BOS_1 chase_after_1
+	ai2_dopath Scan_BOS_2 chase_after_2
+
+	ai2_setjobstate Scan_BOS_1
+	ai2_setjobstate Scan_BOS_2
+
+	ai2_tripalarm 9 Konoko
+}
+###################### POD 3 #################################
+func void Pod3_Setup(string ai_name)
+{
+	dprint SetupPod3
+	ai2_spawn Pod3_BOS_1
+	ai2_spawn Pod3_BOS_2
+	ai2_spawn Pod3_BOL_1
+
+	#door_lock 59
+
+	trigvolume_enable Kerr_trig 1
+}
+
+func void Pod3_Unlock_Doors(string ai_name)
+{
+	dprint Pod3UnlockDoors
+
+	door_unlock 59
+
+	input 0
+	sleep 90
+	cm_interpolate lock3 0
+	sleep 60
+	particle lock3_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void Kerr_Console(string ai_name)
+{
+	dprint Kerr_Console
+
+	door_unlock 58
+
+	input 0
+	cm_interpolate lock4 0
+	sleep 60
+	particle lock4_locklight02 do start
+	sleep 150
+	trig_deactivate 2
+	sleep 75
+	cm_reset
+	input 1
+}
+
+###################### LAB 1 #################################
+func void Setup_Lab(string ai_name)
+{
+	dprint SetUpLab
+
+	particle lock5_locklight01 do stop
+
+	door_lock 6
+	door_lock 7
+
+	ai2_spawn LabHall_BOL_1
+	ai2_spawn LabHall_BOL_2
+	ai2_spawn LabHall_BOL_3
+	ai2_spawn LabHall_BOL_4
+	ai2_spawn LabHall_BOL_5
+
+	ai2_spawn Hall_TCS_33
+
+	ai2_spawn Lab1_Sci_1
+	ai2_spawn Lab1_Sci_2
+
+	ai2_spawn Lab2_Sci_1
+	ai2_spawn Lab2_Sci_2
+
+	ai2_spawn Lab3_Sci_1
+	ai2_spawn Lab3_Sci_2
+
+	trigvolume_enable Setup_Security_Trig 0
+	trigvolume_enable(chase_trigger, 0);
+}
+
+func void Lab_Console_1(string ai_name)
+{
+	dprint LabConsole1
+
+	#particle create labalarm1_emlight02
+	particle labalarm1 do start
+
+	ai2_spawn lab_BOS_1
+
+	#ai2_spawn lab_BOS_2
+
+	ai2_tripalarm 1 Konoko
+
+	particle lock4_locklight02 do stop
+	door_lock 58
+
+	neuro_counter = neuro_counter - 1
+
+	input 0
+	cm_interpolate lock5 0
+	sleep 60
+	particle lock5a_locklight01 do start
+	sleep 150
+	cm_reset
+	target_set(1009, 30.0)
+	input 1
+
+	if (neuro_counter eq 0)
+	{
+		Lab_Console_All_Counters();
+	}
+}
+
+func void Lab_Console_2(string ai_name)
+{
+	dprint LabConsole2
+
+	particle labalarm2 do start
+
+	ai2_spawn lab_BOS_2
+
+	#ai2_spawn lab_BOS_4
+
+	ai2_tripalarm 1 Konoko
+
+	target_set(268, 30.0)
+
+	particle lock4_locklight02 do stop
+	door_lock 58
+
+	neuro_counter = neuro_counter - 1
+
+	input 0
+	cm_interpolate lock5 0
+	sleep 60
+	particle lock5b_locklight01 do start
+	sleep 150
+	cm_reset
+	target_set(1009, 30.0)
+	input 1
+
+	if (neuro_counter eq 0)
+	{
+		Lab_Console_All_Counters();
+	}
+}
+
+func void Lab_Console_3(string ai_name)
+{
+	dprint LabConsole3
+
+	ai2_spawn lab_BOS_3
+
+	#ai2_spawn lab_BOS_6
+
+	particle labalarm3 do start
+
+	ai2_tripalarm 1 Konoko
+
+	particle lock4_locklight02 do stop
+	door_lock 58
+
+	target_set(367, 30.0)
+
+	neuro_counter = neuro_counter - 1
+
+	input 0
+	cm_interpolate lock5 0
+	sleep 60
+	particle lock5c_locklight01 do start
+	sleep 150
+	cm_reset
+	target_set(1009, 30.0)
+	input 1
+
+	if (neuro_counter eq 0)
+	{
+		Lab_Console_All_Counters();
+	}
+}
+
+func void Lab_Console_All_Counters(void)
+{
+	dprint PROBE_ROOM_OPEN
+	door_unlock 6
+	door_unlock 7
+
+	kerr_console_music_stop
+}
+
+func void Lab_Unlock_Door_5(string ai_name)
+{
+	dprint Probe_Room_Unlock_Doors
+	door_unlock 1
+# CB: no idea what this was, maybe it was the same as the current 66_01
+#	sound_dialog_play c13_49a_01konoko
+	input 0
+	cm_interpolate lock6 0
+	sleep 60
+	particle lock6_locklight02 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	trigvolume_enable Setup_Security_Trig 1
+	trigvolume_enable(chase_trigger, 1);
+}
+#######################DURING THE SCAN#########################
+func void Scan_Guards(string ai_name)
+{
+	dprint Scan_Guards
+
+	ai2_spawn Scan_BOS_1
+	ai2_spawn Scan_BOS_2
+	ai2_spawn Scan_BOS_3
+	ai2_spawn Scan_BOS_4
+
+	#chr_teleport LabHall_BOL_1 274
+	#chr_teleport LabHall_BOL_4 275
+
+	chr_teleport LabHall_BOL_5 272
+	chr_teleport Hall_TCS_33 7018
+
+	#chr_teleport LabHall_BOL_2 264
+	#chr_teleport LabHall_BOL_3 7004
+
+	#ai2_forget LabHall_BOL_1
+	#ai2_forget LabHall_BOL_2
+	#ai2_forget LabHall_BOL_3
+	#ai2_forget LabHall_BOL_4
+
+	ai2_forget LabHall_BOL_5
+	ai2_forget Hall_TCS_33
+
+	ai2_dopath LabHall_BOL_1 Scan_BOL_1
+	ai2_dopath LabHall_BOL_2 Scan_BOL_2
+	ai2_dopath LabHall_BOL_3 Scan_BOL_3
+	ai2_dopath LabHall_BOL_4 Scan_BOL_4
+	ai2_dopath LabHall_BOL_5 Scan_BOL_5
+	ai2_dopath Hall_TCS_33 Scan_Hall_TCS_33
+
+	ai2_setjobstate LabHall_BOL_1
+	ai2_setjobstate LabHall_BOL_2
+	ai2_setjobstate LabHall_BOL_3
+	ai2_setjobstate LabHall_BOL_4
+	ai2_setjobstate Hall_TCS_33
+
+	fork get_her
+}
+
+func void get_her(string ai_name)
+{
+	dprint get_her_timer_start
+
+	sleep 18000
+
+	ai2_tripalarm 5 Konoko
+
+	ai2_dopath LabHall_BOL_1 get_her_1
+	ai2_dopath LabHall_BOL_2 get_her_2
+
+	ai2_setjobstate LabHall_BOL_1
+	ai2_setjobstate LabHall_BOL_2
+
+	sleep 18000
+
+	ai2_tripalarm 7 Konoko
+
+	ai2_dopath LabHall_BOL_3 Scan_BOL_3
+	ai2_dopath LabHall_BOL_4 Scan_BOL_4
+
+	ai2_setjobstate LabHall_BOL_3
+	ai2_setjobstate LabHall_BOL_4
+
+	sleep 18000
+
+	ai2_tripalarm 9 Konoko
+
+	ai2_dopath Scan_BOS_1 get_her_1
+	ai2_dopath Scan_BOS_2 get_her_2
+
+	ai2_setjobstate Scan_BOS_1
+	ai2_setjobstate Scan_BOS_2
+
+	sleep 18000
+
+	ai2_tripalarm 11 Konoko
+
+	ai2_dopath Scan_BOS_3 get_her_3
+	ai2_dopath Scan_BOS_4 get_her_4
+
+	ai2_setjobstate Scan_BOS_3
+	ai2_setjobstate Scan_BOS_4
+}
+
+func void endgether(string ai_name)
+{
+	ai2_attack Final_BOL_1 Konoko
+}
+########################### SECURITY #########################
+func void Setup_Security(string ai_name)
+{
+	dprint Setup_Security
+
+	ai2_spawn Sec_BOS_1
+	ai2_spawn Sec_BOS_2
+	ai2_spawn Sec_BOL_1
+
+	trigvolume_enable Ambush_Trigger_1 1
+
+	door_lock 7
+
+	particle lock8_locklight02 do stop
+
+	door_lock 54
+	particle lock7_locklight02 do stop
+
+	post_scan_music_stop
+}
+
+func void Unlock_Door_7(string ai_name)
+{
+	dprint Unlock_Door_7
+
+	door_unlock 54
+
+	input 0
+	cm_interpolate lock7 0
+	sleep 60
+	particle lock7_locklight02 do start
+	sleep 150
+	cm_reset
+	target_set(360, 30.0)
+	input 1
+
+	post_scan_music_stop
+}
+
+func void Sec_Ambush_1(string ai_name)
+{
+	dprint AMBUSH
+	trig_deactivate 3
+	trig_deactivate 4
+	turret_deactivate 2
+	turret_deactivate 3
+
+	door_unlock 7
+	door_unlock 36
+	particle lock8_locklight02 do start
+
+	door_lock 54
+	particle lock7_locklight02 do stop
+	
+	ai2_spawn Sec_Ambush_BOS_1
+	ai2_spawn Sec_Ambush_BOL_1
+
+	ai2_attack Sec_Ambush_BOS_1 Konoko
+	ai2_attack Sec_Ambush_BOL_1 Konoko
+
+	#ai2_spawn Sec_Ambush_BOS_2
+	#ai2_spawn Sec_Ambush_BOL_2
+}
+
+
+func void nextwave_1(string ai_name)
+{
+	ambush_counter = ambush_counter - 1
+
+	if (ambush_counter eq 0)
+	{
+		Sec_Ambush_2();
+	}
+}
+
+func void nextwave_2(string ai_name)
+{
+	ambush_counter = ambush_counter - 1
+
+	if (ambush_counter eq 0)
+	{
+		Sec_Ambush_2();
+	}
+}
+
+func void closethedoor(string ai_name)
+{
+	door_lock 7
+	door_lock 36
+
+	particle lock8_locklight02 do stop
+}
+
+func void Sec_Ambush_2(string ai_name)
+{
+	dprint AMBUSH2
+
+	door_unlock 7
+	door_unlock 36
+
+	particle lock8_locklight02 do start
+
+	ai2_spawn Sec_Ambush_BOS_2
+	ai2_spawn Sec_Ambush_BOL_2
+
+	ai2_attack Sec_Ambush_BOS_2 Konoko
+	ai2_attack Sec_Ambush_BOL_2 Konoko
+}
+
+######################### FINAL #########################
+
+func void Setup_Final(string ai_name)
+{
+	dprint Setup_Final
+
+	ai2_spawn Final_BOS_1
+	ai2_spawn Final_BOL_1
+
+	ai2_spawn Final_Thug_1
+	ai2_spawn Final_Thug_2
+
+	trigvolume_enable end 0
+}
+
+func void end(string ai_name)
+{
+	dprint END
+
+	fork Outro
+	
+	ai2_forget Final_BOS_1
+	ai2_forget Final_BOL_1
+	ai2_forget Final_BOL_2
+
+	ai2_forget Sec_Ambush_BOS_1
+	ai2_forget Sec_Ambush_BOS_2
+	ai2_forget Sec_Ambush_BOL_1
+	ai2_forget Sec_Ambush_BOL_1
+
+	ai2_forget Final_Thug_1
+	ai2_forget Final_Thug_2
+
+	ai2_dopath Final_BOS_1 End_BOS_1
+	ai2_dopath Final_BOL_1 End_BOL_1
+	ai2_dopath Final_BOL_2 End_BOL_2
+
+	ai2_dopath Sec_Ambush_BOS_1 End_BOS_1
+	ai2_dopath Sec_Ambush_BOS_2 End_BOS_1
+	ai2_dopath Sec_Ambush_BOL_1 End_BOL_1
+	ai2_dopath Sec_Ambush_BOL_2 End_BOL_1
+
+	ai2_dopath Final_Thug_1 End_Thug_1
+	ai2_dopath Final_Thug_2 End_Thug_1
+
+	ai2_setjobstate Final_BOS_1
+	ai2_setjobstate Final_BOL_1
+	ai2_setjobstate Final_BOL_2
+
+	ai2_setjobstate Sec_Ambush_BOS_1
+	ai2_setjobstate Sec_Ambush_BOS_2
+
+	ai2_setjobstate Sec_Ambush_BOL_1
+	ai2_setjobstate Sec_Ambush_BOL_2
+
+	ai2_setjobstate Final_Thug_1
+	ai2_setjobstate Final_Thug_2
+}
+
+##############################################################
+
+# COUNTDOWN TO FINAL CUTSCENE
+
+func void check_1(string ai_name)
+{
+	dprint circle_squared
+	final_count = final_count - 1
+	if (final_count eq 0)
+	{
+	trigvolume_enable ending 1
+	}
+}
+
+func void check_2(string ai_name)
+{
+	dprint circle_squared
+	final_count = final_count - 1
+	if (final_count eq 0)
+	{
+	trigvolume_enable ending 1
+	}
+}
+
+func void mid_guards(string ai_name)
+{
+	dprint final_guards
+	ai2_spawn Final_BOL_2
+	ai2_spawn Final_Thug_9
+
+	ai2_attack Final_BOL_2 Konoko
+}
+
+func void end_guards(string ai_name)
+{
+	dprint final_guards
+	ai2_spawn end_guard_1
+	ai2_spawn end_guard_2
+	ai2_spawn Final_Thug_10
+}
+
+
+####################################################################
+
+func void set_objective_1(void)
+{
+	dprint set_objective_1
+	objective_set(1)
+	target_set(1261, 30.0)
+}
+
+func void set_objective_2(string chr_index)
+{
+	dprint set_objective_2
+	objective_set(2)
+	target_set(366, 30.0)
+}
+
+func void set_objective_3(string chr_index)
+{
+	dprint set_objective_3
+	objective_set(3)
+	target_set(346, 30.0)
+}
+
+func void set_objective_4(string chr_index)
+{
+	dprint set_objective_4
+	objective_set(4)
+	target_set(222, 30.0)
+}
+
+func void kerr_died(string ai_name)
+{
+	if (has_probed eq 0)
+	{
+		you_lose();
+	}
+}
+
+func void you_lose(string ai_name)
+{
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	lose
+}
+
+func void level_14a(void)
+{
+	dprint set_text_14a
+	text_console level_14a
+	console_reset 12
+}
+
+func void level_14b(void)
+{
+	dprint set_text_14b
+	text_console level_14b
+	console_reset 6
+}
+
+
+################## ANIM SCRIPTS ##########################################
+func void patrolscript0001 (string ai_name)
+{
+	playback_block Pod1_TCL_1 alarm1 interp 20
+}
+
+func void patrolscript0002 (string ai_name)
+{
+	playback_block Pod1_TCL_2 alarm2 interp 20
+}
+
+func void patrolscript0003 (string ai_name)
+{
+	playback_block Pod2_TCL_1 pod2alarm1 interp 20
+}
+
+func void patrolscript0004 (string ai_name)
+{
+	playback_block Pod2_TCL_2 pod2alarm2 interp 20
+}
+
+func void patrolscript0009 (string ai_name)
+{
+	particle lock99_locklight02 do start
+	door_unlock 11
+	sleep 540
+	particle lock99_locklight02 do stop
+	door_lock 11
+}
+
+func void patrolscript0010 (string ai_name)
+{
+	particle lock99_locklight02 do start
+	door_unlock 11
+# WAIT AND RELOCK DOORS
+	sleep 540
+	particle lock99_locklight02 do stop
+	door_lock 11
+}
+
+func void kerr_console_music(void)
+{
+	sound_music_start mus_ambgrv2 0.8
+}
+
+func void kerr_console_music_stop(void)
+{
+	dprint stopping_kerr_console_music
+	sound_music_stop mus_ambgrv2
+}
+
+func void post_scan_music_start(void)
+{
+	dprint startting posctuscene
+	sound_music_start mus_xtr1 0.7
+}
+
+func void post_scan_music_stop(void)
+{
+	sound_music_stop mus_xtr1
+}
+
+################## VAT MONOLOGUE LOGIC ##########################
+
+var int played_vat_monologue = 0;
+
+func void prepare_vat_monologue(void)
+{
+	trigvolume_enable tv_vat_monologue_1 1
+	trigvolume_enable tv_vat_monologue_2 1
+}
+
+func void set_vat_monologue_variable(void)
+{
+	played_vat_monologue = 1;
+}
+
+func void play_vat_monologue(string ai_name)
+{
+	if (played_vat_monologue eq 0)
+	{
+		# this is a hack to get around the way that the scripting
+		# language mistakenly sets variables that are inside an
+		# if clause that isn't being run
+		set_vat_monologue_variable();
+
+		sleep 90
+
+		EndScan();
+	}
+}
+
+################## END LEVEL LOGIC FOR TRIGGER ###################
+
+func void check_outro(string ai_name)
+{
+	trigvolume_enable tv_check_outro 0
+	
+	if(FTS_variable eq 0)
+	{
+		if(trigvolume_count (77) eq 0)
+		{
+			sleep 120
+			trigvolume_enable ending 1
+			trigvolume_enable ending2 1
+		}
+		if(trigvolume_count (77) ne 0)
+		{
+			sleep 90
+			trigvolume_enable tv_check_outro 1
+		}
+	}
+	sleep 90
+	trigvolume_enable tv_check_outro 1
+}
+
+func void final_check_for_crane(string ai_name)
+{
+	final_check = final_check + 1
+}
+
+func void FTS(string ai_name)
+{
+	FTS_variable = FTS_variable - 1
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/neuro/neuro_main.bsl	(revision 405)
@@ -0,0 +1,23 @@
+#
+# neuro_main.bsl
+#
+
+func void
+main(void)
+{
+	gl_fog_blue=.15
+	gl_fog_red=.15
+	gl_fog_green=.15
+	gl_fog_start=.985
+	gs_farclipplane_set 4000
+		obj_create 401 409
+		env_anim 401 409
+		obj_create 71 74
+	level_start
+
+	if (save_point eq 0)
+	{
+		neuro_cs_intro
+		save_game 1 autosave
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/neuro/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/neuro/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/neuro/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,102 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+
+#lab 1
+func void lab1_start(string ai_name)
+{
+	dprint lab1_start
+	particle lab1 do start
+}
+func void lab1_stop(string ai_name)
+{
+	dprint lab1_stop
+	particle lab1 do stop
+}
+#lab2
+func void lab2_start(string ai_name)
+{
+	dprint lab2_start
+	particle lab2 do start
+}
+func void lab2_stop(string ai_name)
+{
+	dprint lab2_stop
+	particle lab2 do stop
+}
+#lab3
+func void lab3_start(string ai_name)
+{
+	dprint lab3_start
+	particle lab3 do start
+}
+func void lab3_stop(string ai_name)
+{
+	dprint lab3_stop
+	particle lab3 do stop
+}
+#Particles for the exterior of lab3
+func void part1_start(string ai_name)
+{
+	dprint part1_start
+	particle part1 do start
+}
+func void part1_stop(string ai_name)
+{
+	dprint part1_stop
+	particle part1 do stop
+}
+#Particles for the exterior of lab2
+func void part2_start(string ai_name)
+{
+	dprint part2_start
+	particle part2 do start
+}
+func void part2_stop(string ai_name)
+{
+	dprint part2_stop
+	particle part2 do stop
+}
+#Particles for the exterior of lab1
+func void part3_start(string ai_name)
+{
+	dprint part3_start
+	particle part3 do start
+}
+func void part3_stop(string ai_name)
+{
+	dprint part3_stop
+	particle part3 do stop
+}
+#particles for the vats in the end of the level
+func void vat1_start(string ai_name)
+{
+	dprint vat1_start
+	particle vat1 start
+}
+func void vat1_stop(string ai_name)
+{
+	dprint vat1_stop
+	particle vat1 stop
+}
+func void vat2_start(string ai_name)
+{
+	dprint vat2_start
+	particle vat2 start
+}
+func void vat2_stop(string ai_name)
+{
+	dprint vat2_stop
+	particle vat2 stop
+}
+func void vat3_start(string ai_name)
+{
+	dprint vat3_and_4_start
+	particle vat3 start
+	particle vat4 start
+}
+func void vat3_stop(string ai_name)
+{
+	dprint vat3_stop
+	particle vat3 stop
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/power/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,26 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+
+#power1
+func void power1_start(string ai_name)
+{
+	dprint power1_start
+	particle power1 do start
+}
+func void power1_stop(string ai_name)
+{
+	dprint power1_stop
+	particle power1 do stop
+}
+#power2
+func void power2_start(string ai_name)
+{
+	dprint power2_start
+	particle power2 do start
+}
+func void power2_stop(string ai_name)
+{
+	dprint power2_stop
+	particle power2 do stop
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/power/power_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power/power_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power/power_cutscene.bsl	(revision 405)
@@ -0,0 +1,428 @@
+#
+#
+# power_cutscene.bsl
+#
+
+func void
+intro(
+	void)
+{
+	# CB: begin_cutscene does a silent ai2_allpassive 1 as part of its cutscene setup,
+	# so we need to remove this if we want to have AIs walking around under their own
+	# control during a cutscene
+	fade_out 0 0 0 0
+	cm_interpolate Camout01 0
+	obj_create 100 104
+	chr_create 1000 start
+	chr_create 1001 start
+	playback 1000 IntroGrifTCTF
+	playback 1001 IntroKonTCTF
+	sleep f7
+	begin_cutscene
+	cutscene_sync off 
+	ai2_allpassive 0
+
+	ai2_spawn A1_intro01
+	ai2_spawn A1_intro02
+	ai2_makeignoreplayer A1_intro01 1
+	ai2_makeignoreplayer A1_intro02 1			
+	#fade_out 0 0 0 0
+	#Setup Konoko and Griffin talking			
+	sleep f60
+
+#	Force holster by Wu
+	chr_forceholster char_0 1
+
+	fade_in 120
+	chr_nocollision(0, 1);
+	#Setup shot
+	cm_anim both Camout01
+	cm_wait
+	#KOnoko standing on top
+	cm_anim both Camout02
+	chr_envanim 0 KonBipedBox01
+	chr_animate 0 KONOKOidle1 300
+	env_setanim 100 StandRightWing
+	env_setanim 101 StandLeftWing
+	env_setanim 102 StandBody
+	env_setanim 103 StandRightTail
+	env_setanim 104 StandLeftTail
+	#Konoko and Griffin talking
+	sleep f120
+	sound_dialog_play c08_27_01konoko
+	cinematic_start (KONtalking, 180, 180, 15, 1, 15, false)
+	sound_dialog_play_block pause
+	sound_dialog_play c08_27_02griffin
+	cinematic_start (GRIFtalking, 180, 180, 16, 3, 15, true)
+	cm_interpolate_block IntroCamTBoth 0
+	sound_dialog_play_block pause
+	sound_dialog_play c08_27_03konoko
+	cinematic_stop (KONtalking, 15, 20)
+	cinematic_start (KONintense, 180, 180, 15, 1, 20, false)
+	sound_dialog_play_block pause
+	sound_dialog_play c08_27_04griffin
+	sound_dialog_play_block pause
+	sound_dialog_play c08_27_05konoko
+	sound_dialog_play_block pause
+	cm_interpolate_block IntroCamTGrif 0
+	sound_dialog_play c08_27_06griffin
+	cinematic_stop (GRIFtalking, 16, 20)
+	cinematic_start (GRIFtalkangry, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	cm_interpolate IntroCamTKon 0
+
+	# start the wind as the dialog ends, sync to that
+	cutscene_sync on
+	sound_dialog_play c08_27_07konoko
+	cinematic_stop (GRIFtalkangry, 16, 20)
+	cinematic_stop (KONintense, 15, 20)
+	cinematic_start (KONangry, 180, 180, 15, 1, 20, false)
+	sleep 200
+	sound_ambient_start pp_wind_loop 0.1
+	sound_ambient_volume pp_wind_loop 0.8 1.0
+	sleep 50
+	cutscene_sync off
+	#Jumping off the building
+	chr_envanim 0 KonBipedBox02 norotation
+	cm_anim both Camout03
+	#sound_ambient_start pp09_wingsa
+	chr_animate 0 KONOKOlev9_intro_jump
+	env_setanim 100 JumpRightWing
+	env_setanim 101 JumpLeftWing
+	env_setanim 102 JumpBody
+	env_setanim 103 JumpRightTail
+	env_setanim 104 JumpLeftTail
+	sleep f120
+	sound_ambient_start pp09_wingsa
+#	october 25, 2000 this pause was breaking the scene
+#	sound_dialog_play_block pause
+	cinematic_stop (KONangry, 15, 20)
+	#sleep f100	
+	cm_anim_block both Camout04
+	#Transport A1_intro02 to new location
+	chr_teleport A1_intro02 1105
+	#Gliding
+	#music_intro
+	sleep f100
+	sound_ambient_start pp09_wingsb
+	chr_envanim_block 0 KonBipedBox03
+	cm_anim both Camout05
+	chr_animate 0 KONOKOlev9_intro_glide 360
+	env_setanim 100 GlideRightWing
+	env_setanim 101 GlideLeftWing
+	env_setanim 102 GlideBody
+	env_setanim 103 GlideRightTail
+	env_setanim 104 GlideLeftTail
+	#Landing
+	chr_envanim_block 0 KonBipedBox04 norotation
+	#gl_fog_start=.98
+	#gs_farclipplane_set 2000
+	cm_anim both Camout06
+	chr_animate 0 KONOKOlev9_intro_land
+
+	env_setanim 100 LandRightWing
+	env_setanim 101 LandLeftWing
+	env_setanim 102 LandBody
+	env_setanim 103 LandRightTail
+	env_setanim 104 LandLeftTail
+	sleep 30
+	sound_ambient_volume pp_wind_loop 0.0 1.0
+	sleep 60
+	sound_ambient_stop pp_wind_loop
+	sound_ambient_start pp09_wingsc
+	cm_wait
+	playback 0 IntroKonokoSet01
+	obj_kill 100 104
+	sleep f5
+	cm_reset
+	chr_nocollision 0 0
+	end_cutscene
+	env_show 100 1
+	env_show 101 1
+	env_show 102 1
+	env_show 103 1
+	env_show 104 1
+	chr_delete ai_12
+	chr_delete ai_13
+	chr_delete 1000
+	chr_delete 1001
+	ai2_makeignoreplayer A1_intro01 0
+	ai2_makeignoreplayer A1_intro02 0
+	#Transport A1_intro02 to new location again
+	chr_teleport A1_intro02 1104
+	s1
+	music_intro
+	music_intro_timer
+}
+
+func void
+camcontrol(
+	void)
+{
+	cm_anim both Camout01
+	cm_anim both Camout02
+	cm_anim both Camout03
+	cm_anim both Camout04
+	cm_anim both Camout05
+	cm_anim both Camout06
+	cm_wait
+	letterbox 0
+	cm_jello 1
+	cm_reset
+	chr_nocollision 0 0
+	input 1
+}
+
+func void
+Muro(
+	void)
+{
+	begin_cutscene
+
+	sound_music_start mus_sad1 0.1
+	sound_music_volume mus_sad1 0.3 2
+
+	cutscene_sync off
+	sleep f10
+	cm_anim both Elev1Cam01
+	playback 0 Elev1KonokoSet01
+	cutscene_sync on
+	sound_ambient_start c12_20_16elevator
+	sleep f5
+	chr_nocollision 0 1
+	chr_envanim 0 Elev1KonBox01 norotation
+	obj_create 801 801
+	obj_shade 801 801 .4 .4 .4
+	env_show 801 0
+	env_setanim 801 Elev101
+	sleep 200
+
+	#Shinatama crying here
+
+	sound_dialog_play c08_28_05shinscream1
+	sound_music_volume mus_sad1 1.0 0.5
+
+	cinematic_start (SHINtortured, 180, 180, 20, 7, 15, false)
+
+	sleep 60
+	sound_music_volume mus_sad1 0.8 0.5	
+	sleep 100
+
+	fade_out 0 0 0 10
+	sleep f10
+	#Muro torturing shinatama
+	fade_in 10
+	particle torture do start
+	ai2_spawn MuroMuro
+	ai2_spawn MuroShinatama
+	ai2_spawn MuroComguy
+	playback MuroMuro MuroMuroSet
+	playback MuroComguy MuroComguySet
+
+	sound_dialog_play c08_28_06shinscream2
+
+	chr_envanim MuroShinatama ShinBox02 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin02 180
+	cutscene_sync off
+	cm_interpolate MuroCamShin02 0
+	sound_ambient_start c12_26_20shin_tort
+	cm_interpolate_block MuroCamShin01 800
+	sleep f120
+	chr_envanim MuroShinatama ShinBox03 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin03 12
+	sleep f12
+	particle torture do stop
+	chr_envanim MuroShinatama ShinBox04 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin04 1000 12
+	sound_dialog_play_block pause
+	cinematic_stop (SHINtortured, 19,20)
+	##Muro talks
+	sound_dialog_play c08_28_01muro
+	cinematic_start (MUROtalking, 180, 180, 16, 3, 15, true)
+	cm_interpolate MuroCamMuro 0
+	sound_dialog_play_block pause
+	##Shin screams
+	particle torture do start
+	sound_ambient_start c12_26_20shin_torta
+	#chr_envanim MuroShinatama ShinBox01 norotation
+	#chr_animate MuroShinatama SHINATlev9_Shin01 12
+	#sleep f12
+	chr_envanim MuroShinatama ShinBox02 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin02 180
+
+	sound_dialog_play shinscream_new
+
+	cinematic_start (SHINtortured, 180, 180, 19, 20, 10, false)
+	sleep f130
+	particle torture do stop
+	chr_envanim MuroShinatama ShinBox04 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin04 1200 10
+	sleep f30
+	##Muro talks again
+	cm_interpolate MuroCamMuro01 0
+	cm_interpolate_block MuroCamMuro02 1400
+	sound_dialog_play c08_28_02muro
+	cinematic_stop (SHINtortured, 18,20)
+	sound_dialog_play_block pause
+	sleep f10
+	particle torture do start
+	sound_ambient_start c12_26_20shin_torta
+
+	sound_dialog_play shinscream_new2
+
+	sound_dialog_play_block pause
+	particle torture do stop
+	sleep f10
+	sound_dialog_play c08_28_03muro
+	sound_dialog_play_block pause
+	chr_envanim MuroShinatama ShinBox04 norotation
+	chr_animate MuroShinatama SHINATlev9_Shin04 1200 10
+	sleep f5
+
+	sound_dialog_play shinscreams_6
+
+	sound_dialog_play_block pause
+	sound_dialog_play c08_28_04muro
+	sound_dialog_play_block pause
+	cinematic_stop (MUROtalking, 16,15)
+
+	sound_dialog_play muro_laff2
+
+	sleep f80
+	particle torture do start
+	sound_ambient_start c12_26_20shin_torta
+	sleep f15
+
+	sound_dialog_play_interrupt shinscreams_4
+
+	cinematic_start (SHINtortured, 180, 180, 20, 19, 10, false)
+	sleep f20
+	fade_out 0 0 0 10
+	sleep f10
+	particle torture do stop
+	fade_in 10
+	#Konoko finishes riding elevator
+	chr_envanim 0 Elev1KonBox02 norotation
+	env_setanim 801 Elev102
+	cm_anim both Elev1Cam02
+	sound_ambient_start c13_07_22elevatora 
+	sleep f295
+	env_show 802 1
+	obj_kill 801 801
+	cm_reset
+	playback 0 Elev1KonokoSet
+	sleep f1
+	chr_nocollision 0 0
+	end_cutscene
+
+	chr_delete MuroComguy
+	chr_delete MuroMuro
+	chr_delete MuroShinatama
+}
+
+
+
+func void
+Elev2(
+	void)
+{
+	begin_cutscene
+	sleep f30
+	cutscene_sync off
+	chr_nocollision 0 1
+	playback 0 Elev2KonokoSet
+	cm_anim both Elev2Cam01
+	cutscene_sync on
+	sound_ambient_start c13_07_22elevator
+	chr_envanim 0 Elev2KonBox01
+	env_show 821 0
+	obj_create 821 821
+	obj_shade 821 821 .4 .4 .4
+	env_setanim 821 Elev201
+	cm_wait
+	obj_kill 821 821
+	env_show 822 1
+	chr_nocollision 0 0
+	cm_reset
+	end_cutscene
+}
+
+
+
+func void
+Torture(
+	void)
+{
+	#input 0
+	cm_interpolate TortureCam01 80
+	sleep f180
+	cm_reset 80
+	#input 1
+}
+
+
+func void
+outro(
+	void)
+{
+	sleep f30
+	begin_cutscene jello
+	cutscene_sync off
+	#oni SPECcial effect
+	chr_animate 0 KONOKOpowerup
+	cinematic_start (KONtransform, 180, 180, 15, 2, 15, false)
+	sleep f220
+	fade_out 0 0 0 10
+	sleep f10
+	fade_in 10
+	ai2_spawn OutroKerr
+	ai2_spawn OutroGrif
+	ai2_spawn OutroCop
+	playback OutroCop ShinCopSet
+	playback OutroGrif ShinGrifSet
+	playback OutroKerr ShinKerrSet
+	cinematic_stop (KONtransform, 16, 30)
+	cm_interpolate ShinCamCop 0
+	cm_interpolate_block ShinCamCopFace 1600
+	sleep f20
+	sound_dialog_play c08_29_01scigoon1
+	cinematic_start (COPtalking, 180, 180, 16, 3, 20, false)
+	sound_dialog_play_block pause
+	cinematic_stop (COPtalking, 16, 20)
+	cm_interpolate ShinCamGrif 0
+	cm_interpolate_block ShinCamGrifFace 1800
+	sound_dialog_play c08_29_02griffin
+	cinematic_start (GRIFtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block pause
+	sleep f20
+	playback 0 OutroKonoko01
+	cinematic_stop (GRIFtalking, 19, 20)
+	fade_out 0 0 0 10
+	sleep f10
+	fade_in 10
+	#doors start to open
+	obj_create 131 133
+	env_anim 131 133
+	env_show 134 0
+	env_show 135 0
+	env_show 136 0
+	cm_interpolate OutroCam01 0
+	cutscene_sync on
+	sound_ambient_start c03_55_18bigdoor
+	cm_interpolate_block OutroCam02 700
+	sleep f200
+	playback 0 OutroKonoko02
+	sleep f200
+	#Konoko sees doors opening
+	#playback 0 OutroKonoko02
+	cm_interpolate OutroCam03 0
+	sleep f90
+	#playback 0 OutroKonoko02
+	sleep f40
+	cm_interpolate OutroCam04 0
+	sleep f180
+	fade_out 0 0 0 120
+	sleep f120
+	win
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/power/power_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power/power_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power/power_main.bsl	(revision 405)
@@ -0,0 +1,36 @@
+#
+# power_main.bsl
+#
+
+func void
+main(
+	void)
+{
+	env_show 100 0
+	env_show 101 0
+	env_show 102 0
+	env_show 103 0
+	env_show 104 0
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.99
+	gs_farclipplane_set 3000	
+	#hide elevator gunk
+	env_show 802 0
+	env_show 822 0
+
+	my_save_point = save_point
+	
+	start
+
+	if (my_save_point eq 0)
+	{
+		fork intro();
+	}
+}
+
+#func void chase1(int chr_index)
+#{
+#}
+	
Index: /AE/packages_bak/VanillaBSL/IGMD/power/power_objectives.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power/power_objectives.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power/power_objectives.bsl	(revision 405)
@@ -0,0 +1,214 @@
+#
+# power_objectives.bsl
+#
+# SCRIPTS TO SET LEVEL OBJECTIVES/HINTS
+#
+var int cop;
+var int nocop;
+
+func void set_objective_1(string ai_name)
+{
+	dprint set_objective_1
+	objective_set(1)
+	target_set(5007, 30.0)
+}
+
+func void copdied(string ai_name)
+{
+	dprint copdied
+	nocop = 1
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective_3
+	objective_set(3)
+	cop = 1
+}
+
+func void target02(string ai_name)
+{
+	dprint target02
+	input 0
+	chr_invincible char_0 1
+
+
+	if(trigvolume_count(28) ne 0)
+	{
+	cm_interpolate bluedoor 0
+	sleep 60
+	}
+		
+	if(blue01 eq 0)
+	{
+	cm_interpolate bluedoor 0
+	sleep 60
+	}
+
+	if (blue01 eq 1)
+	{
+		if (trigvolume_count(28) eq 0)
+		{
+			ai2_passive A1_s_blue01 1
+			chr_teleport A1_s_blue01 7001
+			cm_interpolate bluedoor 0
+			sleep 60
+			ai2_passive A1_s_blue01 0
+			ai2_dopath A1_s_blue01 patrol_31_bluedoor
+			particle blue_locklight01 do start
+			particle b2_locklight01 do start
+			sleep 180
+		} 
+	}
+
+	particle blue_locklight01 do start
+	particle b2_locklight01 do start
+	sleep 60
+	cm_reset
+	chr_invincible char_0 0
+	input 1
+	target_set(2001, 30.0)
+#	ai2_spawn A1_s_red01
+	ai2_spawn A1_s_red02
+	trigvolume_enable trigger_volume_12 1
+}
+
+func void target03(string ai_name)
+{
+	dprint target03
+	ai2_spawn char_1
+	target_set(5007, 30.0)
+
+}
+
+func void target04(string ai_name)
+{
+	dprint target04
+	target_set(108, 30.0)
+
+}
+
+func void target05(string ai_name)
+{
+	dprint target05_07_09
+	ai2_spawn whiteneut
+	ai2_spawn B1_s_Red01
+	ai2_spawn B2_s_blue06
+	target_set(133, 30.0)
+	sleep 60
+
+	music_stop
+}
+
+func void target06(string ai_name)
+{
+	dprint target06
+	particle green_locklight01 do start
+	target_set(2005, 30.0)
+	sleep 120
+	trigvolume_enable trigger_volume_13 1
+	music_stop
+}
+
+func void target08(string ai_name)
+{
+	dprint target08
+	particle white_locklight01 do start
+	target_set(3001, 30.0)
+
+}
+
+func void target10(string ai_name)
+{
+	dprint target10
+	target_set(5008, 30.0)
+
+}
+
+func void target11(string ai_name)
+{
+	dprint target02
+	target_set(5009, 30.0)
+
+}
+
+func void target12(string ai_name)
+{
+	dprint target12
+	target_set(119, 30.0)
+
+}
+
+func void target13(string ai_name)
+{
+	dprint target13_16_18
+	target_set(128, 30.0)
+}
+
+func void target14(string ai_name)
+{
+	dprint target14
+	particle red_locklight01 do start
+	target_set(2085, 30.0)
+
+}
+
+func void target15(string ai_name)
+{
+	dprint target15
+	target_set(125, 30.0)
+
+}
+
+func void target17(string ai_name)
+{
+	dprint target17
+	particle yellow_locklight01 do start
+	target_set(3094, 30.0)
+
+}
+
+func void target19(string ai_name)
+{
+	dprint target19
+	target_set(5010, 30.0)
+
+}
+
+func void target20(string ai_name)
+{
+	dprint target20
+	target_set(5006, 30.0)
+
+}
+
+func void unlock_bwhite(string ai_name)
+{
+	dprint unlock_bwhite
+	particle bwhite_locklight01 do start
+	s5
+# checks to see if cop has already talked to konoko
+	if (cop eq 0)
+	{
+# if not, then see if the cop is dead
+		if(nocop eq 1)
+		{
+# if so, then go ahead and give next objective from console 4
+			sleep 180
+			set_objective_3
+		}
+	}
+}
+
+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
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/power/power_spawn.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power/power_spawn.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power/power_spawn.bsl	(revision 405)
@@ -0,0 +1,750 @@
+#	power_spawn
+#	spawn units and trigger volumes
+
+var int counter = 8;
+var int my_save_point = 0;
+var int blue01 = 1;
+var int music_counter = 0;
+var int pipe;
+var int pipe2;
+var int count_respawn1=0;
+var int count_respawn2=0;
+
+# music #
+
+func void music_intro(void)
+{
+	sound_music_start mus_main01 .75
+	music_counter = 2
+}
+
+func void music_muro(void)
+{
+	sound_music_start mus_sad1 .8
+#	this music stopped in target05 in objective scripts
+}
+
+func void music_pipe(void)
+{
+	sound_music_start mus_asian .75
+#	this music stopped in target13 in objective scripts
+}
+
+func void music_battle(void)
+{
+	sound_music_start mus_fiteb .75
+#	this music stopped in check_death script
+}
+
+func void music_intro_timer(void)
+{
+	sleep 4500
+
+	if (music_counter ne 0) 
+	{
+		dprint music_force_stop
+		music_counter = 0
+		music_stop
+	}
+}
+
+func void die_for_art(string ai_name)
+{
+	dprint DFA_1
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		music_stop
+	}
+
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_main01
+	sound_music_stop mus_sad1
+	sound_music_stop mus_asian
+	sound_music_stop mus_fiteb
+}
+
+# start and objectives #
+
+func void start(string ai_name)
+{
+	dprint XXX_start_script_XXX
+	particle power1 do start
+	particle power2 do start
+	trigvolume_enable trigger_volume_02 0
+	trigvolume_enable trigger_volume_06 0
+	trigvolume_enable trigger_volume_12 0
+	trigvolume_enable trigger_volume_13 0
+	trigvolume_enable trigger_volume_40 0
+
+	if (my_save_point eq 0)
+	{
+		set_objective_1
+	}
+
+	if (my_save_point eq 1)
+	{
+		dprint restore1
+		ai2_spawn A1_intro01
+		ai2_spawn A1_intro02
+		restore_game
+		music_intro	
+		objective_set 1 silent
+		target_set(5007, 30.0)
+		music_intro_timer
+	}
+
+	if (my_save_point eq 2)
+	{
+		dprint restore2
+		env_show 802 1
+		ai2_spawn B1_s_green01
+		ai2_spawn new_dummy1
+		ai2_spawn C2_blue25
+		chr_delete A1_intro01
+		chr_delete A1_intro02
+		chr_delete A1_s_blue01
+		target_set(1083,30.0)
+		trigvolume_enable trigger_volume_35 0
+		music_muro
+		ai2_spawn B1_s_blue05
+		ai2_dopath B1_s_blue05 patrol_08_blue05b
+		ai2_setjobstate B1_s_blue05
+		chr_teleport B1_s_blue05 1046
+		restore_game
+		objective_set 1 silent
+	}
+
+	if (my_save_point eq 3)
+	{
+		dprint restore3
+		particle red_locklight01 do start
+		door_unlock 38
+		console_deactivate 7
+		ai2_spawn D2_blue60
+		ai2_spawn D1_neut10
+		ai2_spawn new_5
+		ai2_spawn D2_blue61
+		chr_delete A1_intro01
+		chr_delete A1_intro02
+		chr_delete A1_s_blue01
+		target_set(125,30.0)
+		trigvolume_enable trigger_volume_25 0
+		restore_game
+		objective_set 2 silent
+	}
+
+	if (my_save_point eq 4)
+	{
+		dprint restore4
+		particle red_locklight01 do start
+		door_unlock 38
+		console_deactivate 7
+		ai2_spawn D2_blue61
+		ai2_spawn D2_blue60
+		ai2_spawn new_5
+		ai2_spawn D1_neut10
+		chr_delete A1_intro01
+		chr_delete A1_intro02
+		chr_delete A1_s_blue01
+		target13
+		trigvolume_enable trigger_volume_30 0
+		trigvolume_enable trigger_volume_17 0
+		trigvolume_enable trigger_volume_25 0
+		restore_game
+		objective_set 2 silent
+		pipe = 100;
+	}
+
+	if (my_save_point eq 5)
+	{
+		dprint restore5
+		counter = 7;
+		target20
+		ai2_spawn F_blue1
+		chr_delete A1_intro01
+		chr_delete A1_intro02
+		chr_delete A1_s_blue01
+		console_deactivate 8
+		door_unlock 4
+		particle bwhite_locklight01 do start
+		trigvolume_enable trigger_volume_07 0
+		restore_game
+		objective_set 3 silent
+		pipe = 100;
+	}
+}
+
+func void blue01_dies(string ai_name)
+{
+	blue01 = 0
+}
+
+func void script_respawn1(void)
+{
+	if(trigvolume_count (42) eq 0)
+	{
+		count_respawn1 = count_respawn1 + 1;
+		if(count_respawn1 eq 1)
+		{
+			dprint rs1a
+			ai2_spawn respawn1
+			chr_giveweapon respawn1 w7_scc
+		}
+		if(count_respawn1 eq 2)
+		{
+			dprint rs1b
+			ai2_spawn respawn1
+			chr_giveweapon respawn1 w3_phr
+			ai2_dopath patrol_08_blue05
+			ai2_setjobstate respawn1
+		}
+		if(count_respawn1 eq 3)
+		{
+			dprint rs1c
+			ai2_spawn respawn1
+			chr_giveweapon respawn1 w2_sap
+		}
+	}
+}
+
+func void script_respawn2(void)
+{
+	if(trigvolume_count (42) eq 0)
+	{
+		count_respawn2 = count_respawn2 + 1;
+		if(count_respawn2 eq 1)
+		{
+			dprint rs2a
+			ai2_spawn respawn2
+			chr_giveweapon respawn2 w3_phr
+		}
+		if(count_respawn2 eq 2)
+		{
+			dprint rs2b
+			ai2_spawn respawn2
+			chr_giveweapon respawn2 w2_sap
+			ai2_dopath patrol_19_blue20b
+			ai2_setjobstate respawn2
+		}
+		if(count_respawn2 eq 3)
+		{
+			dprint rs2c
+			ai2_spawn respawn2
+			chr_giveweapon respawn2 w2_sap
+		}
+	}
+}
+
+func void script_respawn3(void)
+{
+	if(trigvolume_count (42) eq 0)
+	{
+		ai2_spawn C1_red21
+	}
+}
+func void tv01(string ai_name)
+{
+	dprint tv01 B2
+	ai2_spawn C1_blue22
+	ai2_spawn B2_s_blue08
+	ai2_spawn B2_s_tank04
+		
+}
+
+func void tv02(string ai_name)
+{
+	dprint tv02
+
+	if (trigvolume_count(32) ne 0)
+	{
+		trigvolume_reset trigger_volume_02
+	}
+
+	if (trigvolume_count(32) eq 0)
+	{
+	ai2_makeignoreplayer sniper1 1
+	ai2_dopath sniper1 patrol_53
+	ai2_setjobstate sniper1
+#	ai2_spawn B2_s_blue06
+	ai2_spawn B1_s_blue05
+#	ai2_spawn B1_s_Red01
+	ai2_spawn B1_s_green01
+	ai2_spawn new_dummy1
+	ai2_spawn C1_blue22
+	ai2_spawn C2_blue25
+#	ai2_spawn B1_neut01
+	trigvolume_corpse 32
+	Muro
+	target_set(1083, 30.0)
+	chr_delete A1_intro01
+	chr_delete A1_intro02
+	chr_delete A1_s_blue01
+	chr_delete A1_s_red01
+	chr_delete A1_s_red02
+	chr_delete A2_s_blue01
+	chr_delete A2_s_blue03
+	chr_delete A2_s_blue09
+#	chr_delete A2_s_blue10
+	chr_delete A2_s_tank01
+	chr_delete A2_s_tank02
+	chr_delete char_1
+	chr_delete sniper1
+	chr_delete A2_s_blue13
+	chr_delete A2_s_red03
+	chr_delete A2_s_red04
+	chr_delete new_1
+	chr_delete new_2
+	chr_delete new_3
+	chr_delete new_4
+	chr_delete whiteneut
+	chr_delete B3_s_green02
+	}
+}
+
+func void tv03(string ai_name)
+{
+	dprint tv03
+	ai2_spawn A2_s_blue09
+#	ai2_spawn A2_s_blue10
+#	ai2_spawn A2_s_red04
+
+}
+
+func void ontv02(string ai_name)
+{
+	dprint ontv02
+	trigvolume_enable trigger_volume_02 1
+	particle el_red1 kill
+	particle el_1_locklight01 do start
+}
+
+func void tv04(string ai_name)
+{
+	dprint tv04
+	ai2_spawn A2_s_tank01
+	ai2_spawn A2_s_blue13
+#	ai2_spawn A2_s_tank02
+	ai2_spawn A2_s_blue01
+	ai2_spawn A2_s_red03
+#	ai2_spawn A2_s_blue03
+		
+}
+
+func void tv05(string ai_name)
+{
+	dprint tv05_B3_C1
+	ai2_spawn B3_s_green02
+	ai2_spawn C1_blue20
+#	Torture
+}
+
+func void ontv06(string ai_name)
+{
+	dprint ontv06
+	trigvolume_enable trigger_volume_06 1
+	particle el_2_locklight01 do start
+}
+
+func void start_elevator2_music(void)
+{
+	sound_music_start mus_space01 0.75
+}
+
+func void stop_elevator2_music(void)
+{
+	sound_music_stop mus_space01
+}
+
+func void tv06(string ai_name)
+{
+	dprint tv06_C3
+
+	if (trigvolume_count(31) ne 0)
+	{
+		trigvolume_reset trigger_volume_06
+	}
+
+	if (trigvolume_count(31) eq 0)
+	{
+		start_elevator2_music
+
+		ai2_spawn D1_neut05
+		trigvolume_corpse 31
+		Elev2
+		target_set(128,30.0)
+		chr_delete respawn1
+		chr_delete respawn2
+		chr_delete B1_neut01
+		chr_delete B1_s_blue05
+		chr_delete B1_s_green01
+		chr_delete B1_s_Red01
+		chr_delete B2_s_blue06
+		chr_delete B2_s_blue07
+		chr_delete B2_s_blue08
+		chr_delete B2_s_tank04
+		chr_delete B3_green02
+		chr_delete C1_blue20
+		chr_delete C1_blue22
+		chr_delete C1_red21
+		chr_delete C2_blue25
+		chr_delete C2_red26
+		chr_delete C2_tank24
+		chr_delete new_dummy1
+		objective_set(2)
+	}
+}
+
+func void power_lull_1(string ai_name)
+{	
+	dprint pipe_discharged
+	ai2_neutralbehavior D1_neut02 none
+	pipe = pipe + 1
+
+	if (pipe eq 1)
+	{
+		stop_elevator2_music
+
+		input 0
+		music_pipe
+		cm_interpolate pipe_view 180
+		particle power1 do stop
+		sleep 270
+		cm_reset
+		input 1
+		timer_start 25 power_lull_1b
+		if(my_save_point ne 3)
+		{
+			s3
+		}
+	}
+
+	if(pipe ne 1)
+	{
+		particle power1 do stop
+		timer_start 20 power_lull_1b
+	}	
+}
+
+func void power_lull_1b(void)
+{	
+	dprint pipe_recharged
+	music_stop
+	particle power1 do start
+	sleep 300
+	console_reset 9
+}
+
+func void power_deactivate(void)
+{	
+	dprint power_deactivate
+	ai2_doalarm D1_neut02 9
+	ai2_dopath D1_neut02 patrol_80
+	ai2_setjobstate D1_neut02
+}
+
+func void power_lull_2(string ai_name)
+{	
+	dprint pipe_discharged
+	pipe2 =  pipe2 + 1
+	if (pipe2 eq 1)
+	{
+		music_pipe
+		ai2_spawn new_67
+	}
+	particle power2 do stop
+	ai2_spawn new_10
+	ai2_spawn D3_tank65
+	timer_start 20 power_lull_2b
+}
+
+func void power_lull_2b(void)
+{	
+	dprint pipe_recharged
+	music_stop
+	particle power2 do start
+	sleep 300
+	console_reset 11
+}
+
+func void tv07(string ai_name)
+{
+	dprint tv07
+	target20
+	chr_delete sci_maniac
+	chr_delete D1_blue50
+	chr_delete D1_neut02
+	chr_delete D1_neut05
+	chr_delete D1_neut10
+	chr_delete D1_red30
+	chr_delete D2_blue60
+	chr_delete D2_blue61
+	chr_delete new_5
+	chr_delete D2_red62
+	chr_delete D2_tank63
+	chr_delete new_8
+	chr_delete D3_red66
+	chr_delete D3_tank65
+	chr_delete new_1
+	chr_delete new_2
+	chr_delete new_3
+	chr_delete new_4
+	chr_delete new_6
+	chr_delete new_7
+	ai2_spawn F_friend
+	ai2_spawn F_blue73
+	ai2_spawn F_blue1
+
+}
+
+func void tv08(string ai_name)
+{
+	dprint tv08_chamber_four
+	ai2_spawn end01
+	ai2_spawn end02
+	ai2_spawn end03
+	sleep 60
+	ai2_dopath F_tank70 patrol_5004
+	ai2_setjobstate F_tank70
+	ai2_dopath F_blue69 patrol_5005
+	ai2_setjobstate F_blue69
+	ai2_dopath F_blue2 patrol_5004
+	ai2_setjobstate F_blue2
+	ai2_dopath F_blue1 patrol_5006
+	ai2_setjobstate F_blue1
+	ai2_dopath F_blue73 patrol_5006
+	ai2_setjobstate F_blue73
+	ai2_attack F_tank70 char_0
+	ai2_attack F_blue69 char_0
+	ai2_attack F_blue2 char_0
+	ai2_attack F_blue1 char_0
+	ai2_attack F_blue73 char_0
+}
+
+func check_death(string ai_name)
+{
+	dprint check_death
+	counter = counter - 1
+	if (counter eq 0)
+	{
+		dprint counterdone
+		sound_music_volume mus_fiteb 0 3
+		music_stop
+		sleep 120		
+		you_win
+	}
+}
+
+func void tv09(string ai_name)
+{
+	dprint tv09_chamber_one
+
+}
+
+func void tv10(string ai_name)
+{
+	dprint tv10_chamber_two
+	ai2_spawn F_blue69
+	ai2_spawn F_blue2
+}
+
+func void spawn2tube(string ai_name)
+{
+	dprint spawn2tube
+	ai2_spawn D2_tank63
+	ai2_spawn new_8
+	ai2_spawn sci_maniac
+}
+
+func void tv11(string ai_name)
+{
+	dprint tv11_chamber_three
+	ai2_spawn F_tank70
+
+}
+
+func void tv25(string ai_name)
+{
+	dprint tv25
+#	ai2_spawn D1_blue50
+	ai2_spawn D1_red30
+	ai2_spawn D1_neut02
+	ai2_spawn D2_blue60
+	ai2_spawn D1_neut10
+	ai2_spawn new_5
+	ai2_spawn D2_blue61
+}
+
+func void change_patrol(string ai_name)
+{
+	dprint change_patrol
+	ai2_dopath A1_s_red02 patrol_45
+	ai2_setjobstate A1_s_red02
+}
+
+func void spawn_sniper1(string ai_name)
+{
+	dprint spawn_sniper1
+	ai2_spawn sniper1
+	ai2_makeignoreplayer sniper1 1
+	playback_block sniper1 sniper1_jump
+	ai2_makeignoreplayer sniper1 0
+	ai2_dopath sniper1 patrol_52
+	ai2_setjobstate sniper1
+	sleep 600
+	hurt_sniper1
+}
+
+func void hurt_sniper1(string ai_name)
+{
+	dprint hurt_sniper1
+	ai2_makeignoreplayer sniper1 1
+	ai2_dopath sniper1 patrol_53
+	ai2_setjobstate sniper1
+}
+
+func void tv33(string ai_name)
+{
+	dprint neutral_leaves
+	ai2_makeignoreplayer A2_s_red04 1
+	ai2_dopath A2_s_red04 patrol_54
+	ai2_setjobstate A2_s_red04
+}
+
+func void tv34(string ai_name)
+{
+	dprint spawnneutral
+	ai2_spawn A2_s_red04 
+}
+
+func void t36(string ai_name)
+{
+	dprint t36
+	ai2_spawn sbg_1
+	ai2_spawn sbg_2
+	ai2_spawn sbg_3
+}
+
+func void t37(string ai_name)
+{
+	dprint t37
+	ai2_spawn new_1
+	ai2_spawn new_2
+}
+
+func void t38(string ai_name)
+{
+	dprint t38
+	ai2_spawn new_3
+	ai2_spawn new_4
+}
+
+func void t39(string ai_name)
+{
+	dprint t39
+	trigvolume_enable trigger_volume_40 1 
+}
+
+func void t40(string ai_name)
+{
+	dprint t40
+	ai2_spawn new_6
+	ai2_spawn new_7
+}
+
+###################
+#	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
+	}
+}
+###################
+# 	console	#
+###################
+
+func void console_pipe(void)
+{
+	text_console level_9d
+	console_reset 13
+}
+
+func void text9a(void)
+{
+	dprint level_9a
+	text_console level_9a
+	console_reset 2
+}
+
+func void text9b(void)
+{
+	dprint level_9b
+	text_console level_9b
+	console_reset 5
+}
+
+func void text9c(void)
+{
+	dprint level_9c
+	text_console level_9c
+	console_reset 14
+}
+
+func void patrolscript0031(string ai_name)
+{
+	dprint sayline
+	sound_dialog_play c18_70_04striker
+	sound_dialog_play_block
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/power_II/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power_II/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power_II/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,180 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+
+####################################
+##             ROOM 1             ##
+####################################
+func void particle_room1_start(string ai_name)
+{
+	dprint start_room1_particles
+	particle room1 do start
+}
+func void particle_room1_stop(string ai_name)
+{
+	dprint stop_room1_particles
+	particle room1 do stop
+}
+
+####################################
+##             ROOM 2             ##
+####################################
+func void particle_room2_start(string ai_name)
+{
+	dprint start_room2_particles
+	particle room2 do start
+}
+func void particle_room2_stop(string ai_name)
+{
+	dprint stop_room2_particles
+	particle room2 do stop
+}
+
+####################################
+##             ROOM 3             ##
+####################################
+func void particle_room3_start(string ai_name)
+{
+	dprint start_room3_particles
+	particle room3 do start
+}
+func void particle_room3_stop(string ai_name)
+{
+	dprint stop_room3_particles
+	particle room3 do stop
+}
+
+####################################
+##             ROOM 4             ##
+####################################
+func void particle_room4_start(string ai_name)
+{
+	dprint start_room4_particles
+	particle room4 do start
+}
+func void particle_room4_stop(string ai_name)
+{
+	dprint stop_room4_particles
+	particle room4 do stop
+}
+
+####################################
+##             ROOM 5             ##
+####################################
+func void particle_room5_start(string ai_name)
+{
+	dprint start_room5_particles
+	particle room5 do start
+}
+func void particle_room5_stop(string ai_name)
+{
+	dprint stop_room5_particles
+	particle room5 do stop
+}
+
+####################################
+##           vat room             ##
+####################################
+func void particle_vatroom1_start(string ai_name)
+{
+	dprint start_vatroom1_particles
+	particle vatroom1 do start
+}
+func void particle_vatroom1_stop(string ai_name)
+{
+	dprint stop_vatroom1_particles
+	particle vatroom1 do stop
+}
+
+####################################
+# first energy sprinkler activator #
+# this one starts over the first   #
+# vat.                             #
+# the particle name is "zap1"      #
+####################################
+
+var int zap=1;
+
+func void zap_start(string ai_name)
+{
+	dprint zap_on
+	
+	trigvolume_enable zap1 0
+
+	if (zap eq 1)
+	{
+	particle zap1 do start
+	sleep 120
+	particle zap1 stop
+	}
+	
+	if (zap eq 1)
+	{
+	particle zap2 start
+	sleep 120
+	particle zap2 stop
+	}
+	
+	if (zap eq 1)
+	{
+	particle zap3 start
+	sleep 120
+	particle zap3 stop
+	}
+
+	# CB: this delay ensures we don't execute every frame
+	sleep 60
+	trigvolume_enable zap1 1
+}
+
+func void zap_timer_1(string ai_name)
+{
+	dprint do_zap_timer_1
+	zap = 0
+	timer_start 15 zap_start_again
+}
+
+func void zap_timer_2(string ai_name)
+{
+	dprint do_zap_timer_2
+	zap = 0
+	timer_start 10 zap_start_again
+}
+
+func void zap_timer_3(string ai_name)
+{
+	dprint do_zap_timer_3
+	zap = 0
+	timer_start 5 zap_start_again
+}
+
+func void zap_start_again(string ai_name)
+{
+	dprint zap_on_again
+	zap = 1
+	console_reset 4
+}
+
+# FINAL PIPE
+func void pipe3_start(string ai_name)
+{
+	dprint pipe_started
+	particle pipe3 do start
+}
+
+
+func void zap_kill(string ai_name)
+{
+	dprint zap_die
+	particle zap1 kill
+	particle zap2 kill
+	particle zap3 kill
+}
+
+func void zap_create(string ai_name)
+{
+	dprint zap_live
+	particle zap1 create
+	particle zap2 create
+	particle zap3 create
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/power_II/power2_spawn.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power_II/power2_spawn.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power_II/power2_spawn.bsl	(revision 405)
@@ -0,0 +1,689 @@
+### POWER PLANT II LEVEL LOGIC ###
+
+### START, SAVE & OBJECTIVES ###
+
+var int inside_final_cutscene = 0;
+
+func void start(string ai_name)
+{
+	particle save3_locklight01 do start
+
+	if (save_point eq 0)
+		{
+		my_save_point = 0
+		trigvolume_enable trigger_volume_07 0
+		particle_room1_start
+		particle doorA_locklight01 do stop
+		ai2_spawn ambush_striker_10
+		ai2_spawn ambush_striker_11
+		set_objective_1
+		chr_invincible ShinShin 1
+		chr_unstoppable ShinShin 1
+		}
+	if (save_point eq 1)
+		{
+		my_save_point = 1;
+		dprint restore1_active
+		trigvolume_enable room3_particle_control 0
+		door_lock 3
+		particle Shindoor_locklight01 do stop
+		particle room4 do start
+		ai2_spawn A3_n05
+		restore_game
+		set_objective_3
+		}
+	if (save_point eq 2)
+		{
+		my_save_point = 2;
+		dprint restore2_active
+		particle doorA_locklight01 do stop
+		particle doorB_locklight01 do start
+		door_lock 15
+		trigvolume_enable save2 0
+		ai2_spawn vat_bot_1
+		ai2_spawn vat_bot_2
+		ai2_spawn vat_bot_3
+		ai2_spawn vat_bot_4
+		ai2_spawn vat_bot_5
+		chr_weapon_immune(vat_bot_1);
+		chr_weapon_immune(vat_bot_2);
+		chr_weapon_immune(vat_bot_3);
+		chr_weapon_immune(vat_bot_4);
+		chr_weapon_immune(vat_bot_5);
+		restore_game
+		set_objective_4
+		sound_music_start atm_cl12 0.75
+		}
+	if (save_point eq 3)
+		{
+		my_save_point = 3;
+		dprint restore3_active
+		particle save3_locklight01 do stop
+		door_lock 23
+		door_lock 28
+		ai2_spawn E1_sr28
+		ai2_spawn E1_sr30
+		ai2_spawn E1_sb29
+		ai2_spawn ambush_comguy_1
+		ai2_spawn E1_n31
+		ai2_spawn E1_n32
+		ai2_spawn E1_n37
+		trigvolume_enable save_point3 0
+		trigvolume_enable p11b_vol 0
+		restore_game
+		pipe3_start
+		set_objective_5
+		}
+}
+
+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 new_save1(string ai_name)
+{
+	if (my_save_point ne 1)
+	{
+		save_game 1 autosave
+	}
+}
+
+func void save_point_1(string ai_name)
+{
+	dprint savegame_1	
+	door_lock 3
+	particle Shindoor_locklight01 do stop
+}
+
+func void save_point_2(string ai_name)
+{
+	dprint savegame_2
+	save_game 2 autosave
+}
+
+func void save_point_3(string ai_name)
+{
+	dprint savegame_3	
+	save_game 3 autosave
+}
+
+func void set_objective_1(string ai_name)
+{
+	dprint set_objective1
+	objective_set(1)
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective2
+	objective_set(2)
+	target_set(7020,60.00)
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective3
+	objective_set(3)
+	target_set(0,0)
+}
+
+func void set_objective_4(string ai_name)
+{
+	dprint set_objective4
+	objective_set(4)
+	trigvolume_enable setobjective_4 0
+}
+
+func void set_objective_5(string ai_name)
+{
+	dprint set_objective5
+	objective_set(5)
+	trigvolume_enable setobjective_5 0
+}
+
+### MUSIC ###
+
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+	if (0 ne music_counter) 
+		{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+		}	
+}
+
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void striker_lullaby_1(string ai_name)
+{
+	dprint striker_lullaby1
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+}
+
+func void striker_lullaby_2(string ai_name)
+{
+	dprint striker_lullaby2
+	music_counter = music_counter - 1
+	if (music_counter eq 0)
+		{
+		all_music_counters();
+		}
+}
+
+func void all_music_counters(void)
+{
+	dprint ELVIS_HAS_LEFT_THE_BUILDING
+	sound_music_stop mus_trt
+	sound_music_stop mus_sad1
+	sound_music_stop atm_cl10
+	sound_music_stop atm_ft66
+	sound_music_stop atm_cl09
+	sound_music_stop atm_cl11
+	sound_music_stop mus_xtr2
+	sound_music_stop mus_lz
+}
+
+### TEXT CONSOLES ###
+
+func void level10a(string chr_index)
+{
+	dprint text10a
+	text_console level_10a
+	console_reset 2
+}
+
+func void level10b(string chr_index)
+{
+	dprint text10b
+	text_console level_10b
+	console_reset 7
+}
+
+### GAMEPLAY PROGRESSION ###
+
+# STRIKER BACKUPS
+func void backup_1(string ai_name)
+{
+	dprint backup1
+	ai2_spawn backup_striker1
+	particle blast1_locklight01 do start
+	door_unlock 1
+	door_open 1
+}
+
+func void backup_2(string ai_name)
+{
+	dprint backup2
+	ai2_spawn backup_striker2
+	particle blast2_locklight01 do start
+	door_unlock 2
+	door_open 2
+}
+	
+
+# COME TO ME
+func void come_to_me(string ai_name)
+{
+	dprint go_to_konoko
+	ai2_dopath ambush_striker1 come_to_me 1
+	ai2_dopath ambush_striker2 come_to_me 1
+	ai2_dopath A1_t02 come_to_me 1
+	ai2_dopath A1_sr01 come_to_me 1
+	ai2_dopath ambush_striker1 come_to_me 1
+	ai2_dopath ambush_striker2 come_to_me 1
+}
+
+# SHIN CUTSCENE CHECK
+func void shin_check(string ai_name)
+{
+	var int inside_count;
+	dprint shin_cutscene_check
+	trigvolume_enable trigger_volume_03 0
+
+	inside_count = trigvolume_count(32);
+
+	if (inside_count ne 0)
+	{
+		sleep 60
+		trigvolume_enable trigger_volume_03 1
+	}
+
+	if (inside_count eq 0)
+	{
+		Shin
+	}
+}
+
+func void t43(string ai_name)
+{
+	dprint konoko_dies
+	inroom = 1
+}
+
+func void t43b(string ai_name)
+{
+	dprint konoko_lives
+	inroom = 0
+}
+
+func void delete_script(string ai_name)
+{
+	dprint dead_or_not
+	chr_delete ai_name
+}
+
+func void shin_dies(void)
+{
+	dprint KABOOM
+	particle ShinBomb do explode
+	fade_out 1 1 1 30
+	if (inroom eq 1)
+	{
+		chr_set_health 0 0
+	}
+
+	trigvolume_kill 64
+
+	chr_delete ShinShin
+	fade_in 60
+	door_lock 3
+	particle Shindoor_locklight01 do stop
+	set_objective_3	
+}
+
+func void p1(string ai_name)
+{
+	dprint p1_trigger_entered
+	sound_music_stop mus_trt
+	sound_music_start atm_cl09 1.0
+	ai2_spawn A1_sr01
+	ai2_lookatme A1_sr01	
+	ai2_spawn A1_t02
+	ai2_lookatme A1_t02
+	sleep 120
+	door_lock 1
+	door_lock 2
+}
+
+func void open_ambush1(string ai_name)
+{
+	dprint ambush_1
+	particle blast1_locklight01 do start
+	door_unlock 1
+	ai2_spawn ambush_striker1
+}
+
+func void open_ambush2(string ai_name)
+{
+	dprint ambush_2
+	particle blast2_locklight01 do start
+	door_unlock 2
+	ai2_spawn ambush_striker2
+}
+
+func void p2(string ai_name)
+{
+	dprint p2
+	ai2_spawn A2_r03
+	playback A2_r03 redjump
+	ai2_lookatme A2_r03
+	ai2_spawn aerial_red_2
+	ai2_passive aerial_red_2 1
+	playback aerial_red_2 redjump2
+	ai2_passive aerial_red_2 0
+	ai2_lookatme aerial_red_2
+	ai2_spawn red_guard_1
+	ai2_dopath A1_sr01 patrol_31
+	ai2_dopath A1_t02	patrol_31
+	ai2_setjobstate A1_sr01
+	ai2_setjobstate A1_t02 patrol_31	
+	sleep 120	
+}
+
+func void p5(string ai_name)
+{
+	dprint p5
+	ai2_spawn A3_n05
+	ai2_spawn A3_sb06
+	ai2_spawn A4_n07
+}
+
+func void p6(string ai_name)
+{
+	dprint p6
+	ai2_spawn A4_sr08
+	ai2_spawn B1_c07
+}
+
+func void enableP7(string ai_name)
+{
+	dprint enableP7
+	trigvolume_enable trigger_volume_07 1
+}
+
+func void do_console_1(string ai_name)
+{
+	dprint do_console
+	ai2_doalarm A3_n05 1
+}
+
+func void p8(string ai_name)
+{
+	dprint p8
+	ai2_spawn B2_sb09
+	ai2_spawn B2_n10
+	trigvolume_enable trigger_volume_07 0
+	trigvolume_enable trigger_volume_08 0	
+}
+
+func void p9(string ai_name)
+{
+	dprint p9
+	ai2_spawn C1_c16
+	ai2_spawn C1_t11	
+	ai2_spawn C1_sb12
+	ai2_spawn C1_t13	
+	ai2_spawn C2_sg15
+	ai2_spawn C2_sr17
+	ai2_spawn C2_sb14
+	ai2_spawn C2_t19		
+	particle room1 stop
+}
+
+func void red_ambush(string ai_name)
+{
+	dprint ambush_red
+	ai2_spawn ambush_red_1
+}
+
+func void p10(string ai_name)
+{
+	dprint p10
+	ai2_spawn D1_sr20
+	ai2_spawn D1_sb21	
+}
+
+func void p11(string ai_name)
+{
+	dprint p11
+	particle room6 do start
+	pipe3_start
+}
+func void p11b(string ai_name)
+{
+	dprint p11b
+	particle room6 do stop
+}
+
+func void striker_guards(string ai_name)
+{
+	dprint spawn_strikers
+	ai2_spawn striker_guard_1
+	ai2_spawn striker_guard_2
+}
+
+func void spawn_EC_guards(string ai_name)
+{
+	dprint spawn_guards
+	ai2_spawn E1_sb29
+	ai2_spawn E1_c33
+	ai2_spawn E1_c40
+	ai2_spawn E1_f34
+	ai2_spawn E1_f40
+	ai2_spawn E1_f35
+}
+
+func void final_guards(string ai_name)
+{
+	dprint last_guards_activated
+	ai2_spawn final_guard_1
+	ai2_spawn final_guard_2
+}
+
+func void p12(string ai_name)
+{
+	dprint p12
+	ai2_spawn D2_sb26
+	playback D2_sb26 piperun
+	ai2_spawn pipe_guard_1
+	ai2_spawn pipe_guard_2
+}
+
+func void p13(string ai_name)
+{
+	dprint p13
+	ai2_spawn E1_sr28
+	ai2_spawn E1_sb29
+	ai2_spawn E1_sr30
+	ai2_spawn ambush_comguy_1
+	ai2_spawn E1_n31
+	ai2_spawn E1_n32
+	ai2_spawn E1_n37
+	particle elev1_locklight01 do stop
+	particle elev2_locklight01 do stop
+}
+
+func void p14(string ai_name)
+{
+	dprint p14
+	chr_teleport 0 105
+	ai2_spawn F_r40
+	particle pipe3 do start
+}
+
+func void p36(string ai_name)
+{
+	dprint spawned_muro_runner_p36
+	ai2_spawn muro_runner
+	ai2_spawn muro_runner2
+}
+
+func void p39(string ai_name)
+{
+	dprint p39
+	ai2_spawn F_r40
+}
+
+func void cross_fire(string ai_name)
+{
+	dprint crossfire
+	ai2_spawn D2_sg24
+	ai2_spawn D2_f25	
+}
+
+func void tctf_control(string ai_name)
+{
+	dprint tctfcontrol_start
+	sound_music_start mus_amasian 1.0
+	input 0
+	letterbox 1
+	door_unlock 38
+	ai2_spawn E2_sr38
+	ai2_spawn E2_sr39
+	particle elev1_locklight01 do start
+	particle elev2_locklight01 do start
+	cm_interpolate tctf_3 0
+	cm_interpolate_block tctf_1 300
+	cm_interpolate_block tctf_2 150
+	sleep 180
+	cm_reset
+	letterbox 0
+	input 1
+	door_unlock 37
+}
+
+func void warnbigroom(string ai_name)
+{
+	dprint warnbigroom
+	ai2_tripalarm 1	
+}
+
+func void zap_cinematic(string ai_name)
+{
+	dprint doorA
+	input 0
+	begin_cutscene
+	sound_music_start atm_cl12 0.75
+	particle zap1 create
+	particle zap1 start
+	cm_interpolate zap_cinematic1 0
+	cm_interpolate_block zap_cinematic3 700
+	sleep 750
+	cm_interpolate zap_cinematic4 0	
+	sleep 60
+	particle doorA_locklight01 do start
+	sleep 150
+	door_unlock 15	
+	cm_reset
+	end_cutscene
+	input 1
+	ai2_spawn vat_bot_1
+	ai2_spawn vat_bot_2
+	ai2_spawn vat_bot_3
+	ai2_spawn vat_bot_4
+	ai2_spawn vat_bot_5
+	chr_weapon_immune(vat_bot_1);
+	chr_weapon_immune(vat_bot_2);
+	chr_weapon_immune(vat_bot_3);
+	chr_weapon_immune(vat_bot_4);
+	chr_weapon_immune(vat_bot_5);
+	particle doorB_locklight01 do start
+}
+
+func void change_patrol_1(string ai_name)
+{
+	dprint change_patrol
+	ai2_dopath vat_bot_2 vat_bot_2b 1
+}
+
+func void change_patrol_2(string ai_name)
+{
+	dprint change_patrol
+	ai2_dopath vat_bot_3 vat_bot_3b 1
+} 
+
+func void change_patrol_3(string ai_name)
+{
+	dprint change_patrol
+	ai2_dopath vat_bot_5 vat_bot_5b 1
+}
+
+func void spark_sound_off(string ai_name)
+{
+	dprint spark_music_off
+	sound_music_stop atm_cl12
+}
+
+# YOUR DEATH IS ASSURED
+func void dont_even_try_it(string ai_name)
+{
+	chr_set_health 0 0
+}
+
+### SPECIAL PARTICLES ###
+
+func void killmuro(string ai_name)
+{
+	dprint killedmuro
+	chr_delete muro_runner
+	chr_delete muro_runner2
+	sound_music_stop atm_cl11
+	ai2_spawn A4_n07
+}
+
+func void pipe1a(string ai_name)
+{	
+	dprint pipe1_discharged
+	ai2_passive A3_n05 1
+	particle room4 do stop
+	timer_start 30 pipe1b
+	sound_music_start atm_cl11
+}
+
+func void pipe1b(void)
+{	
+	dprint pipe1_recharged
+	particle room4 do start
+	console_reset 1
+
+	pipe1_music_off();
+}
+
+func void pipe1_music_off(void)
+{	
+	dprint pipe1_music_off
+	sound_music_stop atm_cl11
+}
+
+func void pipe2a(void)
+{	
+	dprint pipe2_discharged
+	particle room6 do stop
+	timer_start 29 pipe2b
+	sound_music_start atm_cl11
+}
+
+func void pipe2b(void)
+{	
+	dprint pipe2_recharged
+	particle room6 do start
+	console_reset 8
+
+	pipe2_music_off();
+}
+
+func void pipe2_music_off(void)
+{	
+	dprint pipe2_music_off
+	sound_music_stop atm_cl11
+}
+
+func void pipe3(void)
+{	
+	dprint pipe_discharged
+	timer_start 19 pipe3b
+	sound_music_volume mus_amasian 0.0 2.0
+	particle pipe3 kill
+	sound_music_start atm_cl11
+	sound_music_stop mus_amasian
+}
+
+func void pipe3b(void)
+{	
+	if (inside_final_cutscene eq 0)
+		{
+		dprint pipe_recharged
+		particle pipe3 create
+		particle pipe3 do start
+		console_reset 15
+		}
+}
+
+func void final_cutscene_trumps_particles(void)
+{
+	inside_final_cutscene = 1;
+	particle pipe3 kill
+}
+
+### Level scripted by Joseph ###
Index: /AE/packages_bak/VanillaBSL/IGMD/power_II/powerII_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power_II/powerII_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power_II/powerII_cutscene.bsl	(revision 405)
@@ -0,0 +1,533 @@
+#
+#
+# power_cutscene.bsl
+#
+
+func void
+intro(
+	void)
+{
+	ai2_passive ShinShin 1
+	ai2_makeblind ShinShin 1
+	ai2_makedeaf ShinShin 1
+	chr_lock_active ShinShin
+	chr_unstoppable ShinShin 1
+	fade_out 0 0 0 0
+	cm_interpolate IntroCam01 0
+	sleep f14
+	begin_cutscene
+	sleep f60
+	#Konoko in big space
+	playback 0 IntroKonoko01
+
+	sound_music_start mus_trt
+	music_script_start
+
+	cm_interpolate IntroCam01 0
+	fade_in 60
+	sleep f60
+	cm_interpolate IntroCam02 300
+	sleep f400
+	cm_reset
+	letterbox 0
+	chr_nocollision ShinShin 1
+	sleep f10
+	playback ShinShin ShinShinSet
+	end_cutscene
+	sleep f90
+	ai2_setmovementmode ShinShin creep
+}
+
+
+
+func void
+Shin(
+	void)
+{
+	sleep 60
+	begin_cutscene
+	
+	sound_music_stop atm_cl09
+	sound_music_start mus_xtr2 0.50
+
+	#Shinatama sitting in chair
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_sit 1000 12
+	cm_interpolate ShinCam00 120
+	sleep f180
+	#Konoko kneels next to Shinatama
+	chr_envanim 0 ShinKonBox01 norotation
+	chr_animate 0 KONOKOlev10_Kneel
+	cm_anim both ShinCam01
+	cm_wait
+	sound_dialog_play c09_31_01konoko
+	cinematic_start (KONtalking, 180, 180, 20, 9, 20, true)
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sound_dialog_play_block
+	#Konoko kneeling next to Shinatama
+	cm_interpolate ShinCam02 0
+	cm_interpolate_block ShinCam03 1200
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_sit 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sound_dialog_play c09_31_02shinatama
+	cinematic_start (SHINdamaged, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	sound_dialog_play c09_31_03konoko
+	sound_dialog_play_block
+	sound_dialog_play c09_31_04shinatama
+	sound_dialog_play_block
+	sound_dialog_play c09_31_05konoko
+	sound_dialog_play_block
+	#Camera showing both of them	
+	cm_interpolate ShinCamBoth01 0
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_sit 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	cm_interpolate_block ShinCam01 1500
+	sound_dialog_play c09_31_06shinatama
+	sound_dialog_play_block
+	sound_dialog_play c09_31_07konoko
+	sound_dialog_play_block
+	cm_interpolate ShinCamShinNo 0
+	cm_interpolate ShinCamShinNo2 900
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_sit 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sound_dialog_play c09_31_08shinatama
+	sound_dialog_play_block
+	sound_dialog_play c09_31_09konoko
+	sound_dialog_play_block
+	cinematic_stop (KONtalking, 20, 20)
+	cinematic_stop (SHINdamaged, 19, 20)
+	#TCTF Griffin talking
+	chr_create 1010 start
+	chr_create 1011 start
+	chr_create 1012 start
+	ai2_spawn Honey
+	ai2_passive Honey 1
+	playback Honey ShinFemSet
+	playback 1010 ShinCopSet
+	playback 1011 ShinGrifSet
+	playback 1012 ShinKerrSet
+	sleep f20
+	chr_animate 1010 COMGUYlev10_console1 120
+	cm_interpolate ShinCamCop 0
+	chr_animate_block 1010 COMGUYlev10_console2 1000
+	sound_dialog_play c09_31_10scigoon3
+	cinematic_start (COPtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block
+	cm_interpolate ShinCamGrif 1600
+	sound_dialog_play c09_31_11griffin
+	cinematic_start (GRIFtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	sound_dialog_play c09_31_12scigoon1
+	sound_dialog_play_block
+	cinematic_stop (COPtalking, 16, 20)
+	cm_interpolate ShinCamKerrFace 0
+	sound_dialog_play c09_31_13kerr
+	cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block
+	cinematic_stop (KERRtalking, 20, 20)
+	cm_interpolate ShinCamGrifFace 0
+	sound_dialog_play c09_31_14griffin
+	sound_dialog_play_block
+	cm_interpolate ShinCamCopFace 2400
+	sound_dialog_play c09_31_15scigoonwom
+	cinematic_start (CIVIL4talking, 180, 180, 15, 1, 20, true)
+	sound_dialog_play_block
+	cinematic_stop (CIVIL4talking, 15, 20)
+	cm_interpolate ShinCamKerrFace 0
+	sound_dialog_play c09_31_16kerr
+	cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block
+	cm_interpolate ShinCamGrif 0
+	cm_interpolate_block ShinCamGrif02 1200
+	sound_dialog_play c09_31_17griffin
+	cinematic_stop (GRIFtalking, 19, 20)
+	cinematic_start (GRIFtalkangry, 180, 180, 19, 7, 20, false)
+	sound_dialog_play_block
+	cinematic_stop (KERRtalking, 20, 20)
+	cinematic_stop (GRIFtalkangry, 19, 20)
+	#Shinatama tenses up
+	playback 0 ShinKonokoSet
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_sit 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	cm_interpolate ShinCamShinNo2 0
+	cm_interpolate_block ShinCamShinNo 800
+	sleep f60
+	chr_animate ShinShin SHINATlev10_SitSpaz 60
+	cutscene_sync mark
+	sound_ambient_start c05_46_24shinwake
+	sleep f60
+	chr_animate ShinShin SHINATlev10_Sit2 200
+	sound_dialog_play c09_31_18konoko
+	cinematic_start (KONtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block
+	#Konoko asks what's wrong
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	cm_interpolate ShinCamKonNo3 0
+	#Shinatama says to get the flock out of there
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	cm_interpolate ShinCamShinNo 800
+	sound_dialog_play c09_31_19shinatama
+	cinematic_start (SHINdamaged, 180, 180, 19, 7, 20, false)
+	cm_interpolate ShinCamKonNo 0
+	#I can't delay it much longer
+	cm_interpolate ShinCamShinNo3 2000
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	sound_dialog_play c09_31_21shinatama
+	sound_dialog_play_block
+	#KONOKO I won't leave you
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sound_dialog_play c09_31_22konoko
+	sound_dialog_play_block
+	#bye Konoko
+	cm_interpolate ShinCamShinNo3 0
+	chr_envanim 0 ShinKonBox02 norotation
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	sound_dialog_play c09_31_23shinatama
+	sound_dialog_play_block
+	#KONOKO says no
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sound_dialog_play c09_31_24konoko
+	sound_dialog_play_block
+	chr_envanim ShinShin ShinBox01 norotation
+	chr_animate ShinShin SHINATlev10_Sit2 1000
+	sound_dialog_play c09_31_25shinatama
+	sound_dialog_play_block
+	cinematic_stop (SHINdamaged, 19, 20)
+	#goodbye shinatama
+	chr_envanim 0 ShinKonBox04 norotation
+	chr_animate 0 KONOKOlev10_Kneel_end
+	sleep f30
+	cm_interpolate ShinCamKonNo 180
+	sleep f30
+	playback 0 ShinKonokoSet
+	sleep f70
+	sound_dialog_play c09_31_26konoko
+	sound_dialog_play_block
+	cinematic_stop (KONtalking, 20, 20)
+
+	sound_music_volume mus_xtr2 0.0 5.0
+	sound_music_start atm_cl10 0.0
+	sound_music_volume atm_cl10 1.0 5.0
+	sound_music_stop mus_xtr2
+
+	set_objective_2	
+
+	cm_reset
+	end_cutscene
+	chr_delete 1010
+	chr_delete 1011
+	chr_delete 1012
+	chr_delete Honey	
+#	START TIMER (added by wu)
+
+	particle blast1_locklight01 do stop
+	particle blast2_locklight01 do stop
+	door_lock 1
+	door_lock 2
+
+	door_unlock 3
+	particle Shindoor_locklight01 do start
+	ai2_spawn A2_sb04
+	sound_dialog_play c09_31_27shinatama
+	sound_dialog_play_block pause
+	#timer_start 30 shin_dies
+	sleep f600
+	sound_dialog_play c09_31_28shinatama
+	sleep f600
+	sound_dialog_play c09_31_29shinatama
+	sleep f330
+	sound_dialog_play_block pause
+	sleep f15
+	
+	sound_music_stop atm_cl10
+	cutscene_sync mark
+	sound_ambient_start c06_45_04_explo
+	sleep f10
+	shin_dies
+	#particle ShinBomb do explode
+	
+		
+}
+
+
+func void
+elevator(
+	void)
+{
+	begin_cutscene
+	sleep f40
+	chr_envanim 0 ElevatorKonBox01
+	cm_anim both ElevatorCam01
+	sleep 40
+	cutscene_sync mark
+	sound_ambient_start c07_21_20elevator
+	cm_wait
+	env_show 778 1
+	env_shade 778 778 .3 .3 .3
+	playback 0 ElevatorTop
+	cm_reset
+	end_cutscene
+}
+
+func void
+temp(
+	void)
+{
+	chr_envanim 0 ShinKonBox04 norotation
+	chr_animate 0 KONOKOlev10_Kneeling 1000
+	sleep f40
+	chr_animate 0 KONOKOlev10_Kneel_end
+}
+
+func void
+outro(
+	void)
+{
+	# if you didn't disable the console, we still need to kill that music
+	sound_music_volume mus_amasian 0.0 2.0
+	sound_music_stop mus_amasian
+
+	final_cutscene_trumps_particles
+
+	begin_cutscene
+	chr_delete F_r40
+	
+	sound_music_volume atm_cl11 0.0 1.0
+	sound_music_start mus_lz 1.0
+	sound_music_stop atm_cl11
+
+	particle pipe3 kill
+	
+	cm_interpolate OutroCamEnter01 0
+	cm_interpolate_block OutroCamEnter02 500
+	ai2_spawn TCTF1053
+	ai2_spawn TCTF1054
+	ai2_spawn TCTF1051
+	ai2_spawn TCTF1052
+	chr_lock_active 1051
+	chr_lock_active 1052
+	chr_lock_active 1053
+	chr_lock_active 1054
+	#ai2_passive 1053 1
+	#ai2_passive 1054 1
+	#ai2_makeblind 1053 1
+	#ai2_makeblind 1054 1
+	playback TCTF1053 OutroLiteEnter
+	sleep f30
+	playback TCTF1054 OutroLiteEnter
+	sleep f60
+	playback TCTF1051 OutroSwatEnter
+	sleep f30
+	chr_nocollision TCTF1052 1
+	playback TCTF1052 OutroSwatEnter
+	sleep f180
+	chr_nocollision TCTF1052 0
+	#TCTF says I know How to Stop Her
+	playback 0 OutroKonokoRun
+	cm_interpolate OutroCamBooth01 0
+	sleep f5
+	cm_interpolate OutroCamBooth02 400
+	#chr_create 1053 start
+	#chr_create 1054 start
+	playback TCTF1053 OutroTCTF3Set
+	playback TCTF1054 OutroTCTF4Set
+	sleep f60
+	#chr_create 1051 start
+	#chr_create 1052 start
+	playback TCTF1051 OutroTCTF1Enter
+	playback TCTF1052 OutroTCTF2Enter
+	sleep f380
+	#TCTF Guys hit the fan
+	cm_interpolate OutroCamBooth03 0
+	sleep f20
+	sound_dialog_play c09_32_03tctf
+	cinematic_start (TCTFtalking, 180, 180, 15, 1, 15, false)
+	sleep 240
+	chr_animate TCTF1054 COMGUYlev10_console
+	sleep f60
+	#sound_ambient_start console
+	sleep f30
+	cinematic_stop (TCTFtalking, 15, 25)
+	#Konoko stops in front as fan starts
+	playback 0 OutroKonokoStop
+	sleep f70
+	cm_anim both OutroCam01
+	env_anim 81 82
+	cutscene_sync mark
+	sound_ambient_start c14_14_26_basic
+	sound_ambient_start c14_42_09_effectsa
+	sleep f300
+	#TCTF guys run towards the Fan and then Stop
+	playback TCTF1051 OutroTCTFTurn
+	playback TCTF1052 OutroTCTF2Turn
+	sleep f120
+	cm_interpolate OutroCamTurn01 0
+	env_setanim 81 FanHub02
+	env_setanim 82 FanBlade02
+	cm_interpolate_block OutroCamTurn02 180
+	sleep f240
+	#Those Dudes run away 
+	particle OutroWind do start
+	playback TCTF1051 OutroTCTF2Flee
+	playback TCTF1052 OutroTCTFBlown
+	chr_envanim 0 OutroKonBox01 norotation
+	chr_animate 0 KONOKOlev10_Blown01
+	cm_interpolate OutroCamBlow01 0
+	cm_interpolate_block OutroCamBlow02 240
+	sleep f100
+	cutscene_sync mark
+	sound_ambient_start c14_30_15_wind
+	sleep f130
+	chr_animate TCTF1052 TCTFlev10_Blown 240 8
+	sleep f235
+	#Konoko starts to get blown away
+	sleep f2
+	cm_anim both OutroCamBlown
+	chr_envanim 0 OutroKonBox01 norotation
+	chr_animate 0 KONOKOlev10_Blown01
+	#Konoko Grabs handrail, tctf flies into fan
+	cm_wait
+	chr_envanim 0 OutroKonBox02 norotation
+	chr_animate 0 KONOKOlev10_Grab
+	chr_envanim TCTF1052 OutroTCTFBox01
+	chr_animate TCTF1052 STRIKEjump_flail 340
+	cm_anim both OutroCamGrab
+	#Konoko work her way up rail
+	cm_wait
+	cutscene_sync mark
+	sound_ambient_start c14_42_09_effectsb
+	chr_set_health TCTF1052 0
+	chr_envanim 0 OutroKonBox05 norotation
+	chr_animate 0 KONOKOlev10_OutroHand
+	cm_anim both OutroCamHand05
+	#Konoko works her way up rail
+	#cm_wait
+	#chr_envanim 0 OutroKonBox06 norotation
+	#chr_animate 0 KONOKOlev10_OutroHand
+	#cm_anim both OutroCamHand06
+	#TCTF says she got away	
+	#Konoko makes it towards safety
+	#cm_wait
+	#chr_envanim 0 OutroKonBox07 norotation
+	#chr_animate 0 KONOKOlev10_OutroHand
+	#cm_anim both OutroCamHand07
+	#sleep f240
+	#TCTF Griffin talking
+	cm_wait
+	chr_create 1010 start
+	chr_create 1011 start
+	chr_create 1012 start
+	playback 1010 ShinCopSet
+	playback 1011 ShinGrifSet
+	playback 1012 ShinKerrSet
+	cm_interpolate ShinCamGrifFace 0
+	sound_ambient_volume c14_14_26_basic 0 .5
+	sound_ambient_volume c14_30_15_wind 0 .5
+	sleep f20
+	sound_ambient_stop c14_14_26_basic
+	sound_ambient_stop c14_30_15_wind
+	sound_dialog_play c09_33_01griffin
+	cinematic_start (GRIFtalking, 180, 180, 19, 7, 20, false)
+	#chr_animate 1010 COMGUYlev10_console1 120
+	sound_dialog_play_block
+	cm_interpolate ShinCamCop 0
+	cm_interpolate_block ShinCamCopFace 2000
+	chr_animate 1010 COMGUYlev10_console2 1500
+
+	sound_music_volume mus_lz 0.65 2.0
+
+	sound_dialog_play c09_33_02scigoon1
+	cinematic_start (COPtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block
+	sound_dialog_play c09_33_03griffin
+	sound_dialog_play_block
+	sound_dialog_play c09_33_04scigoon1
+	sound_dialog_play_block
+	cinematic_stop (COPtalking, 16, 20)
+	sound_dialog_play c09_33_05griffin
+	sound_dialog_play_block
+	cm_interpolate ShinCamKerrFace 0
+	sound_dialog_play c09_33_06kerr
+	cinematic_start (KERRtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block
+	cinematic_stop (KERRtalking, 20, 20)
+	cm_interpolate ShinCamGrifFace 0
+	sound_dialog_play c09_33_07griffin
+	sound_dialog_play_block
+	sound_dialog_play c09_33_09griffin
+	sound_dialog_play_block
+	sleep 30
+	#Konoko overhears that she's rogue
+	playback 0 OutroKonokoWatch
+	chr_animate 0 KONOKOwatch_radio 400
+	sound_ambient_start c14_30_15_wind
+	cm_interpolate OutroCamWatch01 0
+	cm_interpolate_block OutroCamWatch02 300
+	sound_dialog_play c09_33_09agriffin
+	sound_dialog_play_block
+	cinematic_stop (GRIFtalking, 19, 20)
+
+	sound_music_volume mus_lz 1.0 1.0
+
+	chr_animate 0 KONOKOlev10_watch_run 60
+	sleep f60
+	fade_out 0 0 0 120
+	sound_ambient_volume c14_30_15_wind 0 2
+	sleep f120
+	sound_ambient_stop c14_30_15_wind
+	end_cutscene
+	win
+}
+
+
+
+func void splash(string character)
+{
+  var bool eggman;
+
+  eggman = chr_is_player(character);
+
+  if (eggman eq 0)
+  {
+    chr_animate(character, KONOKOacid);
+    sleep f10
+    chr_set_health(character, 0);
+  }
+
+  if (eggman eq 1)
+  {
+    	cm_detach
+    	chr_animate(character, KONOKOacid);
+	sleep f10
+	sound_impulse_play konoko_gruesome_death
+	chr_set_health(character, 0);
+  }
+}
+
+func void
+detachcam(
+	void)
+{
+	#cm_detach
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/power_II/power_II_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/power_II/power_II_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/power_II/power_II_main.bsl	(revision 405)
@@ -0,0 +1,26 @@
+#
+# power_main.bsl
+#
+
+var int inroom=0;
+var int in_blue=0;
+var int my_save_point=0;
+var int blue_striker=1;
+
+func void main(void)
+{
+	obj_create 81 82
+	env_shade 777 777 .4 .4 .4
+	env_show 778 0
+	gl_fog_blue=.15
+	gl_fog_red=.15
+	gl_fog_green=.15
+	gl_fog_start=.99
+	gs_farclipplane_set 2500
+	start
+	if (my_save_point eq 0)
+	{
+		fork intro
+	}
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/roof/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/roof/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/roof/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,521 @@
+###################################building 1
+func void rain1(string ai_name)
+{
+	dprint b1r1of3
+	particle b01_rain1 start
+	particle b01_rain2 stop
+}
+func void rain2(string ai_name)
+{
+	dprint b1r2of3
+	particle b01_rain1 stop
+	particle b01_rain2 start
+	particle b01_rain3 stop
+}
+func void rain3(string ai_name)
+{
+	dprint b1r3of3
+	particle b01_rain2 stop
+	particle b01_rain3 start
+	particle b02_rain1 stop
+}
+###################################building 2
+func void rain4(string ai_name)
+{
+	dprint b2r1of2
+	particle b01_rain3 stop
+	particle b02_rain1 start
+	particle b02_rain2 stop
+}
+func void rain5(string ai_name)
+{
+	dprint b2r2of2
+	particle b02_rain1 stop
+	particle b02_rain2 start
+	particle b03_rain1 stop
+}
+###################################building 3
+func void rain6(string ai_name)
+{
+	dprint b3r1of3
+	particle b02_rain2 stop
+	particle b03_rain1 start
+	particle b03_rain2 stop
+}
+func void rain7(string ai_name)
+{
+	dprint b3r2of3
+	particle b03_rain1 stop
+	particle b03_rain2 start
+	particle b03_rain3 stop
+}
+func void rain8(string ai_name)
+{
+	dprint b3r3of3
+	particle b02_rain2 stop
+	particle b03_rain3 start
+	particle b03_rain1 stop
+}
+###################################building 4/6
+func void rain9(string ai_name)
+{
+	dprint b4r1of6
+	particle b03_rain3 stop
+	particle b04_rain1 start
+	particle b04_rain2 stop
+}
+func void rain10(string ai_name)
+{
+	dprint b4r2of6
+	particle b04_rain1 stop
+	particle b04_rain2 start
+	particle b04_rain3 stop
+}
+func void rain11(string ai_name)
+{
+	dprint b4r3of6
+	particle b04_rain2 stop
+	particle b04_rain3 start
+	particle b04_rain4 stop
+}
+func void rain12(string ai_name)
+{
+	dprint b4r4of6
+	particle b04_rain3 stop
+	particle b04_rain4 start
+	particle b04_rain5 stop
+}
+func void rain13(string ai_name)
+{
+	dprint b4r5of6
+	particle b04_rain4 stop
+	particle b04_rain5 start
+	particle b04_rain6 stop
+}
+func void rain14(string ai_name)
+{
+	dprint b4r6of6
+	particle b04_rain5 stop
+	particle b04_rain6 start
+	particle b06_rain1 stop
+}
+###################################building 6/6
+func void rain15(string ai_name)
+{
+	dprint b6r1of6
+	particle b04_rain6 stop
+	particle b06_rain1 start
+	particle b06_rain2 stop
+}
+func void rain16(string ai_name)
+{
+	dprint b6r2of6
+	particle b06_rain1 stop
+	particle b06_rain2 start
+	particle b06_rain3 stop
+}
+func void rain17(string ai_name)
+{
+	dprint b6r3of6
+	particle b06_rain2 stop
+	particle b06_rain3 start
+	particle b06_rain4 stop
+}
+func void rain18(string ai_name)
+{
+	dprint b6r4of6
+	particle b06_rain3 stop
+	particle b06_rain4 start
+	particle b06_rain5 stop
+}
+func void rain19(string ai_name)
+{
+	dprint b6r5of6
+	particle b06_rain4 stop
+	particle b06_rain5 start
+	particle b06_rain6 stop
+}
+func void rain20(string ai_name)
+{
+	dprint b6r6of6
+	particle b06_rain5 stop
+	particle b06_rain6 start
+	particle b06_rain5 stop
+}
+func void rain21(string ai_name)
+{
+	dprint b6_off
+	particle b06_rain6 stop
+}
+################# kill lower clouds ###########
+func void cloudkiller(string ai_name)
+{
+	dprint makingLowCloudsDie
+	particle b01a die
+	particle b01b die
+	particle b01c die
+	particle b01d die
+	particle b01e die
+	particle b01f die
+	particle b01g die
+	particle b01h die
+	particle b01i die
+	particle b01j die
+	particle b01k die
+	particle b01l die
+	particle b01m die
+	particle b01n die
+	particle b01o die
+	particle b01p die
+	particle b01q die
+	particle b01r die
+	particle b01s die
+	particle b01t die
+	particle b01u die
+	particle b01v die
+	particle b01w die
+	particle b01x die
+	particle b01y die
+	particle b01z die
+	particle b02a die
+	particle b02b die
+	particle b02c die
+	particle b02d die
+	particle b02e die
+	particle b02f die
+	particle b02g die
+	particle b02h die
+	particle b02i die
+	particle b02j die
+	particle b02k die
+	particle b02l die
+	particle b02m die
+	particle b02n die
+	particle b02o die
+	particle b02p die
+	particle b02q die
+	particle b02r die
+	particle b02s die
+	particle b02t die
+	particle b02u die
+	particle b02v die
+	particle b02w die
+	particle b02x die
+	particle b02y die
+	particle b02z die
+	particle b03a die
+	particle b03b die
+	particle b03c die
+	particle b03d die
+	particle b03e die
+	particle b03f die
+	particle b03g die
+	particle b03h die
+	particle b03i die
+	particle b03j die
+	particle b03k die
+	particle b03l die
+	particle b03m die
+	particle b03n die
+	particle b03o die
+	particle b03p die
+	particle b03q die
+	particle b03r die
+	particle b03s die
+	particle b03t die
+	particle b03u die
+	particle b03v die
+	particle b03w die
+	particle b03x die
+	particle b03y die
+	particle b03z die
+	particle b04a die
+	particle b04b die
+	particle b04c die
+	particle b04d die
+	particle b04e die
+	particle b04f die
+	particle b04g die
+	particle b04h die
+	particle b04i die
+	particle b04j die
+	particle b04k die
+	particle b04l die
+	particle b04m die
+	particle b04n die
+	particle b04o die
+	particle b04p die
+	particle b04q die
+	particle b04r die
+	particle b04s die
+	particle b04t die
+	particle b04u die
+	particle b04v die
+	particle b04w die
+	particle b04x die
+	particle b04y die
+	particle b04z die
+}
+###################################lightningFlashes	
+func void b01(string ai_name)
+{
+	dprint Building01_flash
+	particle b01a start
+	sleep f9
+	particle b01a start
+	sleep f9
+	particle b01a start
+	sleep f9
+	particle b01b start
+	sleep f9
+	particle b01b start
+	sleep f9
+	particle b01b start
+	sleep f9
+	particle b01c start
+	sleep f9
+	particle b01c start
+	sleep f9
+	particle b01c start
+	sleep f9
+	particle b01d start
+	sleep f9
+	particle b01d start
+	sleep f9
+	particle b01d start
+	sleep f9
+	particle b01d start
+	sleep f9
+
+}
+func void b02(string ai_name)
+{
+	dprint Building02_flash
+	particle b02a start
+	sleep f2
+	particle b02a start
+	sleep f3
+	particle b02a start
+	sleep f3
+	particle b02a start
+	sleep f5
+	particle b02b start
+	sleep f5
+	particle b02b start
+	sleep f6
+	particle b02b start
+	sleep f6
+	particle b02b start
+	sleep f6
+	particle b02c start
+	sleep f5
+	particle b02d start
+	sleep f5
+	particle b02d start
+	sleep f4
+	particle b02e start
+	sleep f4
+	particle b02e start
+	sleep f4
+	particle b02f start
+	sleep f3
+	particle b02f start
+	sleep f3
+	particle b02f start
+	sleep f5
+	particle b02g start
+	sleep f5
+	particle b02h start
+	sleep f4
+	particle b02i start
+	sleep f4
+	particle b02j start
+	sleep f6
+	particle b02j start
+	sleep f6
+	particle b02k start
+	sleep f7
+	particle b02k start
+	sleep f6
+	particle b02l start
+	sleep f5
+	particle b02m start
+	sleep f4
+	particle b02m start
+	sleep f3
+	particle b02m start
+	sleep f5
+	particle b02n start
+	sleep f6
+	particle b02n start
+}
+func void b03a(string ai_name)
+{
+	dprint Building03_flash
+	particle b03a start
+	sleep f5
+	particle b03b start
+	sleep f5
+	particle b03a start
+	sleep f5
+	particle b03b start
+	sleep f5
+	particle b03b start
+	sleep f5
+	particle b03c start
+	sleep f5
+	particle b03c start
+	sleep f5
+	particle b03c start
+	sleep f5
+	particle b03d start
+	sleep f5
+	particle b03d start
+	sleep f5
+	particle b03d start
+	sleep f5
+	particle b03d start
+	sleep f5
+	particle b03e start
+	sleep f5
+	particle b03e start
+	sleep f5
+	particle b03f start
+	sleep f5
+	particle b03f start
+	sleep f5
+	particle b03f start
+	sleep f5
+	particle b03g start
+	sleep f5
+	particle b03g start
+	sleep f5
+	particle b03g start
+	sleep f5
+	particle b03g start
+	sleep f5
+	particle b03g start
+	sleep f5
+	particle b03h start
+	sleep f5
+	particle b03h start
+	sleep f5
+}
+func void b03b(string ai_name)
+{
+	dprint Building03_flash
+	particle b03i start
+	sleep f5
+	particle b03i start
+	sleep f5
+	particle b03j start
+	sleep f5
+	particle b03j start
+	sleep f5
+	particle b03i start
+	sleep f5
+	particle b03k start
+	sleep f5
+	particle b03k start
+	sleep f5
+	particle b03k start
+	sleep f5
+	particle b03l start
+	sleep f5
+	particle b03l start
+	sleep f5
+	particle b03m start
+	sleep f5
+	particle b03n start
+	sleep f5
+	particle b03o start
+	sleep f5
+	particle b03n start
+	sleep f5
+	particle b03m start
+	sleep f5
+	particle b03l start
+	sleep f5
+	particle b03l start
+	sleep f5
+	particle b03l start
+	sleep f5
+	particle b03k start
+	sleep f5
+	particle b03k start
+	sleep f5
+	particle b03j start
+	sleep f5
+	particle b03i start
+	sleep f5
+	particle b03i start
+	sleep f5
+	particle b03h start
+	sleep f5
+}
+
+func void l1(string ai_name)
+{
+	dprint Flash
+	particle c01 start
+	sleep f9
+	particle c01 start
+	sleep f9
+	particle c01 start
+	sleep f9
+	particle c02 start
+	sleep f9
+	particle c02 start
+	sleep f7
+	particle c03 start
+	particle c04 start
+	sleep f7
+	particle c04 start
+	sleep f7
+	particle c04 start
+	sleep f7
+	particle c02 start
+	sleep f7
+	particle c02 start
+	sleep f7
+	particle c01 start
+	particle c05 start
+}
+func void l2(string ai_name)
+{
+	dprint Flash
+	particle c06 start
+	sleep f7
+	particle c07 start
+	sleep f7
+	particle c08 start
+	sleep f7
+	particle c09 start
+	sleep f7
+	particle c10 start
+	sleep f7
+	particle c11 start
+	sleep f7
+	particle c12 start
+	sleep f7
+	particle c11 start
+	sleep f7
+	particle c10 start
+	sleep f7
+	particle c09 start
+	sleep f7
+	particle c08 start
+	sleep f7
+	particle c07 start
+	sleep f7
+
+}
+######################################
+### NINJA CLOUD COVER START SCRIPT ###
+######################################
+func void storm(string ai_name)
+{
+	dprint Starting_Storm
+	particle storm create
+	particle wind start
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/roof/roof.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/roof/roof.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/roof/roof.bsl	(revision 405)
@@ -0,0 +1,942 @@
+#	rooftop
+#	scripts for level 12 by wu
+#	
+#	LEGEND
+#
+#	character naming convention: X_Yx
+#	where X = area letter (A=first area, B=second area, etc.)
+#	      Y = character type (N=ninja, T=tanker, S=striker, R=red, etc.)
+#		x = character number, usually same as character's initial patrol id
+#
+#	trigger volume scripts: t##, where ## refers to trigger volume id
+#	
+#	CONTENTS
+#	
+#	1.variables defined
+#	1b.music scripts
+#	2.start and objectives scripts
+#	3.save game scripts
+#	4.cut scene scripts
+#	5.console scripts
+#	6.trigger volume scripts
+
+###############################
+#	variables defined 	#
+###############################
+
+var int my_save_point=0;
+var int ninja1=0;
+var int ninja2=0;
+var int strike1=0;
+var int strike1b=0;
+var int strike2=0;
+var int strike3=0;
+#var int elv1_check=0;
+var int invading_counter=3;
+var int done_with_intro_cutscene = 0;
+var int go_hide;
+var int go_hide2;
+
+###############################
+#		music		 	#
+###############################
+
+func void music_first(void)
+{
+	sound_music_start mus_cool19 0.0
+	sound_music_volume mus_cool19 0.75 3.0
+#	stopped at tanker death or timer
+}
+
+func void music_first_timer(void)
+{
+	sleep 1800
+	music_stop
+}
+
+func void music_gauntlet(void)
+{
+	sound_music_start mus_atm_cl12lp 0.0
+	sound_music_volume mus_atm_cl12lp 0.75 3.0
+#	this music stopped in t14
+}
+
+func void music_billboard(void)
+{
+	sound_music_start mus_low1 0.0
+	sound_music_start mus_low1 0.75 3
+#	this music stopped in ta2_54 script
+}
+
+func void music_battle(void)
+{
+	sound_music_start mus_fitec
+#	this music stopped in outro
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_cool19
+	sound_music_stop mus_atm_cl12lp
+	sound_music_stop mus_low1
+	sound_music_stop mus_fitec
+}
+
+###############################
+#	start and objectives	#
+###############################
+func void start(string ai_name)
+{
+	dprint start	
+	
+	particle el1_locklight01 do start
+	door_lock 6
+
+	my_save_point = save_point;
+
+	if (my_save_point eq 0)
+	{
+		set_objective_1
+		powerup_spawn lsi 605 
+	}
+
+	if (my_save_point eq 1)
+	{
+		dprint restore1
+		set_objective_1
+		done_with_intro_cutscene = 1;
+		fork intro_taunt
+		restore_game
+		powerup_spawn lsi 605 
+	}
+
+	if (my_save_point eq 2)
+	{
+		done_with_intro_cutscene = 1;
+		dprint restore2
+		set_objective_1
+		chr_delete A_Sr9
+		chr_delete A_N1
+		chr_delete IntroNinja
+		ai2_spawn C_T16
+		ai2_spawn C_Sr15
+		ai2_spawn C_R55
+		ai2_spawn C_N57
+		trigvolume_enable trigger_volume_13 0
+		door_lock 3
+		restore_game
+		powerup_spawn lsi 605 
+	}
+
+	if (my_save_point eq 3)
+	{
+		done_with_intro_cutscene = 1;
+		dprint restore3
+		set_objective_3
+		chr_delete A_Sr9
+		chr_delete A_N1
+		chr_delete IntroNinja
+		trigvolume_enable trigger_volume_79 0
+		restore_game
+	}
+
+	if (my_save_point eq 4)
+	{
+		done_with_intro_cutscene = 1;
+		dprint restore4
+		chr_delete A_Sr9
+		chr_delete A_N1
+		chr_delete IntroNinja
+		trigvolume_enable trigger_volume_28 0
+		ai2_spawn OutroNinja
+		chr_boss_shield OutroNinja
+		music_battle
+		gs_farclipplane_set 500
+		door_lock 2
+		restore_game
+	}
+}
+
+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 (7006,0.0)
+}
+
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective_2
+	objective_set(2)
+	target_set (7006,0.0)
+}
+
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective_3
+	objective_set(3)
+	target_set (7006,0.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
+	}
+}
+
+##########################
+#	cut scene scripts  #
+##########################
+
+func void t12(string ai_name)
+{
+	dprint t12_elevator
+	if (trigvolume_count(62) eq 0)
+	{
+		trigvolume_enable trigger_volume_12 0
+		sleep 7
+		trigvolume_corpse 62
+		dprint delete_oldAI
+		chr_delete B_R11
+		chr_delete B_R12a
+		chr_delete B_Sr10
+		chr_delete B_Sr10a
+		chr_delete B_T13
+		chr_delete B_Sr12
+		chr_delete B_N17
+		chr_delete B_N18	
+		chr_delete A_N8
+		chr_delete A_T4
+		chr_delete A_Sr3
+		chr_delete C_N17
+		chr_delete C_N18
+		Elevator
+		target_set(47,0.0)
+		ai2_spawn C_Sr15
+		ai2_spawn C_T16
+		ai2_spawn C_R55
+		ai2_spawn C_N57
+	}
+}
+
+func void t17(string ai_name)
+{
+	dprint t17_KonokoZip
+	if (chr_has_lsi(0))
+	{
+		KonokoZip
+		chr_delete D_C19
+		chr_delete D_C60
+		chr_delete D_N25
+		chr_delete D_R21
+		chr_delete D_Sb20
+		chr_delete D_Sb22
+		chr_delete D_Sb23
+		chr_delete D_Sr24
+		chr_delete D_Sr26
+		chr_delete D_Sr27
+		chr_delete D_Sr38
+		chr_delete D_T28
+		set_objective_3
+	}
+}
+
+func void t27(string ai_name)
+{
+	dprint t27_ElevatorFinalFight
+	ai2_spawn SuperNinja
+#	Elevator cut scene
+#	I'm backing him into a corner.  This isn't going to be pretty..."
+
+	chr_teleport 0 96
+
+}
+
+
+###################
+#	console	#
+###################
+
+#########################
+#  trigger volume stuff #
+#########################
+
+func void t28(string ai_name)
+{
+	chr_wait_animtype char_0 Pickup_Object
+	particle obj_zip create
+}
+
+func void runup(void)
+{
+	ai2_dopath B_Sr10 patrol_10z
+	ai2_setjobstate B_Sr10
+}
+
+func void t1(string ai_name)
+{
+	dprint t1 
+	ai2_dopath A_N1 patrol_02
+	ai2_setjobstate A_N1
+	ai2_dopath IntroNinja patrol_40
+	ai2_setjobstate IntroNinja
+	if (strike1b eq 1)
+	{	
+		dprint strike1b
+		ai2_dopath A_Sr9 patrol_09
+		ai2_setjobstate A_Sr9
+	}
+	sleep 300
+	if (ninja1 ne 0)
+	{
+		dprint ninja1_failed_trying_again
+		ai2_dopath IntroNinja patrol_40
+		ai2_setjobstate IntroNinja
+	}
+
+	if (ninja2 ne 0)
+	{
+		dprint ninja2_failed_trying_again
+		ai2_dopath A_N1 patrol_02
+		ai2_setjobstate A_N1
+	}
+}
+
+func void patrolscript0001(string ai_name)
+{
+	dprint patrolscript0001_t1
+	playback_block IntroNinja ninja_jump5 interp 30
+#	ai2_makeignoreplayer A_N1 0
+}
+
+func void patrolscript0002(string ai_name)
+{
+	dprint patrolscript0002_t1
+	playback_block A_N1 ninja_jump interp 30
+#	ai2_makeignoreplayer A_N1 0
+}
+
+func void t2(string ai_name)
+{
+	dprint t2
+	trigvolume_enable trigger_volume_03 0
+	ai2_spawn A_C5
+}
+
+func void t3(string ai_name)
+{
+	dprint t3
+	trigvolume_enable trigger_volume_02 0
+	ai2_spawn A_Sr3
+}
+
+func void t4(string ai_name)
+{
+	dprint t4	
+	trigvolume_enable trigger_volume_05 0
+	ai2_spawn A_T6
+	chr_delete A_Sr9
+	chr_delete A_N1
+	chr_delete IntroNinja
+
+}
+
+func void patrolscript0004(string ai_name)
+{
+	dprint patrolscript0004	
+	playback_block A_T6 tanker2 interp 20
+
+}
+
+func void t5(string ai_name)
+{
+	dprint t5	
+	trigvolume_enable trigger_volume_04 0
+	ai2_spawn A_T4
+	chr_delete A_Sr9
+	chr_delete A_N1
+	chr_delete IntroNinja
+
+}
+
+func void patrolscript0005(string ai_name)
+{
+	dprint patrolscript0005	
+	playback_block A_T4 tanker1 interp 20
+
+}
+
+func void t6(string ai_name)
+{
+	dprint t6
+	ai2_spawn A_N7
+	trigvolume_enable trigger_volume_07_copy 0
+
+}
+
+func void t7(string ai_name)
+{
+	dprint t7
+	ai2_spawn A_N8
+	trigvolume_enable trigger_volume_06 0
+}
+
+func void t8(string ai_name)
+{
+	dprint t8
+	ai2_spawn B_Sr10
+	ai2_spawn B_Sr10a
+	ai2_spawn B_R11
+	ai2_spawn B_R12a
+	ai2_dopath A_T6 patrol_42
+	ai2_setjobstate A_T6
+	ai2_dopath A_T4 patrol_42
+	ai2_setjobstate A_T4
+#	ai2_dopath A_Sr3 patrol_44
+	ai2_setjobstate A_Sr3
+#	ai2_dopath A_C5 patrol_44
+	ai2_setjobstate A_C5
+	ai2_dopath A_N7 patrol_45
+	ai2_setjobstate A_N7
+	ai2_dopath A_N8 patrol_45
+	ai2_setjobstate A_N8
+}
+
+func void t9(string ai_name)
+{
+	dprint t9
+	ai2_spawn E_N37
+	ai2_makeignoreplayer E_N37 1
+	playback_block E_N37 ninja_jump2
+	ai2_makeignoreplayer E_N37 0
+	ai2_attack E_N37 char_0
+}
+
+func void t10(string ai_name)
+{
+	dprint t10
+	# "I lost him. Wait! There he is."
+	sound_dialog_play c11_39_03konoko
+	ai2_spawn B_Sr12
+	ai2_spawn B_T13
+	ai2_spawn B_SuperNinja
+	chr_boss_shield B_SuperNinja
+	chr_unstoppable B_SuperNinja 1
+	chr_neutral B_SuperNinja 1
+	playback_block B_SuperNinja superninja1 interp 20
+	sleep 60
+	chr_delete B_SuperNinja
+
+}
+
+func void t11(string ai_name)
+{
+	dprint t11
+	ai2_spawn C_N17
+	ai2_spawn C_N18
+	ai2_dopath B_T13 patrol_41
+	ai2_setjobstate B_T13
+}
+
+func void patrolscript0011(string ai_name)
+{
+	dprint patrolscript0011
+	playback_block B_T13 tanker_jump interp 30
+
+}
+
+func void t14(string ai_name)
+{
+	dprint t14
+	music_stop
+	target_set (1,0.0)
+	chr_delete C_N57
+	chr_delete C_Sr15
+	chr_delete C_T16
+	chr_delete C_R55
+	ai2_dopath D_Sb20 patrol_35
+	ai2_spawn D_Sr38
+	ai2_spawn D_C60
+}
+
+func void patrolscript0014(string ai_name)
+{
+	dprint patrolscript0014	
+	playback_block D_Sb20 striker_jump interp 20
+}
+
+func void t15(string ai_name)
+{
+	dprint t15
+	ai2_spawn E_N14
+	ai2_spawn E_N14a
+	ai2_passive E_N14 1
+	#ai2_passive E_N14a 1
+	ai2_spawn NinjaZip
+	ai2_passive NinjaZip 1
+	chr_unstoppable NinjaZip 1
+	playback NinjaZip NinjaZipSet
+	playback E_N14 Ninja02Set
+
+}
+
+#func void patrolscript0016(string ai_name)
+#{
+#	dprint patrolscript0016	
+#	playback_block E_N14 LSIninja interp 20
+#}
+
+func void t18(string ai_name)
+{
+	dprint t18
+	music_gauntlet
+	ai2_spawn D_C19
+	ai2_spawn D_Sb20
+	ai2_spawn D_R21
+	ai2_spawn D_Sb22
+	ai2_spawn D_Sb23
+	ai2_spawn D_Sr24
+}
+
+func void t19(string ai_name)
+{
+	dprint t19
+	music_billboard
+	ai2_spawn D_N25
+	ai2_spawn C_R61
+}
+
+func void t20(string ai_name)
+{
+	dprint t20
+	music_stop
+	ai2_spawn D_Sr26
+	ai2_spawn D_Sr27
+	ai2_spawn D_T28
+}
+
+func void cantescape_dialog(void)
+{
+	sleep 120
+	# "He can't escape me. But why?"
+	sound_dialog_play c11_39_04konoko
+}
+
+func void t21(string ai_name)
+{
+	dprint t21_E_SuperNinja
+	fork cantescape_dialog
+	ai2_spawn E_N29
+	ai2_spawn E_Sb31
+	ai2_spawn E_Sr63
+	ai2_spawn E_Sr64
+	ai2_spawn E_R65
+	ai2_spawn E_SuperNinja
+	chr_boss_shield E_SuperNinja
+	chr_unstoppable E_SuperNinja
+	playback_block E_SuperNinja superninja2 interp 20
+	sleep 60
+	chr_delete E_SuperNinja
+
+}
+
+func void t22(string ai_name)
+{
+	dprint t22
+	ai2_dopath IntroNinja patrol_39
+	ai2_setjobstate IntroNinja
+
+}
+
+func void patrolscript0022(string ai_name)
+{
+	dprint patrolscript0022
+	playback_block IntroNinja ninja_jump4 interp 20
+
+}
+
+func void t23(string ai_name)
+{
+	dprint t23
+	ai2_spawn E_Sr30
+
+}
+
+func void t24(string ai_name)
+{
+	dprint t24
+	# "He knows I can feel him. That we are... rivals? Natural enemies?"
+	sound_dialog_play c11_39_08konoko
+	ai2_spawn E_R32
+	ai2_dopath E_Sr33 patrol_34
+	ai2_setjobstate E_Sr33
+}
+
+func void t25(string ai_name)
+{
+	dprint t25
+	ai2_spawn E_Sr33
+	ai2_dopath E_Sr30 patrol_34
+	ai2_setjobstate E_Sr30
+}
+
+func void t29(string ai_name)
+{
+	dprint t29
+	# "There's something familar about him, I can't quite place it."
+	sound_dialog_play c11_39_05konoko
+}
+
+func void t30(string ai_name)
+{
+	dprint t30_D_SuperNinja
+	# "Where... ? Ah! Over there!"
+	sound_dialog_play c11_39_01konoko
+	ai2_spawn D_SuperNinja
+	chr_boss_shield D_SuperNinja
+	chr_unstoppable D_SuperNinja 1
+	playback_block D_SuperNinja superninja1b interp 20
+	sleep 60
+	chr_delete D_SuperNinja
+
+}
+
+func void t31(string ai_name)
+{
+	dprint t31
+	ai2_spawn A_N43
+}
+
+func void t32in(string ai_name)
+{
+	dprint t32in
+	ninja1 = ninja1 + 1
+}
+
+func void t32out(string ai_name)
+{
+	dprint t32out
+	ninja1 = ninja1 - 1
+}
+
+func void t33in(string ai_name)
+{
+	dprint t33in
+	ninja2 = ninja2 + 1
+}
+
+func void t33out(string ai_name)
+{
+	dprint t33out
+	ninja2 = ninja2 - 1
+}
+
+func void ninja1_die(string ai_name)
+{
+	dprint ninja1_die
+	ninja1 = 0
+}
+
+func void ninja2_die(string ai_name)
+{
+	dprint ninja2_die
+	ninja2 = 0
+}
+
+func void t57(string ai_name)
+{
+	dprint t57
+	strike1=1
+	sleep 120
+	if (strike1 eq 1)
+	{
+		ai2_dopath A_Sr9 patrol_48
+		ai2_setjobstate A_Sr9
+	}
+}
+
+func void t57b(string ai_name)
+{
+	dprint t57b
+	strike1=0
+	strike1b=1
+}
+
+
+func void t58(string ai_name)
+{
+	dprint t58
+	music_first
+#	ai2_makeignoreplayer A_Sr9 1
+#	ai2_makeignoreplayer A_N1 1
+#	ai2_makeignoreplayer IntroNinja 1
+	ai2_dopath A_Sr9 patrol_49
+	ai2_setjobstate A_Sr9
+	ai2_dopath A_N1 patrol_50
+	ai2_setjobstate A_N1
+	ai2_dopath IntroNinja patrol_51
+	ai2_setjobstate IntroNinja
+#	sleep 15
+#	ai2_makeignoreplayer A_Sr9 0
+#	ai2_makeignoreplayer A_N1 0
+#	ai2_makeignoreplayer IntroNinja 0
+	music_first_timer
+
+}
+
+func void t83(string ai_name)
+{
+	dprint checking
+	go_hide =  go_hide + 1;
+	if(trigvolume_count (83) ne 0)
+	{
+		dprint t83
+		if(go_hide eq 0)
+		{
+			ai2_makeignoreplayer (ai_name,1)
+			ai2_dopath (ai_name,patrol_13b)
+			ai2_setjobstate (ai_name)
+			ai2_forget (ai_name)
+			sleep 60
+			ai2_makeignoreplayer (ai_name,0)
+		}
+		if(go_hide eq 1)
+		{
+			ai2_makeignoreplayer (ai_name,1)
+			ai2_dopath (ai_name,patrol_12b) 
+			ai2_setjobstate (ai_name)
+			ai2_forget (ai_name)
+			sleep 60
+			ai2_makeignoreplayer (ai_name,0)
+		}
+	}
+}
+
+func void t83b(string ai_name)
+{
+	dprint t83B
+	go_hide =  go_hide - 1;
+}
+
+func void t84(string ai_name)
+{
+	dprint checking
+	go_hide2 =  go_hide2 + 1;
+	sleep 60
+	if(trigvolume_count (84) ne 0)
+	{
+		dprint t84
+		if(go_hide2 eq 0)
+		{
+			ai2_makeignoreplayer (ai_name,1)
+			ai2_dopath (ai_name,patrol_69)
+			ai2_setjobstate (ai_name)
+			ai2_forget (ai_name)
+			sleep 60
+			ai2_makeignoreplayer (ai_name,0)
+		}
+		if(go_hide2 eq 1)
+		{
+			ai2_makeignoreplayer (ai_name,1)
+			ai2_dopath (ai_name,patrol_70) 
+			ai2_setjobstate (ai_name)
+			ai2_forget (ai_name)
+			sleep 60
+			ai2_makeignoreplayer (ai_name,0)
+		}
+		if(go_hide2 eq 2)
+		{
+			ai2_makeignoreplayer (ai_name,1)
+			ai2_dopath (ai_name,patrol_71) 
+			ai2_setjobstate (ai_name)
+			ai2_forget (ai_name)
+			sleep 60
+			ai2_makeignoreplayer (ai_name,0)
+		}
+	}
+}
+
+func void t84b(string ai_name)
+{
+	dprint t84B
+	go_hide2 =  go_hide2 - 1;
+}
+
+func void t85(string ai_name)
+{
+	dprint t85
+	ai2_spawn sbg_ninja
+}
+func void t59(string ai_name)
+{
+	dprint t59
+	strike2=1
+	sleep 120
+	if (strike2 eq 1)
+	{
+		ai2_dopath A_Sr3 patrol_52
+		ai2_setjobstate A_Sr3
+		ai2_dopath A_C5 patrol_52
+		ai2_setjobstate A_C5
+	}
+}
+
+func void t59b(string ai_name)
+{
+	dprint t59b
+	strike2=0
+}
+
+func void t60(string ai_name)
+{
+	dprint t60
+	strike3=1
+	sleep 120
+	if (strike3 eq 1)
+	{
+		ai2_dopath B_Sr12 patrol_53
+		ai2_setjobstate B_Sr12
+	}
+}
+
+func void t60b(string ai_name)
+{
+	dprint t60b
+	strike3=0
+}
+
+func void t63(string ai_name)
+{
+	if (trigvolume_count(64) eq 0)
+	{
+		trigvolume_enable trigger_volume_63 0
+		dprint t63
+		chr_delete E_R32
+		chr_delete E_Sr33
+		chr_delete E_Sr30
+		door_unlock 6
+	}
+}
+
+func void t65(string ai_name)
+{
+	dprint t65
+	chr_teleport C_R55 7013
+	ai2_dopath C_R55 patrol_56
+	ai2_setjobstate C_R55
+}
+
+func void t77(string ai_name)
+{
+	dprint t77
+	ai2_dopath D_R21 patrol_58
+}
+
+func void t78(string ai_name)
+{
+	dprint t78
+	ai2_dopath D_R21 patrol_59
+}
+
+func void minus_invading_counter(string ai_name)
+{
+	invading_counter = invading_counter - 1
+
+	if (invading_counter eq 0)
+	{
+		invading_dialog();
+	}
+}
+
+func void invading_dialog(void)
+{
+	invading_counter = 0;
+	trigvolume_enable trigger_volume_95 0
+
+	sleep 90
+	# "It's like this is his territory, and I'm invading."
+	sound_dialog_play c11_39_06konoko
+}
+
+func void t95(string ai_name)
+{
+	dprint t95
+
+	invading_dialog();
+}
+
+func void t96(string ai_name)
+{
+	dprint t96
+	# "He's... angry! I can _taste_ his frustration."
+	sound_dialog_play c11_39_07konoko
+}
+
+func void patrolscript0077(string ai_name)
+{
+	dprint 0077
+	ai2_dopath D_R21 patrol_21
+	ai2_setjobstate D_R21
+}
+
+func void t80(string ai_name)
+{
+	dprint t78
+	ai2_spawn E_C62
+	playback E_C62 com
+	
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/roof/roof_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/roof/roof_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/roof/roof_cutscene.bsl	(revision 405)
@@ -0,0 +1,340 @@
+#
+#
+# roof_cutscene.bsl
+#
+
+func void intro_roll_sounds(void)
+{
+	sleep 252
+	sound_impulse_play kon_roll
+	sleep 3
+	sound_impulse_play kon_roll
+}
+
+func void
+intro_taunt(
+	void)
+{
+	chr_envanim_stop IntroNinja
+	chr_teleport IntroNinja 600
+	chr_facetoflag IntroNinja 600
+	chr_animate IntroNinja NINCOMcrouch_idle
+
+	ai2_passive IntroNinja 1
+	ai2_setmovementmode IntroNinja creep
+	sleep f40
+	playback_block IntroNinja IntroNinja
+	ai2_passive IntroNinja 0
+
+	ai2_attack IntroNinja 0
+}
+
+func void
+intro(
+	void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate IntroCam01 0
+	sleep 14
+	begin_cutscene
+	ai2_spawn IntroNinja
+	#sound_ambient_start c08_11_19zip
+	sleep 30
+	fade_in 120
+	obj_create 81 81
+	env_anim 81 81
+	cm_anim both IntroCam01
+	chr_envanim 0 IntroKonBip01 norotation
+	chr_animate 0 KONOKOlev12_Intro
+	chr_envanim IntroNinja IntroNinBip01 norotation
+	chr_animate IntroNinja NINJAlev12_Intro
+	fork intro_roll_sounds
+	sleep f30
+	sound_ambient_start c08_11_19zip
+	cm_anim_block both IntroCam02
+	cm_wait
+	cm_reset
+	playback 0 IntroKonoko
+	done_with_intro_cutscene = 1;
+	trigvolume_reset death_fall_trigger_67
+	end_cutscene
+	fork intro_taunt
+	s1
+}
+
+func void
+camcontrol(
+	void)
+{
+	cm_anim both IntroCam01
+	cm_anim_block both IntroCam02
+	cm_wait
+}
+
+
+
+func void
+Elevator(
+	void)
+{
+	begin_cutscene
+	sleep 10
+	# "It's strange, I can almost feel him out there, creeping from shadow to shadow..."
+	sound_dialog_play c11_39_02konoko
+	playback 0 ElevatorKonokoSet
+	cm_interpolate ElevatorCam01 0
+	sleep 10
+	chr_envanim 0 ElevatorKonBox01
+	obj_create 31 31
+	obj_shade 31 31 .4 .4 .4
+	env_anim 31 31
+	sound_ambient_start first_elevator
+	cm_anim both ElevatorCam01
+	sleep 220
+	obj_kill 31 31
+	env_show 31 1
+	cm_reset
+	sleep 10
+	end_cutscene
+}
+
+
+
+
+func void
+NinjaZip(
+	void)
+{
+	chr_envanim NinjaZip ZipNinjaBipBox norotation
+	chr_animate NinjaZip NINJAlev12_zip
+	obj_create 72 72
+	env_anim 72 72
+	sleep 60
+	playback E_N14 Ninja02Jump
+	sleep 80
+	ai2_passive E_N14 0
+	sleep 100
+	playback NinjaZip NinjaZipLeave
+	sleep 120
+	chr_delete NinjaZip
+}
+
+func void
+KonokoZip(
+	void)
+{
+	particle obj_zip kill
+	begin_cutscene
+	sleep 10
+	cm_anim both KonZipCam01
+	chr_envanim 0 ZipKonBipBox norotation
+	chr_animate 0 KONOKOlev12_zip
+	obj_create 71 71
+	env_anim 71 71
+	sleep 55
+	sound_ambient_start c08_11_19zip
+	sleep 235
+
+	# CB: kill ninja's zip so we don't get Z fighting on superposed objects
+	obj_kill 72 72
+
+	cm_reset
+	end_cutscene
+}
+
+func void pretty_sayline(void)
+{
+	sleep 180
+	# "I'm backing him into a corner. This isn't going to be pretty."
+	sound_dialog_play c11_39_09konoko
+	sound_dialog_play_block pause
+	sleep 30
+	door_open 2
+	door_jam 2
+}
+
+func void
+ninja(
+	void)
+{
+	begin_cutscene
+	sleep 10
+	fork pretty_sayline
+	fork storm
+	ai2_spawn OutroNinja
+	chr_boss_shield OutroNinja
+	ai2_allpassive 1
+	playback OutroNinja SuperNinjaSet
+	chr_nocollision OutroNinja 1
+	#konokoenters elevator
+	#cm_interpolate SuperCam00 0
+	#playback 0 SuperKonokoEnter
+	chr_envanim 0 SuperKonBox01
+	gs_farclipplane_set 500
+	obj_create 41 41
+	obj_shade 41 41 .4 .4 .4
+	env_anim 41 41
+	sound_ambient_start c08_20_27elevator
+	cm_anim both SuperCam00
+	cm_wait
+	obj_kill 41 41
+	env_show 41 1
+	cm_interpolate SuperNinjaCam01 180
+	sleep 120
+	#all you have done is force me to fight
+	sound_dialog_play c11_40_01superninja
+	cinematic_start (BOSS2face, 180, 180, 19, 7, 20, false)
+	sleep 60
+	playback 0 SuperKonokoSet
+	sound_dialog_play_block pause
+	#Konoko who are you
+	cm_interpolate SuperCamKonokoSet 0
+	door_close 2
+	door_lock 2
+	sound_dialog_play c11_40_02konoko
+	cinematic_start (KONtalking, 180, 180, 20, 9, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (KONtalking, 20, 20)
+	#Super Ninja goes around
+	playback OutroNinja SuperNinjaWalk
+	sleep 40
+	playback 0 SuperKonokoWalk
+	#ninja talks
+	sound_dialog_play c11_40_03superninja
+	cinematic_stop (BOSS2face, 7, 0)
+	cinematic_start (BOSS2face, 180, 180, 7, 9, 2, false)
+	cm_interpolate SuperCamWalkOut02 0
+	cm_interpolate_block SuperCamWalkOut02b 800
+	sound_dialog_play_block pause
+	#konoko answers
+	sound_dialog_play c11_40_04konoko
+	cinematic_start (KONtalking, 180, 180, 16, 3, 20, true)
+	sound_dialog_play_block pause
+	cinematic_stop (KONtalking, 16, 20)
+	#super ninja we writhe
+	sound_dialog_play c11_40_05superninja
+	#cm_interpolate_block SuperCamWalkOut02b 800
+	sound_dialog_play_block pause
+	cm_interpolate SuperCamWalkOut02b 800
+	#Konoko says you're a thug
+	sound_dialog_play c11_40_06konoko
+	cinematic_start (KONangry, 180, 180, 16, 3, 20, true)
+	cm_interpolate SuperCamWalkOut03 0
+	cm_interpolate_block SuperCamWalkOut03b 600
+	sound_dialog_play_block pause
+	cinematic_stop (KONtalking, 16, 20)
+	#ninja says we'll see about that
+	sound_dialog_play c11_40_07superninja
+	sound_dialog_play_block pause
+	cinematic_stop (BOSS2face, 19, 15)
+	#gameplay setup
+	playback 0 SuperKonokoEnd
+	cm_reset
+	end_cutscene
+	sleep 20
+	chr_animate OutroNinja NINCOMteleport_in 47
+	music_battle
+	sleep 40
+	playback OutroNinja SuperNinjaDone
+	chr_animate OutroNinja NINCOMteleport_out 31
+	chr_nocollision OutroNinja 0
+
+	dprint SAVEDGAME4	
+	save_game 4 autosave
+}
+
+
+func void
+test(
+	void)
+{
+	chr_envanim 0 ZipKonBipBox norotation
+	sleep 120
+	playback 0 IntroKonoko
+}
+
+
+func void
+deathfall(
+	void)
+{
+	if (done_with_intro_cutscene eq 1)
+	{
+		sleep 30
+		cm_detach
+		sleep 30
+		chr_set_health 0 0
+	}
+}
+
+
+func void
+outro(
+	void)
+{
+	sound_music_volume mus_fitec 0.0 1.0
+	music_stop
+	begin_cutscene
+	chr_animate OutroNinja NINCOMteleport_in 31	
+	sleep 10
+	#spawn teleported Ninja and add some glowy bits
+	chr_envanim OutroNinja OutroNinjaBox01
+	chr_animate OutroNinja NINCOMteleport_out 31
+	sleep 10
+	cm_interpolate OutroCam01 0
+	sleep 10
+	chr_envanim OutroNinja OutroNinjaBox01 norotation
+	chr_animate OutroNinja NINJAlev12_Outro1
+	sound_ambient_start ninja_cd_scene
+	cm_anim both OutroCam01
+	sleep 208
+	obj_create 481 481
+	env_anim 481 481
+	cm_interpolate OutroCamDisk 90
+	chr_envanim OutroNinja OutroNinjaBox02 norotation
+	chr_animate OutroNinja NINJAlev12_Outro2 900
+	#Konoko patrol to flag 2000
+	#chr_teleport 0 2000
+	playback 0 OutroKonoko01
+	sleep 100
+	sleep 70
+	#camera cut here to Konoko's face
+	cm_interpolate OutroCam02 0
+	#sleep 30
+	#playback 0 OutroKonoko02
+	sleep 50
+	cinematic_start (KONtalking, 180, 180, 18, 6, 15, true)
+	sound_dialog_play c11_41_01konoko
+	sleep 300
+	#camera cut here to Konoko and Ninja
+	cm_interpolate OutroCam03 0
+	cm_interpolate_block OutroCam04 800
+	chr_envanim OutroNinja OutroNinjaBox02 norotation
+	chr_animate OutroNinja NINJAlev12_Outro2 1300
+	sound_dialog_play_block
+	# Camera cut as Konoko steps on Ninja
+	#Add sound of Konoko saying she has nothing in common
+	sound_dialog_play c11_41_01bkonoko
+	cinematic_stop (KONtalking, 18, 20)
+	cinematic_start (KONintense, 180, 180, 18, 6, 15, true)
+	cm_anim both OutroCam05
+	chr_envanim 0 OutroKonBox01 norotation
+	chr_animate 0 KONOKOlev12_Outro1
+	chr_envanim OutroNinja OutroNinjaBox03 norotation
+	chr_animate OutroNinja NINJAlev12_Outro3
+	sleep 175
+	sound_ambient_start c09_36_26neckbreak
+	sleep 100
+	#Camera cut to Konoko's face
+	playback 0 OutroKonoko02
+	chr_animate OutroNinja STRIKEfallen_front 540
+	cm_interpolate OutroCam06 0
+	sleep 60
+	sound_dialog_play c11_41_02konoko
+	cinematic_stop (KONintense, 18, 10)
+	sleep 60
+	fade_out 0 0 0 120	
+	sleep 120
+	win
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/roof/roof_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/roof/roof_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/roof/roof_main.bsl	(revision 405)
@@ -0,0 +1,22 @@
+#
+# power_main.bsl
+#
+
+func void
+main(
+	void)
+{
+	env_shade 1500 1501 .9 .8 .9
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.975
+	gs_farclipplane_set 900
+	start
+	if (my_save_point eq 0)
+	{
+		fork intro	
+	}
+	env_show 31 0
+	env_show 41 0
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/state/state_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/state/state_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/state/state_cutscene.bsl	(revision 405)
@@ -0,0 +1,411 @@
+#
+# state_cutscene.bsl
+#
+
+var int face_count_dead;
+
+func void
+state_cs_intro(
+	void)
+{
+	trigvolume_enable trig_vol_17 0
+	trigvolume_enable trig_vol_19 0
+	trigvolume_enable trigger_volume_99 0
+	begin_cutscene
+	cutscene_sync off
+	fade_out 0 0 0 0
+	sleep 120
+	#Griffin talks
+	cinematic_start(GRIFtalkangry, 180, 180, 16, 3, 30, true)
+	sound_dialog_play c10_34_01griffin
+	sound_dialog_play_block pause
+	#Kerr responds
+	sleep 20
+	#cinematic_start(KERRtalking, 180, 180, 19, 7, 10, false)
+	cinematic_start(KERRtalking, 180, 180, 15, 1, 10, false)
+	sound_dialog_play c10_34_02kerr
+	sound_dialog_play_block pause
+	#Griffin talks again
+	sleep 20
+	sound_dialog_play c10_34_03griffin
+	sleep 400
+
+	#Make characters for cut-scene
+	sound_music_start mus_main02_hd 1.0
+	chr_create 102 start
+	sleep 10
+	#ninja runs out of scene
+	playback 102 IntroNinja
+	playback 0 IntroKonoko
+	chr_nocollision 0 1
+	fade_in 120
+	cm_anim both Camout01
+	sleep 120
+	cinematic_stop (GRIFtalkangry, 16, 10)
+	cinematic_stop (KERRtalking, 15, 10)
+	cm_wait
+	chr_delete 102	
+	cm_anim both Camout02
+	cm_wait
+	cm_interpolate Camin03 0
+	#change this amount to work with cutscene
+	sleep 170	
+	sleep 60
+	#security shows up behind Konoko
+	ai2_spawn IntroSec1
+	ai2_spawn IntroSec2
+	sleep 10
+	cm_interpolate Camin04 0
+	playback 0 IntroKonoko02
+	sleep 30
+	sound_dialog_play c10_34_05secguard2
+	sound_dialog_play_block pause
+	chr_animate IntroSec2 SECURIlev11_intro
+	cm_interpolate Camin05 0
+	#put security guard talking here
+	cinematic_start(SEC2talking, 180, 180, 15, 1, 30, true)
+	sound_dialog_play c10_34_04secguard1
+	sound_dialog_play_block pause
+	#Konoko says I don't have time for this
+	cm_interpolate IntroCamNotime 0
+	cinematic_start (KONintense, 180, 180, 20, 8, 20, true)
+	sound_dialog_play c10_34_06konoko
+	sound_dialog_play_block pause
+	#Security says something
+	sound_dialog_play c10_34_07secguard1
+	sound_dialog_play_block pause
+	cinematic_stop (SEC2talking, 15, 30)
+	#your call
+	cm_interpolate IntroCamCall01 0
+	cm_interpolate_block IntroCamCall02 90
+	sleep 70
+	sound_dialog_play c10_34_08konoko
+	sound_dialog_play_block pause
+	cinematic_stop (KONintense, 20,20)
+	sleep 20
+	cm_reset 0
+	#chr_delete 102
+	chr_nocollision 0 0
+	trigvolume_enable trig_vol_17 1
+	trigvolume_enable trig_vol_19 1
+	trigvolume_enable trigger_volume_99 1
+	end_cutscene
+	set_objective_1
+}
+
+
+func void
+dog(string ai_name)
+{
+	particle obj1 kill
+	begin_cutscene
+	chr_forceholster 0 1
+	chr_nocollision 0 1
+	sleep 30
+	#Konoko uses console
+	playback 0 DogKonokoSet
+	cm_interpolate DogCamLeftHigh 0
+	cm_interpolate_block DogCamRightHigh 400
+	sleep 10
+	chr_animate 0 KONOKOlev11_cnsl_start 68
+	chr_animate_block 0 KONOKOlev11_cnsl_idle 300
+	#sleep 30
+	#Konoko talks
+	cinematic_start (KONintense, 180, 180, 19, 7, 20, false)
+	sound_dialog_play c10_35_01aKonoko
+	sleep 90
+	chr_animate 0 KONOKOlev11_cnsl_type 120
+	chr_animate_block 0 KONOKOlev11_cnsl_idle 800 8
+	sleep 120
+	cm_interpolate DogCamRight 0
+	cm_interpolate_block DogCamLeft 500
+	#Konoko senses the watchdog
+	sound_dialog_play_block c10_35_01bKonoko
+	chr_animate 0 KONOKOlev11_cnsl_type 120
+	chr_animate_block 0 KONOKOlev11_cnsl_type 800 8
+	#camera switches to show Ninja
+	chr_create 1030 start
+	playback 1030 DogNinjaSet
+	chr_animate 1030 NINJAlev11_cnsl_type 400
+	cm_interpolate DogCamNinjaRight 0
+	cm_interpolate_block DogCamNinjaLeft 360
+	sleep 360
+	#Konoko says no
+	cm_interpolate DogCamLeftHigh 0
+	cm_interpolate_block DogCamRight 800
+	sound_dialog_play_block c10_35_01cKonoko
+	chr_animate 0 KONOKOlev11_cnsl_idle 240 8
+	sleep 180
+	#Konoko wonders who hacker was
+	chr_animate_block 0 KONOKOlev11_cnsl_stop	
+	#Gameplay resumes
+	chr_delete 1030
+	sound_dialog_play_block pause
+	cinematic_stop (KONintense, 15, 30)
+	end_cutscene
+	cm_reset
+	chr_nocollision 0 0
+	playback DogKonokoEnd
+#	save_game_2
+
+	trig_activate 12
+	trig_activate 13
+	trig_activate 14
+
+	door_unlock 82
+
+	set_objective_5
+	set_target_2
+
+	console_activate 1
+	console_activate 6
+}
+
+func void
+Nwindow_ninja(string ai_name)
+{
+	#spawn character 1030 before Konoko enters the room
+	chr_create 1030 start
+	chr_neutral 1030 1
+	playback 1030 WindowNinjaSet
+}
+
+func void
+window_ninja(string ai_name)
+{
+	trigvolume_enable Cut_outro 0
+	chr_create 1030 start
+	chr_neutral 1030 1
+	playback 1030 WindowNinjaSet
+	begin_cutscene
+	cm_interpolate WindowCamSet 70
+	ai2_takecontrol 1
+	ai2_setmovementmode 0 walk
+	ai2_movetoflag 0 289
+	sleep f60
+	cm_interpolate WindowCamStart 120
+	sound_music_start mus_pursuit_hd
+	sleep 120
+	#Ninja turns around
+	cm_anim both WindowCam00
+	ai2_takecontrol 0
+	chr_envanim 1030 WindowNinjaBox02 norotation
+	chr_animate 1030 NINJAlev11_windowturn
+	obj_create 481 481
+	obj_show 481 481
+	env_anim 481 481
+	#Konoko says give me back those files
+	cm_wait
+	playback 0 WindowKonoko01
+	cm_interpolate WindowCam02 0
+	sleep 30
+	#cinematic_start (KONintense, 180, 180, 17, 6, 30, false)
+	#sound_dialog_play lev11_WindowKon
+	#sound_dialog_play_block pause
+	#cinematic_stop (KONintense, 18, 30)
+	sleep 60
+	playback 0 WindowKonoko02
+	#Ninja backs towards window and flies out)
+	env_setanim 481 Disk02
+	chr_envanim 1030 WindowNinjaBox01 norotation
+	chr_animate 1030 NINJAlev11_window
+	cm_anim both WindowCam03
+	sleep 185
+	#break glass here
+	sound_impulse_play glass_big
+	particle WindowCharge do explode
+	cm_wait
+	cm_reset
+	end_cutscene
+	sleep 60
+	chr_delete 1030
+	ai2_spawn WindowNinjaRun
+	ai2_passive WindowNinjaRun 1
+	chr_unstoppable WindowNinjaRun 1
+	ai2_spawn creepy_ninja_4
+	chr_lock_active WindowNinjaRun
+	#make ninja no collision with particles
+	playback WindowNinjaRun WindowNinjaRun
+	obj_kill 481 481
+	target_set(1030, 0.0)
+	sleep f210
+	playback WindowNinjaRun JumpNinjaSet
+	sleep f10
+	playback WindowNinjaRun JumpNinjaSet
+	#chr_delete WindowNinjaRun
+}
+
+func void
+WindowNinjaDelete(string ai_name)
+{
+	#chr_delete WindowNinjaRun 
+}
+
+func void
+FaceSet(string ai_name)
+{
+	playback WindowNinjaRun
+	ai2_spawn FaceNinja
+	ai2_spawn FaceNinja2
+	ai2_passive FaceNinja 1
+	ai2_passive FaceNinja2 1
+	ai2_passive FaceNinja3 1
+	playback FaceNinja FaceNinjaSet
+	playback FaceNinja FaceNinjaJump
+	sleep 60
+	#chr_delete WindowNinjaRun 
+	ai2_passive FaceNinja 0
+	ai2_passive FaceNinja2 0
+	ai2_passive FaceNinja3 0
+	trigvolume_enable Cut_outro 0
+}
+
+func void
+JumpNinja(string ai_name)
+{
+	chr_nocollision WindowNinjaRun 1
+	chr_animate WindowNinjaRun KONOKOlev11_jump -1
+	sleep f135
+	chr_delete WindowNinjaRun
+}
+
+func void
+JumpKonoko(string ai_name)
+{
+	begin_cutscene
+	chr_animate 0 KONOKOlev11_jump -1
+	sleep f135
+}
+
+#func void
+#Face(string ai_name)
+#{
+#	playback FaceNinja FaceNinjaJump
+#	sleep 60
+#	#chr_delete WindowNinjaRun 
+#	ai2_passive FaceNinja 0
+#	sleep 60
+#}
+
+
+func void
+outro_makeNinja(string ai_name)
+{
+	chr_create 111 start
+	chr_create 110 start
+	chr_neutral 110 1
+	chr_neutral 111 1
+	playback 110 OutroNinja
+	playback 111 OutroSuperNinja
+}
+
+func void
+outro(string ai_name)
+{
+	particle obj2 kill
+	sound_music_stop mus_pursuit_hd
+	begin_cutscene
+	sleep f30
+	chr_nocollision 0 1
+	chr_create 111 start
+	chr_create 110 start
+	chr_neutral 110 1
+	chr_neutral 111 1
+	playback 110 OutroNinja
+	playback 111 OutroSuperNinja
+	cm_interpolate JumpCamKonoko01 0
+	playback 0 JumpKonokoSet
+	cm_interpolate_block JumpCamKonoko02 90
+	sleep f10
+	chr_animate 0 KONOKOlev11_jump -1
+	sleep f100
+	chr_nocollision 0 0
+	sleep f10
+	playback 0 JumpKonokoDown
+	cm_interpolate OutroCamSet 0
+	#chr_forceholster 0 1
+	sleep f90
+	cm_interpolate OutroCam01 140
+	sleep 60
+	chr_animate 111 NINCOMstartle_bk1
+	sleep 80
+	cinematic_start (BOSS2face, 180, 180, 17, 6, 30, false)
+	sound_dialog_play c10_37_01superninja
+	sound_dialog_play_block pause
+	cinematic_stop(BOSS2face, 17, 30)
+	#ninja jumps onto line
+	obj_create 71 71
+	cm_anim both OutroCam02
+	env_anim 71 71
+	chr_envanim 111 OutroNinjaBox01 norotation
+	chr_animate 111 NINJAlev11_outrozip01
+	playback 110 OutroNinja02
+	cutscene_sync_mark
+	sound_ambient_start c12_14_07zipa
+	sleep 170
+	cm_interpolate OutroCam03 0
+	playback 0 OutroKonoko
+	#kill character 111 here
+	chr_delete 111
+	sleep 60
+	#KONOKO jumps on back of Ninja
+	env_anim 71 71
+	chr_envanim_block 110 OutroNinjaBox01 norotation
+	chr_animate 110 NINJAlev11_outrozip01
+	chr_envanim 0 OutroKonBox01 norotation
+	chr_animate 0 KONOKOlev11_outrozip01
+	cm_anim both OutroCam04
+	cutscene_sync_mark
+	sound_ambient_start c12_14_07zipb
+	cm_wait
+	cm_anim both OutroCam05
+	env_setanim 71 Zipthing02
+	chr_envanim 110 OutroNinjaBox02 norotation
+	chr_animate 110 NINJAlev11_outrozip02
+	chr_envanim 0 OutroKonBox02 norotation
+	chr_animate 0 KONOKOlev11_outrozip02
+	sleep 60
+	fade_out 0 0 0 60
+	sleep 90
+	win
+}
+
+func void
+Floor2Unlock(string ai_name)
+{
+	input 0
+	cm_interpolate Floor2Unlock 0
+	sleep 150
+	cm_reset
+	door_unlock 54
+	particle lock1_locklight01 do start
+	input 1
+}
+
+func void
+DataArchiveUnlock(string ai_name)
+{
+	door_unlock 7
+	ai2_spawn fl1_target_1
+	input 0
+	sound_music_start mus_heart
+	fork music_force_stop
+	cm_interpolate DataArchiveUnlock 0
+	trigvolume_enable shut_off_vault_music 1
+	particle obj1 create
+	sleep 150
+	cm_reset
+	input 1
+}
+
+func void
+you_lose(string ai_name)
+{
+	sound_music_stop mus_main02_hd
+	sound_music_stop mus_heart
+	sound_music_stop mus_pursuit
+	sleep 240
+	fade_out 0 0 0 180 
+	sleep 240
+	lose
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/state/state_level_logic.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/state/state_level_logic.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/state/state_level_logic.bsl	(revision 405)
@@ -0,0 +1,607 @@
+#
+# state_spawn_guards.bsl
+#
+# LEVEL LOGIC
+#
+################## MUSIC TEST ################################
+func void level_start(string ai_name)
+{
+# These functions are used when the game is restored.
+
+	if (my_save_point eq 0)
+	{
+		dprint SAVE_POINT_0
+#		USE THIS FUNC TO SET UP TRAINING SEQUENCE AGAIN
+
+		ai2_spawn neutral_1
+		ai2_spawn fl2_secguard_1
+		powerup_spawn ammo 131
+		powerup_spawn hypo 132
+	}
+
+	if (my_save_point eq 1)
+	{
+		dprint RESTORE_SAVE_POINT_1
+		fl1_spawn_guards
+
+		ai2_spawn neutral_1
+		ai2_spawn fl2_secguard_1
+		powerup_spawn ammo 131
+		powerup_spawn hypo 132
+
+		objective_set(1);
+		particle(lock99_locklight01, do, start);
+		console_deactivate 10
+		trigvolume_enable(trigger_volume_09, 0);
+		restore_game
+	}
+
+	if (my_save_point eq 2)
+	{
+		dprint RESTORE_SAVE_POINT_2
+
+		particle obj1 create
+		particle obj1 start
+
+		trigvolume_enable(Cut_dog, 1);
+		trigvolume_enable(trigger_volume_11, 1);
+		trigvolume_enable(trigger_volume_12, 1);
+		trigvolume_enable(trigger_volume_14, 1);
+		trigvolume_enable(trigger_volume_15, 1);
+		trigvolume_enable(trigger_volume_10, 1);
+
+		trigvolume_enable(shut_off_vault_music, 0);
+		trigvolume_enable(trigger_volume_09, 0);
+		trigvolume_enable(trigger_volume_08, 0);
+		trigvolume_enable(trigger_volume_02, 0);
+		trigvolume_enable(trigger_volume_01, 0);
+
+		trigvolume_enable(save_trig_right, 0);
+		trigvolume_enable(save_trig_left, 0);
+
+		objective_set 4 silent
+
+		target_set(267, 30.0)
+
+		#change_flGUARD_CORRIDOR_lights	
+
+		door_lock(3);
+		door_lock(77);
+
+		door_unlock(15);
+		door_unlock(14);
+		door_unlock(7);
+		door_unlock(5);
+		door_unlock(75);
+		door_unlock(59);
+		door_unlock(54);
+		door_unlock(67);
+		door_unlock(68);
+		door_unlock(76);
+		door_unlock(23);
+		door_unlock(42);
+
+		trig_activate 1
+		trig_activate 2
+		#trig_activate 14
+
+		#console_activate 6
+		#console_activate 7
+		#console_activate 9
+
+		console_deactivate 11
+		console_deactivate 4
+		console_deactivate 88
+		console_deactivate 82
+		console_deactivate 5
+		console_deactivate 3
+		console_deactivate 6
+		console_deactivate 1
+		console_deactivate 2
+
+		particle lock1_locklight01 do start
+		particle lock2_locklight01 do start
+		particle lock3_locklight01 do start
+		particle lock4_locklight01 do start
+		particle lock5a_locklight01 do start
+		particle lock5b_locklight01 do start
+		particle lock5c_locklight01 do start
+		particle lock99_locklight01 do start
+
+		particle lock6_locklight01 do stop
+
+		env_shade 271 272 .4 .4 .2
+
+		restore_game
+#		objective_set(3);
+	}
+}
+
+# This is an example of a save game console.
+
+func void save_game_1(string player_name)
+{
+	dprint saveit_1
+	save_game 1 autosave
+}
+
+func void save_game_2_right(string player_name)
+{
+	dprint saveit_2
+	save_game 2 autosave
+	trigvolume_enable save_trig_left 0
+}
+
+func void save_game_2_left(string player_name)
+{
+	dprint saveit_2
+	save_game 2 autosave
+	trigvolume_enable save_trig_right 0
+}
+
+##############################################################
+var int music_counter;
+
+func void music_force_stop(void)
+{
+	sleep 4500
+
+	if (0 ne music_counter) 
+	{
+		dprint music_force_stop
+		music_counter = 0
+		all_music_counters
+	}
+}
+func void music_script_start(void)
+{
+	music_counter = 2
+}
+
+func void die_for_art_1(string ai_name)
+{
+	dprint DFA_1
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+
+}
+func void die_for_art_2(string ai_name)
+{
+	dprint DFA_2
+	music_counter = music_counter - 1
+
+	if (music_counter eq 0)
+	{
+		all_music_counters();
+	}
+
+}
+func void all_music_counters(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_main02
+	sound_music_stop mus_heart
+	sound_music_stop mus_main02_hd
+}
+
+func void fl1_spawn_guards(string ai_name)
+{
+#	dprint FL1_SPAWN_GUARDS
+	ai2_spawn fl1_secguard_1
+	ai2_spawn fl1_secguard_2
+	ai2_spawn fl1_secguard_4
+	trigvolume_enable shut_off_vault_music 0
+}
+
+func void fl2_spawn_secguard_2(string ai_name)
+{
+#	dprint FL2_SPAWN_GUARDS
+	ai2_spawn fl2_secguard_2
+	ai2_spawn fl2_secguard_7
+	ai2_spawn fl2_balcony_2
+
+	ai2_spawn neutral_2
+	ai2_spawn neutral_4
+}
+
+func void fl2_spawn_secguard_3(string ai_name)
+{
+#	dprint FL2_SPAWN_ASSAULT_GUARDS
+	ai2_spawn fl2_secguard_3
+	ai2_spawn fl2_secguard_6
+	ai2_spawn fl2_balcony_1
+}
+
+# THESE ARE THE THIRD FLOOR/ROOF GUYS
+
+func void spawn_fl3_guards(string ai_name)
+{
+#	dprint FLROOF_SPAWN_GUARDS
+	ai2_spawn fl3_secguard_1
+	ai2_spawn fl3_secguard_2
+	ai2_spawn fl3_secguard_6
+	ai2_spawn flROOF_sniper_1
+	ai2_spawn Roof_BOSWAT_1
+
+	ai2_spawn neutral_3
+	ai2_spawn neutral_6
+}
+
+# THESE ARE THE COMPUTER ROOM GUYS
+
+func void spawn_flBASEMENT_guards(string ai_name)
+{
+#	dprint FLROOF_SPAWN_GUARDS
+	ai2_spawn flBASEMENT_guard_1
+	ai2_spawn flBASEMENT_guard_2
+}
+
+# THESE ARE THE COMPUTER ROOM GUYS
+
+func void spawn_flRAMP_guards(string ai_name)
+{
+#	dprint FLROOF_SPAWN_GUARDS
+	ai2_spawn flRAMP_guard_1
+	ai2_spawn flRAMP_guard_2
+	trigvolume_enable ninja_ambush_top_trig 0
+	trigvolume_enable ninja_ambush_bot_trig 0
+	particle lock46_locklight01 do start
+}
+
+func void spawn_outside_left_snipers(string ai_name)
+{
+#	dprint FL2_SPAWN_GUARDS
+	ai2_spawn flOUTSIDE_A_sniper_1
+	ai2_spawn flOUTSIDE_A_sniper_2
+	ai2_spawn flOUTSIDE_B_sniper_1
+	ai2_spawn flOUTSIDE_C_sniper_1
+}
+
+func void spawn_outside_right_snipers(string ai_name)
+{
+#	dprint FL2_SPAWN_GUARDS
+	ai2_spawn flOUTSIDE_E_sniper_1
+	ai2_spawn flOUTSIDE_E_sniper_2
+	ai2_spawn flOUTSIDE_D_sniper_1
+	ai2_spawn flOUTSIDE_D_sniper_2
+}
+
+func void spawn_targets(string ai_name)
+{
+#	dprint FL2_SPAWN_GUARDS
+	ai2_spawn fl2_target_2
+}
+
+func void do_neutral_1_run(string ai_name)
+{
+	ai2_neutralbehavior neutral_1 none
+	ai2_setmovementmode neutral_1 run_noaim
+	ai2_dopath neutral_1 neutral_1_run
+	ai2_setjobstate neutral_1
+}
+
+func void do_neutral_2_run(string ai_name)
+{
+	ai2_neutralbehavior neutral_2 none
+	ai2_dopath neutral_2 neutral_2_run
+	ai2_setjobstate neutral_2
+}
+
+func void do_neutral_3_run(string ai_name)
+{
+	ai2_neutralbehavior neutral_3 none
+	ai2_dopath neutral_3 neutral_3_run
+	ai2_setjobstate neutral_3
+}
+
+func void unlock_secret_1(string ai_name)
+{
+	input 0
+	cm_interpolate secret1 0
+	sleep 60
+	console_activate 7
+	#particle lock69a_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	ai2_spawn secret_guard_1
+	ai2_spawn secret_guard_2
+}
+
+func void unlock_secret_2(string ai_name)
+{
+	door_unlock 34
+	door_unlock 36
+
+	# CB: ensure ramp guards do not see ninja and go after him!
+	ai2_passive flRAMP_guard_1 1
+	ai2_passive flRAMP_guard_2 1
+
+	ai2_spawn cutscene_ninja_1
+	input 0
+	cm_interpolate secret2 0
+	sleep 60
+	particle lock7_locklight01 do start
+	sleep 15
+	trig_deactivate 12
+	sleep 150
+	cm_reset
+	input 1
+
+	chr_delete cutscene_ninja_1
+	ai2_passive flRAMP_guard_1 0
+	ai2_passive flRAMP_guard_2 0
+
+	trigvolume_enable ninja_ambush_top_trig 1
+	trigvolume_enable ninja_ambush_bot_trig 1
+}
+
+func void ninja_ambush(string ai_name)
+{
+	trigvolume_enable ninja_ambush_top_trig 0	
+	trigvolume_enable ninja_ambush_bot_trig 0	
+
+	ai2_spawn ambush_ninja_1
+	ai2_spawn creepy_ninja_1
+	ai2_spawn creepy_ninja_3
+}
+
+func void hall_1(string ai_name)
+{
+	input 0
+	cm_interpolate hall1 0
+	sleep 60
+	door_unlock 77
+	door_unlock 38
+	door_unlock 22
+	door_unlock 3
+	particle lock6_locklight01 do start
+	particle lock7_locklight01 do stop
+	sleep 150
+	cm_reset
+	input 1
+
+	trig_deactivate 1
+	trig_deactivate 2
+}
+
+func void top_1(string ai_name)
+{
+	input 0
+	#cm_interpolate hall1 0
+	sleep 60
+	door_unlock 35
+	door_unlock 38
+	door_unlock 22
+	door_unlock 3
+	particle lock6_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	trig_activate 12
+	trig_activate 13
+	trig_activate 14
+
+	trig_deactivate 1
+	trig_deactivate 2
+}
+
+func void downstairs(string ai_name)
+{
+	trig_deactivate 14
+	door_unlock 8
+	door_unlock 9
+	particle lock23_locklight01 do start
+	ai2_spawn creepy_ninja_5
+	ai2_spawn creepy_ninja_6
+}
+
+func void upstairs(string ai_name)
+{
+	trig_deactivate 13
+	door_unlock 35
+	particle lock65_locklight01 do start
+}
+
+var int door_counter=3;
+
+func void seclock_music_start(void)
+{
+	if (door_counter eq 3)
+	{
+		sound_music_start mus_lz 0.75
+	}
+}
+
+func void seclock_decrement_counter(void)
+{
+	door_counter = door_counter - 1
+
+
+	if (door_counter eq 0)
+	{
+		sound_music_stop mus_lz
+		unlock_roof();
+	}
+}
+
+func void seclock1(string ai_name)
+{
+	seclock_music_start
+
+	input 0
+	cm_interpolate security 0
+	sleep 60
+	particle lock5a_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	seclock_decrement_counter
+}
+
+func void seclock2(string ai_name)
+{
+	seclock_music_start
+
+	input 0
+	cm_interpolate security 0
+	sleep 60
+	particle lock5b_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	seclock_decrement_counter
+}
+
+func void seclock3(string ai_name)
+{
+	seclock_music_start
+
+	input 0
+	cm_interpolate security 0
+	sleep 60
+	particle lock5c_locklight01 do start
+	sleep 150
+	cm_reset
+	input 1
+
+	seclock_decrement_counter
+}
+
+func void unlock_roof(string ai_name)
+{
+	door_unlock 23
+	door_unlock 42
+}
+
+#
+# state_door_lock_lights.bsl
+#
+# SCRIPTS TO CHANGE THE LOCKED LIGHTS ON DOORS
+#
+# TURN FROM GREEN TO RED: do stop
+
+func void change_fl2_lights(string ai_name)
+{
+#	dprint WHATEVER YOU WANT
+	sleep 60
+	particle lock2_locklight01 do start
+}
+
+func void change_fl3_lights(string ai_name)
+{
+	particle lock3_locklight01 do start
+	ai2_spawn fl3_mook_1
+	ai2_spawn fl3_mook_2
+}
+
+func void change_flDATA_ARCHIVE_lights(string ai_name)
+{
+	sleep 60
+	particle lock4_locklight01 do start
+}
+
+func void change_flCOMMAND_CENTER_lights(string ai_name)
+{
+	particle lock5_locklight01 do start
+}
+
+func void change_flGUARD_CORRIDOR_lights(string ai_name)
+{
+	particle lock6_locklight01 do start
+}
+
+func void change_flDIG_OFFICES_lights(string ai_name)
+{
+	particle lock7_locklight01 do start
+}
+
+
+func void grifftext(string chr_index)
+{
+	dprint text2a
+	text_console level_11a
+	console_reset 9
+}
+
+
+#
+# state_spawn_guards.bsl
+#
+# SCRIPTS TO SPAWN SECURITY GUARDS
+#
+
+func void set_objective_1(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(1)
+	target_set(127, 30.0)
+}
+
+func void set_objective_2(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(2)
+}
+
+func void set_objective_3(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(3)
+}
+
+func void set_objective_4(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(4)
+	target_set(267, 30.0)
+}
+
+func void set_objective_5(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(5)
+}
+
+func void set_objective_6(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	objective_set(6)
+}
+
+func void set_target_1(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	target_set(267, 30.0)
+}
+
+func void set_target_2(string ai_name)
+{
+#	dprint WHATEVER I WANT
+	target_set(1030, 30.0)
+}
+###wuscripts
+func void check_outro(string ai_name)
+{
+	trigvolume_enable tv_check_outro 0
+	if(trigvolume_count (24) eq 0)
+	{
+		trigvolume_enable Cut_outro 1
+		particle obj2 create
+		target_set(126,30.0)
+	}
+	if(trigvolume_count (24) ne 0)
+	{
+		sleep 60
+		trigvolume_enable tv_check_outro 1
+	}
+}
+		
Index: /AE/packages_bak/VanillaBSL/IGMD/state/state_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/state/state_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/state/state_main.bsl	(revision 405)
@@ -0,0 +1,25 @@
+#
+# state_main.bsl
+#
+var int my_save_point;
+
+func void main(void)
+{
+
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.99
+	gs_farclipplane_set 3000	
+
+	my_save_point = save_point;
+
+	level_start
+
+	if (my_save_point eq 0)
+	{
+		particle lock99_locklight01 do start
+		music_script_start();
+		state_cs_intro
+	}
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/particle_scripts.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/particle_scripts.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/particle_scripts.bsl	(revision 405)
@@ -0,0 +1,107 @@
+#partice scripts
+#alex okita
+#turns on and off particles for rooms
+
+#room1
+func void room1_start(string ai_name)
+{
+	dprint room1_start
+	particle room1 start
+	particle smoke start
+}
+func void room1_stop(string ai_name)
+{
+	dprint room1_stop
+	particle room1 stop
+}
+#room2
+func void room2_start(string ai_name)
+{
+	dprint room2_start
+	particle room2 start
+}
+func void room2_stop(string ai_name)
+{
+	dprint room2_stop
+	particle room2 stop
+}
+
+#room3
+func void room3_start(string ai_name)
+{
+	dprint room3_start
+	particle room3 start
+}
+func void room3_stop(string ai_name)
+{
+	dprint room3_stop
+	particle room3 stop
+}
+
+#room4
+func void room4_start(string ai_name)
+{
+	dprint room4_start
+	particle room4 start
+}
+func void room4_stop(string ai_name)
+{
+	dprint room4_stop
+	particle room4 stop
+}
+
+#room5
+func void room5_start(string ai_name)
+{
+	dprint room5_start
+	particle room5 start
+}
+func void room5_stop(string ai_name)
+{
+	dprint room5_stop
+	particle room5 stop
+}
+
+#room4
+func void room6_start(string ai_name)
+{
+	dprint room6_start
+	particle room6 start
+}
+func void room6_stop(string ai_name)
+{
+	dprint room6_stop
+	particle room6 stop
+}
+
+#room7
+func void room7_start(string ai_name)
+{
+	dprint room7_start
+	particle room7 start
+}
+func void room7_stop(string ai_name)
+{
+	dprint room7_stop
+	particle room7 stop
+}
+
+#room8
+func void room8_start(string ai_name)
+{
+	dprint room8_start
+	particle room8 start
+}
+func void room8_stop(string ai_name)
+{
+	dprint room8_stop
+	particle room8 stop
+	particle smoke stop
+}
+
+func void fire_damage(string ai_name)
+{	
+	dprint fire_hurt_konoko
+	chr_poison (ai_name, 5, 30, 30);
+}
+
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_cutscene.bsl	(revision 405)
@@ -0,0 +1,682 @@
+#
+# tctf_cutscene.bsl
+#
+
+func void
+Cut01(
+	void)
+{
+	fade_out 0 0 0 0
+	cm_interpolate IntroCam01 0
+	sleep 8
+	begin_cutscene
+	sleep 1
+	sound_ambient_start cs_tctf8_01
+	fork Soundcue
+	env_show 99 0	
+	sleep 40
+	#hides motorcycle gunk
+	env_show 110 0
+	env_show 111 0
+	env_show 112 0
+	#hides	van	gunk
+	env_show 444 0
+	env_show	101	0
+	env_show	103	0
+	env_show	104	0
+	env_show	105	0
+	env_show	106	0
+	env_show	107	0
+	env_show	108	0	
+	#hides	curtain	wall
+	#start cutscene	
+	#fade_in 120
+	cm_anim both IntroCam01	
+	#cycle	and	konoko	animate					
+	chr_envanim 0 IntroKonBox01			
+	chr_animate 0 KONOKOcycle_ride 560
+	obj_create 10 12
+	obj_create 1 8		
+	env_anim	10	12
+	fade_in 120
+	#sound_ambient_start cs_tctf8_01
+	#fork Soundcue
+	#Konoko looking at TCTF
+	chr_envanim_block 0 IntroKonBox02
+	cm_anim both IntroCam02
+	chr_animate 0 KONOKOlev8_IntroKon01
+	#show helicopters circling
+	cm_anim_block both IntroCam03
+	obj_create 601 606
+	obj_create 701 706
+	env_anim 601 606
+	env_anim 701 706
+	#sleep 
+	#sound_ambient_play cs_tctf8_02
+	#Van animate
+	cm_anim_block both IntroCam04
+	env_anim 1 8
+	#sleep 20
+	particle object_Blackvan_FB_VanHeadlight do start
+	#Vancrash
+	cm_anim_block both IntroCam05
+	#sound_ambient_start cs_tctf8_03
+	env_setanim 1 Blackvan_FB01
+	env_setanim 3 Blackvan_LR01
+	env_setanim 4 Blackvan_TB01
+	env_setanim 5 Blackvan_W01
+	env_setanim 6 Blackvan_WB01
+	env_setanim 7 Blackvan_doors0201
+	env_setanim 8 Blackvan_doors0301
+	sleep 287
+	#turn off unbroken curtain wall
+	env_show 98 0
+	env_show 398 0
+	particle LobbyWall do explode
+	#turn on broken	curtain	wall
+	env_show 99 1
+	#camera shows lobby doors closing and lights flashing
+	cm_interpolate_block IntroLobbyCam00 0
+	particle LobbyAlarm create
+	#hide	object	van		
+	obj_kill 1 8
+	#show	gunk	van		
+	env_show	101	1				
+	env_show	103	1
+	env_show	104	1
+	env_show	105	1
+	env_show	106	1
+	env_show	107	1
+	env_show	108	1
+	env_show 444 1
+	#Strikers run into Lobby space
+	ai2_spawn IntroStriker01
+	ai2_spawn IntroStriker02
+	playback IntroStriker01 IntroStrikerLobby
+	cm_interpolate_block IntroLobbyCam01 220
+	env_show 97 0
+	sleep 50
+	obj_create 321 325
+	env_anim 321 322
+	playback IntroStriker02 IntroStrikerLobby
+	sleep 190
+	#Show alarms flashing and blast doors closing
+	cm_interpolate_block IntroDoorCam02 0
+	cutscene_sync mark 
+	sound_ambient_start cs_tctf8_03
+	env_anim 323 325
+	sleep 200
+	#Konoko sees doors closing
+	chr_delete IntroStriker01
+	chr_delete IntroStriker02
+	cm_anim_block both IntroCam06
+	chr_envanim 0 IntroKonBox03 norotation
+	chr_animate 0 KONOKOlev8_IntroKon03
+	env_setanim 10 motorcycle03
+	env_setanim 11 hubs03
+	env_setanim 12 hubs_rear03
+	env_anim 323 325
+	#Konoko rides towards closing doors
+	chr_envanim_block 0 IntroKonBox04
+	chr_animate 0 KONOKOcycle_ride 246
+	env_setanim 10 motorcycle04
+	env_setanim 11 hubs04
+	env_setanim 12 hubs_rear04
+	cm_anim both IntroCam07
+	#Konoko slides under the doors
+	chr_envanim_block 0 IntroKonBox05 norotation
+	chr_animate 0 KONOKOlev8_IntroKon05
+	env_setanim 10 motorcycle05
+	env_setanim 11 hubs05
+	env_setanim 12 hubs_rear05
+	cm_anim both IntroCam08
+	#Konoko game start
+	cm_wait
+	playback 0 IntroKonoko
+	cinematic_start(KONintense, 180,180,15, 1, 15, false)
+	sound_dialog_play c07_22_01konoko
+	cm_reset
+	sleep 1
+	#hide motorcycle object
+	obj_kill 10 12
+	#kill helicopter objects
+	obj_kill 601 606
+	obj_kill 701 706
+	#hide door objects
+	obj_kill 321 325
+	#show gunk motorcycle
+	env_show 110 1
+	env_show 111 1
+	env_show 112 1
+	#show door gunk
+	env_show 321 1
+	env_show 322 1
+	env_show 323 1
+	env_show 324 1
+	env_show 325 1
+	env_shade 321 325 .3 .3 .3
+	#gameplay	settings			
+	end_cutscene
+	sound_dialog_play_block pause
+	music_intro
+	sleep 60
+	cinematic_stop(KONintense, 15, 15)
+	ai2_spawn lobby_striker_01
+	ai2_spawn lobby_striker_02
+	ai2_spawn lobby_striker_03
+	s1
+	sleep 120
+	particle LobbyAlarm kill
+}
+
+func void
+Soundcue(void)
+{
+	sleep 1146
+	sound_ambient_start cs_tctf8_02
+	cutscene_sync mark 
+
+}
+
+func void
+Attack(void)
+{
+	begin_cutscene
+	particle Attack do start
+	fade_out 0 0 0 30
+	ai2_spawn AttackCivil01
+	ai2_spawn AttackCivil02
+	ai2_spawn AttackStriker01
+	ai2_spawn AttackStriker02
+	ai2_setmovementmode AttackStriker01 run
+	ai2_setmovementmode AttackStriker02 run
+	chr_create 1054 start
+	playback AttackCivil01 AttackGeneric01
+	playback AttackCivil02 AttackCop01
+	playback AttackStriker01 AttackStriker01
+	playback AttackStriker02 AttackStriker02
+	playback 1054 AttackComguy01
+	sleep 30
+	chr_animate AttackCivil01 KONPANcrouch_idle1 1000
+	fade_in 30
+	sleep 1
+	chr_animate 1054 COMGUYtalk_radio 1660
+	cm_interpolate AttackCam01 0
+	sleep 60
+	cm_interpolate AttackCam02 400
+	sleep 300
+	cinematic_start(COMGUYtalking, 180,180, 19, 7, 20, false)
+	sound_dialog_play c07_23_01synhench1
+	sound_dialog_play_block pause
+	cinematic_stop (COMGUYtalking, 19, 30)
+	sleep 10
+	end_cutscene
+	fade_out 0 0 0 30
+	sleep 30
+	cm_reset
+	fade_in 30
+	#kill characters 1050-1054
+	chr_delete AttackCivil01
+	chr_delete AttackCivil02
+	chr_delete AttackStriker01
+	chr_delete AttackStriker02
+	chr_delete 1054
+	particle Attack do stop
+	music_attack
+
+	# CB: after 10 seconds, play shinatama dialog "they're attacking the command center"
+	sleep 600
+	sound_dialog_play c00_01_105shinatama
+	sound_dialog_play_block
+}
+
+
+
+func void
+Kidnap(
+	void)
+{
+	particle Kidnap do start
+	begin_cutscene
+	fade_out 0 0 0 30
+	sleep 30
+	
+	#Shinatama caught up in destruction
+	chr_create 1101 start
+	chr_envanim 1101 KidnapShinBox02
+	chr_animate 1101 SHINATsit_idle 3000
+
+	#create the strikers
+	chr_create 1103 start
+	chr_create 1104 start
+	playback 1103 KidnapStriker01
+	playback 1104 KidnapStriker02
+
+	#run the camera
+	dprint run_the_camera
+	cm_interpolate KidnapCam01 0
+	cm_interpolate_block KidnapCam02 300
+	fade_in 30
+	sleep 360
+
+	#Shinatama looks up to see SubBoss1
+	dprint shinatama_looks_up
+	chr_envanim 1101 KidnapShinBox02
+	chr_animate 1101 SHINATsit_idle 610
+
+	#cm_anim both KidnapCam03
+	cm_interpolate KidnapCam03 0
+	cm_interpolate_block KidnapHelpCam02 300
+	cinematic_start(SHINhelpme, 180,180, 15, 1, 20, false)
+	sound_dialog_play c07_24_02shinatama
+
+	#create barabus as passsive
+	dprint create_barabus
+	ai2_spawn barabus
+	chr_boss_shield barabus
+	ai2_passive barabus 1
+	chr_lock_active barabus
+	playback barabus KidnapSubBoss01
+
+	dprint sound_dialog_pause
+	sound_dialog_play_block pause
+	cinematic_stop (SHINhelpme, 19, 30)
+
+	#SubBoss grabs Shinatama
+	dprint barabus_grabs_shinatama
+	chr_envanim 1101 KidnapShinBox01 norotation
+	chr_animate 1101 SHINATlev8_Kidnap01 -1
+	chr_envanim barabus KidnapStrBox01 norotation
+	chr_animate barabus STRIKElev8_Kidnap01 -1
+	cutscene_sync mark
+	sound_ambient_start c09_32_09shin_kidnap
+	cinematic_start(BOSS01menacing, 180,180, 20, 9, 20, false)
+	sound_dialog_play c07_24_01barabas
+	cm_anim both KidnapCam04
+	sleep 60
+	particle KidnapSpark do start
+	sleep 5
+	particle KidnapSpark do stop
+	sleep 20
+	cinematic_stop (BOSS01menacing, 19, 30)
+	fade_out 0 0 0 30
+	chr_delete 1101
+	chr_delete 1103
+	chr_delete 1104
+	sleep 30
+	chr_delete barabus
+	cm_reset
+	fade_in 30
+	end_cutscene
+	particle Kidnap do stop
+}
+
+
+func void
+Elevator(
+	void)
+{
+	begin_cutscene
+	#hide gunk and show elevator objects
+	env_show 501 0
+	env_show 502 0
+	env_show 503 0
+	env_show 504 0
+	obj_create 781 781
+	obj_create 501 504
+	obj_force_draw 781 781
+	obj_force_draw 501 504
+	#KONOKO cuts the cables
+	chr_invincible 0 1
+	chr_nocollision 0 1
+	cm_anim both ElevatorCam01
+	chr_envanim 0 ElevatorKonBox01 norotation
+	chr_animate 0 KONOKOlev8_Elevator01
+	env_anim 781 781
+	env_anim 501 504
+	sleep f40
+	cutscene_sync mark
+	sound_ambient_start c10_00_10_torch
+	sleep 100
+	particle ElevatorSpark do start
+	sound_ambient_start c09_32_09shin_kidnap
+	sleep 85
+	particle ElevatorSpark do stop
+	cutscene_sync mark
+	sound_ambient_start c10_01_29_elevator
+	sleep 45
+	particle ElevatorSpark2 do start
+	sound_ambient_start c09_32_09shin_kidnap
+	sleep 70
+	particle ElevatorSpark2 do stop
+	#Elevator falls and KONOKO rises
+	chr_envanim_block 0 ElevatorKonBox02 norotation
+	obj_kill 781 781
+	chr_animate 0 KONOKOlev8_Elevator02
+	env_setanim 501 Elevator_fall
+	env_setanim 502 Elevator_brace_fall
+	env_setanim 503 Elevator_cable01_fall
+	env_setanim 504 Elevator_cable02_fall
+	cm_anim both ElevatorCam02
+	sleep 60
+	particle ElevatorDust do explode
+	sleep 5
+	particle ElevatorDust do explode
+	#KONOKO stops at top
+	chr_envanim_block 0 ElevatorKonBox03 norotation
+	chr_animate 0 KONOKOlev8_Elevator03
+	env_setanim 503 Elevator_cable01_stop
+	cm_anim both ElevatorCam03
+	#KONOKOleaps out of shaft
+	chr_envanim_block 0 ElevatorKonBox04 norotation
+	chr_animate 0 KONOKOlev8_Elevator04
+	cm_anim both ElevatorCam04
+	#hide objects and show gunk
+	obj_kill 501 504
+	env_show 601 1
+	env_show 602 1
+	cm_wait
+	playback 0 ElevatorEndSet
+	cm_reset
+	chr_invincible 0 0
+	chr_nocollision 0 0
+	end_cutscene
+	sleep 5
+}
+
+
+func void
+helicopter(
+	void)
+{
+	obj_create 901 906
+	particle EndDust create
+}
+
+func void helicopter_sound_start(void)
+{
+	sound_ambient_start c08_heli 1.0
+}
+
+func void helicopter_sound_stop(void)
+{
+	sleep 680
+	sound_ambient_volume c08_heli 0.0 12
+	sleep 600
+	sound_ambient_stop c08_heli
+}
+
+func void helicopter_fly_away(void)
+{
+	fork helicopter_sound_stop
+
+	#helicopter
+	chr_create 1019 start
+	chr_create 1020 start
+	chr_create 1021 start						
+	chr_envanim 1019 HeliOutroShinBox01						
+	chr_envanim 1020 HeliOutroStrBox01						
+	chr_envanim 1021 HeliOutroStrBox02						
+	chr_animate 1019 SHINATstand_heli 1000
+	chr_animate 1020 STRIKEstand_heli 1000				
+	chr_animate 1021 STRIKEcrouch_idle 1000
+	env_anim 901 906
+}
+
+func void
+HeliOutroRight(
+	void)
+{
+	cutscene_sync mark
+	helicopter_sound_start
+	ai2_takecontrol 1
+	ai2_passive sh_s12b 1
+	ai2_passive sh_s12 1
+	ai2_passive sh_s12c 1
+	ai2_movetoflag 0 1900
+	begin_cutscene
+	chr_delete sh_s12b
+	chr_delete sh_s12
+	chr_delete sh_s12c
+	ai2_kill
+	sleep 10
+	helicopter_fly_away
+	cm_interpolate HeliOutroRight 200
+	sleep 200
+	cm_anim both HeliOutroCam012
+	sleep 100
+	ai2_takecontrol 0
+	input 0
+	playback 0 HeliOutroKonoko02
+	cinematic_start(KONtalking, 180,180, 16, 3, 15, true)
+	sound_dialog_play c07_25_01konoko
+	sound_dialog_play_block pause
+	fork HeliOutro
+}
+
+
+func void
+HeliOutroMid(
+	void)
+{
+	cutscene_sync mark
+	helicopter_sound_start
+	ai2_takecontrol 1
+	ai2_passive sh_s12b 1
+	ai2_passive sh_s12c 1
+	ai2_passive sh_s12 1
+	ai2_movetoflag 0 1900
+	begin_cutscene
+	chr_delete sh_s12c
+	chr_delete sh_s12b
+	chr_delete sh_s12
+	ai2_kill
+	sleep 10
+	helicopter_fly_away
+	cm_interpolate HeliOutroMid 100
+	sleep 100
+	cm_interpolate HeliOutroCam01 100
+	cm_anim_block both HeliOutroCam01
+	sleep 200
+	ai2_takecontrol 0
+	input 0
+	playback 0 HeliOutroKonoko02
+	cinematic_start(KONtalking, 180,180, 16, 3, 15, true)
+	sound_dialog_play c07_25_01konoko
+	sound_dialog_play_block pause
+	fork HeliOutro
+}
+
+func void
+HeliOutroMidLt(
+	void)
+{
+	cutscene_sync mark
+	helicopter_sound_start
+	ai2_takecontrol 1
+	ai2_passive sh_s12c 1
+	ai2_passive sh_s12b 1
+	ai2_passive sh_s12 1
+	ai2_movetoflag 0 1900
+	begin_cutscene
+	chr_delete sh_s12c
+	chr_delete sh_s12b
+	chr_delete sh_s12
+	ai2_kill
+	sleep 10
+	helicopter_fly_away
+	cm_interpolate HeliOutroMidLt 100
+	sleep 100
+	cm_interpolate HeliOutroCam01 100
+	cm_anim_block both HeliOutroCam01
+	#patrol Konoko to flag #1010
+	sleep 200
+	ai2_takecontrol 0
+	input 0
+	playback 0 HeliOutroKonoko02
+	cinematic_start(KONtalking, 180,180, 16, 3, 15, true)
+	sound_dialog_play c07_25_01konoko
+	sound_dialog_play_block pause
+	fork HeliOutro
+}
+
+func void
+HeliOutroLeft(
+	void)
+{
+	cutscene_sync mark
+	helicopter_sound_start
+	ai2_takecontrol 1
+	ai2_passive sh_s12c 1
+	ai2_passive sh_s12b 1
+	ai2_passive sh_s12 1
+	ai2_movetoflag 0 1900
+	begin_cutscene
+	chr_delete sh_s12c
+	chr_delete sh_s12b
+	chr_delete sh_s12
+	ai2_kill
+	sleep 10
+	helicopter_fly_away
+	cm_interpolate HeliOutroLeft 200
+	sleep 200
+	cm_anim both HeliOutroCam012
+	sleep 200
+	ai2_takecontrol 0
+	input 0
+	playback 0 HeliOutroKonoko02
+	cinematic_start(KONtalking, 180,180, 20, 9, 15, true)
+	sound_dialog_play c07_25_01konoko
+	sound_dialog_play_block pause
+	fork HeliOutro
+}
+
+
+func void
+HeliOutro(
+void)
+{
+	particle EndDust kill
+	target_set(1,0.0)
+	#Subboss shows up behind konoko
+	cm_interpolate_block HeliOutroCam02 0
+	chr_delete 1019
+	chr_delete 1020
+	chr_delete 1021
+	playback 0 HeliOutroKonoko01
+	ai2_spawn barabus
+	chr_boss_shield barabus
+	playback barabus HeliOutroBoss01
+	sleep 40
+	chr_animate 0 KONCOMstartle_bk2
+	cinematic_stop (KONtalking, 20, 40)
+	cinematic_start(KONintense, 180,180, 20, 9, 40, false)
+	sound_dialog_play c07_25_02konoko
+	sound_dialog_play_block pause
+	#subboss taunts Konoko
+	cm_interpolate HeliOutroCam03 0
+	sleep 30
+	cinematic_start(BOSS1talking, 180,180,19, 7, 25, false)
+	sound_dialog_play c07_25_03barabas
+	sound_dialog_play_block pause
+	#"KONOKO, let's get it on!!!!!"
+	cinematic_stop (BOSS1talking, 19, 40)
+	#camera of Konoko's face
+	cm_interpolate HeliCamKonFace 60
+	sound_dialog_play c07_25_04konoko
+	sound_dialog_play_block pause
+	sleep 30
+	cinematic_stop (KONintense, 19, 30)
+	#resume gameplay
+	cm_reset
+	letterbox 0
+	input 1
+	chr_neutral 1010 0
+	obj_kill 901 906
+	ai2_takecontrol 0
+	end_cutscene
+	music_battle
+	s4
+}
+
+
+func void
+final(
+void)
+{
+	music_stop
+	begin_cutscene
+	sleep 120
+	sound_dialog_play c07_26a_01konokofx
+	chr_animate 0 KONOKOpowerup
+	sleep 240
+	cinematic_start (KONtalking, 180, 180, 19, 7, 20, false)
+	sound_dialog_play c07_26_01konoko
+	sound_dialog_play_block
+	cinematic_stop (KONtalking, 19, 20)
+	fade_out 0 0 0 120
+	sleep 120
+	win
+}
+
+func void
+BarabasNorth(string barabas)
+{
+	cutscene_sync mark
+	sound_ambient_start c11_10_14bar_jet
+	playback barabus BarabasNorth
+	ai2_barabbas_retrievegun barabus
+	sleep 60
+	chr_envanim barabus BarabasNorthBox norotation
+	chr_animate barabus BARABnorth
+	sleep 105
+	#particle BarabasNorth do start
+}
+
+
+
+func void
+BarabasSouth(string barabas)
+{
+	cutscene_sync mark
+	sound_ambient_start c11_10_14bar_jet
+	playback barabus BarabasSouth
+	ai2_barabbas_retrievegun barabus
+	sleep 60
+	chr_envanim barabus BarabasSouthBox norotation
+	chr_animate barabus BARABsouth
+	sleep 105
+	#particle BarabasSouth do start
+}
+
+
+func void
+BarabasEast(string barabas)
+{
+	cutscene_sync mark
+	sound_ambient_start c11_10_14bar_jet
+	playback barabus BarabasEast
+	ai2_barabbas_retrievegun barabus
+	sleep 60
+	chr_envanim barabus BarabasEastBox norotation
+	chr_animate barabus BARABeast
+	sleep 105
+	#particle BarabasEast do start
+}
+
+
+
+func void
+BarabasWest(string barabas)
+{
+	cutscene_sync mark
+	sound_ambient_start c11_10_14bar_jet
+	playback barabus BarabasWest
+	ai2_barabbas_retrievegun barabus
+	sleep 60
+	chr_envanim barabus BarabasWestBox norotation
+	chr_animate barabus BARABwest
+	sleep 105
+	#particle BarabasWest do start
+
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_door_lock_lights.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_door_lock_lights.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_door_lock_lights.bsl	(revision 405)
@@ -0,0 +1,31 @@
+#
+# tctf_door_lock_lights.bsl
+#
+# SCRIPTS TO CHANGE THE LOCKED LIGHTS ON DOORS
+#
+# GREEN TO RED: do stop
+# RED TO GREEN: do start
+
+func void floor4_lock(void)
+{
+	music_stop
+	input 0
+	fade_out 0 0 0 30
+	cm_interpolate floor4_lock 0
+	fade_in 30
+	sleep 60
+	particle floor4_lock_locklight01 do start
+	sleep 90
+	fade_out 0 0 0 30
+	cm_reset
+	fade_in 30
+	input 1
+	target_set(60,30.0)
+	sound_dialog_play_block c00_01_28shinatama
+}
+
+func void shin_lock(void)
+{
+	particle shin_lock_locklight01 do start
+	particle roof_locklight01 do start
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_main.bsl	(revision 405)
@@ -0,0 +1,28 @@
+#
+# tctf_main.bsl
+#
+
+func void
+main(
+	void)
+{	
+
+	gl_fog_blue=0
+	gl_fog_red=0
+	gl_fog_green=0
+	gl_fog_start=.995
+	gs_farclipplane_set 5000
+	env_show 601 0
+	env_show 602 0	
+	env_show 321 0
+	env_show 322 0
+	env_show 323 0
+	env_show 324 0
+	env_show 325 0			
+	start
+	if (my_save_point eq 0)
+	{
+		Cut01
+	}
+}
+	
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_objectives.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_objectives.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_objectives.bsl	(revision 405)
@@ -0,0 +1,98 @@
+#
+# tctf_objectives.bsl
+#
+# SCRIPTS TO SET LEVEL OBJECTIVES/HINTS
+#
+func void set_objective_1(void)
+{
+	dprint set_objective_1
+	objective_set(1)
+	target_set(323,30.0)
+}
+func void set_objective_2(string ai_name)
+{
+	dprint set_objective_2
+	objective_set(2)
+	target_set(1111, 30.0)
+
+}
+func void set_objective_3(string ai_name)
+{
+	dprint set_objective_3
+	objective_set(3)
+	target_set(60,30.0)
+}
+func void set_objective_4(string ai_name)
+{
+	dprint set_objective_4
+	if(elev_count ne 1)
+	{
+		trigvolume_enable trigger_volume_81 1
+		objective_set(4)
+		particle obj1 create
+		target_set(9999, 30.0)
+	}
+}
+
+func void set_objective_5(string ai_name)
+{
+	dprint set_objective_5
+	objective_set(5)
+	target_set(58,30.0)
+}
+
+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)
+{
+	win
+}
+
+### TEXT CONSOLES ###
+
+func void level_8a(void)
+{
+	dprint text_8a
+	text_console level_8a
+	console_reset 17
+}
+
+func void level_8b(void)
+{
+	dprint text_8b
+	text_console level_8b
+	console_reset 12
+}
+
+func void level_8c(void)
+{
+	dprint text_8c
+	text_console level_8c
+	console_reset 14
+}
+
+func void level_8d(void)
+{
+	dprint text_8d
+	text_console level_8d
+	console_reset 16
+}
+
+func void level_8e(void)
+{
+	dprint text_8e
+	text_console level_8e
+	console_reset 15
+}
+
+func void level_8f(void)
+{
+	dprint text_8f
+	text_console level_8f
+	console_reset 13
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_spawn_syndicate.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_spawn_syndicate.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf/tctf_spawn_syndicate.bsl	(revision 405)
@@ -0,0 +1,1071 @@
+#
+# tctf_spawn_syndicate.bsl
+#
+# SCRIPTS TO SPAWN SYNDICATE UNITS
+#
+
+var int my_save_point=0;
+var int striker_count=0;
+var int music_counter = 0;
+var int counter = 0;
+var int elev_count=0;
+var int shut_down_t103;
+var int count_follow;
+
+# music #
+
+func void music_intro(void)
+{
+	sound_music_start mus_asianb
+}
+
+func void music_intro_stop(void)
+{
+	sound_music_stop mus_asianb
+}
+
+func void music_attack(void)
+{
+	sound_music_start mus_pursuit 0
+	sound_music_volume mus_pursuit 0.75 3.0
+#	this music stopped in floor4_lock script
+}
+
+func void music_kidnap(void)
+{
+	dprint kidnapmusic
+	sound_music_start mus_om01 0.0
+	sound_music_volume mus_om01 0.75 3.0
+#	this music stopped in ta2_54 script
+}
+
+func void music_battle(void)
+{
+	sound_music_start mus_asianb 0
+	sound_music_volume mus_asianb 2
+#	this music stopped in final script
+}
+
+func void music_stop(void)
+{
+	dprint STOP_THE_MUSIC
+	sound_music_stop mus_asianb
+	sound_music_stop mus_pursuit
+	sound_music_stop mus_om01
+#	sound_music_stop mus_asianb
+}
+
+
+###############################
+#	start and objectives   	#
+###############################
+func void start(string ai_name)
+{
+	dprint start
+
+	trig_deactivate	1	
+	trig_deactivate	2	
+	trig_deactivate	3	
+	trig_deactivate	4	
+	trig_deactivate	5
+	trig_deactivate	6
+	trig_deactivate	7
+	trig_deactivate	8
+	trig_deactivate	9
+	trig_deactivate	10
+	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	302	
+	trig_deactivate	303	
+	trig_deactivate	100
+	trig_deactivate	101	
+	trig_deactivate	500	
+	trig_deactivate	501	
+	trig_deactivate	502	
+	trig_deactivate	503	
+	trig_deactivate	400	
+	trig_deactivate	510
+	trig_deactivate 511
+	trig_deactivate	512	
+	trig_deactivate	520
+	trig_deactivate	521
+	trig_deactivate	522
+	trig_deactivate	310
+	trig_deactivate	320
+	trig_deactivate	98
+	trig_deactivate	99
+	trigvolume_enable trigger_volume_81 0
+	trigvolume_enable z_40t 0
+	trigvolume_enable zz_40t 0
+	trigvolume_enable zzz_40t 0
+	trigvolume_enable zzzz_40t 0
+	trigvolume_enable tv_61t 0
+
+	if (save_point eq 0)
+	{
+		my_save_point=0;	
+		set_objective_1
+		particle security_locklight01 do start
+		particle smoke start
+	}
+
+	if (save_point eq 1)
+	{
+		my_save_point=1;	
+		dprint restore1
+		set_objective_1
+		particle smoke start
+		particle security_locklight01 do start
+		env_show 398 0
+		#turn off unbroken curtain wall
+		env_show 98 0
+		#turn on broken curtain wall
+		env_show 99 1
+		#show gunk van 
+		env_show 101 1 
+		env_show 103 1
+		env_show 104 1
+		env_show 105 1
+		env_show 106 1
+		env_show 107 1
+		env_show 108 1
+		env_show 444 1
+		env_show 97 0
+		#show gunk motorcycle
+		env_show 110 1
+		env_show 111 1
+		env_show 112 1
+		#show door gunk
+		env_show 321 1
+		env_show 322 1
+		env_show 323 1
+		env_show 324 1
+		env_show 325 1
+		env_shade 321 325 .3 .3 .3
+		ai2_spawn lobby_striker_01
+		ai2_spawn lobby_striker_02
+		ai2_spawn lobby_striker_03
+		music_intro
+		restore_game
+		sleep 7
+		sound_dialog_play c07_22_01konoko
+		particle LobbyWall do explode
+	}
+
+	if (save_point eq 2)
+		{
+		my_save_point=2;	
+		dprint restore2
+		set_objective_3
+		trigvolume_enable tv_58t 0
+		door_lock 41
+		chr_delete lobby_victim
+		trigvolume_enable trigger_volume_80 0
+		music_kidnap
+		restore_game
+		}
+
+	if (save_point eq 3)
+	{
+		my_save_point=3;	
+		dprint restore3
+		trigvolume_enable t86 0
+		set_objective_5
+		trigvolume_enable tsh_55t 0
+		#Hide elevator gunk 
+		env_show 501 0 
+		env_show 502 0 
+		env_show 503 0 
+		env_show 504 0 
+		#Show new elevator gunk 
+		env_show 601 1 
+		env_show 602 1 
+		fork tsh_55
+		restore_game
+		trigvolume_enable tv_58t 0
+	}
+
+	if (save_point eq 4)
+		{
+		my_save_point=4;	
+		dprint restore4
+		set_objective_5
+		trigvolume_enable tsh_60t 0
+		trigvolume_enable tr_66t 0
+		trigvolume_enable tr_67t 0
+		trigvolume_enable tr_65t 0
+		trigvolume_enable tr_64t 0
+		ai2_spawn barabus
+		chr_boss_shield barabus
+		target_set(1,0.0)
+		restore_game
+		}
+
+}
+
+func void striker_spawn(string ai_name)
+{
+	dprint striker_spawn
+	striker_count =  striker_count + 1
+}
+
+func void striker_die(string ai_name)
+{
+	dprint striker_die
+	striker_count =  striker_count - 1
+}
+
+#########################
+#	trigger volumes	#
+#########################
+
+func void t102(string ai_name)
+{
+	ai2_spawn mbo_sniper
+	ai2_spawn mbo_target
+}
+
+func void t103(string ai_name)
+{
+	dprint t103
+	trigvolume_enable trigger_volume_103 0
+	sleep 7
+	if(elev_count ne 1)
+	{
+		if (chr_has_lsi(0))
+		{
+			trigvolume_enable trigger_volume_81 1
+			objective_set(4)
+			particle obj1 create
+			target_set(9999, 30.0)
+			shut_down_t103 = 1;
+		}
+	}
+	if(shut_down_t103 eq 0)
+	{
+		sleep 60
+		trigvolume_enable trigger_volume_103 1
+	}
+}
+
+func void spawnL2_4(string ai_name)
+{
+	dprint spawnL2_4
+	ai2_spawn lobby_striker_04
+	playback lobby_striker_04 lobbystriker_roll
+	trigvolume_enable u_36t 0
+	
+}
+
+func void spawnL1_6(string ai_name)
+{
+	dprint spawnL1_6
+	ai2_spawn lobby_striker_06
+	trigvolume_enable tv_50t 0
+
+}
+
+func void spawnG2_7(string ai_name)
+{
+	dprint spawnG2_7
+	ai2_spawn garage_striker_01
+	ai2_spawn garage_striker_02
+	
+}
+
+func void spawnG3_8(string ai_name)
+{
+	dprint spawnG3_8
+	if (striker_count eq 0)
+	{
+		ai2_spawn garage_striker_03
+		ai2_makeignoreplayer garage_striker_03 1
+		ai2_spawn garage_striker_04
+		ai2_spawn garage_striker_05
+		playback_block garage_striker_03 garage_jump
+		ai2_makeignoreplayer garage_striker_03 0
+	}
+	if (striker_count ne 0)
+	{
+		ai2_spawn garage_striker_03
+		ai2_makeignoreplayer garage_striker_03 1
+		playback_block garage_striker_03 garage_jump
+		ai2_makeignoreplayer garage_striker_03 0
+	}
+}
+
+func void spawnG3_11(string ai_name)
+{
+	dprint spawnG3_11
+	ai2_spawn garage_striker_07
+	ai2_passive garage_striker_07 1
+	ai2_spawn garage_striker_08
+	playback garage_striker_07 garage_taunt
+	ai2_passive garage_striker_07 0
+
+}
+
+func void spawnG3_12(string ai_name)
+{
+	dprint spawnG3_12
+	
+	if (striker_count eq 0)
+	{
+		ai2_spawn garage_striker_09
+		ai2_spawn garage_striker_10
+	}
+	if (striker_count ne 0)
+	{
+		ai2_spawn garage_striker_09
+	}
+}
+
+func void killG2_08(string ai_name)
+{
+	dprint killG2_08
+	trigvolume_enable trigger_volume_G2_08 0 
+	
+}
+
+func void killG2_10(string ai_name)
+{
+	dprint killG2_10
+	trigvolume_enable trigger_volume_G2_10 0 
+	
+}
+
+func void killG3_11(string ai_name)
+{
+	dprint killG3_11
+	trigvolume_enable trigger_volume_G3_11 0 
+	
+}
+
+func void killG3_12(string ai_name)
+{
+	dprint killG3_12
+	trigvolume_enable trigger_volume_G3_12 0 
+	
+}
+
+func void a_18(string ai_name)
+{
+	dprint a_18
+	trigvolume_enable b_19t 0 
+	trigvolume_enable c_13t 0 
+
+}
+
+func void b_19(string ai_name)
+{
+	dprint b_19
+	ai2_spawn lobby_striker_30
+	ai2_spawn lobby_striker_31
+	playback lobby_striker_31 lobby_roll2
+#	ai2_spawn lobby_striker_33
+#	ai2_spawn lobby_tctf_02
+	trigvolume_enable d_20t 0
+}
+
+func void c_13(string ai_name)
+{
+	dprint c_13
+	ai2_spawn lobby_striker_20
+	ai2_spawn lobby_striker_21
+	ai2_spawn lobby_fodder01
+	ai2_spawn lobby_striker_05
+	trigvolume_enable vv_38t 0
+	trigvolume_enable a_18t 0
+	music_stop
+}
+
+func void d_20(string ai_name)
+{
+	dprint d_20
+	ai2_spawn l2_s46
+	ai2_spawn l2_s44
+	playback_block l2_s44 lobby_roll3
+
+}
+
+func void e_21(string ai_name)
+{
+	dprint e_21
+	ai2_spawn lobby_striker_34
+	ai2_spawn lobby_victim05
+	ai2_spawn lobby_victim06
+	trigvolume_enable l_27t 0
+}
+
+func void f_22(string ai_name)
+{
+	dprint f_22
+	ai2_spawn lobby_striker_05
+	trigvolume_enable vv_38t 0
+	ai2_spawn lobby_striker_20
+	ai2_spawn lobby_fodder01
+	ai2_spawn lobby_striker_21
+
+}
+
+func void g_23(string ai_name)
+{
+	dprint g_23
+	ai2_spawn L2s_01
+	ai2_spawn L2s_02
+	ai2_spawn L2s_03
+	ai2_spawn L2tctf_01
+	ai2_spawn L2tctf_02
+	music_stop
+	trigvolume_enable trigger_volume_w_39 0
+
+}
+
+func void h_06(string ai_name)
+{
+	dprint h_06
+	ai2_spawn L2s_10
+	ai2_spawn Ls_15
+	ai2_spawn Ltctf_55
+	ai2_dopath L2tctf_01 patrol_L2_13
+	ai2_dopath L2tctf_02 patrol_L2_13
+
+}
+
+func void i_24(string ai_name)
+{
+	dprint i_24
+	trigvolume_enable j_25t 0
+	trigvolume_enable h_06t 0
+
+}
+
+func void j_25(string ai_name)
+{
+	dprint j_25
+	ai2_spawn L2s_11
+
+}
+
+func void k_26(string ai_name)
+{
+	dprint k_26
+	trigvolume_enable l_27t 1
+
+}
+
+func void l_27(string ai_name)
+{
+	dprint l_27
+	ai2_spawn L3s_40
+	ai2_spawn L3s_41
+#	ai2_spawn L3s_42
+
+}
+
+func void m_28(string ai_name)
+{
+	dprint m_28
+	ai2_spawn Lv_40
+	ai2_spawn Lv_41
+	ai2_spawn Lc_43
+	ai2_spawn Ls_44
+	trigvolume_enable s_34t 1
+
+}
+
+func void n_29(string ai_name)
+{
+	dprint n_29
+	ai2_spawn Lc_50
+	ai2_spawn Ls_51
+	ai2_spawn Ls_12
+
+}
+
+func void o_30(string ai_name)
+{
+	dprint o_30
+	ai2_spawn Ls_60
+	ai2_spawn a_v2
+	
+}
+
+func void p_31(string ai_name)
+{
+	dprint p_31
+	trigvolume_enable trigger_volume_L2_4 1
+
+}
+
+func void s_34(string ai_name)
+{
+	dprint s_34
+	ai2_spawn Lcom_01
+
+}
+
+func void t_35(string ai_name)
+{
+	dprint t_35
+	trigvolume_enable s_34t 0
+
+}
+
+func void u_36(string ai_name)
+{
+	dprint u_36
+	ai2_spawn cat1_02
+	trigvolume_enable trigger_volume_L2_4 0
+}
+
+func void v_37(string ai_name)
+{
+	dprint v_37
+	ai2_spawn cat1_01
+	trigvolume_enable vv_38t 0
+	
+}
+
+func void t98(string ai_name)
+{
+	dprint t98
+	ai2_spawn a_v4
+}
+
+func void vv_38(string ai_name)
+{
+	dprint vv_38
+	ai2_spawn lobby_striker_05
+	ai2_spawn lobby_striker_20
+	ai2_spawn lobby_striker_21
+	ai2_spawn lobby_fodder01
+	trigvolume_enable v_37t 0
+
+}
+
+func void w_39(string ai_name)
+{
+	dprint w_39
+	ai2_spawn s2_t01
+	ai2_spawn s2_t02
+	ai2_spawn s2_s01
+	ai2_spawn s2_s02
+	ai2_spawn s2_s03
+#	ai2_spawn s2_c01
+	ai2_spawn s2_s05
+	ai2_spawn s2_t05
+	trigvolume_enable g_23t 0
+
+}
+
+func void x_05(string ai_name)
+{
+	dprint x_05
+	ai2_spawn l_c01
+	ai2_lookatme l_c01
+	ai2_passive l_c01 1
+	playback l_c01 lobby_runout
+	ai2_passive l_c01 0
+	trigvolume_enable trigger_volume_L1_6_9 0
+
+}
+
+func void y_32(string ai_name)
+{
+	dprint y_32
+	ai2_spawn l_t01
+	playback l_t01 lobby_backroll
+	sleep 15
+	ai2_spawn l_s02
+	ai2_spawn l_s03
+	trigvolume_enable tv_47t 0
+
+}
+
+func void unlock_follow(void)
+{
+	dprint unlockfollow
+	count_follow = count_follow + 1;
+	if(count_follow eq 2)
+	{
+		trigvolume_enable z_40t 1
+		trigvolume_enable zz_40t 1
+		trigvolume_enable zzz_40t 1
+		trigvolume_enable zzzz_40t 1
+		trigvolume_enable tv_61t 1
+	}
+}
+
+func void patrolscript2222(void)
+{
+	dprint lookatplayer
+	ai2_lookatchar l_t01 char_0
+	ai2_lookatchar l_t23 char_0
+}
+	
+func void z01(string ai_name)
+{
+	dprint z01
+
+	ai2_dopath l_t01 l_t01_01
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_04
+	ai2_setjobstate l_t23
+
+}
+
+func void z02(string ai_name)
+{
+	dprint z02
+	ai2_dopath l_t01 l_t01_04
+	ai2_setjobstate l_t01
+	
+	ai2_dopath l_t23 l_t23_02
+	ai2_setjobstate l_t23
+}
+
+func void z03(string ai_name)
+{
+	dprint z03
+	ai2_dopath l_t01 l_t01_05
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_01
+	ai2_setjobstate l_t23
+}
+
+func void z04(string ai_name)
+{
+	dprint z04	
+	ai2_dopath l_t01 l_t01_06
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_06
+	ai2_setjobstate l_t23
+}
+
+func void z05(string ai_name)
+{
+	dprint z05
+	ai2_dopath l_t01 l_t01_07
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_07
+	ai2_setjobstate l_t23
+}
+
+func void z06(string ai_name)
+{
+	dprint z06
+	ai2_dopath l_t01 l_t01_08
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_08
+	ai2_setjobstate l_t23
+}
+
+func void z_40(string ai_name)
+{
+	dprint z_40
+	ai2_followme l_t01
+	ai2_lookatme l_t01
+	ai2_followme l_t23
+	ai2_lookatme l_t23
+	ai2_followme s2_t05
+	ai2_lookatme s2_t05
+	ai2_followme s2_t02
+	ai2_lookatme s2_t02
+	ai2_followme s2_t01
+	ai2_lookatme s2_t01
+	ai2_followme L2tctf_02
+	ai2_lookatme L2tctf_02
+	ai2_followme L2tctf_01
+	ai2_lookatme L2tctf_01
+	ai2_followme Lc_43
+	ai2_lookatme Lc_43
+
+}
+
+func void tv_44(string ai_name)
+{
+	dprint tv_44
+	ai2_spawn l_c10
+	ai2_dopath l_t01 l_t01_02
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_03
+	ai2_setjobstate l_t23
+}
+
+func void tv_45(string ai_name)
+{
+	dprint tv_45
+	ai2_spawn a_v1
+	ai2_spawn l_s22
+	ai2_spawn l_s23
+	ai2_dopath l_t01 l_t01_03
+	ai2_setjobstate l_t01
+
+	ai2_dopath l_t23 l_t23_05
+	ai2_setjobstate l_t23
+
+}
+
+func void tv_46(string ai_name)
+{
+	dprint tv_46
+	ai2_spawn l_s24
+	ai2_spawn l_t23
+	trigvolume_enable tv_47t 1
+	ai2_dopath l_t01 l_t01_06
+	ai2_setjobstate l_t01
+}
+
+func void tv_47(string ai_name)
+{
+	dprint tv_47
+	ai2_spawn l_s27
+
+}
+
+func void tv_48(string ai_name)
+{
+	dprint tv_48
+	ai2_spawn l2_s46
+
+}
+
+func void tv_49(string ai_name)
+{
+	dprint tv_49
+	ai2_spawn l2_s47
+
+}
+
+func void tv_50(string ai_name)
+{
+	dprint tv_50
+	ai2_spawn l_s99
+	ai2_spawn l_s98
+	music_stop
+
+}
+
+func void tv_51(string ai_name)
+{
+	dprint tv_51
+	ai2_spawn l4_red1
+	ai2_spawn l4_t1
+	ai2_spawn l4_s1
+	ai2_spawn l4_s67
+	ai2_spawn l4_t2
+	ai2_spawn l4_s2
+	ai2_spawn l4_s3	
+	ai2_spawn l4_f1
+	ai2_spawn l4_f2
+	ai2_spawn l4_f3
+	ai2_kill l4_f1
+	ai2_kill l4_f2
+	ai2_kill l4_f3
+	ai2_spawn l4_c66
+	ai2_kill l4_c66
+	
+}
+
+func void tv_52(string ai_name)
+{
+	dprint tv_52
+	particle smoke stop
+	ai2_spawn a_t03
+	ai2_passive a_t03 1
+	playback a_t03 atrium_run
+	sleep 7
+	ai2_spawn a_t06
+	sleep 7
+	ai2_spawn a_s02
+	sleep 7
+	ai2_spawn a_s03
+	sleep 7
+	ai2_spawn a_red1
+	ai2_passive a_t03 0
+	chr_set_health a_t05 900
+	chr_set_health a_t06 900
+	chr_set_health a_s02 900
+	chr_set_health a_s03 900
+}
+func void new_atrium(string ai_name)
+{
+	ai2_spawn a_s07
+	ai2_spawn a_s05
+	ai2_spawn a_v3
+}
+
+func void ta_53(string ai_name)
+{
+	dprint ta_53
+	ai2_spawn a_t05
+	ai2_dopath a_s03 patrol_7043
+	ai2_setjobstate a_s03
+	ai2_dopath a_s02 patrol_7030
+	ai2_setjobstate a_s02
+	ai2_dopath a_t06 patrol_7034
+	ai2_setjobstate a_t06
+	ai2_dopath a_t05 patrol_7042
+	ai2_setjobstate a_t05
+	chr_set_health a_t05 40
+	chr_set_health a_t06 30
+	chr_set_health a_s02 80
+	chr_set_health a_s03 80
+	sleep 2000
+	dprint no_more_tctf
+	counter = 100
+
+}
+
+func void ta_53b(string ai_name)
+{
+	dprint ta_53b
+	chr_set_health a_t05 80
+	chr_set_health a_t06 60
+	chr_set_health a_s02 70
+	chr_set_health a_s03 80
+}
+
+func void ta2_54(string ai_name)
+{
+	dprint ta2_54
+	ai2_spawn a2_t1
+	ai2_spawn a2_red1
+	ai2_spawn LSI
+	chr_invincible LSI 1
+	sleep 240
+	music_stop
+}
+
+func void tsh_55(string ai_name)
+{
+	dprint tsh_55
+	ai2_spawn sh_tank1
+	ai2_spawn sh_red1
+	ai2_spawn sh_s3
+	ai2_spawn sh_s4
+	ai2_spawn sh_s4b
+	set_objective_5
+	sleep 120
+	ai2_attack sh_s3 char_0
+}
+
+func void t62(string ai_name)
+{
+	dprint t62
+	ai2_spawn sh_s1
+	ai2_spawn sh_s2
+	ai2_spawn sh_s6
+}
+
+func void femcop_holster(string ai_name)
+{
+	dprint holstergun
+	chr_forceholster Lc_43 1
+}
+
+func void t72(string ai_name)
+{
+	dprint t72
+	ai2_spawn sh_com1
+	ai2_spawn sh_tank2
+	ai2_spawn sh_s9
+}
+
+func void tv57(string ai_name)
+{
+	dprint tv57
+	Attack
+	target_set(59,30.0)
+}
+
+func void goAttack(string ai_name)
+{
+	music_intro_stop
+
+	dprint goAttack
+	trigvolume_enable tv_57t 1
+	input 0
+	fade_out 0 0 0 30
+	chr_delete l_c01
+	chr_delete lobby_striker_01
+	chr_delete lobby_striker_02
+	chr_delete garage_striker_01
+	chr_delete garage_striker_02
+	chr_delete garage_striker_03
+	chr_delete garage_striker_04
+	chr_delete garage_striker_05
+	chr_delete garage_striker_06
+	chr_delete garage_striker_07
+	chr_delete garage_striker_08
+	chr_delete garage_striker_09
+	chr_delete garage_striker_10
+	chr_delete l_s98
+	chr_delete l_s99	
+	cm_interpolate stair_lock 0
+	fade_in 30
+	sleep 60
+	particle stair_lock_locklight01 do start
+	sleep 90
+	fade_out 0 0 0 30
+	cm_reset
+	fade_in 30
+	input 1
+	set_objective_2
+	ai2_spawn tanker_stairdoor
+	sound_dialog_play c00_01_27shinatama
+}
+
+func void tsh_60(string ai_name)
+{
+	dprint tsh_60
+	ai2_spawn sh_s12
+	ai2_spawn sh_s12b
+	helicopter
+}
+
+func void ta_62(string ai_name)
+{
+	dprint ta_62
+	if (chr_has_lsi(0))
+	{	
+		trigvolume_enable trigger_volume_81 0
+		particle obj1 kill
+		ai2_kill
+		elev_count = 1;
+		sleep 10
+		Elevator
+	}
+}
+
+func void tv_58(string ai_name)
+{
+	dprint tv_58
+	door_lock 41
+	particle security_locklight01 do stop
+	ai2_kill
+	Kidnap
+	set_objective_3
+	s2
+}
+
+func void tv_68(string ai_name)
+{
+	dprint tv_68
+	ai2_spawn b_victim
+}
+
+func void tr_64(string ai_name)
+{
+	dprint tr_64
+	target_set(58,0.0)
+	HeliOutroRight
+	trigvolume_enable tr_65t 0
+	trigvolume_enable tr_66t 0
+	trigvolume_enable tr_67t 0
+
+}
+
+func void tr_65(string ai_name)
+{
+	dprint tr_65
+	target_set(58,0.0)
+	HeliOutroLeft
+	trigvolume_enable tr_64t 0
+	trigvolume_enable tr_66t 0
+	trigvolume_enable tr_67t 0
+
+}
+
+func void tr_66(string ai_name)
+{
+	dprint tr_66
+	target_set(58,0.0)
+	HeliOutroMid
+	trigvolume_enable tr_65t 0
+	trigvolume_enable tr_64t 0
+	trigvolume_enable tr_67t 0
+
+}
+
+func void tr_67(string ai_name)
+{
+	dprint tr_67
+	target_set(58,0.0)
+	HeliOutroMidLt
+	trigvolume_enable tr_65t 0
+	trigvolume_enable tr_66t 0
+	trigvolume_enable tr_64t 0
+
+}
+
+func void t100(string ai_name)
+{
+	dprint t100
+	ai2_spawn roof_tctf1
+	ai2_spawn sh_s12c
+}
+#####################
+#	save scripts  #
+#####################
+
+func void s1(string ai_name)
+{
+	dprint SAVEDGAME	
+	save_game 1 autosave
+}
+
+func void s2(string ai_name)
+{
+	dprint SAVEDGAME	
+	save_game 2 autosave
+}
+
+func void s3(string ai_name)
+{
+	dprint SAVEDGAME	
+	save_game 3 autosave
+}
+
+func void s4(string ai_name)
+{
+	dprint SAVEDGAME	
+	save_game 4 autosave
+}
+
+func void check_death(string ai_name)
+{
+	dprint check_death
+	counter = counter - 1
+	if (trigvolume_count(99) eq 0)
+	{	
+		if(counter eq 0)
+		{
+			sleep 210
+			ai2_spawn a_t99
+		}
+	}
+}
+
+func void spawn(string ai_name)
+{
+	dprint spawn	
+	counter = counter + 1
+}
Index: /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf2.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf2.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf2.bsl	(revision 405)
@@ -0,0 +1,2024 @@
+#	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 start(string ai_name)
+{
+	dprint start
+	trig_deactivate	1	
+	trig_deactivate	2	
+	trig_deactivate	3	
+	trig_deactivate	4	
+	trig_deactivate	5
+	trig_deactivate	6
+	trig_deactivate	7
+	trig_deactivate	8
+	trig_deactivate	9
+	trig_deactivate 91
+	trig_deactivate 92
+	trig_deactivate 93
+	trig_deactivate	98
+	trig_deactivate	99
+	trig_deactivate	10
+	trig_deactivate	302	
+	trig_deactivate	303	
+	trig_deactivate	315
+	trig_deactivate	320	
+	trig_deactivate	100
+	trig_deactivate	101	
+	trig_deactivate	500	
+	trig_deactivate	501	
+	trig_deactivate	502	
+	trig_deactivate	503	
+	trig_deactivate	400		
+	trig_deactivate	510
+	trig_deactivate 511
+	trig_deactivate	512	
+	trig_deactivate	520
+	trig_deactivate	521
+	trig_deactivate	522
+	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
+
+	# incidental zombie shinatama dialog
+	trigvolume_enable shinzom_voice1 0
+	trigvolume_enable shinzom_voice2 0
+	trigvolume_enable shinzom_voice3 0
+	trigvolume_enable shinzom_voice4 0
+
+	particle griffin_locklight01 do start
+	particle door42_locklight01 do start
+	particle stair_lock_locklight01 do start
+	particle roof_doors_locklight01 do start
+	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;
+
+	if (my_save_point eq 0)
+	{
+		objective_set(1)
+		target_set(590,30.0)
+
+		Intro	
+		spawnA
+	}
+
+	if (my_save_point eq 1)
+	{
+		dprint restore1
+		objective_set(1)
+		env_show 403 0 
+		target_set(590,30.0)
+		spawnA
+		music_intro
+		restore_game
+	}
+
+	if (my_save_point eq 2)
+	{
+		dprint restore2
+		objective_set(2)
+		target_set(593,30.0)
+		trigvolume_enable trigger_volume_06 0
+		ai2_spawn B_S22
+
+		particle shin_lock_locklight01 do start
+		door_unlock 48
+		door_unlock 14
+		trig_activate	6
+		trig_activate	7
+		trig_activate	99
+		trig_activate	98
+		restore_game
+	}
+
+	if (my_save_point eq 3)
+	{
+		dprint restore3
+		particle shin_lock_locklight01 do stop
+		door_lock 14
+		objective_set(2)
+		trigvolume_enable trigger_volume_46 0
+		trigvolume_enable trigger_volume_47 0
+		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
+		target_set(587,30.0)
+		restore_game
+		spine1
+		sleep 7
+		spine2
+		sleep 7
+		spine3
+	}
+
+	if (my_save_point eq 4)
+	{
+		dprint restore4
+		objective_set(3)
+		target_set(596,30.0)
+		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
+		door_lock 42
+		particle door42_locklight01 do stop
+		ai2_spawn D_N74
+		restore_game
+	}
+
+	if (my_save_point eq 5)
+	{
+		dprint restore5
+		objective_set(4)
+		trigvolume_enable trigger_volume_42 0
+		trigvolume_enable trigger_volume_35 0
+		particle ZomShin_door_locklight01 do stop
+		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
+		trigvolume_enable t9 0
+
+		create_zomshin
+		playback ZomShin BaseShin
+
+		restore_game
+
+		zombie_round_2
+	#	chr_teleport 0 589
+	}
+}
+
+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 t9(string ai_name)
+{
+	dprint t9_spawning_griffin
+#	ai2_spawn ZomGrif
+	GrifSpawn
+	target_set (1,0.0)
+}
+
+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 t33(string ai_name)
+{
+	dprint t33_active
+	door_lock 97
+	particle lastdoor1_locklight01 do stop
+	particle lastdoor2_locklight01 do stop
+	particle lastdoor3_locklight01 do stop
+	#play doorsound
+}
+
+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
+	trig_activate	1	
+	trig_activate	2	
+	trig_activate	3	
+	trig_activate	4	
+	trig_activate	5
+	trig_activate	8		
+	trig_activate	303	
+	trig_activate	100
+	trig_activate	101	
+	trig_activate	500	
+	trig_activate	400	
+	trig_activate	503
+	trig_activate	502
+	trig_activate	501
+	trig_activate	510
+	trig_activate 	511
+	trig_activate	512	
+	trig_activate	520
+	trig_activate	521
+	trig_activate	522
+	trig_activate	320
+	trig_activate	315
+	trig_activate	302	
+	music_atrium	
+}
+################ begin #################
+########## okita's modification ########
+########################################
+func void spine1(void)
+{
+	dprint spine1_start
+
+	if (sub1 eq 0)
+	{
+		particle spine1 start
+		particle spinesound1 start
+	}
+}
+
+func void spine2(void)
+{
+	dprint spine2_start
+
+	if (sub2 eq 0)
+	{
+		particle spine2 start
+		particle spinesound2 start
+	}
+}
+
+func void spine3(void)
+{
+	dprint spine3_start
+
+	if (sub3 eq 0)
+	{
+		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 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 floor4_lock(string ai_name)
+{
+	particle floor4_lock_locklight01 do start
+	trigvolume_enable trigger_volume_39 1
+
+}
+
+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 powersub1(string ai_name)
+{
+	dprint powersub1_active
+	sub1 = 1;
+	particle spine1 stop
+	particle spinesound1 stop
+
+	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 stop
+	particle spinesound2 stop
+	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 stop
+	particle spinesound3 stop
+	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 power_down
+		trigvolume_enable trigger_volume_36 1
+		trigvolume_enable trigger_volume_41 1
+		input 0
+		fade_out 0 0 0 30
+		cm_interpolate substation 0
+		fade_in 30
+	#	sleep 180
+		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	
+		door_unlock	16
+		particle ZomShin_door_locklight do start
+		sleep 120
+		fade_out 0 0 0 240
+		cm_reset
+		input 1
+		target_set(403, 30.0)
+		fade_in 30
+		music_stop
+		objective_set(3)
+	}
+}
+
+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_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_cutscene.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_cutscene.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_cutscene.bsl	(revision 405)
@@ -0,0 +1,419 @@
+#
+# 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_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_main.bsl
===================================================================
--- /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_main.bsl	(revision 405)
+++ /AE/packages_bak/VanillaBSL/IGMD/tctf_ii/tctf_ii_main.bsl	(revision 405)
@@ -0,0 +1,49 @@
+#
+# 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
+	#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
+}
