//=============================================================================
// KFSM_Hans_ThrowGrenade
//=============================================================================
//
//=============================================================================
// Killing Floor 2
// Copyright (C) 2015 Tripwire Interactive LLC
//=============================================================================
class KFSM_Hans_ThrowGrenade extends KFSM_PlaySingleAnim;

function SpecialMoveStarted( bool bForced, name PrevMove )
{
	local KFPawn_ZedHansBase HansPawn;

	HansPawn = KFPawn_ZedHansBase(PawnOwner);
	if( HansPawn != none )
	{
		HansPawn.PlayGrenadeDialog( false );

		if( HansPawn.CanMoveWhileThrowingGrenades() )
		{
			AnimStance = EAS_UpperBody;
			bDisableMovement = false;
		}
		else
		{
			AnimStance = EAS_FullBody;
			bDisableMovement = true;
			HansPawn.ZeroMovementVariables();
		}
	}

	super.SpecialMoveStarted( bForced, PrevMove );

	if( AIOwner != none )
	{
		`AILog_Ext( self@"started for"@AIOwner, 'Siren', AIOwner );
	}
}

function SpecialMoveEnded(Name PrevMove, Name NextMove)
{
	super.SpecialMoveEnded( PrevMove, NextMove );
	if( AIOwner != none )
	{
		`AILog_Ext( self@"ended for"@AIOwner, 'Siren', AIOwner );
	}
}

protected function bool InternalCanDoSpecialMove()
{
//    local KFPawn_ZedHansBase HansPawn;

	// Need to remove enemy check if Hans ever needs to throw grenades at doors, etc.
	if( PawnOwner == none || PawnOwner.Health <= 0 || AIOwner == none || AIOwner.Enemy == none || AIOwner.Enemy.Health <= 0 )
	{
		return false;
	}

//    HansPawn = KFPawn_ZedHansBase(PawnOwner);

	// Make sure we can throw grenade in the current stance, etc. TODO: Commented out because it caused Hans to get stuck
//    if( HansPawn != none && !HansPawn.IsDoingSpecialMove(SM_ChangeStance)
//        && !HansPawn.bGunsEquipped )
//    {
        return super.InternalCanDoSpecialMove();
//    }
//    else
//    {
//        return false;
//    }
}

DefaultProperties
{
	// SpecialMove
	Handle=KFSM_Hans_ThrowGrenade
	AnimName=Atk_Nade_V1
	//AnimName=Atk_NadeBarrage_V1
	bDisableSteering=false
	bDisableMovement=true
	// Don't let him shoot a gun while tossing a nade!
	bDisablesWeaponFiring=true
}
