package Items
using RTDB, BaseStats, WeaponFxPackage

[ notQueryable ]
Base_Shingen : Base_Smart_Submachinegun
{
	buyPrice += 
	[
		"Price.Nokota", "Price.LowManufactureQuality"
	];
	sellPrice += 
	[
		"Price.Nokota", "Price.LowManufactureQuality"
	];
	displayName = "LocKey#3627";
	localizedDescription = "LocKey#3628";
	fk< UIIcon > hudIcon = "HUDWeaponIcons.Shingen";
	string friendlyName = "w_submachinegun_arasaka_shingen";
	fk< ConstantStatModifier > price = 
	{
		statType = "BaseStats.Price";
		modifierType = "Additive";
		value = 35;
	} : ConstantStatModifier;
	fk< SlotItemPartListElement >[] slotPartList = 
	[
		{
			slot = "AttachmentSlots.Receiver";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.w_submachinegun__arasaka_shingen__rcv1";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.Barrel";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.w_submachinegun__arasaka_shingen__base1";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.Magazine";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.w_submachinegun__arasaka_shingen__mag_std";
				}
			];
		}, 
		{
			slot = "AttachmentSlots.MagazineEmpty";
			fk< ItemPartListElement >[] itemPartList = 
			[
				{
					item = "Items.w_submachinegun__arasaka_shingen__mag_stdr";
				}
			];
		}
	];
	CName audioName = "wea_set_shingen";
	CName[] tags += 
	[
		"Preload", "Weapon", "SMG", "T3_Inject_Weapon", "Shingen"
	];
	fk< TriggerMode >[] triggerModes = 
	[
		"TriggerMode.SemiAuto"
	];
	fk< TriggerMode > primaryTriggerMode = "TriggerMode.SemiAuto";
	fk< RangedAttackPackage > rangedAttacks = "Attacks.SmartBulletHighPackage";
	fk< WeaponManufacturer > manufacturer = "WeaponManufacturer.Street";
	fk< WeaponEvolution > evolution = "WeaponEvolution.Smart";
	fk< Item > ammo = "Ammo.HandgunAmmo";
	fk< Crosshair > crosshair = "Crosshairs.SmartGun";
	enableNpcRPGData = true;
	npcRPGData = 
	{
		statModifierGroups += 
		[
		];
	} : Base_Shingen_NPC_Data;
	statModifierGroups += 
	[
		"Items.Base_Shingen_Technical_Stats", "Items.Base_Shingen_Handling_Stats", "Items.Base_Shingen_Recoil_Stats", "Items.Base_Shingen_Spread_Stats", "Items.Base_Shingen_SmartGun_Stats", "Items.Base_Shingen_SmartGun_SmartLink_Stats", "Items.Base_Shingen_SmartGun_Projectile_Stats", "Items.Base_Shingen_Flags", "Items.Base_Shingen_Aim_Stats", "Items.Base_Shingen_Constant_Stats", "Items.Base_Shingen_Damage_Stats"
	];
	fk< GameplayLogicPackage >[] OnAttach += 
	[
		"EquipmentGLP.FastStaminaRegen", "EquipmentGLP.MediumStaminaDelay", "Items.SmartWeaponTargetsPriorityQueues"
	];
	CName audioSwitchName = "";
	CName audioSwitchValue = "";
	fk< WeaponFxPackage > fxPackage = "WeaponFxPackage.SmartSMG";
	bool useNewSpawnMethod = true;
	Vector3 position = ( 0.0005f, 0.0f, 0.09f );
	bool IsIKEnabled = false;
	baseReloadTime = 1.9f;
	baseEmptyReloadTime = 1.9f;
	uninterruptibleReloadStart = 0.5f;
	uninterruptibleEmptyReloadStart = 0.5f;
	float weaponNearPlane = 0.27f;
	float weaponFarPlane = 0.6f;
	float weaponEdgesSharpness = 0.4958f;
	float weaponVignetteIntensity = 0.1357f;
	float weaponVignetteRadius = 0.6482f;
	float weaponVignetteCircular = 0.0f;
	float weaponBlurIntensity = 1.0f;
	float weaponNearPlane_aim = 0.19f;
	float weaponFarPlane_aim = 0.5f;
	float weaponEdgesSharpness_aim = 0.4958f;
	float weaponVignetteIntensity_aim = 0.1357f;
	float weaponVignetteRadius_aim = 0.6814f;
	float weaponVignetteCircular_aim = 0.1745f;
	float weaponBlurIntensity_aim = 1.f;
}

Base_Shingen_NPC_Data : Base_Smart_Submachinegun_NPC_Data
{
	statModifierGroups += 
	[
		"Items.Base_Shingen_Technical_Stats", "Items.Base_Shingen_SmartGun_Projectile_Stats", "Items.Base_Shingen_Damage_Stats"
	];
}

[ notQueryable ]
Oda_Shingen : Base_Shingen
{
	appearanceResourceName = "Preset_Shingen_Default";
	slotPartListPreset = 
	[
		{
			slot = "AttachmentSlots.Receiver";
			fk< Item > itemPartPreset = "Items.w_submachinegun__arasaka_shingen__rcv1";
		}, 
		{
			slot = "AttachmentSlots.Barrel";
			fk< Item > itemPartPreset = "Items.w_submachinegun__arasaka_shingen__base1";
		}, 
		{
			slot = "AttachmentSlots.Magazine";
			fk< Item > itemPartPreset = "Items.w_submachinegun__arasaka_shingen__mag_std";
		}, 
		{
			slot = "AttachmentSlots.MagazineEmpty";
			fk< Item > itemPartPreset = "Items.w_submachinegun__arasaka_shingen__mag_stdr";
		}
	];
	rangedAttacks = "Attacks.OdaSmartRifleBulletPackage";
	attacks += 
	[
		"NPCAttacks.StrongAttackSmokeBomb", "NPCAttacks.StrongAttackStagger", "Attacks.OdaSmartRifleBulletEffect", "Attacks.OdaSmartRifleBulletProjectile"
	];
	enableNpcRPGData = true;
	npcRPGData = 
	{
		statModifierGroups = 
		[
			"Items.Oda_Shingen_Technical_Stats", "Items.Oda_Shingen_NPC_SmartGun_Stats", "Items.Base_Shingen_SmartGun_Projectile_Stats", "Items.Base_Shingen_NPC_Damage_Stats"
		];
		statModifiers += 
		[
			"AttackModifier.WeaponArmorPenetrationMedium"
		];
	};
}

Oda_Shingen_Technical_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.f;
		} : NumShotsToFireModifier, 
		{
			value = 2.f;
		} : AccuracyModifier, 
		{
			value = 0.05f;
		} : CycleTimeModifier, 
		{
			value = 0.05f;
		} : CycleTime_BurstModifier, 
		{
			value = 3.f;
		} : NumShotsInBurstModifier, 
		{
			value = 30.f;
		} : MagazineCapacityModifier, 
		{
			value = 1.f;
		} : ProjectilesPerShotModifier, 
		"BaseStats.ProjectilesPerShotCombinedModifier"
	];
}

Oda_Shingen_NPC_SmartGun_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 0.0f;
		} : SmartGunNPCLockOnTimeModifier, 
		{
			value = 3.0f;
		} : SmartGunNPCLockTimeoutModifier, 
		{
			value = 1.f;
		} : SmartGunHitProbabilityModifier, 
		{
			value = 45f;
		} : SmartGunNPCLockingAnglePitchModifier, 
		{
			value = 45f;
		} : SmartGunNPCLockingAngleYawModifier, 
		{
			value = 0.0f;
		} : SmartGunNPCShootProjectilesOnlyStraightModifier, 
		{
			value = 0.40f;
		} : SmartGunNPCTrajectoryCurvatureMultiplierModifier, 
		{
			value = 20.0f;
		} : SmartGunNPCProjectileStartingOrientationAngleOffsetModifier, 
		{
			value = 0.0f;
		} : SmartGunNPCApplySpreadAtHitplaneModifier, 
		{
			value = 0.1f;
		} : SmartGunNPCSpreadMultiplierModifier, 
		{
			value = 35.f;
		} : SmartGunNPCProjectileVelocityModifier
	];
}

Base_Shingen_Technical_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.f;
		} : NumShotsToFireModifier, 
		{
			value = 0.15f;
		} : CycleTimeModifier, 
		{
			value = 0.05f;
		} : CycleTime_BurstModifier, 
		{
			value = 3.f;
		} : NumShotsInBurstModifier, 
		{
			value = 30.f;
		} : MagazineCapacityModifier, 
		{
			value = 1.f;
		} : ProjectilesPerShotModifier, 
		"BaseStats.ProjectilesPerShotCombinedModifier"
	];
}

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

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

Base_Shingen_Handling_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.9f;
		} : ReloadTimeModifier, 
		{
			value = 1.9f;
		} : EmptyReloadTimeModifier, 
		{
			value = 0.2f;
		} : ReloadEndTimeModifier, 
		{
			value = 0.9f;
		} : EmptyReloadEndTimeModifier, 
		{
			value = 1.2f;
		} : ZoomLevelModifier, 
		{
			value = 4.f;
		} : EquipDuration_FirstModifier
	];
}

Base_Shingen_Recoil_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 0.f;
		} : RecoilDirModifier, 
		{
			value = 100.f;
		} : RecoilAngleModifier, 
		{
			value = 0.1f;
		} : RecoilHoldDurationModifier, 
		{
			value = 0.02f;
		} : RecoilTimeModifier, 
		{
			value = 0.15f;
		} : RecoilRecoveryTimeModifier, 
		{
			value = 1.f;
		} : RecoilEnableLinearXModifier, 
		{
			value = 1.f;
		} : RecoilEnableLinearYModifier, 
		{
			value = 1.f;
		} : RecoilEnableLinearXADSModifier, 
		{
			value = 1.f;
		} : RecoilEnableLinearYADSModifier
	];
}

Base_Shingen_Spread_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.f;
		} : SpreadMinXModifier, 
		{
			value = 1.f;
		} : SpreadMinYModifier, 
		{
			value = 1.f;
		} : SpreadUseInAdsModifier, 
		{
			value = 0.f;
		} : SpreadAdsDefaultXModifier, 
		{
			value = 0.f;
		} : SpreadAdsDefaultYModifier, 
		{
			value = 1.f;
		} : SpreadAdsMinXModifier, 
		{
			value = 1.f;
		} : SpreadAdsMinYModifier, 
		{
			value = 2.0f;
		} : SpreadResetSpeedModifier, 
		{
			value = 0.2f;
		} : SpreadResetTimeThresholdModifier, 
		{
			value = 0.f;
		} : SpreadRandomizeOriginPointModifier, 
		{
			value = 1.f;
		} : SpreadUseCircularSpreadModifier
	];
}

Base_Shingen_SmartGun_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.f;
		} : SmartGunUseEvenDistributionTargetingModifier, 
		{
			value = 0.f;
		} : SmartGunTrackMultipleEntitiesInADSModifier, 
		{
			value = 0.15f;
		} : SmartGunEvenDistributionPeriodModifier, 
		{
			value = 0.0f;
		} : SmartGunHipLockingAnglePitchModifier, 
		{
			value = 0.0f;
		} : SmartGunHipLockingAngleYawModifier, 
		{
			value = 0.0f;
		} : SmartGunAdsLockingAnglePitchModifier, 
		{
			value = 0.0f;
		} : SmartGunAdsLockingAngleYawModifier, 
		{
			value = 0.0f;
		} : SmartGunHipTargetableAnglePitchModifier, 
		{
			value = 0.0f;
		} : SmartGunHipTargetableAngleYawModifier, 
		{
			value = 0.0f;
		} : SmartGunAdsTargetableAnglePitchModifier, 
		{
			value = 0.0f;
		} : SmartGunAdsTargetableAngleYawModifier, 
		{
			value = 3.f;
		} : SmartGunHipMaxLockedTargetsModifier, 
		{
			value = 1.f;
		} : SmartGunAdsMaxLockedTargetsModifier, 
		{
			value = 1.1f;
		} : SmartGunHipTimeToLockModifier, 
		{
			value = 1.1f;
		} : SmartGunAdsTimeToLockModifier, 
		{
			value = 0.f;
		} : SmartGunHipTimeToUnlockModifier, 
		{
			value = 0.f;
		} : SmartGunAdsTimeToUnlockModifier, 
		{
			value = 0.f;
		} : SmartGunTimeToRemoveOccludedTargetModifier, 
		{
			value = 1.f;
		} : SmartGunUseTimeBasedAccuracyModifier, 
		{
			value = 0.5f;
		} : SmartGunTimeToMaxAccuracyModifier, 
		{
			value = 5.0f;
		} : SmartGunSpreadMultiplierModifier, 
		{
			value = 40.f;
		} : SmartGunPlayerProjectileVelocityModifier, 
		{
			value = 0.70f;
		} : SmartGunHitProbabilityModifier
	];
}

Base_Shingen_SmartGun_SmartLink_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 12.0f;
			statType = "BaseStats.SmartGunHipLockingAnglePitch";
		} : SmartLinkDependentStatModifier, 
		{
			value = 8.0f;
			statType = "BaseStats.SmartGunHipLockingAngleYaw";
		} : SmartLinkDependentStatModifier, 
		{
			value = 12.0f;
			statType = "BaseStats.SmartGunAdsLockingAnglePitch";
		} : SmartLinkDependentStatModifier, 
		{
			value = 8.0f;
			statType = "BaseStats.SmartGunAdsLockingAngleYaw";
		} : SmartLinkDependentStatModifier, 
		{
			value = 12.0f;
			statType = "BaseStats.SmartGunHipTargetableAnglePitch";
		} : SmartLinkDependentStatModifier, 
		{
			value = 8.0f;
			statType = "BaseStats.SmartGunHipTargetableAngleYaw";
		} : SmartLinkDependentStatModifier, 
		{
			value = 12.0f;
			statType = "BaseStats.SmartGunAdsTargetableAnglePitch";
		} : SmartLinkDependentStatModifier, 
		{
			value = 8.0f;
			statType = "BaseStats.SmartGunAdsTargetableAngleYaw";
		} : SmartLinkDependentStatModifier, 
		{
			value = 1.4f;
			statType = "BaseStats.SmartGunHipTimeToUnlock";
		} : SmartLinkDependentStatModifier, 
		{
			value = 1.4f;
			statType = "BaseStats.SmartGunAdsTimeToUnlock";
		} : SmartLinkDependentStatModifier, 
		{
			value = 1.4f;
			statType = "BaseStats.SmartGunTimeToRemoveOccludedTarget";
		} : SmartLinkDependentStatModifier, 
		{
			value = 0.30f;
			statType = "BaseStats.SmartGunHitProbability";
		} : SmartLinkDependentStatModifier, 
		{
			value = 20.f;
			statType = "BaseStats.SmartGunPlayerProjectileVelocity";
		} : SmartLinkDependentStatModifier
	];
}

Base_Shingen_SmartGun_Projectile_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			value = 1.0f;
		} : SmartGunAddSpiralTrajectoryModifier, 
		{
			value = 0.06f;
		} : SmartGunSpiralRadiusModifier, 
		{
			value = 0.1f;
		} : SmartGunSpiralCycleTimeMinModifier, 
		{
			value = 0.1f;
		} : SmartGunSpiralCycleTimeMaxModifier, 
		{
			value = 0.0f;
		} : SmartGunSpiralRampDistanceStartModifier, 
		{
			value = 1.0f;
		} : SmartGunSpiralRampDistanceEndModifier, 
		{
			value = 1.0f;
		} : SmartGunSpiralRandomizeDirectionModifier, 
		{
			value = 0.05f;
		} : SmartGunMissDelayModifier, 
		{
			value = 6.5f;
		} : SmartGunMissRadiusModifier
	];
}

Base_Shingen_Flags : StatModifierGroup
{
	statModifiers = [];
}

Base_Shingen_Aim_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.AimFOV";
			modifierType = "Additive";
			value = 25;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.AimOffset";
			modifierType = "Additive";
			value = -0.15f;
		} : ConstantStatModifier
	];
}

Base_Shingen_Constant_Stats : StatModifierGroup
{
	statModifiers = 
	[
		{
			statType = "BaseStats.SpreadDefaultX";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadMaxX";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadDefaultY";
			modifierType = "Additive";
			value = 5.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadMaxY";
			modifierType = "Additive";
			value = 5.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsDefaultX";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsMaxX";
			modifierType = "Additive";
			value = 1.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsDefaultY";
			modifierType = "Additive";
			value = 3.0f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.SpreadAdsMaxY";
			modifierType = "Additive";
			value = 3.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 = 0.2f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.RecoilKickMax";
			modifierType = "Additive";
			value = 0.28f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.FirePower";
			modifierType = "Multiplier";
			value = 2.0f;
		} : ConstantStatModifier
	];
}

w_submachinegun__arasaka_shingen__rcv1 : WeaponHandgunReceiverBase
{
	string friendlyName = "w_submachinegun__arasaka_shingen__rcv1";
	CName appearanceResourceName = "w_submachinegun__arasaka_shingen__rcv1_01";
	CName audioSwitchName = "w_submachinegun__arasaka_shingen__rcv1";
	CName audioSwitchValue = "w_submachinegun__arasaka_shingen__rcv1";
}

w_submachinegun__arasaka_shingen__base1 : WeaponHandgunBarrelBase
{
	string friendlyName = "w_submachinegun__arasaka_shingen__base1";
	CName appearanceResourceName = "w_submachinegun__arasaka_shingen__base1_01";
	CName audioSwitchName = "w_submachinegun__arasaka_shingen__base1";
	CName audioSwitchValue = "w_submachinegun__arasaka_shingen__base1";
}

w_submachinegun__arasaka_shingen__mag_std : WeaponMagazineBase
{
	string friendlyName = "w_submachinegun__arasaka_shingen__mag_std";
	CName appearanceResourceName = "w_submachinegun__arasaka_shingen__mag_std_01";
	CName audioSwitchName = "w_submachinegun__arasaka_shingen__mag_std";
	CName audioSwitchValue = "w_submachinegun__arasaka_shingen__mag_std";
}

w_submachinegun__arasaka_shingen__mag_stdr : WeaponMagazineBase
{
	string friendlyName = "w_submachinegun__arasaka_shingen__mag_stdr";
	CName appearanceResourceName = "w_submachinegun__arasaka_shingen__mag_stdr_01";
	CName audioSwitchName = "w_submachinegun__arasaka_shingen__mag_stdr";
	CName audioSwitchValue = "w_submachinegun__arasaka_shingen__mag_stdr";
}

