1
0
KF2-Dev-Scripts/KFGame/Classes/AICommand_Hans_GunStance.uc
2020-12-13 18:01:13 +03:00

97 lines
2.3 KiB
Ucode

//=============================================================================
// AICommand_Hans_GunStance
//=============================================================================
// AI Command to handle Hans pulling out/putting away his weapons
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
// John "Ramm-Jaeger" Gibson
//=============================================================================
class AICommand_Hans_GunStance extends AICommand_SpecialMove
within KFAIController_Hans;
var byte StanceType;
/** Simple constructor that pushes a new instance of the command for the AI */
static function bool SetGunStance( KFAIController_Hans AI, byte StanceChangeType )
{
local AICommand_Hans_GunStance Cmd;
if( AI != None )
{
Cmd = new(AI) default.class;
if( Cmd != None )
{
AI.PushCommand( Cmd );
Cmd.StanceType = StanceChangeType;
AI.LastStanceChangeTime=AI.WorldInfo.TimeSeconds;
if( KFPawn(AI.Pawn) != none && KFPawn(AI.Pawn).bIsSprinting )
{
KFPawn(AI.Pawn).SetSprinting( false );
}
return true;
}
}
return false;
}
function Pushed()
{
Super.Pushed();
if( bUsePluginsForMovement && MovementPlugin != none )
{
MovementPlugin.DisablePlugin();
}
DisableMeleeRangeEventProbing();
}
function Popped()
{
if( bUsePluginsForMovement && MovementPlugin != none )
{
MovementPlugin.EnablePlugin();
}
Super.Popped();
EnableMeleeRangeEventProbing();
}
state Command_SpecialMove
{
function ESpecialMove GetSpecialMove()
{
return SM_ChangeStance;
}
/** Begin executing the special move */
function bool ExecuteSpecialMove()
{
SpecialMove = GetSpecialMove();
`AILog( GetFuncName()@SpecialMove, 'AICommand_Hans_GunStance' );
if( SpecialMove != SM_None && (!bShouldCheckSpecialMove || MyKFPawn.CanDoSpecialMove( SpecialMove )) )
{
MyKFPawn.DoSpecialMove(SpecialMove, true, GetInteractionPawn(), StanceType);
return true;
}
else
{
return false;
}
}
}
DefaultProperties
{
bShouldCheckSpecialMove=true
bAllowedToAttack=false
bIgnoreNotifies=true
bIgnoreStepAside=true
}