class KFProximityObjective extends ProximityObjective; function bool IsRelevant( Pawn P, bool bAliveCheck ) { return true; } function DisableObjective(Pawn Instigator) { local PlayerReplicationInfo PRI; if ( !IsActive() ) return; NetUpdateTime = Level.TimeSeconds - 1; if ( bClearInstigator ) { Instigator = None; } else { if ( Instigator != None ) { if ( Instigator.PlayerReplicationInfo != None ) PRI = Instigator.PlayerReplicationInfo; else if ( Instigator.Controller != None && Instigator.Controller.PlayerReplicationInfo != None ) PRI = Instigator.Controller.PlayerReplicationInfo; } if ( DelayedDamageInstigatorController != None ) { if ( Instigator == None ) Instigator = DelayedDamageInstigatorController.Pawn; if ( PRI == None && DelayedDamageInstigatorController.PlayerReplicationInfo != None ) PRI = DelayedDamageInstigatorController.PlayerReplicationInfo; } if ( !bBotOnlyObjective && DestructionMessage != "" ) PlayDestructionMessage(); } bDisabled = true; SetActive( false ); SetCriticalStatus( false ); DisabledBy = PRI; if ( MyBaseVolume != None && MyBaseVolume.IsA('ASCriticalObjectiveVolume') ) MyBaseVolume.GotoState('ObjectiveDisabled'); if ( bAccruePoints ) Level.Game.ScoreObjective( PRI, 0 ); else Level.Game.ScoreObjective( PRI, Score ); if ( !bBotOnlyObjective ) UnrealMPGameInfo(Level.Game).ObjectiveDisabled( Self ); TriggerEvent(Event, self, Instigator); UnrealMPGameInfo(Level.Game).FindNewObjectives( Self ); }