If you want to help us maintaining this wiki, check out our discord server: https://discord.gg/3u69jMa
ASFlag
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'
}