package Attacks
using RTDB, AttackModifier

PhysicalBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PhysicalBullet";
	chargeFire = "Attacks.PhysicalBullet";
}

PhysicalExplosiveBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PhysicalExplosiveBullet";
	chargeFire = "Attacks.PhysicalExplosiveBullet";
}

PhysicalStatusEffectBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PhysicalStatusEffectBullet";
	chargeFire = "Attacks.PhysicalStatusEffectBullet";
}

ThermalBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ThermalBullet";
	chargeFire = "Attacks.ThermalBullet";
}

RainMissilePackage : RangedAttackPackage
{
	defaultFire = "Attacks.RainMissileFire";
	chargeFire = "Attacks.RainMissileFire";
}

ThermalStatusEffectBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ThermalStatusEffectBullet";
	chargeFire = "Attacks.ThermalStatusEffectBullet";
}

ChemicalBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ChemicalBullet";
	chargeFire = "Attacks.ChemicalBullet";
}

ChemicalStatusEffectBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ChemicalStatusEffectBullet";
	chargeFire = "Attacks.ChemicalStatusEffectBullet";
}

ElectricBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ElectricBullet";
	chargeFire = "Attacks.ElectricBullet";
}

ElectricStatusEffectBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ElectricStatusEffectBullet";
	chargeFire = "Attacks.ElectricStatusEffectBullet";
}

PowerRoundsBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PowerRoundsBullet";
	chargeFire = "Attacks.PowerRoundsBullet";
}

PowerBuckshotsBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PowerBuckshotsBullet";
	chargeFire = "Attacks.PowerBuckshotsBullet";
}

PowerBulletsBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PowerBulletsBullet";
	chargeFire = "Attacks.PowerBulletsBullet";
}

RocketProjectilePackage : RangedAttackPackage
{
	defaultFire = "Attacks.RocketAttack";
	chargeFire = "Attacks.RocketChargedAttack";
}

ExplodingBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBullet";
	chargeFire = "Attacks.ExplodingBullet";
}

ExplodingBulletSmallPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBulletSmall";
	chargeFire = "Attacks.ExplodingBulletSmall";
}

ExplodingBulletHMGPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBulletHMG";
	chargeFire = "Attacks.ExplodingBulletHMG";
}

ExplodingBulletLightPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBulletLight";
	chargeFire = "Attacks.ExplodingBulletLight";
}

ExplodingBulletMediumPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBulletMedium";
	chargeFire = "Attacks.ExplodingBulletMedium";
}

ExplodingBulletSasquatchPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ExplodingBulletSasquatch";
	chargeFire = "Attacks.ExplodingBulletSasquatch";
}

SilverhandBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.PhysicalBullet";
	chargeFire = "Attacks.PhysicalBullet";
}

SmartBulletLowPackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletLowFire";
	chargeFire = "Attacks.SmartBulletLowFire";
}

SmartBulletMedPackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletMedFire";
	chargeFire = "Attacks.SmartBulletMedFire";
}

SmartBulletHighPackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletHighFire";
	chargeFire = "Attacks.SmartBulletHighFire";
}

SmartBulletHighExplosivePackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletHighExplosiveFire";
	chargeFire = "Attacks.SmartBulletHighExplosiveFire";
}

ZhuoBulletHighExplosivePackage : RangedAttackPackage
{
	defaultFire = "Attacks.ZhuoBulletHighExplosiveFire";
	chargeFire = "Attacks.ZhuoBulletHighExplosiveFire";
}

HitmanNovaPackage : RangedAttackPackage
{
	defaultFire = "Attacks.HitmanNovaBullet";
	chargeFire = "Attacks.HitmanNovaBullet";
}

SmartBulletTwoStagePackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletTwoStageFire";
	chargeFire = "Attacks.SmartBulletTwoStageFire";
}

SmartBulletMechPackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletMedFire";
	chargeFire = "Attacks.SmartBulletMedFire";
}

SmartBulletDronePackage : RangedAttackPackage
{
	defaultFire = "Attacks.SmartBulletMedFire";
	chargeFire = "Attacks.SmartBulletMedFire";
}

ChimeraPowerModExplosiveBulletPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ChimeraPowerModExplosiveBullet";
	chargeFire = "Attacks.ChimeraPowerModExplosiveBullet";
}

ChimeraExplodingBulletLightPackage : RangedAttackPackage
{
	defaultFire = "Attacks.ChimeraPowerModExplodingBulletLight";
	chargeFire = "Attacks.ChimeraPowerModExplodingBulletLight";
}

PhysicalBullet : RangedAttack
{
	playerAttack = "Attacks.Bullet_GameEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBulletEffect";
	NPCTimeDilated = "Attacks.NPCBulletProjectile";
}

PhysicalExplosiveBullet : RangedAttack
{
	playerAttack = "Attacks.ExplosiveBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBulletEffect";
	NPCTimeDilated = "Attacks.ExplodingBulletProjectile";
}

PhysicalStatusEffectBullet : RangedAttack
{
	playerAttack = "Attacks.BleedingBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBulletEffect";
	NPCTimeDilated = "Attacks.NPCBulletProjectile";
}

HitmanNovaBullet : RangedAttack
{
	playerAttack = "Attacks.Bullet_GameEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBulletEffect";
	NPCTimeDilated = "Attacks.NPCBulletProjectile";
}

ThermalBullet : RangedAttack
{
	playerAttack = "Attacks.ThermalBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCThermalBulletEffect";
	NPCTimeDilated = "Attacks.NPCThermalBulletProjectile";
}

ThermalStatusEffectBullet : RangedAttack
{
	playerAttack = "Attacks.BurningBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBurningBulletEffect";
	NPCTimeDilated = "Attacks.NPCBurningBulletProjectile";
}

ChemicalBullet : RangedAttack
{
	playerAttack = "Attacks.ChemicalBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCChemicalBulletEffect";
	NPCTimeDilated = "Attacks.NPCChemicalBulletProjectile";
}

ChemicalStatusEffectBullet : RangedAttack
{
	playerAttack = "Attacks.PoisonBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCChemicalBulletEffect";
	NPCTimeDilated = "Attacks.NPCChemicalBulletProjectile";
}

ElectricBullet : RangedAttack
{
	playerAttack = "Attacks.ElectricBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCElectricBulletEffect";
	NPCTimeDilated = "Attacks.NPCElectricBulletProjectile";
}

ElectricStatusEffectBullet : RangedAttack
{
	playerAttack = "Attacks.ElectricBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCElectricBulletEffect";
	NPCTimeDilated = "Attacks.NPCElectricBulletProjectile";
}

PowerRoundsBullet : PhysicalBullet
{
}

PowerBuckshotsBullet : PhysicalBullet
{
}

PowerBulletsBullet : PhysicalBullet
{
}

RocketAttack : RangedAttack
{
	playerAttack = "Attacks.RocketEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.RocketProjectile";
	NPCTimeDilated = "Attacks.RocketProjectile";
}

RocketChargedAttack : RangedAttack
{
	playerAttack = "Attacks.RocketChargedEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.RocketChargedProjectile";
	NPCTimeDilated = "Attacks.RocketChargedProjectile";
	float hitCooldown = 0.1;
	CName explosionAttack = "Attacks.RocketChargedExplosion";
}

ExplodingBullet : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletProjectile";
	playerTimeDilated = "";
	NPCAttack = "Attacks.ExplodingBulletTurretProjectile";
	NPCTimeDilated = "Attacks.ExplodingBulletTurretProjectile";
	float hitCooldown = 0.1;
}

ExplodingBulletSmall : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletSmallProjectile";
	playerTimeDilated = "";
	NPCAttack = "Attacks.ExplodingBulletSmallProjectile";
	NPCTimeDilated = "Attacks.ExplodingBulletSmallProjectile";
}

ExplodingBulletHMG : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletSmallProjectile";
	playerTimeDilated = "";
	NPCAttack = "Attacks.NPCBulletProjectile";
	NPCTimeDilated = "Attacks.NPCBulletProjectile";
}

ExplodingBulletLight : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletLightEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.ExplodingBulletLightProjectile";
	NPCTimeDilated = "Attacks.ExplodingBulletLightProjectile";
}

ExplodingBulletMedium : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletMediumEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.ExplodingBulletMediumProjectile";
	NPCTimeDilated = "Attacks.ExplodingBulletMediumProjectile";
}

ExplodingBulletSasquatch : RangedAttack
{
	playerAttack = "Attacks.ExplodingBulletSasquatchProjectile";
	playerTimeDilated = "";
	NPCAttack = "Attacks.ExplodingBulletSasquatchProjectile";
	NPCTimeDilated = "Attacks.ExplodingBulletSasquatchProjectile";
}

SuicideBullet : RangedAttack
{
	playerAttack = "Attacks.SuicideBulletEffect";
	playerTimeDilated = "";
	NPCAttack = "Attacks.SuicideBulletEffect";
	NPCTimeDilated = "Attacks.SuicideBulletProjectile";
}

SmartBulletMedFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletMed";
	playerTimeDilated = "Attacks.SmartBulletMed";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

SmartBulletLowFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletLow";
	playerTimeDilated = "Attacks.SmartBulletLow";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

SmartBulletHighFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletHigh";
	playerTimeDilated = "Attacks.SmartBulletHigh";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

SmartBulletHighExplosiveFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletHighExplosive";
	playerTimeDilated = "Attacks.SmartBulletHighExplosive";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

ZhuoBulletHighExplosiveFire : RangedAttack
{
	playerAttack = "Attacks.ZhuoBulletHighExplosive";
	playerTimeDilated = "Attacks.ZhuoBulletHighExplosive";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

SmartBulletTwoStageFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletTwoStage";
	playerTimeDilated = "Attacks.SmartBulletTwoStage";
	NPCAttack = "Attacks.NPCSmartBullet";
	NPCTimeDilated = "Attacks.NPCSmartBullet";
}

SmartBulletMechFire : RangedAttack
{
	playerAttack = "Attacks.SmartBulletMed";
	playerTimeDilated = "Attacks.SmartBulletMed";
	NPCAttack = "Attacks.SmartBulletMech";
	NPCTimeDilated = "Attacks.SmartBulletMech";
}

RainMissileFire : RangedAttack
{
	playerAttack = "Attacks.RainMissile";
	playerTimeDilated = "Attacks.RainMissile";
	NPCAttack = "Attacks.RainMissile";
	NPCTimeDilated = "Attacks.RainMissile";
}

ChimeraPowerModExplosiveBullet : PhysicalExplosiveBullet
{
	playerAttack = "Attacks.ChimeraPowerMod_ExplosiveBulletEffect";
}

ChimeraPowerModExplodingBulletLight : ExplodingBulletLight
{
	playerAttack = "Attacks.ChimeraPowerMod_ExplodingBulletLightEffect";
}

ThermalBulletEffect : Bullet_GameEffect
{
}

ThermalBulletProjectile : Bullet_Projectile
{
}

NPCThermalBulletEffect : Bullet_GameEffect
{
}

NPCThermalBulletProjectile : Bullet_Projectile
{
}

ChemicalBulletEffect : Bullet_GameEffect
{
}

ChemicalBulletProjectile : Bullet_Projectile
{
}

NPCChemicalBulletEffect : Bullet_GameEffect
{
}

NPCChemicalBulletProjectile : Bullet_Projectile
{
}

ElectricBulletEffect : Bullet_GameEffect
{
}

ElectricBulletProjectile : Bullet_Projectile
{
}

NPCElectricBulletEffect : Bullet_GameEffect
{
}

NPCElectricBulletProjectile : Bullet_Projectile
{
}

Bullet_GameEffect : Attack_GameEffect
{
	userDataPath = "Attacks.Bullet_GameEffect";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	effectName = "weaponShoot";
	effectTag = "player_ray";
	staminaCost += 
	[
		{
			statType = "BaseStats.Stamina";
			modifierType = "Additive";
			refStat = "BaseStats.WeaponTypeToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.MagazineCapacityBase";
			refObject = "Owner";
			opSymbol = "inv";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.WeaponEvolutionToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.FirePower";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.StaminaCostReduction";
			refObject = "Owner";
			opSymbol = "*";
			value = -1.0f;
		} : CombinedStatModifier
	];
}

NPCBulletEffect : Bullet_GameEffect
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor", {
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			refStat = "BaseStats.ProjectilesPerShot";
			refObject = "Root";
			opSymbol = "inv";
			value = 1.0f;
		} : CombinedStatModifier
	];
}

SuicideBulletEffect : Bullet_GameEffect
{
	userDataPath = "Attacks.SuicideBulletEffect";
	effectTag = "selfShoot_ray";
	hitFlags = 
	[
		"FriendlyFire", "CanDamageSelf", "QuickHack"
	];
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			value = 0;
		} : ConstantStatModifier
	];
}

REMOVE_BulletWithDamage : Bullet_GameEffect
{
	effectName = "bullet_generic";
	effectTag = "bullet";
	velocity = 90.0f;
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier
	];
}

Bullet_Projectile : BaseProjectile
{
	userDataPath = "Attacks.Bullet_Projectile";
	projectileTemplateName = "bullet";
	velocity = 90.0f;
	float hitCooldown = 0.1f;
	float gravitySimulation = 0.0f;
	staminaCost += 
	[
		{
			statType = "BaseStats.Stamina";
			modifierType = "Additive";
			refStat = "BaseStats.WeaponTypeToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.MagazineCapacityBase";
			refObject = "Owner";
			opSymbol = "inv";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.WeaponEvolutionToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.FirePower";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.StaminaCostReduction";
			refObject = "Owner";
			opSymbol = "*";
			value = -1.0f;
		} : CombinedStatModifier
	];
}

PowerRounds_Projectile : Bullet_Projectile
{
	projectileTemplateName = "power_rounds";
	velocity = 90.0f;
}

PowerBuckshots_Projectile : Bullet_Projectile
{
	projectileTemplateName = "power_buckshot";
	velocity = 90.0f;
}

PowerBullets_Projectile : Bullet_Projectile
{
	projectileTemplateName = "power_bullet";
}

NPCBulletProjectile : Bullet_Projectile
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor", {
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			refStat = "BaseStats.ProjectilesPerShot";
			refObject = "Root";
			opSymbol = "inv";
			value = 1.0f;
		} : CombinedStatModifier
	];
}

SuicideBulletProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.SuicideBulletProjectile";
	hitFlags = 
	[
		"FriendlyFire", "CanDamageSelf", "QuickHack"
	];
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			id = "puppet_powerLevelToHealth";
			refObject = "Root";
			refStat = "BaseStats.PowerLevel";
			column = "puppet_powerLevelToHealth_base";
		} : CurveStatModifier, 
		{
			statType = "BaseStats.PhysicalDamage";
			refObject = "Player";
		} : Attacks.HackBonusDamage, 
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 2;
		} : ConstantStatModifier
	];
}

VS_Turret_Attack_REMOVE : Bullet_Projectile
{
	projectileTemplateName = "bullet_generic";
	velocity = 45.0f;
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 1;
		} : ConstantStatModifier
	];
}

SmartBullet : SmartBulletMed
{
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet";
	float hitCooldown = 0.1;
}

SmartBulletMed : Bullet_Projectile
{
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet";
	velocity = 0.0f;
}

SmartBulletLow : Bullet_Projectile
{
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet_low";
	velocity = 0.0f;
}

SmartBulletHigh : Bullet_Projectile
{
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet_high";
	velocity = 0.0f;
}

SmartBulletTwoStage : Bullet_Projectile
{
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet_two_stage";
	velocity = 0.0f;
}

NPCSmartBullet : SmartBulletMed
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor"
	];
}

SmartBulletMech : SmartBulletMed
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage"
	];
	userDataPath = "Attacks.SmartBullet";
	projectileTemplateName = "smart_bullet_mech";
}

ExplosiveBulletEffect : Bullet_GameEffect
{
	explosionAttack = "Attacks.BulletExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

ExplodingBulletLightEffect : Bullet_GameEffect
{
	explosionAttack = "Attacks.BulletLightExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

ExplodingBulletMediumEffect : Bullet_GameEffect
{
	explosionAttack = "Attacks.BulletMediumExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

PoisonBulletEffect : Bullet_GameEffect
{
	statModifiers = 
	[
		"AttackModifier.ChemicalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Poisoned";
			resistPool = "BaseStatPools.PoisonTrigger";
		}
	];
}

PoisonBulletProjectile : Bullet_Projectile
{
	statModifiers = 
	[
		"AttackModifier.ChemicalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Poisoned";
			resistPool = "BaseStatPools.PoisonTrigger";
		}
	];
}

BleedingBulletEffect : Bullet_GameEffect
{
	statModifiers = 
	[
		"AttackModifier.PhysicalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Bleeding";
			resistPool = "BaseStatPools.BleedingTrigger";
		}
	];
}

BleedingBulletProjectile : Bullet_Projectile
{
	statModifiers = 
	[
		"AttackModifier.PhysicalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Bleeding";
			resistPool = "BaseStatPools.BleedingTrigger";
		}
	];
}

BurningBulletEffect : Bullet_GameEffect
{
	statModifiers = 
	[
		"AttackModifier.ThermalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Burning";
			resistPool = "BaseStatPools.BurningTrigger";
		}
	];
}

BurningBulletProjectile : Bullet_Projectile
{
	statModifiers = 
	[
		"AttackModifier.ThermalAlliedDamage"
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Burning";
			resistPool = "BaseStatPools.BurningTrigger";
		}
	];
}

NPCBurningBulletEffect : BurningBulletEffect
{
	statModifiers = 
	[
		"AttackModifier.ThermalEnemyDamage"
	];
}

NPCBurningBulletProjectile : BurningBulletProjectile
{
	statModifiers = 
	[
		"AttackModifier.ThermalEnemyDamage"
	];
}

SmartBulletHighExplosive : SmartBulletHigh
{
	userDataPath = "Attacks.SmartBulletHighExplosive";
	CName attackName = "SmartBulletHighExplosive";
	explosionAttack = "Attacks.BulletSmartBulletHighExplosion";
	hitFlags = [];
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
	float hitCooldown = 0.1;
}

ZhuoBulletHighExplosive : SmartBulletHigh
{
	userDataPath = "Attacks.SmartBulletHighExplosive";
	CName attackName = "SmartBulletHighExplosive";
	attackType = "AttackType.Explosion";
	explosionAttack = "Attacks.ZhuoBulletHighExplosion";
	hitFlags = [];
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
	float hitCooldown = 0.1;
}

ChimeraPowerMod_ExplosiveBulletEffect : Bullet_GameEffect
{
	explosionAttack = "Attacks.ChimeraPowerMod_BulletExplosion";
}

ChimeraPowerMod_ExplodingBulletLightEffect : ExplosiveBulletEffect
{
	explosionAttack = "Attacks.ChimeraPowerMod_BulletLightExplosion";
}

RainMissile : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile";
	explosionAttack = "Attacks.RainMissileBulletEffect";
	hitFlags = 
	[
		"FriendlyFire"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RainMissileDamage"
	];
	float p1DurationMin = 1f;
	float p1DurationMax = 1.25f;
	float p1PositionForwardOffsetMin = 1.5f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 1.f;
	float p1StartVelocity = 3.f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 25f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -35.f;
	float p2AngleInHitPlaneMax = -31.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.9f;
	float finalTargetPositionCalculationDelay = 1.25f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

RainMissileSmasher : RainMissile
{
	hitFlags = [];
	explosionAttack = "Attacks.SmasherRainMissileBulletEffect";
	float p1PositionZOffset = 1.5f;
	float p1StartVelocity = 2.5f;
}

RainMissileChimera : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile_chimera";
	explosionAttack = "Attacks.ChimeraRainMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.ChimeraRainMissileDamage"
	];
	float p1DurationMin = 0.75f;
	float p1DurationMax = 0.75f;
	float p1PositionForwardOffsetMin = -0.5f;
	float p1PositionForwardOffsetMax = 1.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 2.35f;
	float p1StartVelocity = 4.5f;
	float p1BendTimeRatio = 0.5f;
	float p1BendFactor = 12.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	bool p2ShouldRotate = false;
	bool p2HardCurve = true;
	float p2AngleInHitPlaneMin = -15.f;
	float p2AngleInHitPlaneMax = -11.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 0.5f;
	float playerPositionGrabTime = 0.6f;
	float finalTargetPositionCalculationDelay = 1.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

ChimeraRainMissileDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.1f;
}

MineMissileChimera : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "mine_barrage_projectile";
	explosionAttack = "Attacks.ChimeraMineMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RainMissileDamage"
	];
	float p1DurationMin = 1.5f;
	float p1DurationMax = 1.75f;
	float p1PositionForwardOffsetMin = 1.5f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 7.5f;
	float p1StartVelocity = 5.f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 25f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -30.f;
	float p2AngleInHitPlaneMax = -26.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.9f;
	float finalTargetPositionCalculationDelay = 1.25f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 10.f;
	float explosionRange = 5.f;
	float detonationTimer = 60.f;
}

JurijMineProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "mine_barrage_projectile";
	explosionAttack = "Attacks.JurijMineExplosion";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.JurijMineDamage"
	];
	float p1DurationMin = 1.5f;
	float p1DurationMax = 1.5f;
	float p1PositionForwardOffsetMin = 1.5f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 7.5f;
	float p1StartVelocity = 5.f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 25f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -30.f;
	float p2AngleInHitPlaneMax = -26.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.f;
	float finalTargetPositionCalculationDelay = 0.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 10.f;
	float explosionRange = 5.f;
	float detonationTimer = 60.f;
}

JurijMineDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 1.f;
}

TrackMissileChimera : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile_chimera";
	explosionAttack = "Attacks.ChimeraTrackMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.ChimeraTrackMissileDamage"
	];
	float p1DurationMin = 0.75f;
	float p1DurationMax = 0.75f;
	float p1PositionForwardOffsetMin = -0.5f;
	float p1PositionForwardOffsetMax = 1.5f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 2.35f;
	float p1StartVelocity = 4.5f;
	float p1BendTimeRatio = 0.5f;
	float p1BendFactor = 12.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.0f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	bool p2ShouldRotate = false;
	bool p2HardCurve = true;
	float p2AngleInHitPlaneMin = -15.f;
	float p2AngleInHitPlaneMax = -11.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.6f;
	float finalTargetPositionCalculationDelay = 1.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

ChimeraTrackMissileDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.f;
}

SelfMissileChimera : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile_chimera";
	explosionAttack = "Attacks.ChimeraSelfMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.ChimeraSelfMissileDamage"
	];
	float p1DurationMin = 4.f;
	float p1DurationMax = 4.25f;
	float p1PositionForwardOffsetMin = 1.5f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 7.5f;
	float p1StartVelocity = 2.5f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 25f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -30.f;
	float p2AngleInHitPlaneMax = -26.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 1.f;
	float finalTargetPositionCalculationDelay = 1.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

ChimeraSelfMissileDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.0;
}

ChandelierMissileChimera : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile_chimera";
	explosionAttack = "Attacks.ChimeraRainMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.ChimeraChandelierMissileDamage"
	];
	float p1DurationMin = 1.5f;
	float p1DurationMax = 1.75f;
	float p1PositionForwardOffsetMin = 1.5f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 7.5f;
	float p1StartVelocity = 5.f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 20.f;
	float p2BendRation = 0f;
	float p2BendFactor = 25f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -30.f;
	float p2AngleInHitPlaneMax = -26.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.9f;
	float finalTargetPositionCalculationDelay = 1.25f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

ChimeraChandelierMissileDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.01f;
}

RainMissileRun : Bullet_Projectile
{
	userDataPath = "Attacks.RainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile";
	explosionAttack = "Attacks.SmasherRunMissileBulletEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RainMissileDamage"
	];
	float p1DurationMin = 0.75f;
	float p1DurationMax = 0.75f;
	float p1PositionForwardOffsetMin = 1.75f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 0.75f;
	float p1StartVelocity = 4.5f;
	float p1BendTimeRatio = 0.f;
	float p1BendFactor = 0.f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.4f;
	float p2StartVelocity = 25.f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	bool p2ShouldRotate = false;
	float p2AngleInHitPlaneMin = -15.f;
	float p2AngleInHitPlaneMax = -11.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 2.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 0.6f;
	float finalTargetPositionCalculationDelay = 1.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 4.f;
}

RainMissileDamage : CombinedStatModifier
{
	statType = "BaseStats.ThermalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.f;
}

DelamainRainMissile : RainMissile
{
	userDataPath = "Attacks.DelamainRainMissile";
	CName attackName = "RainMissile";
	projectileTemplateName = "rain_missile_delamain";
	explosionAttack = "Attacks.DelamainMissileEffect";
	hitFlags = 
	[
		"FriendlyFire", "CanDamageSelf"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RainMissileDamage"
	];
	float p1DurationMin = 0.1f;
	float p1DurationMax = 0.1f;
	float p1PositionForwardOffsetMin = -1.f;
	float p1PositionForwardOffsetMax = 1.f;
	float p1PositionLateralOffset = 1.f;
	float p1PositionZOffset = 4.f;
	float p1StartVelocity = 5.f;
	float p1BendTimeRatio = 0.5f;
	float p1BendFactor = 0.5f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.2f;
	float p2StartVelocity = 70.f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	float p2AngleInHitPlaneMin = 0.f;
	float p2AngleInHitPlaneMax = 0.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 0.0f;
	float targetPositionXYAdditive = 0.0f;
	float playerPositionGrabTime = 0.0f;
	float finalTargetPositionCalculationDelay = -1.f;
	bool followTargetInPhase2 = true;
	float puppetBroadphaseHitRadiusSquared = 1.f;
	float explosionRadius = 2.f;
}

PanzerRainMissile : RainMissile
{
	userDataPath = "Attacks.PanzerRainMissile";
	projectileTemplateName = "rain_missile_panzer";
	explosionAttack = "Attacks.PanzerMissileEffect";
	float p1DurationMin = 0.1f;
	float p1DurationMax = 0.5f;
	float p1PositionForwardOffsetMin = -4.f;
	float p1PositionForwardOffsetMax = 4.f;
	float p1PositionLateralOffset = 4.f;
	float p1PositionZOffset = 15.f;
	float p1StartVelocity = 30f;
	float p1BendTimeRatio = 0.5f;
	float p1BendFactor = 0.5f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.2f;
	float p2StartVelocity = 120.f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	float p2AngleInHitPlaneMin = 0.f;
	float p2AngleInHitPlaneMax = 0.f;
	float p2AngleInVerticalPlane = 1.f;
	float targetPositionOffset = 3.f;
	float targetPositionXYAdditive = 1.2f;
	float playerPositionGrabTime = 1.9f;
	float finalTargetPositionCalculationDelay = -1.f;
	bool followTargetInPhase2 = true;
	float puppetBroadphaseHitRadiusSquared = 4.f;
	float explosionRadius = 4.f;
}

VehicleMissileLauncherRainMissile : PanzerRainMissile
{
	explosionAttack = "Attacks.VehicleMissileLauncherMissileEffect";
	bool inheritVehicleSpeed = true;
	projectileTemplateName = "rain_missile_vehicle";
	float armingTime = 0.25f;
	float p1DurationMin = 0.1f;
	float p1DurationMax = 0.3f;
	float p1PositionForwardOffsetMin = -0f;
	float p1PositionForwardOffsetMax = 0.75f;
	float p1PositionLateralOffset = 3.f;
	float p1PositionZOffset = 7.f;
	float p1StartVelocity = 30f;
	float p1BendTimeRatio = 0.8f;
	float p1BendFactor = 0.4f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.2f;
	float p2StartVelocity = 50.f;
	float p2BendRation = 0f;
	float p2BendFactor = 0f;
	float p2AngleInHitPlaneMin = 0.f;
	float p2AngleInHitPlaneMax = 0.f;
	float p2AngleInVerticalPlane = 1.f;
	bool usetargetOffsetWhenUntargeted = true;
	float targetPositionOffset = 3.f;
	float targetPositionXYAdditive = 4.5f;
	float playerPositionGrabTime = 1.9f;
	float finalTargetPositionCalculationDelay = 0.f;
	bool followTargetInPhase2 = true;
	float puppetBroadphaseHitRadiusSquared = 2.f;
	float vehicleBroadphaseHitRadiusSquared = 3.5f;
	float explosionRadius = 4.f;
	float armingDistance = 5.f;
	bool p2HardCurve = true;
	float p2HardCurveInterpolationTimeRatio = 0.000001;
	bool startVelocityDirectionCheck = false;
}

PanzerCounterMeasures : RainMissile
{
	userDataPath = "Attacks.PanzerCounterMeasures";
	explosionAttack = "Attacks.EMPPanzerGrenade";
	float p1DurationMin = 0.1f;
	float p1DurationMax = 0.1f;
	float p1PositionForwardOffsetMin = -2.f;
	float p1PositionForwardOffsetMax = 2.f;
	float p1PositionLateralOffset = 2.f;
	float p1PositionZOffset = 4.f;
	float p1StartVelocity = 60.0f;
	float p1BendTimeRatio = 0.999f;
	float p1BendFactor = 0.999f;
	float p1AngleInHitPlaneMin = 0.f;
	float p1AngleInHitPlaneMax = 0.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.2f;
	float p2StartVelocity = 95.f;
	float p2BendRation = 0.999f;
	float p2BendFactor = 0.999f;
	float p2AngleInHitPlaneMin = 0.f;
	float p2AngleInHitPlaneMax = 0.f;
	float p2AngleInVerticalPlane = 0.3f;
	float targetPositionOffset = 0.f;
	float targetPositionXYAdditive = 0.3f;
	float playerPositionGrabTime = 1.9f;
	float finalTargetPositionCalculationDelay = -1.f;
	bool followTargetInPhase2 = false;
	float puppetBroadphaseHitRadiusSquared = -1.f;
	float explosionRadius = 10.f;
}

TwoStageMissile : RainMissile
{
	projectileTemplateName = "two_stage_missile";
	explosionAttack = "Attacks.TwoStageMissileEffect";
	float p1DurationMin = 0.f;
	float p1DurationMax = 0.f;
	float p1PositionForwardOffsetMin = -1.5f;
	float p1PositionForwardOffsetMax = 1.5f;
	float p1PositionLateralOffset = 1.5f;
	float p1PositionZOffset = 5.f;
	float p1StartVelocity = 45.0f;
	float p1BendTimeRatio = 0.5f;
	float p1BendFactor = 0.5f;
	float p1AngleInHitPlaneMin = -89.f;
	float p1AngleInHitPlaneMax = 89.f;
	float p1AngleInVerticalPlane = 0.f;
	float p1SnapRadius = 0.2f;
	float p2StartVelocity = 50.f;
	float p2BendRation = 0.05f;
	float p2BendFactor = 0.05f;
	bool p2ShouldRotate = true;
	float p2AngleInHitPlaneMin = -0.f;
	float p2AngleInHitPlaneMax = 0.f;
	float p2AngleInVerticalPlane = 0f;
	float targetPositionOffset = 0.3f;
	float targetPositionXYAdditive = 0.f;
	float playerPositionGrabTime = 0.f;
	float finalTargetPositionCalculationDelay = -1.f;
	bool followTargetInPhase2 = true;
	float puppetBroadphaseHitRadiusSquared = 1.f;
	float explosionRadius = 5.f;
}

RocketProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.RocketAttack";
	projectileTemplateName = "exploding_bullet";
	velocity = 200.f;
	explosionAttack = "Attacks.RocketExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

RocketEffect : Bullet_GameEffect
{
	explosionAttack = "Attacks.RocketExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

RocketChargedProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.RocketChargedProjectile";
	projectileTemplateName = "exploding_bullet";
	velocity = 200.f;
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
	float projectileAccelOverride = 10.f;
	explosionAttack = "Attacks.RocketChargedExplosion";
}

RocketChargedEffect : Bullet_GameEffect
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
	explosionAttack = "Attacks.RocketChargedExplosion";
}

ExplodingBulletProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.ExplodingBullet";
	projectileTemplateName = "exploding_bullet";
	velocity = 200.f;
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.PhysicalDamageAdditiveMultiplier";
			refObject = "Root";
			opSymbol = "*";
			value = 1;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.ThermalDamageAdditiveMultiplier";
			refObject = "Root";
			opSymbol = "*";
			value = 1;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.ChemicalDamageAdditiveMultiplier";
			refObject = "Root";
			opSymbol = "*";
			value = 1;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.ElectricDamageAdditiveMultiplier";
			refObject = "Root";
			opSymbol = "*";
			value = 1;
		} : CombinedStatModifier
	];
	explosionAttack = "Attacks.BulletExplosion";
}

VehicleTurretProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.ExplodingBullet";
	projectileTemplateName = "exploding_bullet";
	velocity = 80.f;
	float projectileAccelOverride = 100.f;
	explosionAttack = "Attacks.BulletExplosion";
}

ExplodingBulletTurretProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.Bullet_Projectile";
	projectileTemplateName = "exploding_bullet";
	velocity = 200.f;
	fk< StatModifier >[] statModifiers = 
	[
		{
			refStat = "BaseStats.DPS";
		} : PhysicalEnemyDamage, 
		"AttackModifier.NPCAttacksPerSecondFactor"
	];
}

ExplodingBulletSmallProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.ExplodingBullet";
	projectileTemplateName = "exploding_bullet_small";
	velocity = 140.f;
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
	explosionAttack = "Attacks.BulletExplosion";
}

ExplodingBulletLightProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.ExplodingBulletLight";
	projectileTemplateName = "exploding_bullet";
	velocity = 175.f;
	explosionAttack = "Attacks.BulletLightExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

ExplodingBulletMediumProjectile : Bullet_Projectile
{
	userDataPath = "Attacks.ExplodingBulletMedium";
	projectileTemplateName = "exploding_bullet";
	velocity = 200.f;
	explosionAttack = "Attacks.BulletMediumExplosion";
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.5f;
		} : ConstantStatModifier
	];
}

ExplodingBulletSasquatchProjectile : ExplodingBulletSmallProjectile
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier
	];
	explosionAttack = "Attacks.BulletSasquatchExplosion";
}

ExplodingBulletChimeraProjectile : ExplodingBulletSmallProjectile
{
	fk< StatModifier >[] statModifiers += 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Multiplier";
			value = 0.15f;
		} : ConstantStatModifier
	];
	explosionAttack = "Attacks.BulletChimeraExplosion";
}

ExplodingPanzerBulletProjectile : Bullet_Projectile
{
	projectileTemplateName = "exploding_projectile_panzer";
	velocity = 1800.f;
	explosionAttack = "Attacks.BulletExplosionPanzer";
	attackType = "AttackType.Explosion";
	explosionDamageVSVehicles = 200.0f;
}

SpiderbotStunBullet : Bullet_Projectile
{
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Stun";
			resistPool = "BaseStatPools.StunTrigger";
			applyImmediately = true;
		}
	];
}

SpiderbotStunAttack : RangedAttack
{
	playerAttack = "Attacks.SpiderbotStunBullet";
	playerTimeDilated = "Attacks.SpiderbotStunBullet";
	NPCAttack = "Attacks.SpiderbotStunBullet";
	NPCTimeDilated = "Attacks.SpiderbotStunBullet";
}

ReedSniperAttack : Bullet_GameEffect
{
	className = "Attack_GameEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor", {
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.0f;
		} : ConstantStatModifier
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.StunReed";
			applyImmediately = true;
		}
	];
}

ReedSniperAttackProjectile : Bullet_Projectile
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor", {
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0.0f;
		} : ConstantStatModifier
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.StunReed";
			applyImmediately = true;
		}
	];
}

MaxTacsSniperAttack : Bullet_GameEffect
{
	className = "Attack_GameEffect";
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor"
	];
}

MaxTacsAttackProjectile : Bullet_Projectile
{
	fk< StatModifier >[] statModifiers = 
	[
		"AttackModifier.PhysicalEnemyDamage", "AttackModifier.NPCAttacksPerSecondFactor"
	];
}

ReedSniperAttack_RangedAttack : RangedAttack
{
	playerAttack = "Attacks.ReedSniperAttack";
	playerTimeDilated = "Attacks.ReedSniperAttackProjectile";
	NPCAttack = "Attacks.ReedSniperAttack";
	NPCTimeDilated = "Attacks.ReedSniperAttackProjectile";
}

Chimera_Bullet_GameEffect : Attack_GameEffect
{
	userDataPath = "Attacks.Bullet_GameEffect";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	effectName = "weaponShoot";
	effectTag = "chimera_ray";
	staminaCost += 
	[
		{
			statType = "BaseStats.Stamina";
			modifierType = "Additive";
			refStat = "BaseStats.WeaponTypeToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.MagazineCapacityBase";
			refObject = "Owner";
			opSymbol = "inv";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.WeaponEvolutionToStaminaCost";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "Multiplier";
			refStat = "BaseStats.FirePower";
			refObject = "Owner";
			opSymbol = "*";
			value = 1.0f;
		} : CombinedStatModifier, 
		{
			statType = "BaseStats.Stamina";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.StaminaCostReduction";
			refObject = "Owner";
			opSymbol = "*";
			value = -1.0f;
		} : CombinedStatModifier
	];
}

Chimera_Exploding_Bullet_GameEffect : Chimera_Bullet_GameEffect
{
	effectTag = "chimera_ray_destruction";
}

PreventionMaxTac_RangedAttack : RangedAttack
{
	playerAttack = "Attacks.MaxTacsSniperAttack";
	playerTimeDilated = "Attacks.MaxTacsAttackProjectile";
	NPCAttack = "Attacks.MaxTacsSniperAttack";
	NPCTimeDilated = "Attacks.MaxTacsAttackProjectile";
}

