1
0
KF2-Dev-Scripts/KFGameContent/Classes/AICommand_Patriarch_MortarAttack.uc

102 lines
2.2 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// AICommand_Patriarch_MortarAttack
//=============================================================================
// Performs the Patriarch mortar attack
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class AICommand_Patriarch_MortarAttack extends AICommand_SpecialMove
within KFAIController_ZedPatriarch;
var bool bDoBarrage;
/** Simple constructor that pushes a new instance of the command for the AI */
static function bool FireMortar( KFAIController_ZedPatriarch AI, bool bIsBarrageAttack )
{
local AICommand_Patriarch_MortarAttack Cmd;
if( AI != None )
{
Cmd = new(AI)default.class;
if( Cmd != None )
{
Cmd.bDoBarrage = bIsBarrageAttack;
AI.PushCommand( Cmd );
return true;
}
}
return false;
}
function Pushed()
{
Super.Pushed();
StopAllLatentMovement();
AIZeroMovementVariables();
if( Enemy != none )
{
Focus = Enemy;
}
AIActionStatus = "Starting Mortar Attack AICommand";
if( Focus != None )
{
SetDesiredRotation(rotator(Focus.Location - Pawn.Location));
}
DisableMeleeRangeEventProbing();
bCanEvaluateAttacks = false;
}
function Popped()
{
AIActionStatus = "Finished Mortar Attack AICommand";
MyPatPawn.ClearMortarTargets();
Super.Popped();
}
state Command_SpecialMove
{
/** Checks circumstances in which to consider special move completed */
function bool IsSpecialMoveComplete()
{
if( !bPreparingMove || MyKFPawn == None || MyKFPawn.SpecialMove == SM_None || MyKFPawn.SpecialMove != GetSpecialMove() )
{
return true;
}
return false;
}
function byte GetSpecialMoveFlags( ESpecialMove InSpecialMove )
{
if( bRaging )
{
return 1;
}
else if( bDoBarrage )
{
// Barrage
return 2;
}
return 0;
}
function ESpecialMove GetSpecialMove()
{
return SM_SonicAttack;
}
}
DefaultProperties
{
bShouldCheckSpecialMove=true
bIgnoreNotifies=true
bAllowedToAttack=false
TimeOutDelaySeconds=25.f
bIgnoreStepAside=true
}