97 lines
2.3 KiB
Ucode
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
|
||
|
}
|
||
|
|