package Attacks
using RTDB

RoyceLaserSight : Attack_GameEffect
{
	userDataPath = "Attacks.RoyceLaserSight";
	className = "RoyceLaserSight";
	attackType = "AttackType.Direct";
	range = 200.0f;
	float hitCooldown = -1.f;
	effectName = "targetting";
	effectTag = "royceLaserSight";
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			value = 0;
		} : ConstantStatModifier
	];
}

PlasmaProjectilePackage : RangedAttackPackage
{
	defaultFire = "Attacks.PlasmaShotDefault";
	chargeFire = "Attacks.PlasmaShotCharge";
}

PlasmaShotDefault : RangedAttack
{
	playerAttack = "Attacks.PlasmaProjectileWeak";
	playerTimeDilated = "Attacks.PlasmaProjectileWeak";
	NPCAttack = "Attacks.PlasmaProjectileWeak";
	NPCTimeDilated = "Attacks.PlasmaProjectileWeak";
}

PlasmaShotCharge : RangedAttack
{
	playerAttack = "Attacks.PlasmaProjectile";
	playerTimeDilated = "Attacks.PlasmaProjectile";
	NPCAttack = "Attacks.PlasmaProjectile";
	NPCTimeDilated = "Attacks.PlasmaProjectile";
}

PlasmaShotTurtle : RangedAttack
{
	playerAttack = "Attacks.PlasmaProjectileWeak";
	playerTimeDilated = "Attacks.PlasmaProjectileWeak";
	NPCAttack = "Attacks.PlasmaProjectileWeak";
	NPCTimeDilated = "Attacks.PlasmaProjectileWeak";
}

PlasmaShotSplash : RangedAttack
{
	playerAttack = "Attacks.PlasmaProjectileSplash";
	playerTimeDilated = "Attacks.PlasmaProjectileSplash";
	NPCAttack = "Attacks.PlasmaProjectileSplash";
	NPCTimeDilated = "Attacks.PlasmaProjectileSplash";
}

SmasherPlasmaShotSplash : RangedAttack
{
	playerAttack = "Attacks.SmasherPlasmaProjectileSplash";
	playerTimeDilated = "Attacks.SmasherPlasmaProjectileSplash";
	NPCAttack = "Attacks.SmasherPlasmaProjectileSplash";
	NPCTimeDilated = "Attacks.SmasherPlasmaProjectileSplash";
}

PlasmaBeamShot : Attack_GameEffect
{
	userDataPath = "Attacks.PlasmaBeamShot";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	float hitCooldown = 0.5f;
	effectName = "beams";
	effectTag = "plasmaShot";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaBeamDamage"
	];
}

PlasmaProjectile : Attack_Projectile
{
	userDataPath = "Attacks.PlasmaProjectile";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	projectileTemplateName = "plasma_projectile";
	float hitCooldown = 0.5f;
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaProjectileDamageNull"
	];
}

PlasmaProjectileWeak : Attack_Projectile
{
	userDataPath = "Attacks.PlasmaProjectile";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	projectileTemplateName = "plasma_projectile_weak";
	float hitCooldown = 0.25f;
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaProjectileDamageNull"
	];
}

PlasmaProjectileSplash : Attack_Projectile
{
	userDataPath = "Attacks.PlasmaProjectile";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	projectileTemplateName = "plasma_projectile_splash";
	float hitCooldown = 0.5f;
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaProjectileDamageNull"
	];
}

SmasherPlasmaProjectileSplash : Attack_Projectile
{
	userDataPath = "Attacks.PlasmaProjectile";
	attackType = "AttackType.Ranged";
	range = 200.0f;
	projectileTemplateName = "smasher_plasma_projectile_splash";
	float hitCooldown = 0.5f;
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaProjectileDamageNull"
	];
}

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

PlasmaProjectileDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.5f;
}

PlasmaProjectileSplashDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.75f;
}

PlasmaProjectileWeakDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.33f;
}

PlasmaBeamDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.5f;
}

PlasmaProjectileThermal : PlasmaProjectile
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.ThermalDamage";
			modifierType = "Additive";
			value = 20;
		} : ConstantStatModifier
	];
}

PlasmaProjectileChemical : PlasmaProjectile
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.ChemicalDamage";
			modifierType = "Additive";
			value = 20;
		} : ConstantStatModifier
	];
}

PlasmaProjectileEMP : PlasmaProjectile
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.ElectricDamage";
			modifierType = "Additive";
			value = 20;
		} : ConstantStatModifier
	];
}

PlasmaBeam : Attack_GameEffect
{
	userDataPath = "Attacks.PlasmaBeam";
	className = "Attack_Beam";
	attackType = "AttackType.Direct";
	range = 200.0f;
	float hitCooldown = 0.5f;
	effectName = "beams";
	effectTag = "plasmaBeam";
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.PlasmaBeamDamage"
	];
}

ShieldSlam : Attack_Melee
{
	attackType = "AttackType.Melee";
	range = 10.0f;
	attackName = "shieldSlam";
	effectName = "shields";
	effectTag = "shieldSlam";
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 80;
		} : ConstantStatModifier
	];
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Stun";
			resistPool = "BaseStatPools.StunTrigger";
			applyImmediately = true;
		}
	];
}

RoyceExplosion : Attack_GameEffect
{
	attackType = "AttackType.Explosion";
	effectName = "royce_explosions";
	effectTag = "default_explosion";
	range = 4.0f;
}

RoyceWeakSpotExplosion : RoyceExplosion
{
	attackType = "AttackType.Explosion";
	effectTag = "weakspot_explosion";
	range = 3.f;
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Pain";
			applyImmediately = true;
		}, 
		{
			statusEffect = "Royce.WeakSpotDestroyed";
			applyImmediately = true;
		}, 
		{
			statusEffect = "Royce.Phase2";
			applyImmediately = true;
		}
	];
	hitFlags = 
	[
		"FriendlyFire"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RoyceWeakspotExplosionDamage"
	];
}

RoyceWeakspotExplosionDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.Health";
	refObject = "Self";
	opSymbol = "*";
	value = 0.f;
}

SasquatchWeakSpotExplosion : RoyceExplosion
{
	attackType = "AttackType.Explosion";
	effectTag = "weakspot_explosion";
	range = 3.f;
	fk< StatusEffectAttackData >[] statusEffects = 
	[
		{
			statusEffect = "BaseStatusEffect.Pain";
			applyImmediately = true;
		}, 
		{
			statusEffect = "Sasquatch.WeakSpotDestroyed";
			applyImmediately = true;
		}
	];
	hitFlags = 
	[
		"FriendlyFire"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.SasquatchWeakspotExplosionDamage"
	];
}

SasquatchWeakspotExplosionDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.Health";
	refObject = "Self";
	opSymbol = "*";
	value = 0.05f;
}

RoyceProjectileExplosion : RoyceExplosion
{
	attackType = "AttackType.Explosion";
	effectTag = "projectile_explosion";
	range = 1.f;
	hitFlags = 
	[
		"FriendlyFire"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RoyceProjectileExplosionDamage"
	];
}

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

RoyceProjectileExplosionWeak : RoyceProjectileExplosion
{
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RoyceProjectileExplosionWeakDamage"
	];
}

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

RoyceSplashExplosion : RoyceExplosion
{
	attackType = "AttackType.Explosion";
	effectTag = "splash_explosion";
	range = 4.f;
	hitFlags = 
	[
		"FriendlyFire"
	];
	fk< StatModifier >[] statModifiers = 
	[
		"Attacks.RoyceSplashExplosionDamage"
	];
}

RoyceSplashExplosionDamage : CombinedStatModifier
{
	statType = "BaseStats.PhysicalDamage";
	modifierType = "Additive";
	refStat = "BaseStats.NPCDamage";
	refObject = "Root";
	opSymbol = "*";
	value = 0.5f;
}

