//=============================================================================
// KFPawn_ZedFleshPound_Versus
//=============================================================================
// Fleshpound Versus pawn
//=============================================================================
// Killing Floor 2
// Copyright (C) 2016 Tripwire Interactive LLC
//=============================================================================
class KFPawn_ZedFleshPound_Versus extends KFPawn_ZedFleshpound;

/** Ground speed to use when sprinting and enraged */
var const protected float RageSprintSpeed;

/** Rage bump damage variables */
var const protected int RageBumpDamage;
var const protected float RageBumpRadius;
var const protected float RageBumpMomentum;

function PossessedBy( Controller C, bool bVehicleTransition )
{
	Super.PossessedBy( C, bVehicleTransition );

	if( WorldInfo.NetMode != NM_DedicatedServer && Mesh != None )
	{
		UpdateGameplayMICParams();
	}
}

/** Disallow sprinting if we've been struck by an EMP */
function SetSprinting(bool bNewSprintStatus)
{
	if( bEmpDisrupted )
	{
		bNewSprintStatus = false;
	}

	super(KFPawn_Monster).SetSprinting( bNewSprintStatus );
}

/** Enrage this FleshPound! */
simulated function bool SetEnraged( bool bNewEnraged )
{
	local bool bSuccess;

	bSuccess = super.SetEnraged( bNewEnraged );

	if( bIsEnraged )
	{
		if( !IsTimerActive(nameOf(Timer_RageBump)) )
		{
			SetTimer( 0.25f, true, nameOf(Timer_RageBump) );
		}

		SprintSpeed = RageSprintSpeed;
	}
	else if( IsTimerActive(nameOf(Timer_RageBump)) )
	{
		ClearTimer( nameOf(Timer_RageBump) );

		SprintSpeed = default.SprintSpeed;
	}

	return bSuccess;
}

/** Applies damage and impulse to nearby pawns and objects */
simulated protected function Timer_RageBump()
{
	HurtRadius( RageBumpDamage, RageBumpRadius, RageBumpDamageType, RageBumpMomentum, Location, self, Controller );
}

/** Ends rage mode 3 seconds after melee damage is done */
function NotifyMeleeDamageDealt()
{
	if( !IsTimerActive(nameOf(EndRage)) )
	{
		SetTimer( 3.f, false, nameOf(EndRage) );
	}
}

/** Ends rage mode */
function EndRage()
{
	SetEnraged( false );
}

/** Clear our rage bump timer */
simulated function PlayDying( class<DamageType> DamageType, vector HitLoc )
{
	ClearTimer( nameOf(Timer_RageBump) );

	super.PlayDying( DamageType, HitLoc );
}

DefaultProperties
{
	bVersusZed=true
	TeammateCollisionRadiusPercent=0.30

	Health=2281//1725 //1983 //2181feltok

	Begin Object Name=SpecialMoveHandler_0
		SpecialMoveClasses(SM_PlayerZedMove_LMB)=class'KFSM_PlayerFleshpound_Melee'
		SpecialMoveClasses(SM_PlayerZedMove_RMB)=class'KFSM_PlayerFleshpound_Melee2'
		SpecialMoveClasses(SM_PlayerZedMove_V)=class'KFSM_PlayerFleshpound_Rage'
		SpecialMoveClasses(SM_PlayerZedMove_MMB)= class'KFSM_PlayerFleshpound_Block'
	End Object

	MoveListGamepadScheme(ZGM_Melee_Square)=SM_PlayerZedMove_LMB
	MoveListGamepadScheme(ZGM_Melee_Triangle)=SM_PlayerZedMove_RMB
	MoveListGamepadScheme(ZGM_Block_R1)=SM_PlayerZedMove_MMB
	MoveListGamepadScheme(ZGM_Special_R3)=SM_PlayerZedMove_V

	SpecialMoveCooldowns(0)=(SMHandle=SM_PlayerZedMove_LMB,		CooldownTime=0.75f,	SpecialMoveIcon=Texture2D'ZED_Fleshpound_UI.ZED-VS_Icons_Fleshpound-LightAttack', NameLocalizationKey="Light")
	SpecialMoveCooldowns(1)=(SMHandle=SM_PlayerZedMove_RMB,		CooldownTime=1.5f,	SpecialMoveIcon=Texture2D'ZED_Fleshpound_UI.ZED-VS_Icons_Fleshpound-HeavyAttack', NameLocalizationKey="Heavy")
	SpecialMoveCooldowns(2)=(SMHandle=SM_Taunt,					CooldownTime=0.0f,	bShowOnHud=false)
	SpecialMoveCooldowns(3)=(SMHandle=SM_PlayerZedMove_V,		CooldownTime=10.5f,	SpecialMoveIcon=Texture2D'ZED_Fleshpound_UI.ZED-VS_Icons_Fleshpound-Rage', NameLocalizationKey="Rage")
	SpecialMoveCooldowns(4)=(SMHandle=SM_PlayerZedMove_MMB,		CooldownTime=0.2,	SpecialMoveIcon=Texture2D'ZED_Shared_UI.ZED-VS_Icons_Generic-Block', NameLocalizationKey="Block") //0.5
	SpecialMoveCooldowns.Add((SMHandle=SM_Jump,					CooldownTime=1.25f,	SpecialMoveIcon=Texture2D'ZED_Fleshpound_UI.ZED-VS_Icons_Fleshpound-Jump', bShowOnHud=false)) // Jump always at end of array

	DamageTypeModifiers.Add((DamageType=class'KFDT_Explosive', 	                DamageScale=(0.75)))
	DamageTypeModifiers.Add((DamageType=class'KFDT_Explosive_RPG7', 	        DamageScale=(1.5)))
	DamageTypeModifiers.Add((DamageType=class'KFDT_Microwave', 	                DamageScale=(1.5)))  //0.25
	DamageTypeModifiers.Add((DamageType=class'KFDT_Fire', 	                    DamageScale=(0.5)))
	//DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic', DamageScale=(0.7f)))

	DamageTypeModifiers.Add((DamageType=class'KFDT_Ballistic_HRGTeslauncher',   DamageScale=(0.5)))
	DamageTypeModifiers.Add((DamageType=class'KFDT_Fire_HRGTeslauncherDoT',     DamageScale=(0.5)))

	IncapSettings(AF_Stun)=		(Vulnerability=(0.2, 0.25, 0.2, 0.0, 0.25),   Cooldown=10.0, Duration=1.5) //0.5, 0.55, 0.5, 0.0, 0.55
	IncapSettings(AF_Knockdown)=(Vulnerability=(0.25, 0.25, 0.25, 0.25, 0.4), Cooldown=10.0)
	IncapSettings(AF_Stumble)=	(Vulnerability=(0.2, 0.25, 0.25, 0.0, 0.4),   Cooldown=7.0)
	IncapSettings(AF_GunHit)=	(Vulnerability=(0.0, 0.0, 0.0, 0.0, 0.5),     Cooldown=1.7)
	IncapSettings(AF_MeleeHit)=	(Vulnerability=(1.0),                         Cooldown=1.2)
	IncapSettings(AF_Poison)=	(Vulnerability=(0.6),                         Cooldown=20.0, Duration=1.5)
	IncapSettings(AF_Microwave)=(Vulnerability=(0.5),                         Cooldown=17.0, Duration=2.5)
	IncapSettings(AF_FirePanic)=(Vulnerability=(0.7),                         Cooldown=12.0, Duration=3.5)
	IncapSettings(AF_EMP)=		(Vulnerability=(0.3),                         Cooldown=10.0, Duration=2.2) //0.95
	IncapSettings(AF_Freeze)=	(Vulnerability=(0.5),                         Cooldown=1.5,  Duration=0.5) //0.95
	IncapSettings(AF_Snare)=	(Vulnerability=(0.7, 0.7, 1.0, 0.7),      Cooldown=8.5,  Duration=1.5)
    IncapSettings(AF_Bleed)=    (Vulnerability=(0.25))

	//defaults
	Begin Object Name=MeleeHelper_0
		BaseDamage=30
		MaxHitRange=250.f
		MomentumTransfer=55000.f
		MyDamageType=class'KFDT_Bludgeon_Fleshpound'
		MeleeImpactCamScale=0.45
		PlayerDoorDamageMultiplier=5.f
	End Object
	MeleeAttackHelper=MeleeHelper_0

    DoshValue=300.0 // 1.5x default because they are harder to hit/kill
    XPValues(0)=105.0// 1.5 X 2x default because they are harder to hit/kill

	// Movement speeds
    SprintSpeed=550 //750
    RageSprintSpeed=700
    SprintStrafeSpeed=450
    GroundSpeed=275  //300

	// Rage
	RageBumpDamage=2
	RageBumpRadius=240.f
	RageBumpMomentum=500.f

    // Blocking higher values = less resistance
	MinBlockFOV=0.f

	//defaults
	ThirdPersonViewOffset={(
		OffsetHigh=(X=-175,Y=60,Z=60),
		OffsetLow=(X=-220,Y=100,Z=50),
		OffsetMid=(X=-160,Y=50,Z=30),
		)}

//	Health=3500
//	DrawScale3D=(X=1.25,Y=1.25,Z=1.25)
//	HitZones[HZI_HEAD]=(ZoneName=head, BoneName=Head, Limb=BP_Head, GoreHealth=2000, DmgScale=1.1, SkinID=1)
//	HitZones[3]       =(ZoneName=heart,	   BoneName=Spine2,		  Limb=BP_Special,  GoreHealth=1500, DmgScale=1.1, SkinID=2)
//	HitZones[5]		  =(ZoneName=lforearm, BoneName=LeftForearm,  Limb=BP_LeftArm,  GoreHealth=200,  DmgScale=0.5, SkinID=3)
//	HitZones[8]		  =(ZoneName=rforearm, BoneName=RightForearm, Limb=BP_RightArm, GoreHealth=200,  DmgScale=0.5, SkinID=3)
}
