diff -uwrN source/scripts/DBIKScripts.cpp sourceold/scripts/DBIKScripts.cpp
--- source/scripts/DBIKScripts.cpp	2016-11-19 11:05:09.562453500 +1000
+++ sourceold/scripts/DBIKScripts.cpp	2016-11-05 18:51:15.478826100 +1000
@@ -279,7 +279,7 @@
 	GameObject* WeaponObj = Commands->Create_Object(Preset, WeaponPos);
 	if (WeaponObj) {
 		WeaponID = Commands->Get_ID(WeaponObj);
-		Attach_Script_Once_V(WeaponObj, "dblaney_Nod_Obelisk_Weapon", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
+		Attach_Script_Once_V(WeaponObj, "Obelisk_Buildable_Weapon_CnC", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
 		//Commands->Attach_Script(WeaponObj, "Obelisk_Weapon_CnC", "");
 	}
 	*/
@@ -330,7 +330,7 @@
 
 					if (WeaponObj) {
 						WeaponID = Commands->Get_ID(WeaponObj);
-						Attach_Script_Once_V(WeaponObj, "dblaney_Nod_Obelisk_Weapon", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
+						Attach_Script_Once_V(WeaponObj, "Obelisk_Buildable_Weapon_CnC", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
 						//Commands->Attach_Script(WeaponObj, "Obelisk_Weapon_CnC", "");
 					}
 				}
@@ -367,11 +367,11 @@
 	MaxRange = Get_Float_Parameter("MaxRange");
 	ChargeTime = Get_Float_Parameter("ChargeTime");
 	GroundOnly = Get_Int_Parameter("GroundOnly");
-	/*dblaney_Nod_Obelisk_Weapon
+	/*
 	GameObject* WeaponObj = Commands->Create_Object(Preset, WeaponPos);
 	if (WeaponObj) {
 		WeaponID = Commands->Get_ID(WeaponObj);
-		Attach_Script_Once_V(WeaponObj, "dblaney_Nod_Obelisk_Weapon", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
+		Attach_Script_Once_V(WeaponObj, "Obelisk_Buildable_Weapon_CnC", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
 		//Commands->Attach_Script(WeaponObj, "Obelisk_Weapon_CnC", "");
 	}
 	*/
@@ -421,7 +421,7 @@
 
 					if (WeaponObj) {
 						WeaponID = Commands->Get_ID(WeaponObj);
-						Attach_Script_Once_V(WeaponObj, "dblaney_Nod_Obelisk_Weapon", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
+						Attach_Script_Once_V(WeaponObj, "Obelisk_Buildable_Weapon_CnC", "%f,%f,%i", MaxRange, ChargeTime, GroundOnly);
 						//Commands->Attach_Script(WeaponObj, "Obelisk_Weapon_CnC", "");
 					}
 				}
@@ -443,7 +443,7 @@
 
 ScriptRegistrant<dblaney_Nod_Obelisk_Structure> dblaney_Nod_Obelisk_Structure_Registrant("dblaney_Nod_Obelisk_Structure", "ObeliskEmitterPreset=Nod_Obelisk:string,MaxRange=150:float,ChargeTime=2:float,GroundOnly=0:int,OffsetHeight=22:float");
 
-void dblaney_Nod_Obelisk_Weapon::Created(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::Created(GameObject* WeaponObj) {
 	// Some settings
 	Commands->Set_Is_Rendered(WeaponObj, false); // It's not visible
 	Commands->Set_Player_Type(WeaponObj, 0); // We're a Nod Obelisk, GDI will not own an Obelisk
@@ -461,11 +461,11 @@
 	EffectID = NULL;
 }
 
-void dblaney_Nod_Obelisk_Weapon::Destroyed(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::Destroyed(GameObject* WeaponObj) {
 	StopFiring(WeaponObj);
 }
 
-bool dblaney_Nod_Obelisk_Weapon::IsValidEnemy(GameObject* WeaponObj, GameObject* EnemyObj) {
+bool Obelisk_Buildable_Weapon_CnC::IsValidEnemy(GameObject* WeaponObj, GameObject* EnemyObj) {
 	if (!EnemyObj) return false;
 	// TODO: Make switch for obby kills neutral?
 	// NEUTRAL:  if (Commands->Get_Player_Type(EnemyObj) == Commands->Get_Player_Type(WeaponObj)) return false;
@@ -489,7 +489,7 @@
 	return DistanceXY > 15 && Distance < MaxRange;
 }
 
-void dblaney_Nod_Obelisk_Weapon::StartFiring(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::StartFiring(GameObject* WeaponObj) {
 	// Start effect
 	StartEffect(WeaponObj);
 
@@ -501,7 +501,7 @@
 	Firing = true;
 }
 
-void dblaney_Nod_Obelisk_Weapon::StopFiring(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::StopFiring(GameObject* WeaponObj) {
 	// Stop effect
 	StopEffect(WeaponObj);
 
@@ -514,7 +514,7 @@
 	StopFireAt(WeaponObj);
 }
 
-void dblaney_Nod_Obelisk_Weapon::StartEffect(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::StartEffect(GameObject* WeaponObj) {
 	Commands->Create_Sound("Obelisk_Warm_Up", Commands->Get_Position(WeaponObj), WeaponObj);
 
 	GameObject* EffectObj = Commands->Create_Object("Obelisk Effect", Commands->Get_Position(WeaponObj));
@@ -522,14 +522,14 @@
 		EffectID = Commands->Get_ID(EffectObj);
 	}
 }
-void dblaney_Nod_Obelisk_Weapon::StopEffect(GameObject* WeaponObj) {
+void Obelisk_Buildable_Weapon_CnC::StopEffect(GameObject* WeaponObj) {
 	GameObject* EffectObj = Commands->Find_Object(EffectID);
 	if (EffectObj) {
 		Commands->Destroy_Object(EffectObj);
 	}
 }
 
-void dblaney_Nod_Obelisk_Weapon::FireAt(GameObject* WeaponObj, GameObject* EnemyObj)
+void Obelisk_Buildable_Weapon_CnC::FireAt(GameObject* WeaponObj, GameObject* EnemyObj)
 {
 	Vector3 pos;
 	if(EnemyObj->As_SoldierGameObj())
@@ -551,7 +551,7 @@
 	Commands->Start_Timer(WeaponObj, this, 1, 3);
 }
 
-void dblaney_Nod_Obelisk_Weapon::FaceEnemy(GameObject* WeaponObj, GameObject* EnemyObj)
+void Obelisk_Buildable_Weapon_CnC::FaceEnemy(GameObject* WeaponObj, GameObject* EnemyObj)
 {
 	ActionParamsStruct FaceParams;
 	FaceParams.Set_Basic(this, 90, 0);
@@ -559,12 +559,12 @@
 	Commands->Action_Attack(WeaponObj, FaceParams);
 }
 
-void dblaney_Nod_Obelisk_Weapon::StopFireAt(GameObject* WeaponObj)
+void Obelisk_Buildable_Weapon_CnC::StopFireAt(GameObject* WeaponObj)
 {
 	Commands->Action_Reset(WeaponObj, 100);
 }
 
-void dblaney_Nod_Obelisk_Weapon::Timer_Expired(GameObject* WeaponObj, int Number) {
+void Obelisk_Buildable_Weapon_CnC::Timer_Expired(GameObject* WeaponObj, int Number) {
 	if (Number == 1) {
 		// Charged; Set variable and try to fire
 		Charged = true;
@@ -635,7 +635,7 @@
 	}
 }
 
-void dblaney_Nod_Obelisk_Weapon::Enemy_Seen(GameObject* WeaponObj, GameObject* EnemyObj) {
+void Obelisk_Buildable_Weapon_CnC::Enemy_Seen(GameObject* WeaponObj, GameObject* EnemyObj) {
 
 	if (GroundOnly == 1)
 		if (Is_VTOL(EnemyObj))
@@ -667,14 +667,13 @@
 		StartFiring(WeaponObj);
 	}
 }
-void dblaney_Nod_Obelisk_Weapon::Register_Auto_Save_Variables() {
+void Obelisk_Buildable_Weapon_CnC::Register_Auto_Save_Variables() {
 	Auto_Save_Variable(&EnemyID, 4, 1);
 	Auto_Save_Variable(&EffectID, 4, 1);
 	Auto_Save_Variable(&Firing, 1, 3);
 	Auto_Save_Variable(&Charged, 1, 4);
 }
 
-ScriptRegistrant<dblaney_Nod_Obelisk_Weapon> dblaney_Nod_Obelisk_Weapon_Registrant("dblaney_Nod_Obelisk_Weapon", "MaxRange=150:float,ChargeTime=2:float,GroundOnly=0:int,Team=0:int");
 
 void DB_Power_Down_Console::Created(GameObject *obj)
 {
@@ -884,176 +883,3 @@
 
 ScriptRegistrant<DB_Grant_Keycard_Killed> DB_Grant_Keycard_Killed_Registrant("DB_Grant_Keycard_Killed","KeyLevel=1:int");
 ScriptRegistrant<DB_Grant_Keycard_Timer> DB_Grant_Keycard_Timer_Registrant("DB_Grant_Keycard_Timer","KeyLevel=1:int");
-
-
-void  DB_Infantry_Place_Buildable_Object::Created(GameObject *obj)
-{
-	canRegen = false;
-	previewObjectId = 0;
-	reloadTime = 0;
-	if (!Has_Weapon(obj,Get_Parameter("WeaponPreset")) && Get_Int_Parameter("GrantWeapon"))
-		Grant_Weapon(obj,Get_Parameter("WeaponPreset"),true,1,0);
-	Commands->Start_Timer(obj,this,0.25f,1);
-	Commands->Start_Timer(obj,this,1.0f,2);
-}
-void  DB_Infantry_Place_Buildable_Object::Timer_Expired(GameObject *obj,int number)
-{
-	if (number == 1)
-	{
-		if (!Commands->Get_Health(obj))
-			return;
-		const char *weap = Get_Current_Weapon(obj);
-		if (weap && !_stricmp(weap,Get_Parameter("WeaponPreset")) && !Get_Vehicle(obj) && !reloadTime)
-		{
-			if (!previewObjectId)
-			{
-				GameObject *preview = Commands->Create_Object("Invisible_Object",Commands->Get_Position(obj));
-				previewObjectId = Commands->Get_ID(preview);
-				Update_Network_Object(preview);
-				Set_Object_Visibility(previewObjectId,false);
-				//if ((int)Get_Vector3_Parameter("MatchTeam[Preview|Deployed|Repaired]").X)
-					Commands->Set_Player_Type(preview,Commands->Get_Player_Type(obj));
-				Commands->Attach_To_Object_Bone(preview,obj,"origin");
-				if (!placementBlocked)
-					Commands->Set_Model(preview,Get_Parameter("PlaceablePreview"));
-				else
-					Commands->Set_Model(preview,Get_Parameter("UnPlaceablePreview"));
-				Set_Object_Visibility_For_Player(obj,previewObjectId,true);
-			}
-		}
-		else if (previewObjectId)
-			DestroyPreview();
-		Commands->Start_Timer(obj,this,0.25f,1);
-	}
-	if (number == 2)
-	{
-		if (reloadTime && canRegen)
-		{
-			reloadTime--;
-			if (!reloadTime)
-			{
-				Set_Bullets(obj,Get_Parameter("WeaponPreset"),1);
-				Send_Message_Player(obj,255,255,255,Get_Parameter("PlacementMessage")); 
-			}
-		}
-		Commands->Start_Timer(obj,this,1.0f,2);
-	}
-}
-void  DB_Infantry_Place_Buildable_Object::Custom(GameObject *obj,int message,int param,GameObject *sender)
-{
-	if (message == Get_Int_Parameter("DeployCustom"))
-	{
-		if (Get_Vehicle(obj) || !Commands->Get_Health(obj))
-			return;
-		const char *weap = Get_Current_Weapon(obj);
-		if (!weap || _stricmp(weap,Get_Parameter("WeaponPreset")))
-			return;
-		if (obj->As_SoldierGameObj() && obj->As_SoldierGameObj()->Is_Airborne())
-		{
-			Send_Message_Player(obj,255,255,255,"You must be on the ground to place this!");
-			return;
-		}
-		if (obj->As_SoldierGameObj() && obj->As_SoldierGameObj()->Is_On_Ladder())
-		{
-			Send_Message_Player(obj,255,255,255,"You cannot place this while climbing ladders!");
-			return;
-		}
-		if (placementBlocked)
-		{
-			Send_Message_Player(obj,255,255,255,Get_Parameter("DeploymentBlockedMessage"));
-			return;
-		}
-		if (!canRegen && reloadTime)
-		{
-			Send_Message_Player(obj,255,255,255,"You must repair the last one you placed before you can place another.");
-			return;
-		}
-		if (reloadTime)
-		{
-			char reloadTimeMessage[220];
-			sprintf(reloadTimeMessage,"You must wait another %d seconds before you can place this.",reloadTime);
-			Send_Message_Player(obj,255,255,255,reloadTimeMessage);
-			return;
-		}
-		if (Get_Float_Parameter("Cost") && Commands->Get_Money(obj) < Get_Float_Parameter("Cost"))
-		{
-			char costMessage[220];
-			sprintf(costMessage,"You need $%d to place this.",Get_Float_Parameter("Cost"));
-			Send_Message_Player(obj,255,255,255,costMessage);
-			return;
-		}
-		if (Get_Float_Parameter("Cost"))
-			Commands->Give_Money(obj,-Get_Float_Parameter("Cost"),false);
-		canRegen = Get_Int_Parameter("RegenStartsAfterRepair") ? false : true;
-		reloadTime = Get_Int_Parameter("RegainTimer");
-		Set_Bullets(obj,Get_Parameter("WeaponPreset"),0);
-		GameObject *preview = Commands->Find_Object(previewObjectId);
-		if (preview)
-			Commands->Destroy_Object(preview);
-		previewObjectId = 0;
-		GameObject *placed = Commands->Create_Object(Get_Parameter("DeployPreset"),Commands->Get_Position(obj));
-		//if ((int)Get_Vector3_Parameter("MatchTeam[Preview|Deployed|Repaired]").Y)
-			//Commands->Set_Player_Type(placed,Commands->Get_Player_Type(obj));
-		Commands->Set_Facing(placed,Commands->Get_Facing(obj));
-		char params[220];
-		sprintf(params,"%d,%d,%s,%.0f,%d",this->Get_ID(),Commands->Get_ID(obj),Get_Parameter("RepairedPreset"),Get_Int_Parameter("MatchTeam"),Commands->Get_Player_Type(obj));
-		Commands->Attach_Script(placed," JMG_Utility_Infantry_Placed_Buildable_Object_Attached",params);
-	}
-	if (message == Get_Int_Parameter("EnableCustom"))
-	{
-		if (placementBlocked)
-			placementBlocked--;
-		if (!placementBlocked)
-		{
-			GameObject *preview = Commands->Find_Object(previewObjectId);
-			if (preview)
-				Commands->Set_Model(preview,Get_Parameter("PlaceablePreview"));
-		}
-	}
-	if (message == Get_Int_Parameter("DisableCustom"))
-	{
-		if (!placementBlocked)
-		{
-			GameObject *preview = Commands->Find_Object(previewObjectId);
-			if (preview)
-				Commands->Set_Model(preview,Get_Parameter("UnPlaceablePreview"));
-		}
-		placementBlocked++;
-	}
-	if (message == 9117115 && param == this->Get_ID())
-	{
-		reloadTime = Get_Int_Parameter("DestroyedRegenTime");
-		canRegen = true;
-	}
-	if (message == 9117116 && param == this->Get_ID())
-	{
-		reloadTime = 0;
-		Set_Bullets(obj,Get_Parameter("WeaponPreset"),1);
-	}
-	if (message == 9117117 && param == this->Get_ID())
-	{
-		canRegen = true;
-	}
-	if (message == 9117118 && param == this->Get_ID())
-	{
-		if (Get_Float_Parameter("Cost"))
-			Commands->Give_Money(obj,Get_Float_Parameter("Cost"),false);
-	}
-}
-void  DB_Infantry_Place_Buildable_Object::Killed(GameObject *obj,GameObject *killer)
-{
-	DestroyPreview();
-}
-void  DB_Infantry_Place_Buildable_Object::Destroyed(GameObject *obj)
-{
-	DestroyPreview();
-}
-void  DB_Infantry_Place_Buildable_Object::DestroyPreview()
-{
-	GameObject *preview = Commands->Find_Object(previewObjectId);
-	if (preview)
-		Commands->Destroy_Object(preview);
-	previewObjectId = 0;
-}
-
-ScriptRegistrant<DB_Infantry_Place_Buildable_Object> DB_Infantry_Place_Buildable_Object_Registrant("DB_Infantry_Place_Buildable_Object","WeaponPreset=null:string,DeployPreset=null:string,RepairedPreset=null:string,PlaceablePreview=null:string,UnPlaceablePreview=null:string,EnableCustom:int,DisableCustom:int,DeployCustom:int,RegainTimer:int,Cost:float,DeploymentBlockedMessage=Cannot deploy when near buildings.:string,PlacementMessage=You can now place another.:string,GrantWeapon=1:int,RegenStartsAfterRepair=1:int,MatchTeam=0:int,DestroyedRegenTime=1:int");
\ No newline at end of file
diff -uwrN source/scripts/DBIKScripts.h sourceold/scripts/DBIKScripts.h
--- source/scripts/DBIKScripts.h	2016-11-19 11:05:09.562453500 +1000
+++ sourceold/scripts/DBIKScripts.h	2016-11-05 18:51:15.478826100 +1000
@@ -63,7 +63,7 @@
 	void Custom(GameObject* ObeliskObj, int type, int Param, GameObject* Sender);
 };
 
-class dblaney_Nod_Obelisk_Weapon : public ScriptImpClass {
+class Obelisk_Buildable_Weapon_CnC : public ScriptImpClass {
 	int EnemyID;
 	int EffectID;
 	bool Firing;
@@ -127,21 +127,3 @@
 	void Created(GameObject *obj);
 	void Timer_Expired(GameObject *obj, int number);
 };
-
-class DB_Infantry_Place_Buildable_Object : public ScriptImpClass {
-	bool canRegen;
-	int previewObjectId;
-	int placementBlocked;
-	int reloadTime;
-	void Created(GameObject *obj);
-	void Timer_Expired(GameObject *obj,int number);
-	void Custom(GameObject *obj,int message,int param,GameObject *sender);
-	void Killed(GameObject *obj,GameObject *killer);
-	void Destroyed(GameObject *obj);
-	void DestroyPreview();
-public:
-	DB_Infantry_Place_Buildable_Object()
-	{
-		placementBlocked = 0;
-	}
-};
\ No newline at end of file
diff -uwrN source/scripts/DBScripts.cpp sourceold/scripts/DBScripts.cpp
--- source/scripts/DBScripts.cpp	2016-11-25 15:02:11.915641100 +1000
+++ sourceold/scripts/DBScripts.cpp	2016-11-05 18:51:15.478826100 +1000
@@ -19,7 +19,6 @@
 #include "weaponmgr.h"
 #include "GameObjManager.h"
 #include "MoveablePhysClass.h"
-#include "DB_General.h"
 
 
 
@@ -42,15 +41,16 @@
 	
 	UpgradeID=Get_Int_Parameter("UpgradeID");
 
+	/*  Need to implement research system into tt code before this can be uncommented.
 	if(!UpgradeID)
 		UpgradeID=1;
 
-	Attach_Script_Once(obj,"DB_Research_Listener","");
 	if(UpgradeComplete.Exists(UpgradeID))
 	{
 		amount = Get_Float_Parameter("UpgradeAmount");
 		Upgraded=true;
 	}
+	*/
 
 	if(Commands->Get_Player_Type(obj)!=-2)
 	{
@@ -59,7 +59,7 @@
 		Play_Damage = true;
 	}
 }
-
+/*	Need to implement research system into tt code before this can be uncommented.
 	void Custom(GameObject *obj, int message, int param, GameObject *sender)
 	{
 		if (!Upgraded &&  message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
@@ -74,7 +74,7 @@
 
 		}
 	}
-
+	*/
 	void Detach(GameObject *obj)
 	{
 		if (Exe != 4)
diff -uwrN source/scripts/DB_General.h sourceold/scripts/DB_General.h
--- source/scripts/DB_General.h	2016-11-19 11:50:02.490453700 +1000
+++ sourceold/scripts/DB_General.h	1970-01-01 10:00:00.000000000 +1000
@@ -1,24 +0,0 @@
-/*	Renegade Scripts.dll
-	Copyright 2016 Tiberian Technologies
-
-	This file is part of the Renegade scripts.dll
-	The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
-	the terms of the GNU General Public License as published by the Free
-	Software Foundation; either version 2, or (at your option) any later
-	version. See the file COPYING for more details.
-	In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
-	Only the source code to the module(s) containing the licenced code has to be released.
-*/
-
-#pragma once
-
-static HashTemplateClass<uint,uint> UpgradeComplete;
-
-enum Research_Technology
-{
-	UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER = 600,
-	UPGRADE_INFANTRY_ARMOR_TIME = 10,
-	UPGRADE_INFANTRY_ARMOR_COST = 5000,
-	UPGRADE_INFANTRY_ARMOR_AMOUNT = 10,
-	UPGRADE_INFANTRY_ARMOR_CUSTOM = 70008001,
-};
diff -uwrN source/scripts/DB_Research_Terminals.cpp sourceold/scripts/DB_Research_Terminals.cpp
--- source/scripts/DB_Research_Terminals.cpp	2016-11-25 15:02:11.925641100 +1000
+++ sourceold/scripts/DB_Research_Terminals.cpp	1970-01-01 10:00:00.000000000 +1000
@@ -1,1004 +0,0 @@
-/*	Renegade Scripts.dll
-	Copyright 2016 Tiberian Technologies
-
-	This file is part of the Renegade scripts.dll
-	The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
-	the terms of the GNU General Public License as published by the Free
-	Software Foundation; either version 2, or (at your option) any later
-	version. See the file COPYING for more details.
-	In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
-	Only the source code to the module(s) containing the licenced code has to be released.
-*/
-
-#include "general.h"
-#include "scripts.h"
-#include "VehicleGameObj.h"
-#include "engine.h"
-#include "engine_game.h"
-#include "engine_tt.h"
-#include "GameObjManager.h"
-#include "DB_Research_Terminals.h"
-#include "DB_General.h"
-              
-#include "SoldierGameObjDef.h"
-#include "PowerupGameObjDef.h"
-#include "BuildingGameObj.h"
-#include "gmlog.h"
-
-void DB_Research_Listener::Created(GameObject *obj)
-{
-	//dummy script to mark that this object should recieve research customs
-}
-ScriptRegistrant<DB_Research_Listener> DB_Research_Listener_Registrant("DB_Research_Listener", "");
-
-
-void DB_Research_Infantry_Armor_Terminal::Created(GameObject *obj)
-{
-	Vector3 pos = Commands->Get_Position(obj);
-	pos.Z+=0.01f;
-	Commands->Set_Position(obj,pos);
-	UpgradeName = Get_Translated_Preset_Name(obj);
-	Allow_Poke = true;
-	Upgrading_In_Progress = false;
-	Terminal_Team = Get_Int_Parameter("Terminal_Team");
-	Set_Object_Type(obj, Terminal_Team);
-	Upgrade_Completed = false;
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	if(!UpgradeID)
-		UpgradeID=1;
-	Upgrade_In_Progress_Text = Get_Parameter("Upgrade_In_Progress_Text");
-	Upgrade_In_Progress_Sound = Get_Parameter("Upgrade_In_Progress_Sound");
-	Upgrade_Money_Added_Sound = Get_Parameter("Upgrade_Money_Added_Sound");
-	Upgrade_Completed_Sound = Get_Parameter("Upgrade_Completed_Sound");
-	Upgrade_Insufficient_Funds_Sound = Get_Parameter("Upgrade_Insufficient_Funds_Sound");
-	Upgrade_Total_Cost = Get_Float_Parameter("Upgrade_Total_Cost");
-	Upgrade_Current_Funds = 0.0f;
-	Upgrade_Add_Funds_Cost = Get_Float_Parameter("Upgrade_Add_Funds_Cost");
-	Upgrade_Access_Denied_Sound = Get_Parameter("Upgrade_Access_Denied_Sound");
-	Upgrade_Complete_Text = Get_Parameter("Upgrade_Complete_Text");
-	Commands->Enable_HUD_Pokable_Indicator(obj, true);
-	Commands->Start_Timer(obj,this,0.0f,5678);
-}
-
-
-void DB_Research_Infantry_Armor_Terminal::Poked(GameObject *obj, GameObject *poker)
-{
-	if (Allow_Poke)
-	{
-		if (Get_Object_Type(poker) == Terminal_Team)
-		{
-			if (!Upgrade_Completed)
-			{
-				if (!Upgrading_In_Progress)
-				{
-					if (!Is_Building_Dead(Find_Building_By_Type(Terminal_Team,BuildingConstants::TYPE_COM_CENTER)))
-					{
-						if (Commands->Get_Money(poker) >= Upgrade_Add_Funds_Cost*InsertScale)
-						{
-							if (Is_Base_Powered(Terminal_Team))
-							{
-								if (Upgrade_Current_Funds < Upgrade_Total_Cost)
-								{
-									Upgrade_Current_Funds += (Upgrade_Add_Funds_Cost*InsertScale)/CostScale;
-									Commands->Give_Money(poker, -Upgrade_Add_Funds_Cost*InsertScale, false);
-									Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Money_Added_Sound);
-									Send_Message_Team(Terminal_Team,175,175,255,StringClass::getFormattedString("%s added %g to the %s Fund. Status: %g/%g",Get_Player_Name(poker),Upgrade_Add_Funds_Cost*InsertScale,Get_Translated_Preset_Name(obj),Upgrade_Current_Funds*CostScale,Upgrade_Total_Cost*CostScale));
-									if (Upgrade_Current_Funds >= Upgrade_Total_Cost)
-									{
-										Upgrading_In_Progress = true;
-										Commands->Start_Timer(obj,this,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIME,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER);
-										Send_Message_Team(Terminal_Team,125,125,255,Upgrade_In_Progress_Text);
-										Create_2D_WAV_Sound_Team(Upgrade_In_Progress_Sound, Terminal_Team);
-									}
-								}
-							}
-							else //if power is down
-							{
-								if (Upgrade_Current_Funds < (Upgrade_Total_Cost) )
-								{
-									Upgrade_Current_Funds += (Upgrade_Add_Funds_Cost*InsertScale)/CostScale;
-									Commands->Give_Money(poker, -Upgrade_Add_Funds_Cost*InsertScale, false);
-									Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Money_Added_Sound);
-									Send_Message_Team(Terminal_Team,175,175,255,StringClass::getFormattedString("%s added %g to the %s Fund. Status: %g/%g",Get_Player_Name(poker),Upgrade_Add_Funds_Cost*InsertScale,Get_Translated_Preset_Name(obj),Upgrade_Current_Funds*CostScale,Upgrade_Total_Cost*CostScale));
-									if (Upgrade_Current_Funds >= (Upgrade_Total_Cost ))
-									{
-										Upgrading_In_Progress = true;
-										Commands->Start_Timer(obj,this,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIME,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER);
-										if(Upgrade_In_Progress_Text)
-										{
-											Send_Message_Team(Terminal_Team,125,125,255,Upgrade_In_Progress_Text);
-										}
-										Create_2D_WAV_Sound_Team(Upgrade_In_Progress_Sound, Terminal_Team);
-									}
-								}						
-							}
-						}
-						else
-						{
-							Send_Message_Player(poker,255,255,255,"Insufficient Funds!");
-							Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Insufficient_Funds_Sound);
-						}
-					}
-					else
-					{
-						Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-						Send_Message_Player(poker,255,255,255,StringClass::getFormattedString("Sorry but your Communications Center is dead, researching of the Upgrade %s is not possible!",Get_Translated_Preset_Name(obj)));
-					}
-				}
-				else
-				{
-					Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_In_Progress_Sound);
-					Send_Message_Player(poker,255,255,255,StringClass::getFormattedString("Sorry the %s's research is already in progress!",Get_Translated_Preset_Name(obj)));
-				}
-			}
-			else
-			{
-				Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-				Send_Message_Player(poker,255,255,255,"Access Denied: This upgrade has already been completed!");
-			}
-		}
-		else
-		{
-			Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-			Send_Message_Player(poker,255,255,255,"Access Denied: You are on the wrong team!");
-		}
-		Commands->Enable_HUD_Pokable_Indicator(obj, false);
-		Allow_Poke = false; Commands->Start_Timer(obj,this,0.25f,700); //Allow poking the terminal after 2.5 seconds again
-	}
-}
-void DB_Research_Infantry_Armor_Terminal::Timer_Expired(GameObject *obj, int number)
-{
-	if (number == 700)
-	{
-		Allow_Poke = true;
-		Commands->Enable_HUD_Pokable_Indicator(obj, true);
-	}
-	else if (number == Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER)
-	{
-		//if (!Is_Building_Dead(Find_Building_By_Type(Terminal_Team,BuildingConstants::TYPE_COM_CENTER)))
-		{
-			Create_2D_WAV_Sound_Team(Upgrade_Completed_Sound, Terminal_Team);
-			Send_Message_Team(Terminal_Team,100,100,255,Upgrade_Complete_Text);
-			Send_Custom_Event_To_Objects_With_Script(obj,"DB_Research_Listener",Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM,UpgradeID,0);
-			Upgrade_Completed = true;
-			Upgrading_In_Progress = false;
-			UpgradeComplete.Insert(UpgradeID,UpgradeID);
-			//DALogManager::Write_Log("_INFO","%s %s completed. (ID: %i)",Get_Team_Name(Terminal_Team),Get_Translated_Preset_Name(obj),UpgradeID);
-		}
-	}
-
-		else if (number == 5678)
-	{
-
-		if(Upgrade_Completed)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),9);
-		}
-		else if(Is_Building_Dead(Find_Com_Center(Terminal_Team)))
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),0);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 1.0)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),7);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.8)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),5);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.6)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),4);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.4)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),3);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.2)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),2);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.0)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),1);
-		}
-		Commands->Start_Timer(obj,this,0.5f,5678);
-	}
-}
-
-void DB_Research_Infantry_Armor_Terminal::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if(message == 456987)
-	{
-		StringClass TempName;
-		TempName = StringClass::getFormattedString("$ %g - %s",Upgrade_Total_Cost*CostScale,UpgradeName);
-		if(obj->As_DamageableGameObj() && sender)
-			Change_String_Player(sender,obj->As_DamageableGameObj()->Get_Translated_Name_ID(),TempName);
-		//Force_Position_Update(obj);
-	}
-
-	else if(message == 456986)
-	{
-		StringClass TempName;
-		TempName = StringClass::getFormattedString("$ %g - %s",Upgrade_Total_Cost*CostScale,UpgradeName);
-		for(SLNode<SoldierGameObj> *z = GameObjManager::StarGameObjList.Head();z;z = z->Next())
-			Change_String_Player(z->Data(),obj->As_DamageableGameObj()->Get_Translated_Name_ID(),TempName);
-	}
-
-	else if(message == 456985)
-	{
-		//Force_Position_Update(obj);
-	}
-
-}
-
-void DB_Research_Infantry_Armor_Terminal::Detach(GameObject *obj)
-{
-	UpgradeComplete.Remove(UpgradeID);
-	CharacterID.Remove_All();
-	/*
-	delete [] UpgradeName;
-	delete [] Upgrade_In_Progress_Sound;
-	delete [] Upgrade_Money_Added_Sound;
-	delete [] Upgrade_Completed_Sound;
-	delete [] Upgrade_Insufficient_Funds_Sound;
-	delete [] Upgrade_Access_Denied_Sound;
-	delete [] Upgrade_Complete_Text;
-	delete [] Upgrade_In_Progress_Text;
-	*/
-}
-ScriptRegistrant<DB_Research_Infantry_Armor_Terminal> DB_Research_Infantry_Armor_Terminal_Registrant("DB_Research_Infantry_Armor_Terminal", "Terminal_Team=0:int,Upgrade_In_Progress_Sound=snd:string,Upgrade_In_Progress_Text=txt:string,Upgrade_Money_Added_Sound=snd:string,Upgrade_Access_Denied_Sound=snd:string,Upgrade_Completed_Sound=snd:string,Upgrade_Complete_Text=txt:string,Upgrade_Insufficient_Funds_Sound=snd:string,Upgrade_Total_Cost=0:float,Upgrade_Add_Funds_Cost=0:float,UpgradeID=1:int");
-
-void DB_Rebuild_Building_Terminal::Created(GameObject *obj)
-{
-	UpgradeName = Get_Translated_Preset_Name(obj);
-	Allow_Poke = true;
-	Upgrading_In_Progress = false;
-	Terminal_Team = Get_Int_Parameter("Terminal_Team");
-	Set_Object_Type(obj, Terminal_Team);
-	Upgrade_Completed = false;
-	BuildingType = Get_Int_Parameter("BuildingType");
-	Upgrade_In_Progress_Text = Get_Parameter("Upgrade_In_Progress_Text");
-	Upgrade_In_Progress_Sound = Get_Parameter("Upgrade_In_Progress_Sound");
-	Upgrade_Money_Added_Sound = Get_Parameter("Upgrade_Money_Added_Sound");
-	Upgrade_Completed_Sound = Get_Parameter("Upgrade_Completed_Sound");
-	Upgrade_Insufficient_Funds_Sound = Get_Parameter("Upgrade_Insufficient_Funds_Sound");
-	Upgrade_Total_Cost = Get_Float_Parameter("Upgrade_Total_Cost");
-	Upgrade_Current_Funds = 0.0f;
-	Upgrade_Add_Funds_Cost = Get_Float_Parameter("Upgrade_Add_Funds_Cost");
-	Upgrade_Access_Denied_Sound = Get_Parameter("Upgrade_Access_Denied_Sound");
-	Upgrade_Complete_Text = Get_Parameter("Upgrade_Complete_Text");
-	Commands->Enable_HUD_Pokable_Indicator(obj, true);
-	Commands->Start_Timer(obj,this,0.0f,5678);
-}
-void DB_Rebuild_Building_Terminal::Poked(GameObject *obj, GameObject *poker)
-{
-	if (Allow_Poke)
-	{
-		if (Get_Object_Type(poker) == Terminal_Team)
-		{
-			if (!Upgrade_Completed)
-			{
-				if (!Upgrading_In_Progress)
-				{
-					if(!Is_Building_Dead(Find_Construction_Yard(Terminal_Team)))
-					{
-						if (Is_Building_Dead(Find_Building_By_Type(Terminal_Team,BuildingType)))
-						{
-							if (Commands->Get_Money(poker) >= Upgrade_Add_Funds_Cost*InsertScale)
-							{
-								if (Is_Base_Powered(Terminal_Team))
-								{
-									if (Upgrade_Current_Funds < Upgrade_Total_Cost)
-									{
-										Upgrade_Current_Funds += (Upgrade_Add_Funds_Cost*InsertScale)/CostScale;
-										Commands->Give_Money(poker, -Upgrade_Add_Funds_Cost*InsertScale, false);
-										Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Money_Added_Sound);
-										Send_Message_Team(Terminal_Team,150,255,150,StringClass::getFormattedString("%s added %g to the %s Fund. Status: %g/%g",Get_Player_Name(poker),Upgrade_Add_Funds_Cost*InsertScale,Get_Translated_Preset_Name(obj),Upgrade_Current_Funds*CostScale,Upgrade_Total_Cost*CostScale));
-										if (Upgrade_Current_Funds >= Upgrade_Total_Cost)
-										{
-											Upgrading_In_Progress = true;
-											Commands->Start_Timer(obj,this,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIME,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER);
-											Send_Message_Team(Terminal_Team,100,255,100,Upgrade_In_Progress_Text);
-											Create_2D_WAV_Sound_Team_Dialog(Upgrade_In_Progress_Sound, Terminal_Team);
-										}
-									}
-								}
-								else //if power is down
-								{
-									if (Upgrade_Current_Funds < (Upgrade_Total_Cost) )
-									{
-										Upgrade_Current_Funds += (Upgrade_Add_Funds_Cost*InsertScale)/CostScale;
-										Commands->Give_Money(poker, -Upgrade_Add_Funds_Cost*InsertScale, false);
-										Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Money_Added_Sound);
-										Send_Message_Team(Terminal_Team,150,255,150,StringClass::getFormattedString("%s added %g to the %s Fund. Status: %g/%g",Get_Player_Name(poker),Upgrade_Add_Funds_Cost*InsertScale,Get_Translated_Preset_Name(obj),Upgrade_Current_Funds*CostScale,Upgrade_Total_Cost*CostScale));
-										if (Upgrade_Current_Funds >= (Upgrade_Total_Cost ))
-										{
-											Upgrading_In_Progress = true;
-											Commands->Start_Timer(obj,this,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIME,Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER);
-											if(Upgrade_In_Progress_Text)
-											{
-												Send_Message_Team(Terminal_Team,100,255,100,Upgrade_In_Progress_Text);
-											}
-											Create_2D_WAV_Sound_Team_Dialog(Upgrade_In_Progress_Sound, Terminal_Team);
-										}
-									}						
-								}
-							}
-							else
-							{
-								Send_Message_Player(poker,255,255,255,"Insufficient Funds!");
-								Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Insufficient_Funds_Sound);
-							}
-						}
-						else
-						{
-							Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-							Send_Message_Player(poker,255,255,255,StringClass::getFormattedString("Structure is not Destroyed!",Get_Translated_Preset_Name(obj)));
-						}
-					}
-					else
-					{
-						Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-						Send_Message_Player(poker,255,255,255,StringClass::getFormattedString("Access Denied: Construction Yard is Destroyed!",Get_Translated_Preset_Name(obj)));
-					}
-				}
-				else
-				{
-					Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-					Send_Message_Player(poker,255,255,255,StringClass::getFormattedString("Building Construction is already in progress!",Get_Translated_Preset_Name(obj)));
-				}
-			}
-			else
-			{
-				Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-				Send_Message_Player(poker,255,255,255,"Access Denied: Building Construction has already been completed!");
-			}
-		}
-		else
-		{
-			Create_2D_Wave_Sound_Dialog_Player(poker, Upgrade_Access_Denied_Sound);
-			Send_Message_Player(poker,255,255,255,"Access Denied: You are on the wrong team!");
-		}
-		Commands->Enable_HUD_Pokable_Indicator(obj, false);
-		Allow_Poke = false; Commands->Start_Timer(obj,this,0.25f,700); //Allow poking the terminal after 2.5 seconds again
-	}
-}
-void DB_Rebuild_Building_Terminal::Timer_Expired(GameObject *obj, int number)
-{
-	if (number == 700)
-	{
-		Allow_Poke = true;
-		Commands->Enable_HUD_Pokable_Indicator(obj, true);
-	}
-	else if (number == Research_Technology::UPGRADE_INFANTRY_ARMOR_TIMER_NUMBER)
-	{
-		{
-			Create_2D_WAV_Sound_Team(Upgrade_Completed_Sound, Terminal_Team);
-			Send_Message_Team(Terminal_Team,50,255,50,Upgrade_Complete_Text);
-			
-			if(Is_Building_Dead(Find_Building_By_Type(Terminal_Team,BuildingType)))
-			{
-				Find_Building_By_Type(Terminal_Team,BuildingType)->As_BuildingGameObj()->On_Revived();
-				Upgrade_Current_Funds=0;
-				Commands->Set_Animation_Frame(obj,Get_Model(obj),9);
-				//DALogManager::Write_Log("_INFO","%s %s Rebuilt.",Get_Team_Name(Terminal_Team),Get_Translated_Preset_Name(Find_Building_By_Type(Terminal_Team,BuildingType)));
-			}
-			Upgrading_In_Progress = false;
-		}
-	}
-
-	else if (number == 5678)
-	{
-		if(Is_Building_Dead(Find_Construction_Yard(Terminal_Team)))
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),0);
-		}
-		else if(!Is_Building_Dead(Find_Building_By_Type(Terminal_Team,BuildingType)))
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),9);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 1.0)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),7);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.8)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),5);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.6)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),4);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.4)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),3);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.2)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),2);
-		}
-		else if(Upgrade_Current_Funds / Upgrade_Total_Cost >= 0.0)
-		{
-			Commands->Set_Animation_Frame(obj,Get_Model(obj),1);
-		}
-		Commands->Start_Timer(obj,this,0.5f,5678);
-	}
-}
-
-void DB_Rebuild_Building_Terminal::Detach(GameObject *obj)
-{
-	/*
-	delete [] UpgradeName;
-	delete [] Upgrade_In_Progress_Sound;
-	delete [] Upgrade_Money_Added_Sound;
-	delete [] Upgrade_Completed_Sound;
-	delete [] Upgrade_Insufficient_Funds_Sound;
-	delete [] Upgrade_Access_Denied_Sound;
-	delete [] Upgrade_Complete_Text;
-	delete [] Upgrade_In_Progress_Text;
-	*/
-}
-
-void DB_Rebuild_Building_Terminal::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if(message == 456987)
-	{
-		StringClass TempName;
-		TempName = StringClass::getFormattedString("%g - %s",Upgrade_Total_Cost*CostScale,UpgradeName);
-		if(obj->As_DamageableGameObj() && sender)
-			Change_String_Player(sender,obj->As_DamageableGameObj()->Get_Translated_Name_ID(),TempName);
-	}
-
-	else if(message == 456986)
-	{
-		StringClass TempName;
-
-		TempName = StringClass::getFormattedString("%g - %s",Upgrade_Total_Cost*CostScale,UpgradeName);
-		for(SLNode<SoldierGameObj> *z = GameObjManager::StarGameObjList.Head();z;z = z->Next())
-			Change_String_Player(z->Data(),obj->As_DamageableGameObj()->Get_Translated_Name_ID(),TempName);
-	}
-}
-
-ScriptRegistrant<DB_Rebuild_Building_Terminal> DB_Rebuild_Building_Terminal_Registrant("DB_Rebuild_Building_Terminal", "Terminal_Team=0:int,Upgrade_In_Progress_Sound=snd:string,Upgrade_In_Progress_Text=txt:string,Upgrade_Money_Added_Sound=snd:string,Upgrade_Access_Denied_Sound=snd:string,Upgrade_Completed_Sound=snd:string,Upgrade_Complete_Text=txt:string,Upgrade_Insufficient_Funds_Sound=snd:string,Upgrade_Total_Cost=0:float,Upgrade_Add_Funds_Cost=0:float,BuildingType=0:int");
-
-
-
-void DB_Research_Infantry_Armor_Ability::Created(GameObject *obj)
-{
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Upgraded=false;
-	if(!UpgradeID)
-		UpgradeID=1;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		Upgraded=true;
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-	}
-}
-void DB_Research_Infantry_Armor_Ability::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if (!Upgraded &&  message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-	}
-}
-ScriptRegistrant<DB_Research_Infantry_Armor_Ability> DB_Research_Infantry_Armor_Ability_Registrant("DB_Research_Infantry_Armor_Ability", "Extra_Armor_Amount=0:float,Unit_Upgraded_Sound=bla:string,UpgradeID=1:int");
-
-
-void DB_Research_Infantry_Hitpoints_Ability::Created(GameObject *obj)
-{
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Upgraded=false;
-	if(!UpgradeID)
-		UpgradeID=1;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		Upgraded=true;
-		const char *model = Get_Parameter("Model");
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + Get_Float_Parameter("Extra_Health_Amount");
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + Get_Float_Parameter("Extra_Health_Amount");
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-	}
-}
-void DB_Research_Infantry_Hitpoints_Ability::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if (!Upgraded &&  message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		const char *model = Get_Parameter("Model");
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + Get_Float_Parameter("Extra_Health_Amount");
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + Get_Float_Parameter("Extra_Health_Amount");
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-	}
-}
-ScriptRegistrant<DB_Research_Infantry_Hitpoints_Ability> DB_Research_Infantry_Hitpoints_Ability_Registrant("DB_Research_Infantry_Hitpoints_Ability","Extra_Health_Amount=0:float,Extra_Armor_Amount=0:float,Model:string,Unit_Upgraded_Sound=bla:string,UpgradeID=1:int");
-
-
-
-void DB_Research_Weapon_Upgrade::Created(GameObject *obj)
-{
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Secondary = Get_Int_Parameter("Secondary_Weapon");
-	RemoveWeapon = Get_Parameter("Remove_Weapon_Preset");
-	Upgraded=false;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		Upgraded=true;
-		const char *PowerUpPreset = Get_Parameter("PowerupPreset");
-		const char *model = Get_Parameter("Model");
-		if(Find_Named_Definition(PowerUpPreset))
-		{
-			if(Get_Powerup_Weapon(PowerUpPreset))
-			{
-				Grant_Powerup(obj,PowerUpPreset);
-				if(!Secondary)
-				{
-					if(Has_Weapon(obj,Get_Powerup_Weapon(PowerUpPreset)))
-						Commands->Select_Weapon(obj,Get_Powerup_Weapon(PowerUpPreset));
-				}
-				if(strcmp(RemoveWeapon,"") != 0)
-				{
-					if(Has_Weapon(obj,RemoveWeapon))
-						Remove_Weapon(obj,RemoveWeapon);
-				}
-			
-				if(!Secondary && obj->As_SoldierGameObj() && !CharacterID.Exists(obj->Get_Definition().Get_ID()))
-				{
-					CharacterID.Insert(obj->Get_Definition().Get_ID(),1);
-					SoldierGameObjDef *def = (SoldierGameObjDef *)Find_Definition(obj->Get_Definition().Get_ID());
-					if(def)
-					{
-						DefinitionClass *powerupdef = Find_Named_Definition(PowerUpPreset);
-						PowerUpGameObjDef *c = (PowerUpGameObjDef *)powerupdef;
-						if (c)
-						{
-							 //def->WeaponDefID=c->Get_Grant_Weapon_ID();
-						}
-					}
-					//DALootGameFeature->Settings_Loaded_Event();
-					//DAEventManager::Settings_Loaded_Event();
-				}	
-			
-			}
-			//Remove_Weapon(obj,Get_Weapon(obj,0));
-			if(strcmp(model,"") != 0)
-				Commands->Set_Model(obj,model);
-		}
-		else
-		{
-			Console_Input(StringClass::getFormattedString("msg invalid weapon preset: %s - %s",Get_Translated_Preset_Name(obj),PowerUpPreset));
-		}
-	}
-	
-}
-void DB_Research_Weapon_Upgrade::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if (!Upgraded && message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		const char *PowerUpPreset = Get_Parameter("PowerupPreset");
-		const char *model = Get_Parameter("Model");
-		if(Find_Named_Definition(PowerUpPreset))
-		{
-			if(Get_Powerup_Weapon(PowerUpPreset))
-			{
-				if(Commands->Is_A_Star(obj))
-				{
-					//Find_Player(Get_Player_ID(obj))->Get_DA_Player()->Reset_Creation_Time();
-				}
-				Grant_Powerup(obj,PowerUpPreset);
-				if(!Secondary)
-				{
-					if(Has_Weapon(obj,Get_Powerup_Weapon(PowerUpPreset)))
-						Commands->Select_Weapon(obj,Get_Powerup_Weapon(PowerUpPreset));
-				}
-				if(strcmp(RemoveWeapon,"") != 0)
-				{
-					if(Has_Weapon(obj,RemoveWeapon))
-						Remove_Weapon(obj,RemoveWeapon);
-				}
-
-
-				if(!Secondary && obj->As_SoldierGameObj() && !CharacterID.Exists(obj->Get_Definition().Get_ID()))
-				{
-					CharacterID.Insert(obj->Get_Definition().Get_ID(),1);
-					SoldierGameObjDef *def = (SoldierGameObjDef *)Find_Definition(obj->Get_Definition().Get_ID());
-					if(def)
-					{
-						DefinitionClass *powerupdef = Find_Named_Definition(PowerUpPreset);
-						PowerUpGameObjDef *c = (PowerUpGameObjDef *)powerupdef;
-						if (c)
-						{
-							 //def->WeaponDefID=c->Get_Grant_Weapon_ID();
-						}
-					}
-					//DALootGameFeature->Settings_Loaded_Event();
-					//DAEventManager::Settings_Loaded_Event();
-				}	
-			
-			}
-		}
-		else
-		{
-			Console_Input(StringClass::getFormattedString("msg invalid weapon preset: %s - %s",Get_Translated_Preset_Name(obj),PowerUpPreset));
-		}
-		
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-	}
-}
-ScriptRegistrant<DB_Research_Weapon_Upgrade> DB_Research_Weapon_Upgrade_Registrant("DB_Research_Weapon_Upgrade", "PowerupPreset:string,Model:string,Unit_Upgraded_Sound=bla:string,UpgradeID=1:int,Remove_Weapon_Preset=0:string,Secondary_Weapon=0:int");
-
-
-void DB_Research_Armor_Model::Created(GameObject *obj)
-{
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Upgraded=false;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		Upgraded=true;
-		float HealthShield = Get_Float_Parameter("HealthShieldBonus");
-		const char *model = Get_Parameter("Model");
-		
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + HealthShield;
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + HealthShield;
-
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + HealthShield;
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + HealthShield;
-
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-	
-	}
-}
-void DB_Research_Armor_Model::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if (!Upgraded && message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		float HealthShield = Get_Float_Parameter("HealthShieldBonus");
-		const char *model = Get_Parameter("Model");
-		
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + HealthShield;
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + HealthShield;
-
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + HealthShield;
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + HealthShield;
-
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-
-
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-	}
-}
-ScriptRegistrant<DB_Research_Armor_Model> DB_Research_Armor_Model_Registrant("DB_Research_Armor_Model", "HealthShieldBonus:float,Model:string,Unit_Upgraded_Sound=bla:string,UpgradeID=1:int");
-
-
-void DB_Research_Credit_Tick::Created(GameObject *obj)
-{
-	float TickRate = Get_Float_Parameter("TickRate");
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Upgraded=false;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		Upgraded=true;
-		const char *model = Get_Parameter("Model");
-		Attach_Script_V(obj,"dp88_buildingScripts_functionMoneyTrickle","%f",TickRate);
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-	}
-}
-void DB_Research_Credit_Tick::Custom(GameObject *obj, int message, int param, GameObject *sender)
-{
-	if (!Upgraded && message == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		float TickRate = Get_Float_Parameter("TickRate");
-		const char *model = Get_Parameter("Model");
-		Attach_Script_V(obj,"dp88_buildingScripts_functionMoneyTrickle","%f",TickRate);
-		if(strcmp(model,"") != 0)
-			Commands->Set_Model(obj,model);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-
-	}
-}
-ScriptRegistrant<DB_Research_Credit_Tick> DB_Research_Credit_Tick_Registrant("DB_Research_Credit_Tick", "TickRate:float,Model:string,Unit_Upgraded_Sound=bla:string,UpgradeID=1:int");
-
-void DB_Tiberium_Field::Created(GameObject *obj)
-{
-	Zonetype = Get_Int_Parameter("Zonetype"); //0=green 1=blue
-}
-void DB_Tiberium_Field::Entered(GameObject *obj, GameObject *enterer)
-{
-	if (Is_Script_Attached(enterer,"DB_Tiberium_Harvester"))
-	{
-		if (Zonetype == 0) //green
-			Commands->Send_Custom_Event(obj, enterer, CUSTOM_EVENT_GREENTIB_ENTERED, 0, 0);//tell harv a green zone entered 
-		else if (Zonetype == 1) //blue
-			Commands->Send_Custom_Event(obj, enterer, CUSTOM_EVENT_BLUETIB_ENTERED, 0, 0);//tell harv a blue zone entered
-		else if (Zonetype == 2) //red
-			Commands->Send_Custom_Event(obj, enterer, CUSTOM_EVENT_REDTIB_ENTERED, 0, 0);//tell harv a red zone entered
-	}
-}
-void DB_Tiberium_Field::Exited(GameObject *obj, GameObject *exiter)
-{
-	if (Is_Script_Attached(exiter,"DB_Tiberium_Harvester"))
-		Commands->Send_Custom_Event(obj, exiter, CUSTOM_EVENT_HARVY_LEFT_TIBFIELD, 0, 0);//tell harv left zone
-}
-
-void DB_Tiberium_Deposit::Entered(GameObject *obj, GameObject *enterer)
-{
-	if (Get_Object_Type(enterer) == Get_Int_Parameter("Team"))
-	{
-		if (Is_Script_Attached(enterer,"DB_Tiberium_Harvester"))
-			Commands->Send_Custom_Event(obj,enterer, CUSTOM_EVENT_HARVY_DEPOSITING, 0, 0);
-	}
-}
-
-ScriptRegistrant<DB_Tiberium_Field> DB_Tiberium_Field_Registrant("DB_Tiberium_Field","Zonetype=0:int");
-ScriptRegistrant<DB_Tiberium_Deposit> DB_Tiberium_Deposit_Registrant("DB_Tiberium_Deposit","Team=0:int");
-
-void DB_DeployableTank_Upgradeable::Created(GameObject *obj)
-{
-	//mode: 0=walk;1=deploy;2=deployed;3=redeploy
-	mode = 0;
-	PilotID = 0;
-	model = Get_Parameter("Model_Name");
-	UpgradeID = Get_Int_Parameter("UpgradeID");
-	Upgraded=false;
-	if(!UpgradeID)
-		UpgradeID=1;
-	Attach_Script_Once(obj,"DB_Research_Listener","");
-	if(UpgradeComplete.Get(UpgradeID,0))
-	{
-		model = Get_Parameter("Upgraded_Model_Name");
-		Commands->Set_Model(obj,model);
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + Get_Float_Parameter("Extra_Health_Amount");
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + Get_Float_Parameter("Extra_Health_Amount");
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-	}
-}
-
-void DB_DeployableTank_Upgradeable::Custom(GameObject *obj,int type,int param,GameObject *sender)
-{
-	if (!Upgraded &&  type == Research_Technology::UPGRADE_INFANTRY_ARMOR_CUSTOM && param==UpgradeID)
-	{
-		Upgraded=true;
-		model = Get_Parameter("Upgraded_Model_Name");
-		if(mode == 0)
-		{
-			Commands->Set_Model(obj,model);
-		}
-		else if(mode == 1)
-		{
-			char deployedmodel[512];
-			sprintf(deployedmodel,"%s_d",model);
-			float frame = Get_Animation_Frame(obj);
-			char deployanim[512];
-			Commands->Set_Model(obj,deployedmodel);
-			sprintf(deployanim,"%s_d.%s_d",model,model);
-			Commands->Set_Animation(obj,deployanim,false,0,frame,-1,0);
-		}
-		else if(mode == 2)
-		{
-			char deployedmodel[512];
-			sprintf(deployedmodel,"%s_dd",model);
-			Commands->Set_Model(obj,deployedmodel);
-		}
-		else if(mode == 3)
-		{
-			char deployedmodel[512];
-			sprintf(deployedmodel,"%s_d",model);
-			float frame = Get_Animation_Frame(obj);
-			char deployanim[512];
-			Commands->Set_Model(obj,deployedmodel);
-			sprintf(deployanim,"%s_d.%s_d",model,model);
-			Commands->Set_Animation(obj,deployanim,false,0,frame,0,0);
-		}
-		float MaxHP = Commands->Get_Max_Health(obj);
-		float NewMaxHP = MaxHP + Get_Float_Parameter("Extra_Health_Amount");
-		float CurHP = Commands->Get_Health(obj);
-		float NewHP = CurHP + Get_Float_Parameter("Extra_Health_Amount");
-		float MaxAP = Commands->Get_Max_Shield_Strength(obj);
-		float NewMaxAP = MaxAP + Get_Float_Parameter("Extra_Armor_Amount");
-		float CurAP = Commands->Get_Shield_Strength(obj);
-		float NewAP = CurAP + Get_Float_Parameter("Extra_Armor_Amount");
-		Set_Max_Health(obj, NewMaxHP);
-		Commands->Set_Health(obj, NewHP);
-		Set_Max_Shield_Strength(obj, NewMaxAP);
-		Commands->Set_Shield_Strength(obj, NewAP);
-		Create_2D_Wave_Sound_Dialog_Player(obj, Get_Parameter("Unit_Upgraded_Sound"));
-		Send_Message_Player(obj,255,255,255,"Unit Upgraded!");
-	}
-	else if (type == CUSTOM_EVENT_VEHICLE_ENTERED)
-	{
-		if (!PilotID)
-		{
-			PilotID = Commands->Get_ID(sender);
-			char params[50];
-			sprintf(params,"IKDeploy,%d,923572385",Commands->Get_ID(obj));
-			Commands->Attach_Script(sender,"Reborn_Deployable_Vehicle_Player",params);
-		}
-	}
-	else if (type == CUSTOM_EVENT_VEHICLE_EXITED)
-	{
-		if (PilotID == Commands->Get_ID(sender))
-		{
-			PilotID = 0;
-			Remove_Script(sender,"Reborn_Deployable_Vehicle_Player");
-		}
-	}
-	else if (type == 923572385)
-	{
-		if (!obj->As_VehicleGameObj()->Can_Drive())
-		{
-			return;
-		}
-		char deployanim[512];
-		char dmodel[512];
-		sprintf(deployanim,"%s_d.%s_d",model,model);
-		sprintf(dmodel,"%s_d",model);
-		//mode: 0=walk;1=deploy;2=deployed;3=redeploy
-		if (!mode)
-		{
-			if (!obj->As_VehicleGameObj()->Is_Immovable())
-			{
-				obj->As_VehicleGameObj()->Set_Immovable(true);
-				mode = 1;
-				Commands->Set_Model(obj,dmodel);
-				Commands->Set_Shield_Type(obj,Get_Parameter("Armor"));
-				Commands->Set_Animation(obj,deployanim,false,0,0,-1,0);
-				Commands->Clear_Weapons(obj);
-				Commands->Give_PowerUp(obj,Get_Parameter("Weapon_Powerup_Name"),false);
-				Commands->Select_Weapon(obj,Get_Parameter("Weapon_Name"));
-				Commands->Control_Enable(sender,false);
-				obj->As_VehicleGameObj()->Set_Scripts_Can_Fire(false);
-				Commands->Create_Sound(Get_Parameter("DeploySound"),Commands->Get_Position(obj),obj);
-				Commands->Enable_Vehicle_Transitions(obj,false);
-			}
-		}
-		//mode: 0=walk;1=deploy;2=deployed;3=redeploy
-		else if (mode == 2)
-		{
-			mode = 3;
-			Commands->Set_Model(obj,dmodel);
-			Commands->Set_Animation(obj,deployanim,false,0,Get_Float_Parameter("Last_Deploy_Frame"),0,0);
-			Commands->Clear_Weapons(obj);
-			Commands->Give_PowerUp(obj,Get_Parameter("Weapon_Powerup_Name2"),false);
-			Commands->Select_Weapon(obj,Get_Parameter("Weapon_Name2"));
-			Commands->Control_Enable(sender,false);
-			obj->As_VehicleGameObj()->Set_Scripts_Can_Fire(false);
-			Commands->Create_Sound(Get_Parameter("UndeploySound"),Commands->Get_Position(obj),obj);
-			Commands->Enable_Vehicle_Transitions(obj,false);
-		}
-	}
-}
-
-void DB_DeployableTank_Upgradeable::Animation_Complete(GameObject *obj,const char *animation_name)
-{
-	char deployedmodel[512];
-	sprintf(deployedmodel,"%s_dd",model);
-	char deployanim[512];
-	sprintf(deployanim,"%s_d.%s_d",model,model);
-	//tank deploy
-	//mode: 0=walk;1=deploy;2=deployed;3=redeploy
-	if (!_stricmp(animation_name,deployanim) && (mode == 1))
-	{
-		mode = 2;
-		Commands->Set_Model(obj,deployedmodel);
-		obj->As_PhysicalGameObj()->Clear_Animation();
-		Commands->Control_Enable(Commands->Find_Object(PilotID),true);
-		obj->As_VehicleGameObj()->Set_Scripts_Can_Fire(true);
-		Commands->Enable_Engine(obj,false);
-		Commands->Enable_Vehicle_Transitions(obj,true);
-		Commands->Enable_Innate_Conversations(obj,true);
-		return;
-	}
-	//tank redeploy
-	//mode: 0=walk;1=deploy;2=deployed;3=redeploy
-	if (!_stricmp(animation_name,deployanim) && (mode == 3))
-	{
-		obj->As_VehicleGameObj()->Set_Immovable(false);
-		mode = 0;
-		Commands->Set_Model(obj,model);
-		obj->As_PhysicalGameObj()->Clear_Animation();
-		Commands->Set_Shield_Type(obj,Get_Parameter("Armor2"));
-		Commands->Control_Enable(Commands->Find_Object(PilotID),true);
-		obj->As_VehicleGameObj()->Set_Scripts_Can_Fire(true);
-		Commands->Enable_Hibernation(obj,false);
-		Commands->Enable_Innate_Conversations(obj,true);
-		Commands->Enable_Vehicle_Transitions(obj,true);
-		Commands->Enable_Engine(obj,true);
-		return;
-	}
-}
-
-void DB_DeployableTank_Upgradeable::Register_Auto_Save_Variables()
-{
-	Auto_Save_Variable(&PilotID,4,6);
-	Auto_Save_Variable(&mode,4,7);
-	Auto_Save_Variable(&Upgraded,1,8);
-	Auto_Save_Variable(&model,16,9);
-}
-
-void DB_DeployableTank_Upgradeable::Destroyed(GameObject *obj)
-{
-	Remove_Script(Commands->Find_Object(PilotID),"Reborn_Deployable_Vehicle_Player");
-	Commands->Control_Enable(Commands->Find_Object(PilotID),true);
-}
-
-ScriptRegistrant<DB_DeployableTank_Upgradeable> DB_DeployableTank_Upgradeable_Registrant("DB_DeployableTank_Upgradeable","Model_Name=v_nod_art:string,Last_Deploy_Frame=0.00:float,Weapon_Name:string,Weapon_Powerup_Name:string,Armor:string,Weapon_Name2:string,Weapon_Powerup_Name2:string,Armor2:string,DeploySound:string,UndeploySound:string,Extra_Health_Amount=0:float,Extra_Armor_Amount=0:float,Upgraded_Model_Name=v_nod_art:string,UpgradeID=1:int");
\ No newline at end of file
diff -uwrN source/scripts/DB_Research_Terminals.h sourceold/scripts/DB_Research_Terminals.h
--- source/scripts/DB_Research_Terminals.h	2016-11-25 15:02:11.925641100 +1000
+++ sourceold/scripts/DB_Research_Terminals.h	1970-01-01 10:00:00.000000000 +1000
@@ -1,176 +0,0 @@
-/*	Renegade Scripts.dll
-	Copyright 2016 Tiberian Technologies
-
-	This file is part of the Renegade scripts.dll
-	The Renegade scripts.dll is free software; you can redistribute it and/or modify it under
-	the terms of the GNU General Public License as published by the Free
-	Software Foundation; either version 2, or (at your option) any later
-	version. See the file COPYING for more details.
-	In addition, an exemption is given to allow Run Time Dynamic Linking of this code with any closed source module that does not contain code covered by this licence.
-	Only the source code to the module(s) containing the licenced code has to be released.
-*/
-
-#pragma once
-
-
-
-enum
-{
-	CUSTOM_EVENT_REDTIB_ENTERED = 10499,
-	CUSTOM_EVENT_GREENTIB_ENTERED = 10500,
-	CUSTOM_EVENT_BLUETIB_ENTERED = 10501,
-	CUSTOM_EVENT_TIB_ENTERED = 10502,
-	CUSTOM_EVENT_HARVY_LEFT_TIBFIELD = 10503,
-	CUSTOM_EVENT_HARVY_DEPOSITING = 10504,	
-};
-
-
-enum
-{
-	TIBTYPE_GREEN = 10100,
-	TIBTYPE_BLUE = 10101,
-	TIBTYPE_RED = 10102,
-};
-
-
-
-HashTemplateClass<uint,uint> CharacterID;
-float CostScale=1;
-float InsertScale=1;
-
-class DB_Research_Listener : public ScriptImpClass {
-	void Created(GameObject *obj);
-};
-
-class DB_Research_Infantry_Armor_Terminal : public ScriptImpClass {
-	void Created(GameObject *obj);
-	void Poked(GameObject *obj, GameObject *poker);
-	void Timer_Expired(GameObject *obj, int number);
-	void Detach(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-	bool Allow_Poke;
-	bool Upgrading_In_Progress;
-	bool Upgrade_Completed;
-	int Terminal_Team;
-	int UpgradeID;
-	const char *UpgradeName;
-	const char *Upgrade_In_Progress_Sound;
-	const char *Upgrade_Money_Added_Sound;
-	const char *Upgrade_Completed_Sound;
-	const char *Upgrade_Insufficient_Funds_Sound;
-	const char *Upgrade_Access_Denied_Sound;
-	const char *Upgrade_Complete_Text;
-	const char *Upgrade_In_Progress_Text;
-	float Upgrade_Add_Funds_Cost;
-	float Upgrade_Total_Cost;
-	float Upgrade_Current_Funds;
-};
-
-class DB_Rebuild_Building_Terminal : public ScriptImpClass {
-	void Created(GameObject *obj);
-	void Poked(GameObject *obj, GameObject *poker);
-	void Timer_Expired(GameObject *obj, int number);
-	void Detach(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-	bool Allow_Poke;
-	bool Upgrading_In_Progress;
-	bool Upgrade_Completed;
-	int Terminal_Team;
-	int BuildingType;
-	const char *UpgradeName;
-	const char *Upgrade_In_Progress_Sound;
-	const char *Upgrade_Money_Added_Sound;
-	const char *Upgrade_Completed_Sound;
-	const char *Upgrade_Insufficient_Funds_Sound;
-	const char *Upgrade_Access_Denied_Sound;
-	const char *Upgrade_Complete_Text;
-	const char *Upgrade_In_Progress_Text;
-	float Upgrade_Add_Funds_Cost;
-	float Upgrade_Total_Cost;
-	float Upgrade_Current_Funds;
-};
-
-class DB_Research_Infantry_Armor_Ready : public ScriptImpClass {
-	void Created(GameObject *obj);
-};
-
-class DB_Research_Infantry_Armor_Ability : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-};
-
-class DB_Research_Infantry_Hitpoints_Ability : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-};
-
-class DB_Research_Weapon_Upgrade : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	int Secondary;
-	StringClass RemoveWeapon;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-};
-
-class DB_Research_Armor_Model : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-};
-
-class DB_Research_Credit_Tick : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-};
-
-
-class DB_Tiberium_Harvester : public ScriptImpClass 
-{
-	int upgradeID;
-	float multiplier;
-	bool upgraded;
-	void Created(GameObject *obj);
-	void Custom(GameObject *obj, int message, int param, GameObject *sender);
-	void Timer_Expired(GameObject *obj, int number);
-	float Get_Cash();
-	void Clear_Cash();
-	int PlayerTeam;
-	int DriverID;
-	bool Harvesting;
-	int TibType;
-	float CashCollected[8];
-	int CashIndex;
-};
-
-class DB_Tiberium_Field : public ScriptImpClass 
-{
-	void Created(GameObject *obj);
-	void Entered(GameObject *obj, GameObject *enterer);
-	void Exited(GameObject *obj, GameObject *exiter);
-	int Zonetype;
-};
-
-class DB_Tiberium_Deposit : public ScriptImpClass 
-{
-	void Entered(GameObject *obj, GameObject *enterer);
-};
-
-class DB_DeployableTank_Upgradeable : public ScriptImpClass {
-	int UpgradeID;
-	bool Upgraded;
-	int PilotID,mode;
-	StringClass model;
-	void Created(GameObject *obj);
-	void Animation_Complete(GameObject *obj,const char *animation_name);
-	void Custom(GameObject *obj,int type,int param,GameObject *sender);
-	void Destroyed(GameObject *obj);
-	public: void Register_Auto_Save_Variables();
-};
\ No newline at end of file
diff -uwrN source/scripts/DamageableGameObjDef.h sourceold/scripts/DamageableGameObjDef.h
--- source/scripts/DamageableGameObjDef.h	2016-11-24 12:15:26.069870700 +1000
+++ sourceold/scripts/DamageableGameObjDef.h	2016-10-31 07:17:12.333013500 +1000
@@ -35,7 +35,6 @@
 	int											Get_Encyclopedia_ID (void) const		{ return EncyclopediaID; }
 	const StringClass &						Get_Icon_Filename (void) const		{ return InfoIconTextureFilename; }
 	int											Get_Translated_Name_ID (void) const	{ return TranslatedNameID; }
-	void											Set_Translated_Name_ID (int TransID) {TranslatedNameID = TransID; }
 	const DefenseObjectDefClass &			Get_DefenseObjectDef( void ) const	{ return DefenseObjectDef; }
 	int											Get_Default_Player_Type(void) const { return DefaultPlayerType; }
 	void Set_Name_ID(int id) {TranslatedNameID = id;}
diff -uwrN source/scripts/SoldierGameObj.h sourceold/scripts/SoldierGameObj.h
--- source/scripts/SoldierGameObj.h	2016-12-09 10:52:52.622021900 +1000
+++ sourceold/scripts/SoldierGameObj.h	2016-10-31 07:17:12.408013500 +1000
@@ -200,9 +200,6 @@
 	void Set_Movement_Loiters_Allowed(bool allowed){movementLoitersAllowed = allowed;};
 	bool Get_Movement_Loiter_Allowed(){return movementLoitersAllowed;};
 	bool Get_Use_Stock_Ghost_Behavior(){return useStockGhostBehavior;}
-	void Set_Override_Muzzle_Direction(bool override){OverrideMuzzleDirection = override; Set_Object_Dirty_Bit(BIT_RARE, true);};
-	bool Get_Override_Muzzle_Direction(){return OverrideMuzzleDirection;};
-	virtual int Get_Contact_Surface_Type();
 protected:
 	RenderObjClass		*	WeaponRenderModel; //2416
 	RenderObjClass		*	BackWeaponRenderModel; //2420
@@ -271,7 +268,6 @@
 	float						LastScale;
 	bool						movementLoitersAllowed;
 	bool						useStockGhostBehavior;
-	bool						OverrideMuzzleDirection;
 	TT_DEPRECATED("Do not use") int						Check(void);
 }; // size: 3404
 
diff -uwrN source/scripts/WeaponClass.h sourceold/scripts/WeaponClass.h
--- source/scripts/WeaponClass.h	2016-12-10 07:57:58.700001000 +1000
+++ sourceold/scripts/WeaponClass.h	2016-10-31 07:17:12.434013500 +1000
@@ -154,7 +154,7 @@
 
 	//new
 	SCRIPTS_API float	Get_Targeting_Range(void);
-	bool				Tilt_Gun_While_Reloading(){return tiltGunWhileReloading && Definition->DoTiltWhileReloading;}
+	bool				Tilt_Gun_While_Reloading(){return tiltGunWhileReloading;}
 private:
 	void				Fire_C4( const AmmoDefinitionClass *ammo_def );
 	bool				Fire_Beacon( const AmmoDefinitionClass *ammo_def );
diff -uwrN source/scripts/anticheat.ini sourceold/scripts/anticheat.ini
--- source/scripts/anticheat.ini	2016-12-15 07:01:56.103000900 +1000
+++ sourceold/scripts/anticheat.ini	2016-10-31 07:17:12.438013500 +1000
@@ -121,12 +121,3 @@
 18f1d1600b147d3ad8fdc91bc968ec95=tank_stealth_idle.wav
 9dc7f9fe39e97122f164dec1dbd1bdc4=tank_stealth_start.wav
 68cb626de41e5c24b0fc38879cc4ee1e=tank_stealth_stop.wav
-7f56aec47f609787b8ce3c625eb37d6a=always3.dat
-27d624005ab42512491de2e988d3d999=mgagd_ag_2.w3d
-04f3774ab7fc2cfc8feea2d6d095ee49=mgagd_ag_2.w3d
-5bbb2fe532bd953136c3046cacfe3500=mgwep_ag_4.w3d
-54c3967ac16fb7ce17b42c53069e5e8d=mgwep_ag_4.w3d
-a655afd0d532d8c3f4d01c487355cbc4=s_b_tall.w3d
-8aa2f2487753f77b22938cfee401a1d7=s_b_wide.w3d
-6c2fb7ba4d60b6b21c23f5284001881b=s_c_tall.w3d
-2242fbc4557be6f044a5c708aef7b979=s_c_wide.w3d
diff -uwrN source/scripts/dllmain.cpp sourceold/scripts/dllmain.cpp
--- source/scripts/dllmain.cpp	2016-11-24 12:15:26.070870700 +1000
+++ sourceold/scripts/dllmain.cpp	2016-11-05 08:34:36.959417100 +1000
@@ -362,7 +362,6 @@
 	Has_Timer = (htm)Address(tt,"Has_Timer");
 	Set_Background_Music_Player_Offset = (sbgmo)Address(tt,"Set_Background_Music_Player_Offset");
 	Set_Camera_Player = (setcam)Address(tt,"Set_Camera_Player");
-	Set_Definition_TranslationID_Player = (settran)Address(tt,"Set_Definition_TranslationID_Player");
 
 #ifdef SSGM
 	SSGMGameManager::Init();
diff -uwrN source/scripts/dp88_customAI.cpp sourceold/scripts/dp88_customAI.cpp
--- source/scripts/dp88_customAI.cpp	2016-11-19 11:05:09.562453500 +1000
+++ sourceold/scripts/dp88_customAI.cpp	2016-10-31 07:17:12.461013500 +1000
@@ -109,14 +109,6 @@
   Commands->Enable_Enemy_Seen(obj, true);
   Commands->Enable_Vehicle_Transitions(obj, false);
 
-  //Make Turret Face default direction
-  if(obj->As_VehicleGameObj())
-  {
-	  Vector3 pos = Commands->Get_Position(obj);
-	  Vector3 target_direction = obj->As_VehicleGameObj()->Get_Muzzle(0).Get_X_Vector();
-	  obj->As_VehicleGameObj()->Set_Targeting(pos + target_direction * 100);
-  }
-
   // Start timer which runs for the lifetime of this object
   Commands->Start_Timer ( obj, this, 1.0, TIMER_AI_THINK );
 }
diff -uwrN source/scripts/engine_game.cpp sourceold/scripts/engine_game.cpp
--- source/scripts/engine_game.cpp	2016-11-08 06:30:33.434000800 +1000
+++ sourceold/scripts/engine_game.cpp	2016-10-31 07:17:12.472013500 +1000
@@ -643,7 +643,7 @@
 	{
 		if (it->Is_MCT())
 		{
-			return it.Peek_Obj();
+			return it.Get_Obj();
 		}
 	}
 	return 0;
diff -uwrN source/scripts/engine_tt.cpp sourceold/scripts/engine_tt.cpp
--- source/scripts/engine_tt.cpp	2016-11-24 12:15:26.071870700 +1000
+++ sourceold/scripts/engine_tt.cpp	2016-11-05 08:34:36.960417100 +1000
@@ -212,7 +212,6 @@
 SCRIPTS_API fpup Force_Position_Update_Player;
 SCRIPTS_API sbgmo Set_Background_Music_Player_Offset;
 SCRIPTS_API setcam Set_Camera_Player;
-SCRIPTS_API settran Set_Definition_TranslationID_Player;
 
 SCRIPTS_API bool Can_Team_Build_Vehicle(int Team)
 {
@@ -382,23 +381,6 @@
 			}
 		}
 		x = x->Next();
-	}
-}
-
-SCRIPTS_API void Create_2D_WAV_Sound_Team_Dialog(const char *soundname,int team)
-{
-	SLNode<SoldierGameObj> *x = GameObjManager::StarGameObjList.Head();
-	while (x)
-	{
-		GameObject *o = x->Data();
-		if (o)
-		{
-			if ((Get_Object_Type(o) == team) || (team == 2))
-			{
-				Create_2D_Wave_Sound_Dialog_Player(o,soundname);
-			}
-		}
-		x = x->Next();
 	}
 }
 
diff -uwrN source/scripts/engine_tt.h sourceold/scripts/engine_tt.h
--- source/scripts/engine_tt.h	2016-11-24 12:15:26.071870700 +1000
+++ sourceold/scripts/engine_tt.h	2016-11-05 08:34:36.961417100 +1000
@@ -167,7 +167,6 @@
 typedef bool (*iea) (GameObject *obj);
 typedef void (*sbgmo) (GameObject *obj,const char *music,float startoffset);
 typedef void (*setcam) (GameObject *obj,const char *camera);
-typedef void (*settran) (GameObject *obj,int defid,int stringid);
 SCRIPTS_API extern gpl Get_Player_List;
 SCRIPTS_API extern gcmi Get_Current_Map_Index;
 SCRIPTS_API extern gm Get_Map;
@@ -338,7 +337,6 @@
 SCRIPTS_API extern htm Has_Timer;
 SCRIPTS_API extern sbgmo Set_Background_Music_Player_Offset;
 SCRIPTS_API extern setcam Set_Camera_Player;
-SCRIPTS_API extern settran Set_Definition_TranslationID_Player;
 
 class SCRIPTS_API JFW_Key_Hook_Base : public ScriptImpClass {
 public:
@@ -445,7 +443,6 @@
 SCRIPTS_API void Create_Sound_Team(const char *soundname,const Vector3 & position,GameObject *obj,int team); //play a 3D sound for a team
 SCRIPTS_API void Create_2D_Sound_Team(const char *soundname,int team); //play a 2D sound for a team
 SCRIPTS_API void Create_2D_WAV_Sound_Team(const char *soundname,int team); //play a 2D WAV sound for a team
-SCRIPTS_API void Create_2D_WAV_Sound_Team_Dialog(const char *soundname,int team); //play a 2D WAV Dialogue sound for a team
 SCRIPTS_API void Create_3D_WAV_Sound_At_Bone_Team(const char *soundname,GameObject *obj,const char *bonename,int team); //play a 3D WAV sound at a bone for a team
 SCRIPTS_API void Create_3D_Sound_At_Bone_Team(const char *soundname,GameObject *obj,const char *bonename,int team); //play a 3D sound at a bone for a team
 SCRIPTS_API void Send_Message_Team(int team,unsigned int red,unsigned int green,unsigned int blue,const char *msg); //send a message to a team
diff -uwrN source/scripts/jfwdef.cpp sourceold/scripts/jfwdef.cpp
--- source/scripts/jfwdef.cpp	2016-11-14 17:23:06.984631200 +1000
+++ sourceold/scripts/jfwdef.cpp	2016-10-31 07:17:12.507013500 +1000
@@ -231,7 +231,6 @@
 		params.AttackCheckBlocked = false;
 		Commands->Action_Attack(obj,params);
 		attacktimer = Get_Float_Parameter("AttackTimer");
-		Stop_Timer2(obj,this,2);
 		Commands->Start_Timer(obj,this,attacktimer,2);
 	}
 }
@@ -360,7 +359,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -490,7 +488,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -619,7 +616,6 @@
 		params.AttackCheckBlocked = false;
 		Commands->Action_Attack(obj,params);
 		attacktimer = Get_Float_Parameter("AttackTimer");
-		Stop_Timer2(obj,this,2);
 		Commands->Start_Timer(obj,this,attacktimer,2);
 		if (primary)
 		{
@@ -758,7 +754,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 			if (primary)
 			{
@@ -898,7 +893,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 			if (primary)
 			{
@@ -995,7 +989,6 @@
 		popup = true;
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -1056,7 +1049,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -1118,7 +1110,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -1179,7 +1170,6 @@
 		popup = true;
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -1250,7 +1240,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -1322,7 +1311,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -1433,7 +1421,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -1532,7 +1519,6 @@
 				params.AttackCheckBlocked = false;
 				Commands->Action_Attack(obj,params);
 				attacktimer = Get_Float_Parameter("AttackTimer");
-				Stop_Timer2(obj,this,2);
 				Commands->Start_Timer(obj,this,attacktimer,2);
 			}
 		}
@@ -1601,7 +1587,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -1732,7 +1717,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 			if (primary)
 			{
@@ -1872,7 +1856,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 			if (primary)
 			{
@@ -1971,7 +1954,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2033,7 +2015,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2096,7 +2077,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2168,7 +2148,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2238,7 +2217,6 @@
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 		Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -2300,7 +2278,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2363,7 +2340,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2425,7 +2401,6 @@
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 		Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -2497,7 +2472,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2570,7 +2544,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2642,7 +2615,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2705,7 +2677,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2769,7 +2740,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2842,7 +2812,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -2952,7 +2921,6 @@
 		params.AttackCheckBlocked = false;
 		Commands->Action_Attack(obj,params);
 		attacktimer = Get_Float_Parameter("AttackTimer");
-		Stop_Timer2(obj,this,2);
 		Commands->Start_Timer(obj,this,attacktimer,2);
 	}
 }
@@ -3303,7 +3271,6 @@
 		popup = true;
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -3366,7 +3333,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -3430,7 +3396,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -3534,7 +3499,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -3666,7 +3630,6 @@
 			params.AttackCheckBlocked = false;
 			Commands->Action_Attack(obj,params);
 			attacktimer = Get_Float_Parameter("AttackTimer");
-			Stop_Timer2(obj,this,2);
 			Commands->Start_Timer(obj,this,attacktimer,2);
 		}
 	}
@@ -3758,7 +3721,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -3822,7 +3784,6 @@
 			popup = true;
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -3885,7 +3846,6 @@
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 		Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 		Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-		Stop_Timer2(obj,this,1);
 		Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 	}
 	else if (attack)
@@ -3949,7 +3909,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -4014,7 +3973,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -4079,7 +4037,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
@@ -4144,7 +4101,6 @@
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("PopupTime"),2);
 			Commands->Set_Animation(obj,Get_Parameter("Animation"),false,0,0,Get_Float_Parameter("LastFrame"),false);
 			Commands->Create_Sound(Get_Parameter("Sound"),Commands->Get_Position(enemy),obj);
-			Stop_Timer2(obj,this,1);
 			Commands->Start_Timer(obj,this,Get_Float_Parameter("AttackTimer"),1);
 		}
 		else if (attack)
diff -uwrN source/scripts/jmgBearHunter.cpp sourceold/scripts/jmgBearHunter.cpp
--- source/scripts/jmgBearHunter.cpp	2016-12-14 05:47:13.345801000 +1000
+++ sourceold/scripts/jmgBearHunter.cpp	2016-10-31 07:17:12.532013500 +1000
@@ -3185,12 +3185,12 @@
 	Set_Skin(obj,"Blamo");
 	Commands->Set_Shield_Type(obj,"Blamo");
 	int finalMultiplier = JMG_Bear_Hunter_Game_Control::spawnKarma > 3 ? JMG_Bear_Hunter_Game_Control::spawnKarma : 1;
-	Set_Max_Health(obj,JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*31.125f*finalMultiplier);
-	Commands->Set_Health(obj,JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*31.125f*finalMultiplier);
-	if (JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*31.125f >= 2000.0f)
+	Set_Max_Health(obj,JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*41.5f*finalMultiplier);
+	Commands->Set_Health(obj,JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*41.5f*finalMultiplier);
+	if (JmgUtility::MathClampInt(Get_Player_Count()+1,1,64)*41.5f >= 2000.0f)
 	{
-		Set_Max_Shield_Strength(obj,JmgUtility::MathClampInt(Get_Player_Count()-64,0,64)*31.125f*finalMultiplier);
-		Commands->Set_Shield_Strength(obj,JmgUtility::MathClampInt(Get_Player_Count()-64,0,64)*31.125f*finalMultiplier);
+		Set_Max_Shield_Strength(obj,JmgUtility::MathClampInt(Get_Player_Count()-64,0,64)*41.5f*finalMultiplier);
+		Commands->Set_Shield_Strength(obj,JmgUtility::MathClampInt(Get_Player_Count()-64,0,64)*41.5f*finalMultiplier);
 	}
 	else
 		Set_Max_Shield_Strength(obj,0.0f);
diff -uwrN source/scripts/jmgUtility.cpp sourceold/scripts/jmgUtility.cpp
--- source/scripts/jmgUtility.cpp	2016-12-17 21:07:23.265015700 +1000
+++ sourceold/scripts/jmgUtility.cpp	2016-10-31 07:17:12.539013500 +1000
@@ -2140,7 +2140,7 @@
 		return;
 	}
 	waterNode[JmgUtility::JMG_Get_Player_ID(enter)] = PlayerWaterNode(Get_Vector3_Parameter("WaterColor[R|G|B]"),Get_Float_Parameter("WaterOpacity"),Get_Float_Parameter("WaterMinViewDistance"),Get_Float_Parameter("WaterMaxViewDistance"));
-	Commands->Send_Custom_Event(obj,enter,347341,(int)(Get_Float_Parameter("SwimmingSpeedMultiplier")*100),0);
+	Commands->Send_Custom_Event(obj,enter,347341,0,0);
 }
 void JMG_Utility_Swimming_Zone::Exited(GameObject *obj,GameObject *exiter)
 {
@@ -2167,7 +2167,6 @@
 	waterZoneCount = 0;
 	startedFadeRed = false;
 	drownTime = 0.0f;
-	defaultSpeed = obj->As_SoldierGameObj()->Get_Max_Speed();
 	for (SLNode<ScriptZoneGameObj>* node = GameObjManager::ScriptZoneGameObjList.Head(); node; node = node->Next())
 	{
 		GameObject *zone = (GameObject *)node->Data();
@@ -2267,7 +2266,6 @@
 				Commands->Select_Weapon(obj,enterWeapon);
 			if (Has_Weapon(obj,Get_Parameter("WeaponPreset")))
 				Remove_Weapon(obj,Get_Parameter("WeaponPreset"));
-			obj->As_SoldierGameObj()->Set_Max_Speed(defaultSpeed);
 		}
 	}
 	if (message == 347341)
@@ -2283,7 +2281,6 @@
 					Set_HUD_Help_Text_Player(obj,Get_Int_Parameter("EnterWaterMessageStringId"),Get_Vector3_Parameter("WaterEnterMessageColor[R|G|B]"));
 					lastDisplayTime = currentTime;
 				}
-				obj->As_SoldierGameObj()->Set_Max_Speed(defaultSpeed*(param/100.0f));
 			}
 			isInWater[playerId] = true;
 			sprintf(enterWeapon,"%s",Get_Current_Weapon(obj) ? Get_Current_Weapon(obj) : "");
@@ -6525,516 +6522,6 @@
 void JMG_Utility_AI_Engineer_Ignore_Target::Created(GameObject *obj)
 {
 }
-void JMG_Utility_Give_Weapon_In_Range::Created(GameObject *obj)
-{
-	sprintf(weaponName,"%s",Get_Parameter("WeaponName"));
-	location = Get_Vector3_Parameter("Location");
-	if (JmgUtility::SimpleDistance(location,Vector3()) <= 0.0f)
-		location = Commands->Get_Position(obj);
-	range = Get_Float_Parameter("Range");
-	range *= range;
-	enableCustom = Get_Int_Parameter("EnableCustom");
-	enabled = Get_Int_Parameter("StartsEnabled") ? true : false;
-	selectWeapon = Get_Int_Parameter("SelectWeapon") ? true : false;
-	weaponAmmo = Get_Int_Parameter("WeaponAmmo");
-	rate = Get_Float_Parameter("Rate");
-	if (rate)
-		Commands->Start_Timer(obj,this,rate,1);
-	refillAmount = Get_Int_Parameter("RefillAmount");
-	refillRate = Get_Float_Parameter("RefillRate");
-	if (refillRate && refillAmount)
-		Commands->Start_Timer(obj,this,refillRate,2);
-}
-void JMG_Utility_Give_Weapon_In_Range::Timer_Expired(GameObject *obj,int number)
-{
-	if (number == 1)
-	{
-		if (enabled)
-			GrantWeapon();
-		Commands->Start_Timer(obj,this,rate,1);
-	}
-	if (number == 2)
-	{
-		if (enabled)
-			for (int x = 1;x < 128;x++)
-			{
-				GameObject *player = Get_GameObj(x);
-				if (!player || !Has_Weapon(player,weaponName) || JmgUtility::SimpleDistance(location,Commands->Get_Position(player)) > range)
-					continue;
-				int maxTotalBullets = Get_Max_Total_Bullets(player,weaponName);
-				int totalBullets = Get_Total_Bullets(player,weaponName);
-				if (totalBullets < maxTotalBullets)
-				{
-					int addBullets = min(maxTotalBullets-totalBullets,refillAmount);
-					Set_Clip_Bullets(player,weaponName,Get_Clip_Bullets(player,weaponName)+addBullets);
-				}
-			}
-		Commands->Start_Timer(obj,this,refillRate,2);
-	}
-}
-void JMG_Utility_Give_Weapon_In_Range::Custom(GameObject *obj,int message,int param,GameObject *sender)
-{
-	if (message == enableCustom)
-	{
-		enabled = param ? true : false;
-		if (enabled)
-			GrantWeapon();
-	}
-}
-void JMG_Utility_Give_Weapon_In_Range::GrantWeapon()
-{
-	for (int x = 1;x < 128;x++)
-	{
-		GameObject *player = Get_GameObj(x);
-		if (!player || Has_Weapon(player,weaponName) || JmgUtility::SimpleDistance(location,Commands->Get_Position(player)) > range)
-			continue;
-		Grant_Weapon(player,weaponName,true,weaponAmmo,true);
-		if (selectWeapon)
-			Commands->Select_Weapon(player,weaponName);
-	}
-}
-int JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[128] = {0};
-int JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers = 0;
-bool JMG_Utility_AI_Follow_Player_On_Poke_Controller::controllerPlaced = false;
-void JMG_Utility_AI_Follow_Player_On_Poke_Controller::Created(GameObject *obj)
-{
-	maxFollowers = Get_Int_Parameter("MaxFollowers");
-	for (int x = 0;x < 128;x++)
-		followingPlayer[x] = 0;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke_Controller::Destroyed(GameObject *obj)
-{
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller::controllerPlaced = false;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Created(GameObject *obj)
-{
-	if (!JMG_Utility_AI_Follow_Player_On_Poke_Controller::controllerPlaced)
-	{
-		Console_Input("msg JMG_Utility_AI_Follow_Player_On_Poke ERROR: JMG_Utility_AI_Follow_Player_On_Poke_Controller must be placed on the map!");
-		this->Destroy_Script();
-		return;
-	}
-	const AmmoDefinitionClass *ammo = Get_Weapon_Ammo_Definition(Get_Current_Weapon(obj),true);
-	if (ammo)
-		weaponRange = ammo->Range;
-	enemyId = 0;
-	actionUpdate = 0;
-	enemySeen = 0;
-	hurt = false;
-	lastTarget = NULL;
-	lastFollow = NULL;
-	lastLocation = homeLocation = Commands->Get_Position(obj);
-	Commands->Set_Player_Type(obj,-2);
-	followDistance = Get_Float_Parameter("FollowDistance");
-	followNearSpeed = Get_Float_Parameter("FollowNearSpeed");
-	followFarSpeed = Get_Float_Parameter("FollowFarSpeed");
-	followFarDistance = Get_Float_Parameter("FollowFarDistance");
-	followFarDistance *= followFarDistance;
-	followVeryFarSpeed = Get_Float_Parameter("FollowVeryFarSpeed");
-	followVeryFarDistance = Get_Float_Parameter("FollowVeryFarDistance");
-	followVeryFarDistance *= followVeryFarDistance;
-	runHomeSpeed = Get_Float_Parameter("RunHomeSpeed");
-	fallbackWithoutArmor = Get_Int_Parameter("FallBackWhenOutOfArmor") ? true : false;
-	healWhileAtHomeLocation = Get_Float_Parameter("HealWhileAtHomeLocation");
-	sendCustomId = Get_Int_Parameter("SendCustomID");
-	pokedCustom = Get_Int_Parameter("PokedCustom");
-	lostCustom = Get_Int_Parameter("LostCustom");
-	killedCustom = Get_Int_Parameter("KilledCustom");
-	injuredCustom = Get_Int_Parameter("InjuredCustom");
-	healedCustom = Get_Int_Parameter("HealedCustom");
-	messageColor = Get_Vector3_Parameter("HUDMessagesColor");
-	messagePokeFollowerId = Get_Int_Parameter("MessagePokeFollowerID");
-	if (messagePokeFollowerId)
-		sprintf(messagePokeFollower,"%s",Get_Translated_String(messagePokeFollowerId));
-	messageFollowingYouId = Get_Int_Parameter("MessageFollowingYouID");
-	messageFollowingPlayerId = Get_Int_Parameter("MessageFollowingPlayerID");
-	messageMaxFollowersId = Get_Int_Parameter("MessageMaxFollowersID");
-	if (messageMaxFollowersId)
-		sprintf(messageMaxFollowers,"%s",Get_Translated_String(messageMaxFollowersId));
-	messageHealingRequiredId = Get_Int_Parameter("MessageHealingRequiredID");
-	messageFollowerLostId = Get_Int_Parameter("MessageFollowerLostID");
-	messageFollowerInjuredId = Get_Int_Parameter("MessageFollowerInjuredID");
-	messageFollowerKilledId = Get_Int_Parameter("MessageFollowerKilledID");
-	Commands->Start_Timer(obj,this,0.1f,1);
-	Commands->Enable_Enemy_Seen(obj,true);
-	Commands->Enable_HUD_Pokable_Indicator(obj,true);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Enemy_Seen(GameObject *obj,GameObject *seen)
-{
-	if (seen->As_SmartGameObj() && seen->As_SmartGameObj()->Is_Stealthed() && JmgUtility::SimpleDistance(Commands->Get_Position(obj),Commands->Get_Position(seen)) > 900)
-		return;
-	if (enemyId == Commands->Get_ID(seen))
-	{
-		enemySeen = 30;
-		return;
-	}
-	if (enemyId && JmgUtility::SimpleDistance(Commands->Get_Position(seen),Commands->Get_Position(obj)) > targetDistance)
-		return;
-	enemyId = Commands->Get_ID(seen);
-	enemySeen = 30;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Timer_Expired(GameObject *obj,int number)
-{
-	if (number == 1)
-	{
-		float speed = followNearSpeed;
-		float distance = followDistance;
-		Vector3 myPos = Commands->Get_Position(obj);
-		if (enemySeen)
-		{
-			enemySeen--;
-			if (!enemySeen)
-				ForgetEnemy(obj);
-		}
-		if (actionUpdate)
-			actionUpdate--;
-		GameObject *enemy = Commands->Find_Object(enemyId);
-		if (enemy)
-			targetDistance = JmgUtility::SimpleDistance(Commands->Get_Position(enemy),myPos);
-		else if (enemyId)
-			ForgetEnemy(obj);
-		GameObject *player = Commands->Find_Object(playerObjectId);
-		if (pokerPlayerId && !player)
-		{
-			SendCustom(obj,lostCustom);
-			GiveUpOnPlayer(obj,true);
-		}
-		else
-		{
-			float tempDist = JmgUtility::SimpleDistance(Commands->Get_Position(player),myPos);
-			if (tempDist >= followVeryFarDistance)
-				speed = followVeryFarSpeed;
-			else if (tempDist >= followFarDistance)
-				speed = followFarSpeed;
-			else
-				speed = followNearSpeed;
-		}
-		if (hurt)
-		{
-			distance = 1.0f;
-			speed = runHomeSpeed;
-		}
-		if (hurt && healWhileAtHomeLocation && Commands->Get_Shield_Strength(obj) < Commands->Get_Max_Shield_Strength(obj) && JmgUtility::SimpleDistance(myPos,homeLocation) <= 2.0f)
-		{
-			Commands->Apply_Damage(obj,-healWhileAtHomeLocation,"None",0);
-			if (!pokerPlayerId && fallbackWithoutArmor && Commands->Get_Shield_Strength(obj) >= Commands->Get_Max_Shield_Strength(obj))
-			{
-				Commands->Enable_HUD_Pokable_Indicator(obj,true);
-				SendCustom(obj,healedCustom);
-				hurt = false;
-			}
-		}
-		AttackTarget(obj,player,enemy,homeLocation,speed,distance);
-		Commands->Start_Timer(obj,this,0.1f,1);
-	}
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Damaged(GameObject *obj,GameObject *damager,float damage)
-{
-	if (!hurt && fallbackWithoutArmor && Commands->Get_Shield_Strength(obj) <= 0.0f)
-	{
-		GameObject *player = Commands->Find_Object(playerObjectId);
-		if (player)
-			ShowPlayerMessage(player,messageFollowerInjuredId,messageColor);
-		if (pokerPlayerId)
-			SendCustom(obj,injuredCustom);
-		GiveUpOnPlayer(obj,false);
-		hurt = true;
-	}
-	if (hurt && Commands->Get_Shield_Strength(obj) >= Commands->Get_Max_Shield_Strength(obj))
-	{
-		Commands->Enable_HUD_Pokable_Indicator(obj,true);
-		SendCustom(obj,healedCustom);
-		hurt = false;
-	}
-	if (damage <= 0 || !damager || obj == damager || enemyId == Commands->Get_ID(damager) || Commands->Get_Player_Type(damager) == Commands->Get_Player_Type(obj))
-		return;
-	if (enemyId && JmgUtility::SimpleDistance(Commands->Get_Position(damager),Commands->Get_Position(obj)) > targetDistance)
-		return;
-	enemyId = Commands->Get_ID(damager);
-	enemySeen = 30;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Action_Complete(GameObject *obj,int action_id,ActionCompleteReason reason)
-{
-	if (reason == ACTION_COMPLETE_PATH_BAD_DEST)
-	{
-		if (Commands->Get_Health(obj) <= 0)
-			return;
-		GameObject *player = Commands->Find_Object(playerObjectId);
-		if (player)
-			ShowPlayerMessage(player,messageFollowerLostId,messageColor);
-		SendCustom(obj,lostCustom);
-		GiveUpOnPlayer(obj,true);
-	}
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Poked(GameObject *obj, GameObject *poker)
-{
-	int playerId = JmgUtility::JMG_Get_Player_ID(poker);
-	if (pokerPlayerId)
-	{
-		if (pokerPlayerId == playerId)
-			ShowPlayerMessage(poker,messageFollowingYouId,messageColor);
-		else
-			ShowPlayerMessage(poker,messageFollowingPlayerId,messageColor);
-		return;
-	}
-	if (JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers > 0 && JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[playerId] >= JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers)
-	{
-		if (messageMaxFollowersId)
-			Set_HUD_Help_Text_Player_Text(poker,7234,formatMaxFollowingString(messageMaxFollowers,JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers,JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers != 1 ? "s " : " "),messageColor);
-		return;
-	}
-	if (hurt)
-	{
-		ShowPlayerMessage(poker,messageHealingRequiredId,messageColor);
-		return;
-	}
-	SendCustom(obj,pokedCustom);
-	pokerPlayerId = playerId;
-	playerObjectId = Commands->Get_ID(poker);
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[playerId]++;
-	if (messagePokeFollowerId)
-		Set_HUD_Help_Text_Player_Text(poker,7234,formatMaxFollowingString(messagePokeFollower,JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[playerId],JMG_Utility_AI_Follow_Player_On_Poke_Controller::maxFollowers),messageColor);
-	Commands->Set_Player_Type(obj,Commands->Get_Player_Type(poker));
-	Commands->Enable_HUD_Pokable_Indicator(obj,false);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Destroyed(GameObject *obj)
-{
-	if (detached)
-		return;
-	detached = true;
-	GameObject *player = Commands->Find_Object(playerObjectId);
-	if (player)
-		ShowPlayerMessage(player,messageFollowerKilledId,messageColor);
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[pokerPlayerId]--;
-	pokerPlayerId = 0;
-	SendCustom(obj,killedCustom);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::Detach(GameObject *obj)
-{
-	if (detached)
-		return;
-	detached = true;
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[pokerPlayerId]--;
-	pokerPlayerId = 0;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::GiveUpOnPlayer(GameObject *obj,bool pokeable)
-{
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller::followingPlayer[pokerPlayerId]--;
-	pokerPlayerId = 0;
-	playerObjectId = 0;
-	Commands->Enable_HUD_Pokable_Indicator(obj,pokeable);
-	Commands->Set_Player_Type(obj,-2);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::ForgetEnemy(GameObject *obj)
-{
-	enemyId = 0;
-	Commands->Action_Reset(obj,100.0f);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::SendCustom(GameObject *obj,int custom)
-{
-	if (!custom)
-		return;
-	GameObject *controller = Commands->Find_Object(sendCustomId);
-	if (controller)
-		Commands->Send_Custom_Event(obj,controller,custom,0,0);
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::AttackTarget(GameObject *obj,GameObject *follow,GameObject *target,Vector3 location,float speed,float distance)
-{
-	if (follow != lastFollow || lastTarget != target || JmgUtility::SimpleDistance(location,lastLocation) > 0.0f)
-		actionUpdate = 0;
-	if (actionUpdate)
-		return;
-	lastTarget = target;
-	lastFollow = follow;
-	lastLocation = location;
-	actionUpdate = 15;
-	ActionParamsStruct params;
-	if (follow)
-		params.Set_Movement(follow,speed,distance,false);
-	else
-		params.Set_Movement(location,speed,distance,false);
-	params.MovePathfind = true;
-	Commands->Action_Goto(obj,params);
-	params.Set_Basic(this,100,100,AI_STATE_COMBAT);
-	params.AttackCheckBlocked = true;
-	if (target)
-	{
-		params.Set_Attack(target,weaponRange*0.95f,0.0f,true);
-		Commands->Action_Attack(obj,params);
-	}
-}
-char *JMG_Utility_AI_Follow_Player_On_Poke::formatMaxFollowingString(const char *format,...)
-{
-	static char displayMsg[256];
-	va_list args;
-	va_start(args,format);
-	vsprintf(displayMsg,format,args);
-	va_end(args);
-	return displayMsg;
-}
-void JMG_Utility_AI_Follow_Player_On_Poke::ShowPlayerMessage(GameObject *player,int stringId,Vector3 color)
-{
-	if (!stringId)
-		return;
-	Set_HUD_Help_Text_Player(player,stringId,color);
-}
-void JMG_Utility_Timer_Damage_And_Teleport::Created(GameObject *obj)
-{
-	Commands->Start_Timer(obj,this,Get_Float_Parameter("Delay"),1);
-}
-void JMG_Utility_Timer_Damage_And_Teleport::Timer_Expired(GameObject *obj,int number)
-{
-	if (number == 1)
-	{
-		GameObject *target = Commands->Find_Object(Get_Int_Parameter("TeleportToObjectID"));
-		if (target)
-		{
-			Commands->Set_Position(obj,Commands->Get_Position(target));
-			Commands->Set_Facing(obj,Commands->Get_Facing(target));
-		}
-		else
-			Commands->Set_Position(obj,Get_Vector3_Parameter("Location"));
-		Commands->Apply_Damage(obj,Get_Float_Parameter("DamageAmount"),Get_Parameter("DamageWarhead"),Get_Int_Parameter("DamageSelf") ? obj : NULL);
-	}
-}
-void JMG_Utility_Zone_Send_Custom_If_Has_Script::Entered(GameObject *obj,GameObject *enter)
-{
-	if (CheckPlayerType(enter,Get_Int_Parameter("PlayerType")) || Commands->Get_Player_Type(enter) == -4)
-		return;
-	if (!Is_Script_Attached(enter,Get_Parameter("ScriptName")))
-		return;
-	int id = Get_Int_Parameter("ID");
-	GameObject *object = id ? (id == -1 ? enter : Commands->Find_Object(id)) : obj;
-	if (object)
-		Commands->Send_Custom_Event(obj,object,Get_Int_Parameter("Custom"),Get_Int_Parameter("Param"),Get_Float_Parameter("Delay"));
-	if (Get_Int_Parameter("TriggerOnce"))
-		Destroy_Script();
-}
-void JMG_Utility_Damage_When_Outside_Of_Range::Created(GameObject *obj)
-{
-	for (int x = 0;x < 128;x++)
-	{
-		warnTime[x] = 0;
-		screenEffectOn[x] = false;
-	}
-	warnDistance = Get_Float_Parameter("Warn_Distance");
-	warnDistance *= warnDistance;
-	damageDistance = Get_Float_Parameter("Damage_Distance");
-	damageDistance *= damageDistance;
-	vehicleWarnDistance = Get_Float_Parameter("Vehicle_Warn_Distance");
-	vehicleWarnDistance *= vehicleWarnDistance;
-	vehicleDamageDistance = Get_Float_Parameter("Vehicle_Damage_Distance");
-	vehicleDamageDistance *= vehicleDamageDistance;
-	aircraftWarnDistance = Get_Float_Parameter("Aircraft_Warn_Distance");
-	aircraftWarnDistance *= aircraftWarnDistance;
-	aircraftDamageDistance = Get_Float_Parameter("Aircraft_Damage_Distance");
-	aircraftDamageDistance *= aircraftDamageDistance;
-	maxSurviveDistance = Get_Float_Parameter("Max_Survive_Distance");
-	maxSurviveDistance *= maxSurviveDistance;
-	leavingFieldStringId = Get_Int_Parameter("Warning_StringID");
-	errorMessageColor = Get_Vector3_Parameter("Warning_Color");
-	screenFadeColor = Get_Vector3_Parameter("Screen_Fade_Color");
-	myPos = Commands->Get_Position(obj);
-	Commands->Start_Timer(obj,this,0.1f,1);
-}
-void JMG_Utility_Damage_When_Outside_Of_Range::Timer_Expired(GameObject *obj, int number)
-{
-	if (number == 1)
-	{
-		for (int x = 1;x < 128;x++)
-		{
-			if (warnTime[x])
-				warnTime[x]--;
-			GameObject *player = Get_GameObj(x);
-			if (!player)
-				continue;
-			float dist = JmgUtility::SimpleDistance(Commands->Get_Position(player),myPos);
-			GameObject *playerVehicle = Get_Vehicle(player);
-			if (!playerVehicle)
-			{
-				if (dist > warnDistance)
-				{
-					screenEffectOn[x] = true;
-					float TempDistCalc = 1-(dist-maxSurviveDistance)/(warnDistance-maxSurviveDistance);
-					Set_Screen_Fade_Color_Player(player,screenFadeColor.X,screenFadeColor.Y,screenFadeColor.Z,0.1f);
-					Set_Screen_Fade_Opacity_Player(player,TempDistCalc,0.1f);
-				}
-				else if (screenEffectOn[x])
-				{
-					screenEffectOn[x] = false;
-					Set_Screen_Fade_Color_Player(player,0.0f,0.0f,0.0f,0.1f);
-					Set_Screen_Fade_Opacity_Player(player,0.0f,0.1f);
-				}
-				if (dist >= warnDistance && !warnTime[x])
-				{
-					Set_HUD_Help_Text_Player(player,leavingFieldStringId,errorMessageColor);
-					warnTime[x] = 30;
-				}
-				if (dist >= damageDistance)
-					Commands->Apply_Damage(player,0.25f,"None",player);
-			}
-			else
-			{
-				if (Is_VTOL(playerVehicle))
-				{
-					if (dist > aircraftWarnDistance)
-					{
-						screenEffectOn[x] = true;
-						float TempDistCalc = 1-(dist-maxSurviveDistance)/(aircraftWarnDistance-maxSurviveDistance);
-						Set_Screen_Fade_Color_Player(player,screenFadeColor.X,screenFadeColor.Y,screenFadeColor.Z,0.1f);
-						Set_Screen_Fade_Opacity_Player(player,TempDistCalc,0.1f);
-					}
-					else if (screenEffectOn[x])
-					{
-						screenEffectOn[x] = false;
-						Set_Screen_Fade_Color_Player(player,0.0f,0.0f,0.0f,0.1f);
-						Set_Screen_Fade_Opacity_Player(player,0.0f,0.1f);
-					}
-					if (dist >= aircraftWarnDistance && !warnTime[x])
-					{
-						Set_HUD_Help_Text_Player(player,leavingFieldStringId,errorMessageColor);
-						warnTime[x] = 30;
-					}
-				}
-				else
-				{
-					if (dist > vehicleWarnDistance)
-					{
-						screenEffectOn[x] = true;
-						float TempDistCalc = 1-(dist-maxSurviveDistance)/(vehicleWarnDistance-maxSurviveDistance);
-						Set_Screen_Fade_Color_Player(player,screenFadeColor.X,screenFadeColor.Y,screenFadeColor.Z,0.1f);
-						Set_Screen_Fade_Opacity_Player(player,TempDistCalc,0.1f);
-					}
-					else if (screenEffectOn[x])
-					{
-						screenEffectOn[x] = false;
-						Set_Screen_Fade_Color_Player(player,0.0f,0.0f,0.0f,0.1f);
-						Set_Screen_Fade_Opacity_Player(player,0.0f,0.1f);
-					}
-					if (dist >= vehicleWarnDistance && !warnTime[x])
-					{
-						Set_HUD_Help_Text_Player(player,leavingFieldStringId,errorMessageColor);
-						warnTime[x] = 30;
-					}
-				}
-				if (Is_VTOL(playerVehicle))
-				{
-					if (dist >= aircraftDamageDistance && Get_Vehicle_Driver(playerVehicle) == player)
-						Commands->Apply_Damage(playerVehicle,1.0f,"None",player);
-				}
-				else if (dist >= vehicleDamageDistance && Get_Vehicle_Driver(playerVehicle) == player)
-					Commands->Apply_Damage(playerVehicle,1.0f,"None",player);
-			}
-			if (dist >= maxSurviveDistance)
-				if (playerVehicle)
-					Commands->Apply_Damage(playerVehicle,99999.0f,"BlamoKiller",player);
-				else
-					Commands->Apply_Damage(player,99999.0f,"BlamoKiller",player);
-		}
-		Commands->Start_Timer(obj,this,0.1f,1);
-	}
-}
-
 ScriptRegistrant<JMG_Utility_Check_If_Script_Is_In_Library> JMG_Utility_Check_If_Script_Is_In_Library_Registrant("JMG_Utility_Check_If_Script_Is_In_Library","ScriptName:string,CppName:string");
 ScriptRegistrant<JMG_Send_Custom_When_Custom_Sequence_Matched> JMG_Send_Custom_When_Custom_Sequence_Matched_Registrant("JMG_Send_Custom_When_Custom_Sequence_Matched","Success_Custom=0:int,Correct_Step_Custom=0:int,Partial_Failure_Custom=0:int,Failure_Custom=0:int,Send_To_ID=0:int,Custom_0=0:int,Custom_1=0:int,Custom_2=0:int,Custom_3=0:int,Custom_4=0:int,Custom_5=0:int,Custom_6=0:int,Custom_7=0:int,Custom_8=0:int,Custom_9=0:int,Disable_On_Success=1:int,Disable_On_Failure=0:int,Starts_Enabled=1:int,Enable_Custom=0:int,Correct_Step_Saftey=0:int,Failure_Saftey=1:int,Max_Failures=1:int");
 ScriptRegistrant<JMG_Utility_Change_Model_On_Timer> JMG_Utility_Change_Model_On_Timer_Registrant("JMG_Utility_Change_Model_On_Timer","Model=null:string,Time=0:float");
@@ -7073,7 +6560,7 @@
 ScriptRegistrant<JMG_Utility_Infantry_Placed_Buildable_Object_Attached> JMG_Utility_Infantry_Placed_Buildable_Object_Attached_Registrant("JMG_Utility_Infantry_Placed_Buildable_Object_Attached","ScriptId:int,PlacerId:int,RepairedPreset:string,MatchTeam:int,Team:int");
 ScriptRegistrant<JMG_Utility_Lock_Weapon_Selection_While_Script_Attached> JMG_Utility_Lock_Weapon_Selection_While_Script_Attached_Registrant("JMG_Utility_Lock_Weapon_Selection_While_Script_Attached","WeaponPreset:string");
 ScriptRegistrant<JMG_Utility_Swimming_zDefault_Map_Fog_Values> JMG_Utility_Swimming_zDefault_Map_Fog_Values_Registrant("JMG_Utility_Swimming_zDefault_Map_Fog_Values","");
-ScriptRegistrant<JMG_Utility_Swimming_Zone> JMG_Utility_Swim_While_In_Zone_Registrant("JMG_Utility_Swimming_Zone","WaterColor[R|G|B]=0.28 0.43 0.55:vector3,WaterOpacity=0.5:float,WaterMinViewDistance=5.0:float,WaterMaxViewDistance=15.0:float,SwimmingSpeedMultiplier=0.75:float");
+ScriptRegistrant<JMG_Utility_Swimming_Zone> JMG_Utility_Swim_While_In_Zone_Registrant("JMG_Utility_Swimming_Zone","WaterColor[R|G|B]=0.28 0.43 0.55:vector3,WaterOpacity=0.5:float,WaterMinViewDistance=5.0:float,WaterMaxViewDistance=15.0:float");
 ScriptRegistrant<JMG_Utility_Swimming_Infantry> JMG_Utility_Swimming_Infantry_Registrant("JMG_Utility_Swimming_Infantry","WeaponPreset=Weapon_Swimming_Animations:string,DrownTime=10.0:float,StarDrownSequence=3.0:float,GaspForBreath=SFX.SwimmingGaspForBreath:string,PantingSoundEmitterModel=s_panting:string,HeartBeatSoundEmitterModel=s_heartBeat:string,DrownDamageRate=2.5:float,CatchBreathRate=0.33:float,WaterDamageAmount=0.0:float,WaterDamageWarhead=None:string,EnterWaterMessageStringId=0:int,WaterEnterMessageColor[R|G|B]=0.25 0.25 1.0:vector3");
 ScriptRegistrant<JMG_Utility_Zone_Enable_Spawners_In_Range> JMG_Utility_Zone_Enable_Spawners_In_Range_Registrant("JMG_Utility_Zone_Enable_Spawners_In_Range","StartID:int,EndID:int,PlayerType=2:int,Enable=1:int,TriggerOnce=1:int");
 ScriptRegistrant<JMG_Utility_Display_Message_On_Vehicle_Enter> JMG_Utility_Display_Message_On_Vehicle_Enter_Registrant("JMG_Utility_Display_Message_On_Vehicle_Enter","StringId:int,MessageOverride=null:string,Color[R|G|B]=0.0 1.0 0.0:vector3,DriverOnly=1:int,ShowOnce=1:int,PlayerType=2:int");
@@ -7192,9 +6679,3 @@
 ScriptRegistrant<JMG_Utility_Screen_Fade_Red_On_Damage> JMG_Utility_Screen_Fade_Red_On_Damage_Registrant("JMG_Utility_Screen_Fade_Red_On_Damage","FadeColor=0.75 0.0 0.0:vector3,FadeOpacity=0.85:float");
 ScriptRegistrant<JMG_Utility_Player_Count_Enable_Spawners> JMG_Utility_Player_Count_Enable_Spawners_Registrant("JMG_Utility_Player_Count_Enable_Spawners","StartID:int,EndID:int,PlayerCount[eq|<|>]=-1.0 -1.0 -1.0:vector3,PlayerCount[neq|between(|)]=-1.0 -1.0 -1.0:vector3,EnableCustom=0:int,StartsEnabled=1:int");
 ScriptRegistrant<JMG_Utility_AI_Engineer_Ignore_Target> JMG_Utility_AI_Engineer_Ignore_Target_Registrant("JMG_Utility_AI_Engineer_Ignore_Target","");
-ScriptRegistrant<JMG_Utility_Give_Weapon_In_Range> JMG_Utility_Give_Weapon_In_Range_Registrant("JMG_Utility_Give_Weapon_In_Range","WeaponName:string,Location:vector3,Range:float,EnableCustom:int,StartsEnabled=1:int,Rate=0.1:float,SelectWeapon=0:int,WeaponAmmo=1000:int,RefillRate=0.0:float,RefillAmount=0:int");
-ScriptRegistrant<JMG_Utility_AI_Follow_Player_On_Poke_Controller> JMG_Utility_AI_Follow_Player_On_Poke_Controller_Registrant("JMG_Utility_AI_Follow_Player_On_Poke_Controller","MaxFollowers=-1:int");
-ScriptRegistrant<JMG_Utility_AI_Follow_Player_On_Poke> JMG_Utility_AI_Follow_Player_On_Poke_Registrant("JMG_Utility_AI_Follow_Player_On_Poke","FollowDistance=1.0:float,FollowNearSpeed=0.25:float,FollowFarDistance=10.0:float,FollowFarSpeed=1.0:float,FollowVeryFarDistance=100.0:float,FollowVeryFarSpeed=10.0:float,FallBackWhenOutOfArmor=1:int,RunHomeSpeed=1.0:float,HealWhileAtHomeLocation=0.0:float,HUDMessagesColor=1.0 0.0 0.0:vector3,MessagePokeFollowerID:int,MessageFollowingYouID:int,MessageFollowingPlayerID:int,MessageMaxFollowersID:int,MessageHealingRequiredID:int,MessageFollowerLostID:int,MessageFollowerInjuredID:int,MessageFollowerKilledID:int,SendCustomID:int,PokedCustom:int,LostCustom:int,InjuredCustom:int,KilledCustom:int,HealedCustom:int");
-ScriptRegistrant<JMG_Utility_Timer_Damage_And_Teleport> JMG_Utility_Timer_Damage_And_Teleport_Registrant("JMG_Utility_Timer_Damage_And_Teleport","Delay:float,TeleportToObjectID:int,Location:vector3,DamageAmount:float,DamageWarhead=None:string,DamageSelf=1:int");
-ScriptRegistrant<JMG_Utility_Zone_Send_Custom_If_Has_Script> JMG_Utility_Zone_Send_Custom_If_Has_Script_Registrant("JMG_Utility_Zone_Send_Custom_If_Has_Script","ScriptName:string,ID=0:int,Custom=0:int,Param=0:int,Delay=0.0:float,PlayerType=2:int,TriggerOnce=1:int");
-ScriptRegistrant<JMG_Utility_Damage_When_Outside_Of_Range> JMG_Utility_Damage_When_Outside_Of_Range_Registrant("JMG_Utility_Damage_When_Outside_Of_Range","Warn_Distance=0.0:float,Damage_Distance=0.0:float,Vehicle_Warn_Distance=0.0:float,Vehicle_Damage_Distance=0.0:float,Aircraft_Warn_Distance=0.0:float,Aircraft_Damage_Distance=0.0:float,Max_Survive_Distance=0.0:float,Warning_StringID:int,Warning_Color=1.0 0.0 0.0:vector3,Screen_Fade_Color=0.25 0.0 0.0:vector3");
diff -uwrN source/scripts/jmgUtility.h sourceold/scripts/jmgUtility.h
--- source/scripts/jmgUtility.h	2016-12-17 21:07:23.267015700 +1000
+++ sourceold/scripts/jmgUtility.h	2016-11-01 12:49:30.379435500 +1000
@@ -698,6 +698,7 @@
 	}
 };
 
+
 class NewObjectiveSystem
 {
 	bool objectiveStringIdsLoaded;
@@ -1932,7 +1933,6 @@
 * \WaterOpacity - How transparent the screen is while in this zone
 * \WaterMinViewDistance - The min distance that the fog shows up when underwater
 * \WaterMaxViewDistance - The max distance of the fog when underwater
-* \SwimmingSpeedMultiplier - Speed multiplier when in water
 * \author jgray
 * \ingroup JmgUtility
 */
@@ -1999,7 +1999,6 @@
 	int waterZoneCount;
 	int lastWaterZoneId;
 	time_t lastDisplayTime;
-	float defaultSpeed;
 	void Created(GameObject *obj);
 	void Timer_Expired(GameObject *obj,int number);
 	void Custom(GameObject *obj,int message,int param,GameObject *sender);
@@ -2624,36 +2623,6 @@
 };
 
 /*!
-============================================================================================================================================================
-The objective system makes use of the following hard-coded string definitions, make sure to add them to your strings library if you plan on using my system:
-============================================================================================================================================================
-IDS_OBJ2_CANCELLED					%s mission objective canceled
-IDS_OBJ2_CANCELLED_NUMBERED			%s mission objective %d canceled
-IDS_OBJ2_LIST						%s Mission Objectives:
-IDS_OBJ2_NEW_OBJ					New %s mission objective:
-IDS_OBJ2_PRIORITY_0					Unknown
-IDS_OBJ2_PRIORITY_1					Primary
-IDS_OBJ2_PRIORITY_2					Secondary
-IDS_OBJ2_PRIORITY_3					Tertiary
-IDS_OBJ2_PRIORITY_4					Quaternary
-IDS_OBJ2_PRIORITY_5					Quinary
-IDS_OBJ2_PRIORITY_6					Senary
-IDS_OBJ2_PRIORITY_7					Septenary
-IDS_OBJ2_PRIORITY_8					Octonary
-IDS_OBJ2_PRIORITY_9					Nonary
-IDS_OBJ2_PRIORITY_10				Denary
-IDS_OBJ2_PRIORITY_11				Bonus
-IDS_OBJ2_STATE_0					Pending
-IDS_OBJ2_STATE_1					Accomplished
-IDS_OBJ2_STATE_2					Failed
-IDS_OBJ2_STATE_3					Hidden
-IDS_OBJ2_STATUS_CHANGED				%s mission objective %s
-IDS_OBJ2_STATUS_CHANGED_NUMBERED	%s mission objective %d %s
-IDS_OBJ2_UPDATED					%s mission objective updated:
-IDS_OBJ2_UPDATED_NUMBERED			%s mission objective %d updated:
-============================================================================================================================================================
-*/
-/*!
 * \brief Used to control a basic objective system
 * \ShowMarkersOnRadar - Should stars be shown on the radar
 * \PrimaryObjectiveModel - Visible 3d model to show for Primary Objectives
@@ -4385,210 +4354,3 @@
 class JMG_Utility_AI_Engineer_Ignore_Target : public ScriptImpClass {
 	void Created(GameObject *obj);
 };
-/*!
-* \brief Grants specified weapon to all players in range
-* \WeaponName - Name of the weapon to grant to the player
-* \Location - Location to grant the weapon at
-* \Range - Range from the location to grant the weapon
-* \EnableCustom - Custom to enable the scanning, parameter determines if its enabled or disabled 1 = enabled, 0 = disabled
-* \StartsEnabled - Should to script start running 1 = true, 0 = false
-* \Rate - Speed at which to scan, 0.0 will disable the repeated scanning and then only enable custom will trigger a scan
-* \SelectWeapon - Should the player pull out the weapon when its granted
-* \WeaponAmmo - Amount of ammo to grant with initial weapon grant
-* \RefillRate - How fast the gun should be refilled while in the zone
-* \RefillAmount - How much ammo to refill
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_Give_Weapon_In_Range : public ScriptImpClass
-{
-	float rate;
-	float refillRate;
-	float range;
-	Vector3 location;
-	bool enabled;
-	int enableCustom;
-	char weaponName[256];
-	bool selectWeapon;
-	int weaponAmmo;
-	int refillAmount;
-	void Created(GameObject *obj);
-	void Timer_Expired(GameObject *obj,int number);
-	void Custom(GameObject *obj,int message,int param,GameObject *sender);
-	void GrantWeapon();
-};
-
-/*!
-* \brief Needed for AI using JMG_Utility_AI_Follow_Player_On_Poke, this script controls the limits of how many bots each player can have following them
-* \MaxFollowers - Any value greater than 0 makes it so a player can only have that many followers at a time
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_AI_Follow_Player_On_Poke_Controller : public ScriptImpClass {
-	void Created(GameObject *obj);
-	void Destroyed(GameObject *obj);
-public:
-	static bool controllerPlaced;
-	static int maxFollowers;
-	static int followingPlayer[128];
-	JMG_Utility_AI_Follow_Player_On_Poke_Controller()
-	{
-		controllerPlaced = true;
-	}
-};
-
-/*!
-* \brief Makes an AI follow the player that pokes it, if the player dies it goes to its original position
-* \FollowDistance - How far should the AI follow the player
-* \FollowNearSpeed - How fast should the AI follow the player when it is near by
-* \FollowFarDistance - How far must the AI be away in order to run faster to the player
-* \FollowFarSpeed - How fast should the AI follow the player when it is far away
-* \FollowVeryFarDistance - How far must the AI be away in order to run faster to the player
-* \FollowVeryFarSpeed - How fast should the AI follow the player when it is far away
-* \FallBackWhenOutOfArmor - Should the AI return to its spawn location when it runs out of armor
-* \RunHomeSpeed - How fast should the AI run home
-* \HealWhileAtHomeLocation - The amount of health the AI regenerates while at its home location
-* \HUDMessagesColor - Color of the HUD messages that are displayed to the player that the AI is following (0.0 - 1.0)
-* \MessagePokeFollowerID - Message to display when a player pokes a follower, it displays the current number of followers out of total IE: %d/%d
-* \MessageFollowingYouID - Message to display if the player pokes the bot when it is already following them
-* \MessageFollowingPlayerID - Message to display to the player if they poke a bot that is following someone else
-* \MessageMaxFollowersID - Message to display if the player attempts to have more followers than allowed (message is formatted: You can only have %d creature%sfollowing you.)
-* \MessageHealingRequiredID - Message to display when the follower is hurt and has to heal before following again, only available when FallBackWhenOutOfArmor is on
-* \MessageFollowerLostID - Message to display when the player the follower is following wanders out of the pathfind zone
-* \MessageFollowerInjuredID - Message to display when the follower runs out of armor, FallBackWhenOutOfArmor must be on
-* \MessageFollowerKilledID - Message to display when the follower dies following someone
-* \SendCustomID - ID of the object customs should be sent to
-* \PokedCustom - Custom to send when the follower is poked and starts following
-* \LostCustom - Message to send if the follower gets lost
-* \InjuredCustom - Message to send when the follower gets injured, requires FallBackWhenOutOfArmor be on
-* \KilledCustom - Message to send if the follower is killed 
-* \HealedCustom - Message to send when the follower gets to full health, requires FallBackWhenOutOfArmor be on
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_AI_Follow_Player_On_Poke : public ScriptImpClass {
-	GameObject *lastFollow;
-	GameObject *lastTarget;
-	bool detached;
-	float followDistance;
-	float followNearSpeed;
-	float followFarSpeed;
-	float followFarDistance;
-	float followVeryFarSpeed;
-	float followVeryFarDistance;
-	float runHomeSpeed;
-	int actionUpdate;
-	float weaponRange;
-	float targetDistance;
-	int enemyId;
-	int pokerPlayerId;
-	int playerObjectId;
-	Vector3 homeLocation;
-	Vector3 lastLocation;
-	int enemySeen;
-	bool fallbackWithoutArmor;
-	float healWhileAtHomeLocation;
-	int sendCustomId;
-	int pokedCustom;
-	int lostCustom;
-	int killedCustom;
-	int healedCustom;
-	int injuredCustom;
-	Vector3 messageColor;
-	int messagePokeFollowerId;
-	char messagePokeFollower[220];
-	int messageFollowingYouId;
-	int messageFollowingPlayerId;
-	int messageMaxFollowersId;
-	char messageMaxFollowers[220];
-	int messageHealingRequiredId;
-	int messageFollowerInjuredId;
-	int messageFollowerKilledId;
-	int messageFollowerLostId;
-	bool hurt;
-	void Created(GameObject *obj);
-	void Enemy_Seen(GameObject *obj,GameObject *seen);
-	void Timer_Expired(GameObject *obj,int number);
-	void Damaged(GameObject *obj,GameObject *damager,float damage);
-	void Poked(GameObject *obj, GameObject *poker);
-	void Action_Complete(GameObject *obj,int action_id,ActionCompleteReason reason);
-	void Destroyed(GameObject *obj);
-	void Detach(GameObject *obj);
-	void AttackTarget(GameObject *obj,GameObject *follow,GameObject *target,Vector3 location,float speed,float distance);
-	void GiveUpOnPlayer(GameObject *obj,bool pokeable);
-	void ForgetEnemy(GameObject *obj);
-	void SendCustom(GameObject *obj,int custom);
-	char *formatMaxFollowingString(const char *format,...);
-	void ShowPlayerMessage(GameObject *player,int stringId,Vector3 color);
-public:
-	JMG_Utility_AI_Follow_Player_On_Poke()
-	{
-		detached = false;
-		pokerPlayerId = 0;
-	}
-};
-
-/*!
-* \brief Damages the attached object and teleports it after a timed delay
-* \Delay - Amount of time in seconds to wait
-* \TeleportToObjectID - ID of the object to teleport to
-* \Location - Location to teleport to if no object ID was supplied 
-* \DamageAmount - Amount of damage to apply
-* \DamageWarhead - Warhead to use to damage the object
-* \DamageSelf - Should the applied damage count for the object the script is attached to
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_Timer_Damage_And_Teleport : public ScriptImpClass {
-	void Created(GameObject *obj);
-	void Timer_Expired(GameObject *obj,int number);
-};
-
-/*!
-* \brief Sends a custom if the object entering the zone has a weapon
-* \PlayerType - Player type the zone triggers for
-* \ScriptName - Name of the script needed to trigger the zone
-* \ID - ID to send the custom to, 0 sends to self, -1 sends to enter
-* \Custom - Custom message to send
-* \Param - Param to send
-* \Delay - Delay to add before sending custom
-* \TriggerOnce - Allows the script only to trigger the first time the zone is entered
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_Zone_Send_Custom_If_Has_Script : public ScriptImpClass {
-	void Entered(GameObject *obj,GameObject *enterer);
-};
-
-/*!
-* \brief Fades the screen and applies damage as the player gets further from the spot on the map, kills player if they wander outside a max range
-* \Warn_Distance - Distance at which the warning message appears on the HUD for infantry
-* \Damage_Distance - Distance at which the infantry starts taking damage
-* \Vehicle_Warn_Distance - Distance at which the warning message appears on the HUD for vehicle
-* \Vehicle_Damage_Distance - Distance at which the vehicle starts taking damage
-* \Aircraft_Warn_Distance - Distance at which the warning message appears on the HUD for aircraft
-* \Aircraft_Damage_Distance - Distance at which the aircraft starts taking damage
-* \Max_Survive_Distance - Distance at which anything the player is in (or the player their self) dies
-* \Warning_StringID - String ID to use for the HUD warning message
-* \Warning_Color - Color to display the warning HUD message
-* \Screen_Fade_Color - Color to fade the screen to
-* \author jgray
-* \ingroup JmgUtility
-*/
-class JMG_Utility_Damage_When_Outside_Of_Range : public ScriptImpClass {
-	float warnDistance;
-	float damageDistance;
-	float vehicleWarnDistance;
-	float vehicleDamageDistance;
-	float aircraftWarnDistance;
-	float aircraftDamageDistance;
-	float maxSurviveDistance;
-	Vector3 errorMessageColor;
-	Vector3 screenFadeColor;
-	Vector3 myPos;
-	int warnTime[128];
-	bool screenEffectOn[128];
-	int leavingFieldStringId;
-	void Created(GameObject *obj);
-	void Timer_Expired(GameObject *obj,int number);
-};
\ No newline at end of file
diff -uwrN source/scripts/renalert.cpp sourceold/scripts/renalert.cpp
--- source/scripts/renalert.cpp	2016-11-11 09:53:29.349803400 +1000
+++ sourceold/scripts/renalert.cpp	2016-10-31 07:17:12.627013500 +1000
@@ -112,15 +112,6 @@
 	Commands->Set_Is_Visible(obj,false);
 }
 
-void RA_Infantry_Spy::Detach(GameObject *obj)
-{
-	ScriptImpClass::Detach(obj);
-	if (Exe != 4)
-	{
-		Commands->Set_Is_Visible(obj,true);
-	}
-}
-
 //////////////RA_Infantry_NotSpy//////////////
 
 void RA_Infantry_NotSpy::Created(GameObject *obj)
@@ -1223,11 +1214,6 @@
 
 void RA_Base_Defense_Simple::Damaged(GameObject *obj, GameObject *damager, float amount)
 {
-	if(Get_Object_Type(obj)==-2)
-	{
-		return;
-	}
-
 	if (!damager || amount <= 0)
 	{
 		return;
@@ -1349,6 +1335,8 @@
 	}
 	else
 	{
+		//force ceasefire before checking to continue (helps fight client glitches... I hope...)
+		Commands->Action_Reset(obj, 100); //I have no idea what this number does...
 		attacking = false;
 		current_priority = 10;
 		GameObject *target = Commands->Find_Object(targetID);
@@ -1395,15 +1383,13 @@
 				}
 			}
 		}
-		if (call_attack && obj->As_DamageableGameObj()->Is_Enemy(target->As_DamageableGameObj())) //if attack and if call_attack was not turned false
+		if (call_attack) //if attack and if call_attack was not turned false
 		{
 			if (Commands->Get_Health(target))
 			{
 				Attack(obj, target);
 			}
 		}
-		else 
-			Commands->Action_Reset(obj, 100);
 	}
 	if (loop_count > 4)
 	{
@@ -1441,7 +1427,7 @@
 		FinalTarget = Select_Target(obj, FinalTarget); //Was Rate_Target
 	}
 	/****************Execute Final Attack****************/
-	if (FinalTarget && FinalTarget->As_DamageableGameObj()->Is_Enemy(obj->As_DamageableGameObj()))
+	if (FinalTarget && Commands->Get_Player_Type(FinalTarget) == PTTEAM(Commands->Get_Player_Type(obj))) //Check if I can still fire
 	{
 		targetID = Commands->Get_ID(FinalTarget); //remember new target, or re-remember old target
 		Vector3 objPos = Commands->Get_Position(obj);
@@ -1455,7 +1441,6 @@
 			params.Set_Basic(this,(float)current_priority, 100);
 			if (Adjust_For_Infantry(FinalTarget))
 			{
-				params.AttackObject = NULL;
 				params.Set_Attack(targetPos, range, 0, true);
 				params.AttackCheckBlocked = false;
 			}
@@ -1470,7 +1455,6 @@
 		}
 		else
 		{
-			Commands->Action_Reset(obj, 100);
 			attacking = false;
 			targetID = 0;
 			current_priority = 10;
@@ -1836,7 +1820,7 @@
 		return; //If its not the timer we're interested in, end now
 	}
 	bool call_attack = true;
-	if (!attacking && Is_Base_Powered(Get_Object_Type(obj)))	//skip facing action if attacking
+	if (!attacking)	//skip facing action if attacking
 	{
 		if (loop_count > 4) //only face new direction every 5th loop
 		{
@@ -1883,6 +1867,8 @@
 	}
 	else
 	{
+		//force ceasefire before checking to continue (helps fight client glitches... I hope...)
+		Commands->Action_Reset(obj, 100); //I have no idea what this number does...
 		attacking = false;
 		current_priority = 10;
 		GameObject *target = Commands->Find_Object(targetID);
@@ -1929,15 +1915,13 @@
 				}
 			}
 		}
-		if (call_attack && obj->As_DamageableGameObj()->Is_Enemy(target->As_DamageableGameObj())) //if attack and if call_attack was not turned false
+		if (call_attack) //if attack and if call_attack was not turned false
 		{
 			if (Commands->Get_Health(target))
 			{
 				Attack(obj, target);
 			}
 		}
-		else 
-			Commands->Action_Reset(obj, 100);
 	}
 	if (loop_count > 4)
 	{
@@ -1975,7 +1959,7 @@
 		FinalTarget = Select_Target(obj, FinalTarget); //Was Rate_Target
 	}
 	/****************Execute Final Attack****************/
-	if (FinalTarget && FinalTarget->As_DamageableGameObj()->Is_Enemy(obj->As_DamageableGameObj()))
+	if (FinalTarget && Commands->Get_Player_Type(FinalTarget) == PTTEAM(Commands->Get_Player_Type(obj))) //Check if I can still fire
 	{
 		targetID = Commands->Get_ID(FinalTarget); //remember new target, or re-remember old target
 		Vector3 objPos = Commands->Get_Position(obj);
@@ -1989,7 +1973,6 @@
 			params.Set_Basic(this,(float)current_priority, 100);
 			if (Adjust_For_Infantry(FinalTarget))
 			{
-				params.AttackObject = NULL;
 				params.Set_Attack(targetPos, range, 0, true);
 				params.AttackCheckBlocked = false;
 			}
@@ -2004,7 +1987,6 @@
 		}
 		else
 		{
-			Commands->Action_Reset(obj, 100);
 			attacking = false;
 			targetID = 0;
 			current_priority = 10;
@@ -2483,7 +2465,7 @@
 				}
 			}
 		}
-		if (call_attack && obj->As_DamageableGameObj()->Is_Enemy(target->As_DamageableGameObj())) //if attack and if call_attack was not turned false
+		if (call_attack) //if attack and if call_attack was not turned false
 		{
 			Attack_Charged(obj, target);
 		}
@@ -2524,7 +2506,7 @@
 		FinalTarget = Select_Target(obj, FinalTarget); //Was Rate_Target
 	}
 	/****************Execute Final Attack****************/
-	if (FinalTarget && FinalTarget->As_DamageableGameObj()->Is_Enemy(obj->As_DamageableGameObj()))
+	if (FinalTarget && Commands->Get_Player_Type(FinalTarget) == PTTEAM(Commands->Get_Player_Type(obj))) //Check if I can still fire
 	{
 		targetID = Commands->Get_ID(FinalTarget); //remember new target, or re-remember old target
 		Vector3 objPos = Commands->Get_Position(obj);
diff -uwrN source/scripts/renalert.h sourceold/scripts/renalert.h
--- source/scripts/renalert.h	2016-11-11 09:53:29.351803400 +1000
+++ sourceold/scripts/renalert.h	2016-10-31 07:17:12.627013500 +1000
@@ -22,7 +22,6 @@
 
 class RA_Infantry_Spy : public ScriptImpClass {
 	void Created(GameObject *obj);
-	void Detach(GameObject *obj);
 };
 
 class RA_Infantry_NotSpy : public ScriptImpClass {
diff -uwrN source/scripts/scripts.vcxproj sourceold/scripts/scripts.vcxproj
--- source/scripts/scripts.vcxproj	2016-11-19 11:41:30.859453700 +1000
+++ sourceold/scripts/scripts.vcxproj	2016-10-31 07:17:12.632013500 +1000
@@ -400,7 +400,6 @@
     <ClCompile Include="dan.cpp" />
     <ClCompile Include="DBIKScripts.cpp" />
     <ClCompile Include="DBScripts.cpp" />
-    <ClCompile Include="DB_Research_Terminals.cpp" />
     <ClCompile Include="DefinitionFactoryClass.cpp" />
     <ClCompile Include="DefinitionFactoryMgrClass.cpp" />
     <ClCompile Include="dllmain.cpp" />
@@ -579,8 +578,6 @@
     <ClInclude Include="DamageZoneGameObjDef.h" />
     <ClInclude Include="dan.h" />
     <ClInclude Include="DBIKScripts.h" />
-    <ClInclude Include="DB_General.h" />
-    <ClInclude Include="DB_Research_Terminals.h" />
     <ClInclude Include="DefenseObjectDefClass.h" />
     <ClInclude Include="Definition.h" />
     <ClInclude Include="DefinitionFactoryClass.h" />
diff -uwrN source/scripts/scripts.vcxproj.filters sourceold/scripts/scripts.vcxproj.filters
--- source/scripts/scripts.vcxproj.filters	2016-11-19 11:41:30.860453700 +1000
+++ sourceold/scripts/scripts.vcxproj.filters	2016-10-31 07:17:12.633013500 +1000
@@ -368,9 +368,6 @@
     <ClCompile Include="DBScripts.cpp">
       <Filter>01. Sources</Filter>
     </ClCompile>
-    <ClCompile Include="DB_Research_Terminals.cpp">
-      <Filter>01. Sources</Filter>
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="ArmedGameObj.h">
@@ -1258,12 +1255,6 @@
     <ClInclude Include="DBIKScripts.h">
       <Filter>01. Sources</Filter>
     </ClInclude>
-    <ClInclude Include="DB_Research_Terminals.h">
-      <Filter>01. Sources</Filter>
-    </ClInclude>
-    <ClInclude Include="DB_General.h">
-      <Filter>01. Sources</Filter>
-    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="documentation\cinematics.dox">
diff -uwrN source/scripts/weaponmgr.h sourceold/scripts/weaponmgr.h
--- source/scripts/weaponmgr.h	2016-12-10 07:57:58.701001000 +1000
+++ sourceold/scripts/weaponmgr.h	2016-10-31 07:17:12.646013500 +1000
@@ -96,7 +96,6 @@
 	safe_float		TargetingRange;//new
 	int             C4Preset;
 	bool			DisableHitscan;
-	bool			TrackingIgnoreTarget;
 
 #if (PARAM_EDITING_ON) || (DDBEDIT) || (W3DVIEWER)
     Vector3 ProjectileExtent;
@@ -163,8 +162,6 @@
 	bool			AreaEffectWeaponAffectEnemy;
 	bool			AreaEffectWeaponAffectNeutral;
 	StringClass		FirstPersonAnim;
-	bool            DoTiltWhileReloading;
-	bool			AllowEmptyShots;
 	friend class PresetDump;
 }; // 00AC
 
