All pastes #2052654 Raw Edit

Anonymous

public text v1 · immutable
#2052654 ·published 2011-05-01 22:07 UTC
rendered paste body
void JFW_Obelisk_Weapon_CnC::Damaged(GameObject *obj,GameObject *damager,float damage)
{
	Commands->Set_Health(obj,Commands->Get_Max_Health(obj));
	Commands->Set_Shield_Strength(obj,Commands->Get_Max_Shield_Strength(obj));
}

void JFW_Obelisk_Weapon_CnC::Created(GameObject *obj)
{
	Vector3 v;
	GameObject *object;
	attack = false;
	range = 150.0f;
	effectid = 0;
	attackid = 0;
	EnemySeen = true;
	Commands->Set_Player_Type(obj,0);
	Commands->Set_Is_Rendered(obj,false);
	Commands->Enable_Enemy_Seen(obj,true);
	Commands->Enable_Hibernation(obj,false);
	Commands->Innate_Enable(obj);
	v = Commands->Get_Position(obj);
	object = Commands->Create_Object("Obelisk Effect",v);
	if (object)
	{
		effectid = Commands->Get_ID(object);
		Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
	}
}

void JFW_Obelisk_Weapon_CnC::Custom(GameObject *obj,int message,int param,GameObject *sender)
{
	Vector3 pos,pos2;
	float distance;
	GameObject *object;
	switch(message)
	{
	case 1:
	if (!param)
	{
		Commands->Enable_Enemy_Seen(obj,false);
		EnemySeen = false;
		ActionParamsStruct params;
		params.Set_Basic(this,100,0);
		params.Set_Attack(obj,0,0,true); 
		Commands->Action_Attack(obj,params);
		Commands->Action_Reset(obj,100);
		if (effectid)
		{
			object = Commands->Find_Object(effectid);
			if (object)
			{
				Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
			}
		}
	}
	else
	{
		Commands->Enable_Enemy_Seen(obj,true);
		EnemySeen = true;
	}
	break;
	case 2:
		if (!attack && EnemySeen)
		{
			object = Commands->Find_Object(param);
			if (object)
			{
				pos = Commands->Get_Position(obj);
				pos2 = Commands->Get_Position(object);
				distance = Commands->Get_Distance(pos,pos2);
				pos.Z = 0;
				pos2.Z = 0;
				if ((Commands->Get_Distance(pos,pos2) > 15) && (range >= distance))
				{
					attackid = param;
					EnemySeen = false;
					Commands->Start_Timer(obj,this,2.0,1);
					object = Commands->Find_Object(effectid);
					if (object)
					{
						Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",1);
					}
					pos2.Z -= 20;
					Commands->Create_Sound("Obelisk_Warm_Up",pos2,obj);
				}
				else
				{
					if (effectid)
					{
						object = Commands->Find_Object(effectid);
						if (object)
						{
							Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
						}
					}
					Commands->Action_Reset(obj,100);
				}
			}
		}
	break;
	case 3:
		attack = true;
		if (effectid)
		{
			object = Commands->Find_Object(effectid);
			if (object)
			{
				Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
			}
		}
		Commands->Action_Reset(obj,100);
	break;
	}
}

void JFW_Obelisk_Weapon_CnC::Enemy_Seen(GameObject *obj,GameObject *seen)
{
	int id;
	if (!attack)
	{
		id = Commands->Get_ID(seen);
		Commands->Send_Custom_Event(obj,obj,2,id,0);
	}
}

void JFW_Obelisk_Weapon_CnC::Timer_Expired(GameObject *obj,int number)
{
	GameObject *object;
	Vector3 pos,pos2;
	float distance;
	if (!attack)
	{
		if (number == 1)
		{
			object = Commands->Find_Object(attackid);
			if (object)
			{
				pos = Commands->Get_Position(obj);
				pos2 = Commands->Get_Position(object);
				distance = Commands->Get_Distance(pos,pos2);
				pos.Z = 0;
				pos2.Z = 0;
				if ((Commands->Get_Distance(pos,pos2) > 15) && (range >= distance))
				{
					ActionParamsStruct params;
					params.Set_Basic(this,100,0);
					//params.Set_Attack(object,range,0,true); //testing with this commented out
					if (Is_Soldier(object)) {
						params.Set_Attack_Position(Commands->Get_Bone_Position(object,"c R Foot"),range,0,true);
					} //target feet
					else { params.Set_Attack(object,range,0,true); }
					Commands->Action_Attack(obj,params);
					attackid = 0;
					Commands->Start_Timer(obj,this,2.0,2);
				}
				else
				{
					if (effectid)
					{
						object = Commands->Find_Object(effectid);
						if (object)
						{
							Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
						}
					}
					Commands->Action_Reset(obj,100);
					EnemySeen = true;
				}
			}
			else
			{
				if (effectid)
				{
					object = Commands->Find_Object(effectid);
					if (object)
					{
						Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
					}
				}
				Commands->Action_Reset(obj,100);
				EnemySeen = true;
			}
		}
		else
		{
			if (number == 2)
			{
				if (effectid)
				{
					object = Commands->Find_Object(effectid);
					if (object)
					{
						Commands->Set_Animation_Frame(object,"OBL_POWERUP.OBL_POWERUP",0);
					}
				}
				EnemySeen = true;
			}
		}
	}
}

void JFW_Obelisk_Weapon_CnC::Register_Auto_Save_Variables()
{
	Auto_Save_Variable(1,1,&EnemySeen);
	Auto_Save_Variable(2,4,&attackid);
	Auto_Save_Variable(3,4,&effectid);
	Auto_Save_Variable(4,4,&range);
	Auto_Save_Variable(5,1,&attack);
}