116 lines
2.6 KiB
Ucode
116 lines
2.6 KiB
Ucode
//=============================================================================
|
|
// 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
|
|
}
|