Skip to main content

Legion Spear

Deals a critical hit when a single attack hits multiple enemies.

The critical damage multiplier increases based on the number of enemies hit.

Implementation​

The Legion Spear skill object contains two Effectors.

The LegionSpear skill prefab has two children: Damager deals the damage, Toucher counts the foes it touches.

The Toucher is initially active. Its EnterExit Effector increases the source Actor's TouchCount for each target inside the area.

Toucher › Effector_EnterExit — Prefab component
Effector_EnterExit: Toucher
Collide Detectors:Toucher (Trigger Detector 3D)
Trigger Actors:Enemy
Hit Limitation Type:Unlimited
Team From:Source
Any States:Everything
Effect Pack (target Source, source Source):IncreaseTouchCount

The Damage Effector is activated after a 0.15 second delay. It uses an OnCollide Effector to apply damage to the TriggerActors.

Damager › Effector_OnCollide — Prefab component
Effector_OnCollide: Damager
Trigger Actors:Enemy
Hit Limitation Type:Unlimited
Team From:Source
Limit Exceeded Behaviour:Passivate
Do Not Effect Target Twice:true
Effect Pack (target Trigger Actor, source Source):LegionSpear

To modify the CritRate and CritMultiplier values based on the number of touched targets, we use ConditionalModifiers with the CritProcessor.

MASContribution_CriticalHit_Float — MASContribution Critical Hit Float
MASContribution Critical Hit Float: MASContribution_CriticalHit_Float
Required Attributes:Modibifiable|Critable|AttributeStatsProcessable
Receiving Critical Rate Key:CriticalRate_Receiving
Applying Critical Rate Key:CriticalRate_Applying
Receiving Critical Multiplier Key:CriticalMultiplier_Receiving
Applying Critical Multiplier Key:CriticalMultiplier_Applying
Critical Result Attribute:Critical
Use Conditional Rate Modifier:true
Use Conditional Multiplier Modififier:true
Conditional Modifier Processor:ASContribution_ConditionalModifier(Float-Generic)

The CritRate Conditional Modifier checks whether the TouchCount is greater than 1. If the condition is met, it adds 1 to the CritRate as a flat contribution.

LegionSpear_CritRate — Stat (Clamped Float)
Stat (Clamped Float): LegionSpear_CritRate
Stat Key:LegionSpear / FloatClamped / CritRate
Relation: ConditionalModifier_ApplyingAS:TouchingTargetBasedCritRateModifier
TouchingTargetBasedCritRateModifier — Stat (ConditionalModifier Float)
Stat (ConditionalModifier Float): TouchingTargetBasedCritRateModifier
Stat Key:LegionSpear / ConditionalModifier / CritRateModifier
Default:1
Max:1
Single Stat Checker › Condition:GTE2(Int)

For the CritMultiplier, we use a StatScaler to scale the CritMultiplierModifier based on the number of touched targets. It adds 0.25 to the CritMultiplier for each target.

LegionSpear_CritMultiplier — Stat (Clamped Float)
Stat (Clamped Float): LegionSpear_CritMultiplier
Stat Key:LegionSpear / FloatClamped / CritMultiplier
Relation: ConditionalModifier_ApplyingAS:TouchingTargetBasedCritMultiplierModifier
Default:1
Max:5
TouchingTargetBasedCritMultiplierModifier — Stat (ConditionalModifier Float)
Stat (ConditionalModifier Float): TouchingTargetBasedCritMultiplierModifier
Stat Key:LegionSpear / ConditionalModifier / CritMultiplierModifier
Default:0.25
Max:0.25
Single Stat Checker › Condition:GTE2(Int)
Use Scaler:true
Stat Scaler › Scaler:StatToMultiplier_TouchingTargetCount