package Items
using RTDB, BaseStats, Prereqs

[ notQueryable ]
Base_Baton : Base_Blunt
{
	fk< ItemType > itemType = "ItemType.Wea_OneHandedClub";
	triggerEffectName = "te_wea_melee_swing_mid";
	string friendlyName = "w_melee_baton";
	CName audioName = "w_melee_001_katana";
	gameplayDescription = "LocKey#95243";
	fk< ConstantStatModifier > price = 
	{
		statType = "BaseStats.Price";
		modifierType = "Additive";
		value = 2;
	} : ConstantStatModifier;
	CName[] tags += 
	[
		"Baton", "FinisherFront", "FinisherBack", "DriverCombatBikeWeapon"
	];
	fk< AttachmentSlot >[] placementSlots += 
	[
		"AttachmentSlots.ItemSlotSMG"
	];
	fk< SlotItemPartListElement >[] slotPartList = 
	[
		{
			slot = "AttachmentSlots.Grip";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.w_baton_grip";
				}
			];
		}
	];
	fk< WeaponFxPackage > fxPackage = "WeaponFxPackage.BluntFxPackage";
	statPools = 
	[
		"BaseStatPools.TechMeleeCharge"
	];
	statModifierGroups += 
	[
		"Items.Base_Melee_Tech_Stats", "Items.Base_Baton_RPG_Stats", "Items.Base_Baton_Handling_Stats", "Items.Base_Baton_Misc_Stats", "Items.Base_Melee_Weapon_Damage_Type_Electric", "Items.Base_Melee_Weapon_Damage_Type_Electric_Min_Max"
	];
	attacks += 
	[
		"BatonAttacks.BatonComboAttack1", "BatonAttacks.BatonComboAttack2", "BatonAttacks.BatonComboAttack3", "BatonAttacks.BatonComboAttack4", "BatonAttacks.BatonMountedComboAttack1", "BatonAttacks.BatonMountedComboAttack2", "BatonAttacks.BatonMountedComboAttack3", "BatonAttacks.BatonMountedComboAttack4", "BatonAttacks.BatonFinalAttack1", "BatonAttacks.BatonFinalAttack2", "BatonAttacks.BatonFinalAttack3", "BatonAttacks.BatonFinalAttack4", "BatonAttacks.BatonFinalAttack5", "BatonAttacks.BatonMountedFinalAttack1", "BatonAttacks.BatonMountedFinalAttack2", "BatonAttacks.BatonMountedFinalAttack3", "BatonAttacks.BatonMountedFinalAttack4", "BatonAttacks.BatonMountedFinalAttack5", "BatonAttacks.BatonStrongAttack1", "BatonAttacks.BatonStrongAttack2", "BatonAttacks.BatonStrongAttack3", "BatonAttacks.BatonMountedStrongAttack1", "BatonAttacks.BatonMountedStrongAttack2", "BatonAttacks.BatonMountedStrongAttack3", "BatonAttacks.BatonJumpAttack", "BatonAttacks.BatonCrouchAttack", "BatonAttacks.BatonSprintAttack", "BatonAttacks.BatonSafeAttack", "BatonAttacks.BatonBlockAttack", "BatonAttacks.BatonDeflectAttack", "BatonAttacks.BatonBodySlamLevel1Attack", "BatonAttacks.BatonBodySlamLevel2Attack", "BatonAttacks.BatonBodySlamLevel3Attack", "BatonAttacks.BatonGroundSlamAttack"
	];
	audioWeaponConfiguration = "audio_melee_metadata_baton";
	enableNpcRPGData = true;
	npcRPGData = 
	{
		statModifierGroups += 
		[
		];
	} : Base_Baton_NPC_Data;
}

Base_Baton_NPC_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Range";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			value = 8.f;
		} : PhysicalImpulseModifier, 
		{
			statType = "BaseStats.CanParry";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StaminaCostToBlock";
			modifierType = "Additive";
			value = 20.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitDismembermentFactor";
			modifierType = "Multiplier";
			value = 0.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitReactionFactor";
			modifierType = "Additive";
			value = 2.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitWoundsFactor";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitDismembermentFactor";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			float value = 10.f;
		} : KnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseKnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseEvadeImpulseModifier, 
		{
			float value = 8.f;
		} : PhysicalImpulseModifier, 
		{
			value = 0.4f;
		} : EquipItemTime_GangModifier, 
		{
			value = 1.167f;
		} : EquipAnimationDuration_GangModifier, 
		{
			value = 1.9f;
		} : EquipActionDuration_GangModifier, 
		{
			value = 0.933f;
		} : UnequipItemTime_GangModifier, 
		{
			value = 1.067f;
		} : UnequipAnimationDuration_GangModifier, 
		{
			value = 1.4f;
		} : UnequipDuration_GangModifier, 
		{
			value = 0.4f;
		} : EquipItemTime_CorpoModifier, 
		{
			value = 1.167f;
		} : EquipAnimationDuration_CorpoModifier, 
		{
			value = 1.9f;
		} : EquipActionDuration_CorpoModifier, 
		{
			value = 0.933f;
		} : UnequipItemTime_CorpoModifier, 
		{
			value = 1.067f;
		} : UnequipAnimationDuration_CorpoModifier, 
		{
			value = 1.4f;
		} : UnequipDuration_CorpoModifier
	];
}

Base_Baton_NPC_Data : Base_Blunt_NPC_RPG_Data
{
	statModifierGroups += 
	[
		"Items.Base_Baton_NPC_Stats", "Items.Baton_NPC_Damage_Stats"
	];
}

Base_Baton_RPG_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Weight";
			modifierType = "Additive";
			value = 4.2f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BlockFactor";
			modifierType = "Additive";
			value = 4f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectrocutedApplicationRate";
			modifierType = "Additive";
			refObject = "Player";
			refStat = "BaseStats.SEApplicationRateBasedOnWeaponCharge";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier
	];
}

Base_Baton_Alpha_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 100.f;
		} : ChargeModifier, 
		{
			value = 0.5f;
		} : ChargeTimeModifier, 
		"AttackModifier.WeaponArmorPenetrationLow"
	];
}

Base_Baton_Beta_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 100.f;
		} : ChargeModifier, 
		{
			value = 0.75f;
		} : ChargeTimeModifier, 
		"AttackModifier.WeaponArmorPenetrationMedium"
	];
}

Base_Baton_Gamma_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 100.f;
		} : ChargeModifier, 
		{
			value = 1.0f;
		} : ChargeTimeModifier, 
		"AttackModifier.WeaponArmorPenetrationMedium", {
			statType = "BaseStats.ElectrocutedApplicationRate";
			modifierType = "Additive";
			value = 5f;
		} : ConstantStatModifier
	];
}

Baton_Damage_Stats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Additive";
			value = 62f;
		} : ConstantStatModifier
	];
}

Baton_NPC_Damage_Stats : StatModifierGroup
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.DPS";
			modifierType = "Additive";
			value = 67f;
		} : ConstantStatModifier
	];
}

Base_Baton_Handling_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.Range";
			modifierType = "Additive";
			value = 4.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AttacksNumber";
			modifierType = "Additive";
			value = 3;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.HitDismembermentFactor";
			modifierType = "Multiplier";
			value = 1.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MeleeAttackDuration";
			modifierType = "Additive";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.MeleeAttackComboDuration";
			modifierType = "Additive";
			value = 0.58575f;
		} : ConstantStatModifier, 
		{
			float value = 10.f;
		} : KnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseKnockdownImpulseModifier, 
		{
			float value = 10.f;
		} : BaseEvadeImpulseModifier, 
		{
			float value = 8.f;
		} : PhysicalImpulseModifier, 
		{
			statType = "BaseStats.StaminaCostToBlock";
			modifierType = "Multiplier";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.BaseMeleeAttackStaminaCost";
			modifierType = "Additive";
			value = 10f;
		} : ConstantStatModifier
	];
}

Base_Baton_Misc_Stats : StatModifierGroup
{
	statModifiers = 
	[
		"BaseStats.EquipDurationModifier", "BaseStats.UnequipDurationModifier", {
			statType = "BaseStats.ZoomLevel";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.EquipDuration_First";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier
	];
}

[ notQueryable ]
w_melee_010__electric_baton : Preset_Baton_Alpha
{
}

w_baton_grip : ItemWeaponRoot
{
	string friendlyName = "w_baton_grip";
	CName appearanceResourceName = "w_baton_grip";
}

