package Items
using RTDB, BaseStats, WeaponFxPackage, Prereqs, Perks, Effectors

[ notQueryable ]
Preset_Tech_Sniper_Rifle_Default : Base_Rasetsu
{
	CName appearanceResourceName = "Preset_Tech_Sniper_Rifle_Default";
	CName[] visualTags = 
	[
		"Default"
	];
	tags += 
	[
		"SkipActivityLogOnRemove"
	];
	fk< SlotItemPartPreset >[] slotPartListPreset = 
	[
		{
			slot = "AttachmentSlots.Receiver";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__rcv1";
		}, 
		{
			slot = "AttachmentSlots.Barrel";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__base1";
		}, 
		{
			slot = "AttachmentSlots.Magazine";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_std";
		}, 
		{
			slot = "AttachmentSlots.MagazineEmpty";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_stdr";
		}, 
		{
			slot = "AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod1";
		} : Tech_PR_SR_ModList_Slot1, 
		{
			slot = "AttachmentSlots.Tech_Precision_Sniper_Rifle_WeaponMod2";
		} : Tech_PR_SR_ModList_Slot2
	];
}

[ notQueryable ]
VHard_50_TechCool_Weapon1 : Preset_Rasetsu_Prototype
{
	quality = "Quality.Legendary";
	statModifiers += 
	[
		"Quality.PlusPlusModifier"
	];
}

[ notQueryable ]
Preset_Rasetsu_Prototype : Preset_Tech_Sniper_Rifle_Default
{
	OnLooted += 
	[
		{
			effectors = 
			[
				{
					fact = "rasetsu_prototype_owned";
					value = 1;
				} : SetFactEffector
			];
		}
	];
	fk< ItemBlueprint > blueprint = "Items.Iconic_Ranged_Weapon_NoAttachments_Blueprint";
	tags += 
	[
		"IconicWeapon", "WorkspotSyncAnimated", "AutoScalingItem", "Rasetsu"
	];
	visualTags = 
	[
		"Default"
	];
	quality = "Quality.Random";
	displayName = "LocKey#81440";
	localizedDescription = "LocKey#81441";
	statModifiers += 
	[
		"Character.ScaleToPlayerPowerLevel", "Quality.IconicItem"
	];
	npcRPGData = 
	{
		statModifiers += 
		[
			"Quality.IconicItem"
		];
	} : Base_Rasetsu_NPC_Data;
	slotPartListPreset = 
	[
		{
			slot = "AttachmentSlots.Receiver";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__rcv1";
		}, 
		{
			slot = "AttachmentSlots.Barrel";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__base1";
		}, 
		{
			slot = "AttachmentSlots.Magazine";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_std";
		}, 
		{
			slot = "AttachmentSlots.MagazineEmpty";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_stdr";
		}, 
		{
			slot = "AttachmentSlots.IconicWeaponModLegendary";
			itemPartPreset = "Items.RasetsuWeaponMod";
		}
	];
	bool scaleToPlayer = true;
	statModifierGroups = 
	[
		"Items.IconicQualityRandomization", "Items.Base_Rasetsu_Technical_Stats", "Items.Base_Rasetsu_Handling_Stats", "Items.Base_Rasetsu_Recoil_Stats", "Items.Base_Rasetsu_Spread_Stats", "Items.Base_Rasetsu_Aim_Stats", "Items.Base_Rasetsu_Prototype_Constant_Stats", "Items.Base_Rasetsu_Damage_Stats", "Items.Base_Tech_Sniper_Stats", "Items.Base_Tech_Sniper_Rifle_Mult_Stats", "Items.Base_Sniper_Rifle_Sway_Stats", "Items.Base_Sniper_Rifle_RPG_Stats", "Items.Base_Sniper_Rifle_Misc_Stats", "Items.Base_PlayerState_Spread_Stats", "Items.Base_Sniper_Rifle_DeadReckoning_Stats", "Items.Base_Melee_Weapon_Damage_Type_Electric", "Items.Base_Melee_Weapon_Damage_Type_Electric_Min_Max"
	];
}

Base_Rasetsu_Prototype_Constant_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.SpreadDefaultX";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsDefaultX";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadMaxX";
			modifierType = "Additive";
			value = 6.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsMaxX";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadChangePerShot";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsChangePerShot";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMin";
			modifierType = "Additive";
			value = 8.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMax";
			modifierType = "Additive";
			value = 9.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMinADS";
			modifierType = "Additive";
			value = 3.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMaxADS";
			modifierType = "Additive";
			value = 4.f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.FirePower";
			modifierType = "Multiplier";
			value = 0.957f;
		} : ConstantStatModifier, 
		"AttackModifier.WeaponArmorPenetrationMedium", {
			statType = "BaseStats.ZoomLevel";
			modifierType = "Additive";
			value = 2.75f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ZoomLevel";
			modifierType = "Additive";
			refStat = "BaseStats.Quality";
			opSymbol = "*";
			value = 0.25f;
		} : CombinedStatModifier, 
		{
			value = 1;
		} : SpreadingAttackMaxTargetsModifier, 
		{
			value = 0;
		} : SpreadingAttackMaxJumpsModifier, 
		{
			value = 0.8;
		} : SpreadingAttackDamageMultiplierModifier, 
		{
			value = 35;
		} : SpreadingAttackRangeModifier, 
		{
			value = 120;
		} : SpreadingAttackConeAngleModifier, 
		{
			value = 1.0f;
		} : RicochetChanceModifier, 
		{
			value = 0.0f;
		} : RicochetCountModifier, 
		{
			value = 0f;
		} : RicochetMinAngleModifier, 
		{
			value = 75f;
		} : RicochetMaxAngleModifier, 
		{
			value = 30f;
		} : RicochetTargetSearchAngleModifier
	];
}

[ notQueryable ]
Sniper_Nest_Version_Tech_Sniper_Rifle : Preset_Tech_Sniper_Rifle_Default
{
	fk< ItemBlueprint > blueprint = "Items.Iconic_Ranged_Weapon_NoMuzzle_Blueprint";
	tags += 
	[
		"Quest", "IconicWeapon"
	];
	visualTags = 
	[
		"Default"
	];
	quality = "Quality.Random";
	displayName = "LocKey#81440";
	localizedDescription = "LocKey#81441";
	enableNpcRPGData = false;
	statModifiers += 
	[
		"Quality.IconicItem", "Character.ScaleToPlayerPowerLevel"
	];
	bool scaleToPlayer = true;
	slotPartListPreset = 
	[
		{
			slot = "AttachmentSlots.Receiver";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__rcv1";
		}, 
		{
			slot = "AttachmentSlots.Barrel";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__base1";
		}, 
		{
			slot = "AttachmentSlots.Magazine";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_std";
		}, 
		{
			slot = "AttachmentSlots.MagazineEmpty";
			fk< Item > itemPartPreset = "Items.w_rifle_sniper__tsunami_rasetsu__mag_stdr";
		}
	];
	statModifierGroups = 
	[
		"Items.IconicQualityRandomization", "Items.Base_Sniper_Nest_Rasetsu_Technical_Stats", "Items.Base_Rasetsu_Handling_Stats", "Items.Base_Rasetsu_Recoil_Stats", "Items.Base_Rasetsu_Spread_Stats", "Items.Base_Rasetsu_Aim_Stats", "Items.Base_Sniper_Nest_Rasetsu_Constant_Stats", "Items.Base_Rasetsu_Damage_Stats", "Items.Base_Sniper_Nest_Rasetsu_Tech_Stats", "Items.Base_Tech_Sniper_Rifle_Mult_Stats", "Items.Base_Sniper_Rifle_Sway_Stats", "Items.Base_Sniper_Rifle_RPG_Stats", "Items.Base_Sniper_Rifle_Misc_Stats", "Items.Base_PlayerState_Spread_Stats", "Items.Base_Weapon_Status_Effect_Application_Stats", "Items.Base_Melee_Weapon_Damage_Type_Electric", "Items.Base_Melee_Weapon_Damage_Type_Electric_Min_Max"
	];
}

Base_Sniper_Nest_Rasetsu_Technical_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.f;
		} : NumShotsToFireModifier, 
		{
			value = 1.2f;
		} : CycleTimeModifier, 
		{
			value = 3.f;
		} : MagazineCapacityModifier, 
		{
			value = 1.f;
		} : ProjectilesPerShotModifier, 
		"BaseStats.ProjectilesPerShotCombinedModifier", {
			value = 1.f;
		} : ChargeDischargeTimeModifier, 
		{
			value = 0.0f;
		} : ChargeMaxTimeInChargedStateModifier, 
		{
			value = 1.f;
		} : ChargeReadyPercentageModifier, 
		{
			value = 1.2f;
		} : ChargeTimeModifier, 
		{
			value = 0.05f;
		} : ShotDelayModifier, 
		{
			value = 100.f;
		} : ChargeModifier, 
		{
			statType = "BaseStats.TechPierceEnabled";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier, 
		{
			value = 0.0f;
		} : TechPierceChargeLevelModifier
	];
}

Base_Sniper_Nest_Rasetsu_Tech_Stats : Base_Tech_Stats
{
	statModifiers += 
	[
		{
			value = 10.f;
		} : TechPierceScanAngleModifier, 
		{
			statType = "BaseStats.CanFullyChargeWeapon";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanOverchargeWeapon";
			modifierType = "Additive";
			value = 1f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.EffectiveChargeTime";
			modifierType = "Additive";
			refStat = "BaseStats.ChargeTime";
			opSymbol = "*";
			value = 0.5f;
		} : CombinedStatModifier
	];
}

Base_Sniper_Nest_Rasetsu_Constant_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.SpreadDefaultX";
			modifierType = "Additive";
			value = 0.7f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsDefaultX";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadMaxX";
			modifierType = "Additive";
			value = 2.8f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsMaxX";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadChangePerShot";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsChangePerShot";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMin";
			modifierType = "Additive";
			value = 1.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMax";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMinADS";
			modifierType = "Additive";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMaxADS";
			modifierType = "Additive";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.FirePower";
			modifierType = "Multiplier";
			value = 0.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.CanSilentKill";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.StealthHitDamageMultiplier";
			modifierType = "Additive";
			value = 1.05;
		} : ConstantStatModifier, 
		"AttackModifier.WeaponArmorPenetrationFull", {
			statType = "BaseStats.ZoomLevel";
			modifierType = "Additive";
			value = 4.0f;
		} : ConstantStatModifier
	];
}

