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

116 lines
2.6 KiB
Ucode
Raw Normal View History

2020-12-13 15:01:13 +00:00
//=============================================================================
// AICommand_Husk_Suicide
//=============================================================================
// Command used by husks with low-health who become suicidal, intending to
// blow themselves up.
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class AICommand_Husk_Suicide extends AICommand_SpecialMove
within KFAIController_ZedHusk;
/** Simple constructor that pushes a new instance of the command for the AI */
static function bool Suicide( KFAIController_ZedHusk AI )
{
local AICommand_Husk_Suicide Cmd;
if( AI != None )
{
Cmd = new(AI) default.class;
if( Cmd != None )
{
AI.PushCommand( Cmd );
return true;
}
}
return false;
}
/*********************************************************************************************
* Push/Pause/Pop
********************************************************************************************* */
function Pushed()
{
Super.Pushed();
DisableMeleeRangeEventProbing();
if( Pawn != none )
{
Pawn.ZeroMovementVariables();
}
MoveTimer = -1.f;
StopAllLatentMovement();
LockdownAI();
`AILog( self@"Pushed", 'Husk_Suicide' );
AIActionStatus = "Executing suicide AICommand";
}
function Resumed( Name OldCommandName )
{
`AILog( self@"Resumed, previous command: "$OldCommandName, 'Husk_Suicide' );
Super.Resumed( OldCommandName );
LockdownAI();
}
function Paused( GameAICommand NewCommand )
{
`AILog( self@"Paused by command"@NewCommand$", WTF!", 'Husk_Suicide' );
Super.Paused( NewCommand );
UnlockAI();
}
function Popped()
{
Super.Popped();
`AILog( self@"Popped()", 'Husk_Suicide' );
if( Pawn != none )
{
AIActionStatus = "Finished suicide AICommand, health:"$Pawn.Health;
}
}
function ESpecialMove GetSpecialMove();
state Command_SpecialMove
{
function ESpecialMove GetSpecialMove()
{
return SM_Suicide;
}
function bool ExecuteSpecialMove()
{
local KFAIController KFAIC;
local bool bExecuted;
bExecuted = super.ExecuteSpecialMove();
if( bExecuted )
{
foreach WorldInfo.AllControllers( class'KFAIController', KFAIC )
{
if( KFAIC != outer && KFAIC.MyKFPawn != none )
{
if( KFAIC.CanSee(MyKFPawn) )
{
KFAIC.NotifyHuskSuicide( MyKFPawn );
}
}
}
}
return bExecuted;
}
}
defaultproperties
{
bAllowedToAttack=false
bIgnoreNotifies=false
}