vicious_lunge.xml
<abilities>
<ability>
<name>Vicious Lunge</name>
<key>vicious_lunge</key>
<skill>Daggers</skill>
<icon>vicious_lunge</icon>
<tagline>"If the target is within reach, why waste time?"</tagline>
<description>
Move to and attack a target within ⮃{{stat -> key:LungeRangeBoost, add:3, pluralize:tile}}⮃ for
⮃+50% damage⮃.
[p]Lunging will reduce your defenses for 2 turns, increasing incoming damage by 25%.
</description>
<type>Target</type>
<cost>40.0</cost>
<cooldown>10</cooldown>
<targetInfo>
<type>Lunge</type>
<lungeTargeting>
<selectionArea>
<type>square</type>
<allowTargets>
<allowCreature>true</allowCreature>
<allowEmpty>false</allowEmpty>
<allowPlayer>false</allowPlayer>
</allowTargets>
<params>
<params type="width">3</params>
<params type="height">3</params>
<params type="expandStat">LungeRangeBoost</params>
</params>
</selectionArea>
</lungeTargeting>
<abilityUseTime>
<type>weapon</type>
</abilityUseTime>
<jumpEffects>
<jumpEffect>
ShowAnimation -> key:dustring;
PlaySound -> key:dash;
</jumpEffect>
</jumpEffects>
<postTargetEffects>
<postTargetEffect>
AND PlayerHasAbility -> key:killing_momentum;
AND IsDead;
THEN ReduceCooldown -> key:vicious_lunge, amount:5, starts_with:true;
THEN write_log -> logAfterCombat:true, text:-5 cooldown to Vicious Lunge (Killing Momentum),
type:combat;
</postTargetEffect>
</postTargetEffects>
</targetInfo>
<unlockInfo>
<autoDiscover>0</autoDiscover>
<unlockRequirements>
<requiredPoints>2</requiredPoints>
<requires>knife_handler</requires>
</unlockRequirements>
</unlockInfo>
<extraTexts>
<extraTexts>
{{upgrade_text -> ability:shadowstride, text:If Vicious Lunge hits\, go invisible for 2 turns.}}
</extraTexts>
<extraTexts>
{{upgrade_text -> ability:killing_momentum}}
</extraTexts>
</extraTexts>
<requirements>
<requirements>
<type>Weapon</type>
<params>
<params type="weapon">Dagger</params>
</params>
</requirements>
<requirements>
<type>MobilityEnabled</type>
</requirements>
</requirements>
<statusEffects>
<statusEffects>
<turns>2</turns>
<name>Exposed</name>
<key>vicious_lunge_exposed</key>
<icon>vicious_lunge</icon>
<modifiers>
<modifiers>
<type>DamageReceived</type>
<amount>0.25</amount>
</modifiers>
</modifiers>
</statusEffects>
</statusEffects>
<attacks>
<attacks>
<count>0</count>
<animation>spell_stab_02</animation>
<modifiers>
<modifiers>
<type>Damage</type>
<amount>0.5</amount>
</modifiers>
</modifiers>
<selfEffects>
<selfEffects>
IF PlayerHasAbility -> key:shadowstride;
AND PlayerLastAttackHit;
AND HasStatusEffect -> key:shadowstride_status;
THEN ExtendStatusEffect -> key:«LINK:shadowstride_status», target:player, amount:1;
THEN write_log -> logAfterCombat:true, text:Shadowstride extended, type:combat;
</selfEffects>
<selfEffects>
IF PlayerHasAbility -> key:shadowstride;
AND PlayerLastAttackHit;
AND NOT HasStatusEffect -> key:shadowstride_status;
THEN ApplyStatusEffect -> key:«LINK:shadowstride_status», target:player, refresh:true;
THEN write_log -> logAfterCombat:true, text:Entered Shadowstride, type:combat;
</selfEffects>
<selfEffects>
IF PlayerHasAbility -> key:shadowstride;
AND NOT PlayerLastAttackHit;
AND NOT HasStatusEffect -> key:vicious_lunge_exposed;
THEN ApplyStatusEffect -> key:«LINK:vicious_lunge_exposed», target:player, refresh:true;
</selfEffects>
<selfEffects>
IF NOT PlayerHasAbility -> key:shadowstride;
AND NOT HasStatusEffect -> key:vicious_lunge_exposed;
THEN ApplyStatusEffect -> key:«LINK:vicious_lunge_exposed», target:player, refresh:true;
</selfEffects>
</selfEffects>
</attacks>
</attacks>
</ability>
</abilities>