package Attacks
using RTDB, Materials

GroundSlamFar : Attack_Landing
{
	attackType = "AttackType.PressureWave";
	effectName = "superheroLanding";
	effectTag = "weak";
	range = 10.0f;
	float maxRange = 12.0f;
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 15;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			refObject = "Root";
			id = "quality_curves";
			column = "effective_tier_to_dps_multiplier_new";
			refStat = "BaseStats.EffectiveTier";
		} : CurveStatModifier
	];
	hitFlags += 
	[
		"Nonlethal", "GroundSlam", "BodyPerksMeleeAttack"
	];
	hitReactionSeverityMin = 2;
}

GroundSlamNear : Attack_Landing
{
	attackType = "AttackType.Explosion";
	effectName = "superheroLanding";
	effectTag = "strong";
	range = 4.0f;
	float maxRange = 10.0f;
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 90;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Multiplier";
			refObject = "Root";
			id = "quality_curves";
			column = "effective_tier_to_dps_multiplier_new";
			refStat = "BaseStats.EffectiveTier";
		} : CurveStatModifier
	];
	hitFlags += 
	[
		"BodyPerksMeleeAttack"
	];
	fxPackage = 
	{
		materials = 
		[
			{
				material = "Materials.Concrete";
				effect = "base\fx\characters\common\charged_jump\charged_jump.effect";
			}
		];
	};
	hitReactionSeverityMin = 3;
}

GroundSlamFarImpulse : Attack_Landing
{
	attackType = "AttackType.PressureWave";
	effectName = "superheroLanding";
	effectTag = "weakImpulse";
	range = 6.0f;
	float maxRange = 12.0f;
	hitFlags += 
	[
		"DealNoDamage"
	];
}

GroundSlamNearImpulse : Attack_Landing
{
	attackType = "AttackType.PressureWave";
	effectName = "superheroLanding";
	effectTag = "strongImpulse";
	range = 1.5f;
	float maxRange = 10.0f;
	hitFlags += 
	[
		"DealNoDamage"
	];
}

PressureWave : Attack_Landing
{
	attackType = "AttackType.PressureWave";
	effectName = "landing";
	effectTag = "defaultLand";
	range = 1.0f;
}

HardLanding : PressureWave
{
	hitFlags += 
	[
		"IgnoreDifficulty"
	];
}

VeryHardLanding : PressureWave
{
	effectTag = "veryHardLand";
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 80;
		} : ConstantStatModifier, 
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "AdditiveMultiplier";
			refStat = "BaseStats.FallDamageReduction";
			refObject = "Target";
			opSymbol = "*";
			value = -1.f;
		} : CombinedStatModifier
	];
	hitFlags += 
	[
		"IgnoreDifficulty"
	];
	fxPackage = 
	{
		ResRef effect = "";
	};
}

DeathLanding : PressureWave
{
	effectTag = "deathLand";
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 10000;
		} : ConstantStatModifier
	];
	hitFlags += 
	[
		"IgnoreDifficulty"
	];
}

LightWallImpact : PressureWave
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			refObject = "Target";
			opSymbol = "*";
			value = 0.15f;
		} : CombinedStatModifier
	];
	hitFlags += 
	[
		"IgnoreDifficulty", "PlayerWallImpact"
	];
}

MediumWallImpact : PressureWave
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			refObject = "Target";
			opSymbol = "*";
			value = 0.3f;
		} : CombinedStatModifier
	];
	hitFlags += 
	[
		"IgnoreDifficulty", "PlayerWallImpact"
	];
}

HardWallImpact : PressureWave
{
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			refStat = "BaseStats.Health";
			refObject = "Target";
			opSymbol = "*";
			value = 0.55f;
		} : CombinedStatModifier
	];
	hitFlags += 
	[
		"IgnoreDifficulty", "PlayerWallImpact"
	];
}

ForwardPush : Attack_GameEffect
{
	attackType = "AttackType.PressureWave";
	effectName = "melee";
	effectTag = "forwardPush";
	fk< StatModifier >[] statModifiers = 
	[
		{
			statType = "BaseStats.PhysicalDamage";
			modifierType = "Additive";
			value = 400;
		} : ConstantStatModifier
	];
}

