


class DB_Shield_Generator_Vehicle : public ScriptImpClass {
	unsigned long shroudID;
	unsigned long sizeID;
	int PilotID;
	bool CoolDown;
	void Created(GameObject *obj);
	void Custom(GameObject *obj, int type, int param, GameObject *sender);
	void Timer_Expired(GameObject *obj, int number);
	void Destroyed(GameObject *obj);
};


class DB_Controllable_Turret : public ScriptImpClass {
	int Team;
	void Created(GameObject *obj);
	void Custom(GameObject *obj,int type,int param,GameObject *sender);
	void Timer_Expired(GameObject *obj,int Number);
};

class DB_Guard_Bot : public ScriptImpClass {
	Vector3 HomePosition;
	void Created(GameObject *obj);
	void Damaged(GameObject *obj,GameObject *damager,float amount);
	void Custom(GameObject *obj,int type,int param,GameObject *sender);
	void Timer_Expired(GameObject *obj,int number);
};

class DB_Support_Bot : public ScriptImpClass {
	int followid;
	void Created(GameObject *obj);
	void Damaged(GameObject *obj,GameObject *damager,float amount);
	void Poked(GameObject *obj,GameObject *poker);
	void Timer_Expired(GameObject *obj,int number);
};

class dblaney_Nod_Obelisk : public ScriptImpClass {
	int WeaponID;
	bool PowerOn;
	float OffsetHeight;
	float MaxRange;
	float ChargeTime;
	int GroundOnly;
	void Created(GameObject* ObeliskObj);
	void Killed(GameObject* ObeliskObj, GameObject* Killer);
	void Destroyed(GameObject* ObeliskObj);
	void Timer_Expired(GameObject *ObeliskObj, int number);
	//void Custom(GameObject* ObeliskObj, int type, int Param, GameObject* Sender);
};

class dblaney_Nod_Obelisk_Structure : public ScriptImpClass {
	int WeaponID;
	bool PowerOn;
	float OffsetHeight;
	float MaxRange;
	float ChargeTime;
	int GroundOnly;
	void Created(GameObject* ObeliskObj);
	void Killed(GameObject* ObeliskObj, GameObject* Killer);
	void Destroyed(GameObject* ObeliskObj);
	void Custom(GameObject* ObeliskObj, int type, int Param, GameObject* Sender);
};

class dblaney_Nod_Obelisk_Weapon : public ScriptImpClass {
	int EnemyID;
	int EffectID;
	bool Firing;
	bool Charged;
	float MaxRange;
	float ChargeTime;
	int GroundOnly;

	void Created(GameObject* WeaponObj);
	void Destroyed(GameObject* WeaponObj);
	bool IsValidEnemy(GameObject* WeaponObj, GameObject* EnemyObj);

	void StartFiring(GameObject* WeaponObj);
	void StopFiring(GameObject* WeaponObj);
	void StartEffect(GameObject* WeaponObj);
	void StopEffect(GameObject* WeaponObj);
	void FireAt(GameObject* WeaponObj, GameObject* EnemyObj);
	void FaceEnemy(GameObject* WeaponObj, GameObject* EnemyObj);
	void StopFireAt(GameObject* WeaponObj);
	void Timer_Expired(GameObject* WeaponObj, int Number);
	void Enemy_Seen(GameObject* WeaponObj, GameObject* EnemyObj);
public: void Register_Auto_Save_Variables();
};


class DB_Power_Down_Console : public ScriptImpClass {
	bool reset;
	int team;
	void Created(GameObject *obj);
	void Poked(GameObject *obj,GameObject *poker);
	void Timer_Expired(GameObject *obj,int number);
};

class DB_Power_Down_Building_Console : public ScriptImpClass {
	bool reset;
	int team;
	int buildingID;
	void Created(GameObject *obj);
	void Poked(GameObject *obj,GameObject *poker);
	void Timer_Expired(GameObject *obj,int number);
};

class DB_Disable_Injured_Animations : public ScriptImpClass {
	void Created(GameObject *obj);
	void Detach(GameObject *obj);
};

class DB_Set_Scale : public ScriptImpClass {
	float originalscale;
	void Created(GameObject *obj);
	void Detach(GameObject *obj);
};

class DB_Grant_Keycard_Killed : public ScriptImpClass {
	void Killed(GameObject *obj, GameObject *killer);
	void Destroyed(GameObject *obj);
};

class DB_Grant_Keycard_Timer : public ScriptImpClass {
	int KeyLevel;
	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;
	}
};