If you want to help us maintaining this wiki, check out our discord server: https://discord.gg/3u69jMa 

ASFlag

From SWRC Wiki
Jump to navigation Jump to search
class ASFlag extends CTFFlag
	forcename;



//////////////////////////////////////////////////////////////
// AS Flag Class

function SendHome()
{
	Super.SendHome();

/*	if ( TeamNum < 2 )
	{
		if (ASGame(Level.Game).IsAttacker(TeamNum))
			Skins[0] = FlagTexture[TeamNum];
		else
			Skins[0] = FlagTexture[2]; // TODO: select proper color
	}
	*/
}

function EnemyTouch(PlayerController c);


// Events
singular function Touch(Actor Other)
{
	local Controller c;
	local TeamInfo team;

    if ( ValidHolder(Other) )
	{
		c = Pawn(Other).Controller;
		if ( c != None ) 		
		{
			if ( SameTeam(c)  )
			{
				if ( bHidden )
				 return;

				team = c.PlayerReplicationInfo.Team;
				if ((team != None) && ASGame(Level.Game).IsAttacker(team.TeamIndex))
					SetHolder( c );
			}
			else
				EnemyTouch( PlayerController(c) );
		}
	}    
	return;
}

function Score()
{
    //log(self$" score holder="$holder, 'GameObject');

	Super.Score();
	
	bHidden = true;

}

auto state home
{
	ignores SendHome, Score, Drop;
	
	function EnemyTouch( PlayerController c)
	{
		local MPPlayerReplicationInfo MPPRI;

		//TODO
		MPPRI = MPPlayerReplicationInfo(C.PlayerReplicationInfo);

		if (MPPRI == None || MPPRI.HasFlag == None)
			return;

		// Score!
		ASGame(Level.Game).ScoreFlag(C, MPPRI.HasFlag);
		MPPRI.HasFlag.Score();
		TriggerEvent(HomeBase.Event,HomeBase,C.Pawn);
	}


	function CheckTouching()
	{
		local int i;
				
		for ( i=0; i<Touching.Length; i++ )
		{
			// changed so that only other team can pick it up
			if ( (ValidHolder(Touching[i])) && (Touching[i].IsA('Pawn') ) &&
				( Pawn(Touching[i]).Controller != None ) &&  ( SameTeam(Pawn(Touching[i]).Controller)) )
			{
				SetHolder(Pawn(Touching[i]).Controller);
				return;
			}
		}
	}	
}


defaultproperties
{
     MaxDropTime=15
     MessageClass=Class'MPGame.ASMessage'
}