The Last Spell: Damage Formulas (Damage Calculation Chains)

breakdown of damage calculation chains

 

Testing Methodology
this game in its current state has Dev logging enabled to
“<Drive>:\Users\<user>\AppData\LocalLow\Ishtar Games\The Last Spell\Logs\”
on my Windows machine.

It doesn’t log much combat damage chain related info out of the gate (has the dodge rolls) but with a little dnSpy code re-compiling help extra calls to the logging function can be inserted in various points of interest.

The result is a ‘low effort’ mod for the game version [0.92.1.3_beta] that replaces TheLastStand.dll with a version with extra combat logging .

Low effort because:
– it logs in the same file as the dev log and thus the output will be mixed.
– some of the functions in the damage chain are also called by UI helpers during the targeting process (will dump extra combat chain log lines while aiming/evaluating attacks not just only while actually executing a damaging ability)
– will not survive the next patch/release – as it will for sure send it an updated TheLastStand.dll.

So this is not a quality of life easy to use mod, for the moment a testing tool.

example ‘cleaned up’ combat log output start of Lighning Strike propagation Chain

Zuzanna 1442632329 uses Lightning Strike :
!! WAS HIT !!  Dodge roll : 59 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (840376793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5  // Compute Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 369.936 - 436.73 after applying  *1.835 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 459 - 542 //Compute Caster Range
Damage Range 459 - 542 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 459 - 542 after compute perk damage range //Compute Final Damage Range
Damage Range 417 - 493  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 417 - 493 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 417 - 493; 0.1992831 FixedRngRoll (if > 0); 0.9684955 RNG ROLL; 432 Selected Damage in Range
!!CRIT!!  [PLAYER] to Crit ROLL : 44 < [62 unit CTC] + [0 Attack Crit bonus(ex martial artist)] + [15 perks like firstBlood] | Zuzanna  vs Clawer (840376793)
Damage 820.8 Upped by crit Multiplier 1.9
01. Damage Calculation Chain; there is Max 1 unit=target per tile
Regardless of the type of ability used to do the damage:

-single target (single tile = target selection)
-multihit( multiple tiles = targets selection )
-AOE ( multiple tiles = targets selection in ability pre-defined pattern shape)
-propagation hits ( here the viable tiles=targets are selected automatically up to the max number of bounces while viable adjacent targets are available during each bounce)

THE DAMAGE CALCULATION CHAIN is ‘traversed’ separately/individually for each and every tile=unit affected by any ability.

a DODGE RNG ROLL is allowed for targets to avoid damage by non AUTOHIT abilities
Accurate = AUTOHIT skills:

-Shorbow: Precise Shot single target
-Longbow : Snipe Shot single target
-Sledgehammer: Ground Smash up to 5 targets AOE
-MH Pistol & OH Pistol: Grapeshot up to 9 targets AOE
-Active ‘Hitman’ perk.

All the others allow the ROLL to DODGE damage (effects will be applied either way).

The chance to dodge =
Target’s Dodge * Attacker_SkillDodgeMultiplier * RageToTargetRingDodgeMultiplier –
Attacker’s Accuracy

Attacker_SkillDodgeMultiplier = 1 for all skills except

1.5 ( Axe:Shred ; Great Axe: Swing; Shortbow: Powershot; Crossbow: Heavy Bolt )
2 (Rifle:Hip Shot)

RageToTargetRingDodgeMultiplier : Applies to ranged attacks . Going further than the first ‘ring’ 1.75, 2, 2.25, 2.5 ..etc (+0.25 per ring progression)

Dodge is capped at 95%.

Sources of dodge gear, level ups and Longbow BUFF 40%.
Sources of Accuracy gear, level ups and perks Steady Aim 10%, Don’t Panic 10%.

Observations
– if the calculated chance to dodge < ZERO = AUTOHIT..
– negative accuracy will enable dodge roll even vs 0 Dodge Targets !!! (sell/unequip -accuracy gear in the early game) . Don’t dual wield -accuracy weapons before (if ever) you’ve got the accuracy to compensate.
– THERE ARE NO INACCURATE magic damage weapons. Magic weapon users WILL NEED THE LEAST ACCURACY INVESTMENT. (max monster dodge in night 12 = ?)
– some melee weapons come with -accuracy, few melee skills have SkillDodgeMultiplier = 1.5. Depending on weapon use combination melee weapon users will in some cases need more accuracy than the magic ones but not too much..
– Ranged weapon users will need the most accuracy when targeting near max distance (pistol , 1h xbow, longbow, shortbow, xbow, rifle) sorted in order of accuracy need. Hipshot can get good range but need ungodly amounts of accuracy to hit reliably at range. Maybe pay attention and don’t chance hip shots at long range without checking the calculated dodge chance in the targeting preview. +Range stat doesn’t synergise greatly with ranged weapons (increases need for accuracy) .

example

Thurlow 182252553 uses Hip Shot :
!! WAS HIT !!  Dodge roll : 43 < 16 = ([14 TargetDodge] * [2 skill dodge mul ] * [2.25 range ring dodge multiplier] - [47 Accuracy] ) vs Clawer (218000062)\
...
Skill base damage range (=weapon base damage range) and SkillDamageMultiplier
Target did get a chance to or failed to dodge so we’re up to some damage applications:
Stormy 1648345860 uses Death Ray :
!! WAS HIT !!  Dodge roll : 19 < -17 = ([14 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Splitter (436379298)
Skill(weapon) Base Damage Range 96 - 115; skill damage multiplier 2  // Compute Damage Data
Damage Range 192 - 230 with skill damage multiplier 2 applied // Compute Damage Data
..

Weapon’s base damage range depends on its type, tier and quality.
Two handed weapons tend to have more damage than 1 handed ones,

Tomes , 2H axes, 1h axe, short and longbows have larger variance ( Max – Min ).. Will get more out of the Reliability stat . (more on that when Reliability is applied).

There are 6 Tier levels for gear (and weapons). Base, I, II, III, IV, V.

There are 2 Quality levels – Default and ‘inferior’. The damage range of an ‘inferior’ is roughly ~ as the default one of the same tier -1;
‘Inferior’ weapons have the prefix ‘rusty’ for the melee weapons, ‘wooden’ for ranged weapons and ‘journeyman’s’ for the magic weapons.

Damage progression per tier seems ~10% exponential. But not exactly the same for all weapon types.
(Ex for Default Quality 1H swords
90 * 1,1 ^ 0 = 90 Max Base.
90 * 1,1 ^ 1= 99 Max Tier I
90 * 1,1 ^ 2= 108.9 Rounds to 109 Max Tier II
90 * 1,1 ^ 3= 119.79 Rounds to 120 Max Tier III
90 * 1,1 ^ 4= 131.769 Rounds to 132 Max Tier IV
90 * 1,1 ^ 5 =144,9459 rounds to 145 Max Tier V

85 * 1,09 ^Tier seems to cover the max for ‘Rusty’ 1H swords

Got some more base damage range data in this[docs.google.com] google sheet.

punch 40-50 *1
deadly punch 60-75 *1

First modification to the base damage range is applying (multiplying by its skill damage multiplier).

For a lot of skills the ‘skill damage multiplier’ is 1.
This is the case for left-est skill in the UI for every weapon. (Ex Dagger: Backstab, 1h Sword: Slice ..)

this[docs.google.com] same google sheet has all the skill damage multipliers and more skill related info in a different tab.

Here again’s the log example from the top.
96 – 115 is the base damage range for a Tier V Magic Orb.
Death Ray has *2 skill damage multiplier

Stormy 1648345860 uses Death Ray :
!! WAS HIT !!  Dodge roll : 19 < -17 = ([14 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Splitter (436379298)
Skill(weapon) Base Damage Range 96 - 115; skill damage multiplier 2  // Compute Damage Data
Damage Range 192 - 230 with skill damage multiplier 2 applied // Compute Damage Data
..

 

Upping the minimum damage using the [capped] Reliability stat.

Stormy 1648345860 uses Death Ray :
!! WAS HIT !!  Dodge roll : 19 < -17 = ([14 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Splitter (436379298)
Skill(weapon) Base Damage Range 96 - 115; skill damage multiplier 2  // Compute Damage Data
Damage Range 192 - 230 with skill damage multiplier 2 applied // Compute Damage Data
Damage Range 230 - 230 upped by [CLAMPED] Reliability; 133% unit reliability; 0% reliability from perks;  //Compute Caster Range
..

Reliability shifts the new min damage value to min + (max-min) * Reliability %. It will go as per the skills description all the way to the max value but no further at 100% reliability. It reduces damage variance by tightening the damage range (upping the min).

CAPPED AT 100% FROM ALL SOURCES. (no point going overboard..anymore)

{ It wasn’t always this way. Before game version [0.92.1.3_beta] released YESTERDAY ! there was a cap on the reliability stat but not on the reliability stat + 50% reliability from the ‘Cherry Picking’ perk. Until yesterday it was possible to get your min-max damage up to newMin = newMax = max + (max-min) /2 vs isolated targets. This benefited the high variance weapons (tome, axes, bows) more .. This has been fixed ! 1 day before the release of this guide 🙂 . }

the sources for this stat are level ups, gear and perks
‘Confident’ = shows on char info when active. Like healing potions and ‘vampire’ perk.
‘Cherry Picker’ = this one’s effect over the damage range can be viewed in some cases using the targeting cursors but not always possible with the AOE targeting cursors that are tied to the same mouse movement one would use to check the damage prediction over various tiles in the targeted AOE. REST ASSURED (damage logs show) this perk applies correctly for AOE attacks and even propagation hits when appropriate .
Use of ‘cherrypicking’ with AOE abilities is WEIRD since one CANNOT control the order the tiles in the AWAY will be attacked and which ones will/could remain isolated as the game applies the hits in the AOE. If one wants to make certain a target targeted by an AOE ability will be isolated for ‘CherryPicking’ possibile damage boost, it should do it BEFORE executing that particular AOE attack.

Here’s an example of cherry picking applying to the last hit in a 10 hit lighting strike propagation chain. the ‘50% reliability from perks; is ‘cherryPicking’

 !! WAS HIT !!  Dodge roll : 19 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (826194524)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5 ; propagation Index 10  // Compute Propagated Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Propagated Damage Data
Damage Range 238 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 437.92 - 437.92 after applying  *1.84 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 543 - 543 //Compute Caster Range
Damage Range 543 - 543 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 543 - 543 after compute perk damage range //Compute Final Damage Range
Damage Range 494 - 494  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 494 - 494 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 494 - 494; 0.1992831 FixedRngRoll ( FOR PROPAGATION HITS ); 494 Selected Damage in Range // Compute Propagated Damage Data
!! CRIT PROPAGATION CHAIN !! Damage 938.6 upped by crit multiplier 1.9  // Compute Propagated Damage Data
ROUNDED Damage 506 after *0.5386151 = 0.94 propagation damage multiplier ^ 10 propagation index Damage fallof is applied  // Compute Propagated Damage Data
..

 

Applying the damage type multiplier to the damage range

Stormy 1648345860 uses Death Ray :
!! WAS HIT !!  Dodge roll : 19 < -17 = ([14 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Splitter (436379298)
Skill(weapon) Base Damage Range 96 - 115; skill damage multiplier 2  // Compute Damage Data
Damage Range 192 - 230 with skill damage multiplier 2 applied // Compute Damage Data
Damage Range 230 - 230 upped by [CLAMPED] Reliability; 133% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 396.75 - 396.75 after applying  *1.725 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
..
There are 3 damage types (‘physical’ for melee weapons, ‘ranged’ for the ranged weapons and ‘magic’ for the magic weapons).

All three are capped at +100% (*2) and the reason one (should NOT) mix weapon types past the first week when the gear making buildings start to come online and HEROES SPECIALIZE into ONE DAMAGE TYPE. (the damage type specialization process starts of course from level 1+ but the effects begin to feel much more significant one tier V gear begins to come in) …

The sources for this stat are level ups and gear.

Magic damage type heroes have access to the ‘Magic Fuel’ tier III perk that adds Floor(curMana/2)/100 to the magic damage type multiplier. Using this perk with a lot of +mana from gear/level ups frees the gear for other stats …
Ex: 30 current mana => +15% to the magic damage multiplier

Applying the genericDamageMultiplier to the damage range
Zuzanna 1442632329 uses Lightning Strike :
!! WAS HIT !!  Dodge roll : 59 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (840376793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5  // Compute Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 369.936 - 436.73 after applying  *1.835 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *(1.24 OverallDamage Multiplier + 0 Don't Panic ?) [!CLAMPED!]  //Compute Caster Range
...
This one is also capped at +100% *2 , but unless you’re a great axe specialist harder to reach the cap than the damage type multipliers.

Sources level ups, gear, buffs from 2h axe and / or Wrath Armor and most perks that list damage .

Cheer 10%; DeadEye -10%; Specialist 20%; Berserk 2% * # received hits during current night.
‘Don’t Panic’ 30% should add here (visible conditional effect on targeting cursor) (99% certain looking at code, haven’t tested it yet)

‘Lone Wolf’ and ‘Relentless’ while worded the same apply later down the damage calculation chain, correctly indicated when possible by aiming helper cursors.

Applying the injuryDamagePenalty multipliers
Players don’t suffer damage loss at low HP (they lose accuracy and mobility points at low HP).

This step currently only has meaning for injured enemies.

Don’t have a log example of injured enemy attacking , will edit one in later.

Zuzanna 1442632329 uses Lightning Strike :
!! WAS HIT !!  Dodge roll : 59 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (840376793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5  // Compute Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 369.936 - 436.73 after applying  *1.835 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *1 Injury Multiplier //Compute Caster Range
..

 

the damage range switches from floats to ints (rounding errors for every multiplication)
From now on EVERY Multiplication carries rounding error.

Applying ‘Isolated’ and or ‘Opportunist’ and or ‘Momentum’ multipliers to the damage range
Stormy 1648345860 uses Infect :
!! WAS HIT !!  Dodge roll : 13 < -11 = ([20 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Accursed (334533627)
Skill(weapon) Base Damage Range 86 - 103; skill damage multiplier 1  // Compute Damage Data
Damage Range 86 - 103 with skill damage multiplier 1 applied // Compute Damage Data
Damage Range 103 - 103 upped by [CLAMPED] Reliability; 133% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying  *1.735 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *(1 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 179 - 179 //Compute Caster Range
DETAILED  Damage Range 358 - 358 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
..
179 * (1 + 1 + 0) = 358

Infect skill has 100% isolated bonus.
Stormy had 0% isolated bonus stat.

Isolated Multiplier = ( 100 + Skill_Isolated + Char Isolated stat)/100
Opportunist Multiplier = ( 100 + Skill_Opportunist + Char Opportunist)/100
Momentum Multiplier = ( 100 + Skill_Momentum + Char Opportunist)/100 * # tiles // momentum capped at *2 ? during last patch.

These multipliers are applied in ‘cascade’ BUT there is currently no skill that has more than one such conditional multiplier attached so AT MOST one of those multipliers will apply.

The skill MUST have one of these conditional multiplier to apply it.
There is also other conditions required
– ‘isolated’ requires the target to have no ally in North, South, West or Est tiles.
– ‘opportunist’ requires any debuff active on the target
– ‘momentum’ skills requires tile movement since the last momentum activation

Isolated skills : ( Dagger: Backstab 100%; Longbow: Long Shot 50%; Rifle: Assassinate 100%; Orb 100%)

Opportunist skills : (1h Hammer: Crush 100% AOE; Druidic Staff: Centipedes 75%; Power Staff: Scorching Wave 100% 6 tile AOE)

Momentum skills (1h Sword: Slice 5%; 2h Sword : Thurst 20%; Spear: Rush 10%; Pistol: Pistol Shot 10%; Scepter: Magic Bash 50% !! ).

sum ‘Lone Wolf’ and ‘Reckless’ perks multiplier
Stormy 1648345860 uses Infect :
!! WAS HIT !!  Dodge roll : 13 < -11 = ([20 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Accursed (334533627)
Skill(weapon) Base Damage Range 86 - 103; skill damage multiplier 1  // Compute Damage Data
Damage Range 86 - 103 with skill damage multiplier 1 applied // Compute Damage Data
Damage Range 103 - 103 upped by [CLAMPED] Reliability; 133% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying  *1.735 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *(1 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 179 - 179 //Compute Caster Range
DETAILED  Damage Range 358 - 358 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0.09999999 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 394 - 394 after compute perk damage range //Compute Final Damage Range
..
In the example above Stormy had ‘LoneWolf’ active. * ( 1 + 0.1 + 0 ); //

These bonuses don’t add to the universalDamageMultiplier. Instead their effects are added and multiplied separately. The targeting UI helper will show this mutiplier when possible as ‘perks’ .

Source : Lone Wolf and Relentless perks ..

Applying Resistance (% damage) multiplier
Stormy 1648345860 uses Infect :
!! WAS HIT !!  Dodge roll : 13 < -11 = ([20 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Accursed (334533627)
Skill(weapon) Base Damage Range 86 - 103; skill damage multiplier 1  // Compute Damage Data
Damage Range 86 - 103 with skill damage multiplier 1 applied // Compute Damage Data
Damage Range 103 - 103 upped by [CLAMPED] Reliability; 133% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying  *1.735 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *(1 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 178.705 - 178.705 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 179 - 179 //Compute Caster Range
DETAILED  Damage Range 358 - 358 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0.09999999 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 394 - 394 after compute perk damage range //Compute Final Damage Range
Damage Range 284 - 284  AFTER % resistance multiplier (- Caster DR reduction = *(1- 0.56 [* 0.5 if magic damage type]) )
...
Damage Reduction Multiplier = 1 – ((TargetReduction – AttackerDamageReduction) / 100 ) * (0.5 if magic damage type)

Sources for both gear and level ups.
Debuffs for resistance :
Tome: Weakening Touch -20% per stack. 2H axe: Berserk -15% per stack.

Resistance Lower Cap = -50% . The is also very likely high cap as 100% would make targets IMMUNE TO DAMAGE.

Observations
-Damage Reduction less valuable for magic users
-Negative Resistance makes it amplify damage .

Subtracting target’s Block
Stormy 1648345860 uses Death Ray :
!! WAS HIT !!  Dodge roll : 19 < -17 = ([14 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Splitter (436379298)
Skill(weapon) Base Damage Range 96 - 115; skill damage multiplier 2  // Compute Damage Data
Damage Range 192 - 230 with skill damage multiplier 2 applied // Compute Damage Data
Damage Range 230 - 230 upped by [CLAMPED] Reliability; 133% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 396.75 - 396.75 after applying  *1.725 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 396.75 - 396.75 after applying *(1 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 396.75 - 396.75 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 397 - 397 //Compute Caster Range
Damage Range 397 - 397 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
0.09999999 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 437 - 437 after compute perk damage range //Compute Final Damage Range
Damage Range 393 - 393  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.2 [* 0.5 if magic damage type]) )
Damage Range 353 - 353 after Subtracting target's block = 40 //Compute Final Damage Range
...
BLOCK IGNORERs :
-Pistol: Pistol Shot (this is a potentially HARD hitting ability (momentum))
-Xbow: Heavy Bolt (this is low variance HARD hitting ability)
– Assassinate (this is low variance VERY HARD hitting ability)
– Active ‘Hitman’ Perk

Observations
-Block is subtracted BEFORE the crit multipliers. Its effect is THUS MULTIPLIED by the crit multiplier for critical strikes.

RNG ROLL – selecting the damage value in the [int] damage range
non-propagation bounce example
BallistaTower  uses Mounted Ballista Bolt :
Skill(weapon) Base Damage Range 90 - 120; skill damage multiplier 1  // Compute Damage Data
Damage Range 90 - 120 with skill damage multiplier 1 applied // Compute Damage Data
Damage Range 90 - 120 after applying  *1 Damage Multiplier for '' Damage Type //Compute Caster Range
ROUNDED damage range 90 - 120 //Compute Caster Range
Damage Range 90 - 120 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
DETAILED  Damage Range 90 - 120  AFTER % damage reduced (- Caster DR reduction = *(1- 0 [* 0.5 if magic damage type]) )
DETAILED  Damage Range 70 - 100 after Subtracting target's block = 20 //Compute Final Damage Range
Final Damage Range 70 - 100; -1 FixedRngRoll (if > 0); 0.4896876 RNG ROLL; 85 Selected Damage in Range

propagation bounce example

Zuzanna 1442632329 uses Lightning Strike :
..
 !! WAS HIT !!  Dodge roll : 53 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (1621283793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5 ; propagation Index 1  // Compute Propagated Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Propagated Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 370.944 - 437.92 after applying  *1.84 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 459.9706 - 543.0208 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 459.9706 - 543.0208 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 460 - 543 //Compute Caster Range
Damage Range 460 - 543 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 460 - 543 after compute perk damage range //Compute Final Damage Range
Damage Range 418 - 494  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 418 - 494 after Subtracting target's block = 0 //Compute Final Damage Range
DETAILED  Final Damage Range 418 - 494; 0.1992831 FixedRngRoll ( FOR PROPAGATION HITS ); 433 Selected Damage in Range // Compute Propagated Damage Data
..
Propagation chain starts and non propagation hit RNG ROLL to select the damage VALUE from the [damage range] FOR EVERY HIT !

Propagation bounce hits USE THE RNG ROLL to select the damage VALUE from the [damage range] and to crit RNG ROLL OF THE CHAIN STARTER.
PROPAGATION CHAINS ROLL ONCE for Damage value selection in damage interval and to crit PER PROPAGATION CHAIN !!

RNG to crit ROLL (for non propagation bounces) and CritMultiplier
Non propagation hits roll to crit for every hit.
Propagation Chains use the chain starter hit to crit roll. IF THE CHAIN STARTER CRITS ALL THE CHAIN CRITS.

non propagation example

Stormy 1648345860 uses Putrid Ball :
!! WAS HIT !!  Dodge roll : 53 < -11 = ([20 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Accursed (334533627)
Skill(weapon) Base Damage Range 86 - 103; skill damage multiplier 1.25  // Compute Damage Data
Damage Range 108 - 129 with skill damage multiplier 1.25 applied // Compute Damage Data
Damage Range 129 - 129 upped by [CLAMPED] Reliability; 133% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 221.88 - 221.88 after applying  *1.72 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 221.88 - 221.88 after applying *(1 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 221.88 - 221.88 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 222 - 222 //Compute Caster Range
Damage Range 222 - 222 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
0.09999999 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 244 - 244 after compute perk damage range //Compute Final Damage Range
Damage Range 176 - 176  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.56 [* 0.5 if magic damage type]) )
Damage Range 176 - 176 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 176 - 176; -1 FixedRngRoll (if > 0); 0.9573073 RNG ROLL; 176 Selected Damage in Range
!!CRIT!!  [PLAYER] to Crit ROLL : 57 < [74 unit CTC] + [0 Attack Crit bonus(ex martial artist)] + [15 perks like firstBlood] | Stormy  vs Accursed (334533627)
Damage 396 Upped by crit Multiplier 2.25
...

10-th propagation bounce example

Zuzanna 1442632329 uses Lightning Strike :
..
 !! WAS HIT !!  Dodge roll : 19 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (826194524)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5 ; propagation Index 10  // Compute Propagated Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Propagated Damage Data
Damage Range 238 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 437.92 - 437.92 after applying  *1.84 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 543 - 543 //Compute Caster Range
Damage Range 543 - 543 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 543 - 543 after compute perk damage range //Compute Final Damage Range
Damage Range 494 - 494  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 494 - 494 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 494 - 494; 0.1992831 FixedRngRoll ( FOR PROPAGATION HITS ); 494 Selected Damage in Range // Compute Propagated Damage Data
!! CRIT PROPAGATION CHAIN !! Damage 938.6 upped by crit multiplier 1.9  // Compute Propagated Damage Data
...
Crit Chance capped at 100%
sources level ups. gear, Perks
Critical Master +2% per non crit hit. Resets on crit
Martial Artist +20% for ‘Deadly Punch’ . Not shown ingame. the log catches it. (could ‘catch’ it perma critting at 80% listed Chance to Crit)
First Blood +15% vs full health enemies. Not shown ingame. the log catches it. (could ‘catch’ it perma critting at 85% listed Chance to Crit vs full health enemies).

All chars should reach >70% CTC by night 11 ! Gives tons of overkill damage and infinite mana with Mana Collector perk. Makes more predictable KILLER propagation chains.

Crit Multiplier is probably capped by the cap is above 3.1 . Sources level ups and gear.
Perk Deadeye + 50% CritMultiplier. (don’t take it to early!)

Bounce exponential damage nerf multiplier
This one applies ONLY to bounces in a propagation chain.

Bounce Damage Multiplier = Propagation Damage ^ Propagation Index

ex for 10-th bounce with Propagation Damage = 94 %
0.94 ^ 10 = 0.5386151

ex for 10-th bounce with Propagation Damage = 82 %
0.82 ^ 10 = 0.137448 !!
‘low’ Propagation Damage can really destroy the damage out of your propagation chains !

Initiator NOT A GREAT PERK for propagation chain users (saps chain damage, adds low damage bounces at the end that might never happen since chains often die prematurely due to lack of viable targets)

Propagation Skills:
-Sledgehammer: x1 Mega Stomp 5
-Hand Xbow: x1 Blaze 3
-Scepter : x2 Hammer of Faith 5 (damage and stun)
-Druid Staff: x2 Bee Sting 5 (damage and poison)
-Tome of Secrets: x2 Weakening Touch 4 (debuff)
-Tome of Secrets: x1 Lightning Strike 9

log example
Lightning Strike 10 bounce chain.
Shown Chain Starter, first and 10-th bounces.

Zuzanna 1442632329 uses Lightning Strike :
!! WAS HIT !!  Dodge roll : 59 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (840376793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5  // Compute Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 369.936 - 436.73 after applying  *1.835 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 458.7206 - 541.5452 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 459 - 542 //Compute Caster Range
Damage Range 459 - 542 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 459 - 542 after compute perk damage range //Compute Final Damage Range
Damage Range 417 - 493  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 417 - 493 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 417 - 493; 0.1992831 FixedRngRoll (if > 0); 0.9684955 RNG ROLL; 432 Selected Damage in Range
!!CRIT!!  [PLAYER] to Crit ROLL : 44 < [62 unit CTC] + [0 Attack Crit bonus(ex martial artist)] + [15 perks like firstBlood] | Zuzanna  vs Clawer (840376793)
Damage 820.8 Upped by crit Multiplier 1.9
..
 !! WAS HIT !!  Dodge roll : 53 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (1621283793)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5 ; propagation Index 1  // Compute Propagated Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Propagated Damage Data
Damage Range 201.6 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 0% reliability from perks;  //Compute Caster Range
Damage Range 370.944 - 437.92 after applying  *1.84 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 459.9706 - 543.0208 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 459.9706 - 543.0208 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 460 - 543 //Compute Caster Range
Damage Range 460 - 543 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 460 - 543 after compute perk damage range //Compute Final Damage Range
Damage Range 418 - 494  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 418 - 494 after Subtracting target's block = 0 //Compute Final Damage Range
DETAILED  Final Damage Range 418 - 494; 0.1992831 FixedRngRoll ( FOR PROPAGATION HITS ); 433 Selected Damage in Range // Compute Propagated Damage Data
!! CRIT PROPAGATION CHAIN !! Damage 822.7 upped by crit multiplier 1.9  // Compute Propagated Damage Data
ROUNDED Damage 773 after *0.94 = 0.94 propagation damage multiplier ^ 1 propagation index Damage fallof is applied  // Compute Propagated Damage Data
...
 !! WAS HIT !!  Dodge roll : 19 < -14 = ([17 TargetDodge] * [1 skill dodge mul ] * [1 range ring dodge multiplier] - [31 Accuracy] ) ; Clawer (826194524)
Skill(weapon) Base Damage Range 89 - 159; skill damage multiplier 1.5 ; propagation Index 10  // Compute Propagated Damage Data
Damage Range 134 - 238 with skill damage multiplier 1.5 applied // Compute Propagated Damage Data
Damage Range 238 - 238 upped by [CLAMPED] Reliability; 65% unit reliability; 50% reliability from perks;  //Compute Caster Range
Damage Range 437.92 - 437.92 after applying  *1.84 Damage Multiplier for 'MagicalDamage' Damage Type //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *(1.24 OverallDamage Multiplier + 0 NOT_SpecialistPerk) [!CLAMPED!]  //Compute Caster Range
Damage Range 543.0208 - 543.0208 after applying *1 Injury Multiplier //Compute Caster Range
ROUNDED damage range 543 - 543 //Compute Caster Range
Damage Range 543 - 543 after applying 'Isolated' and/or 'Opportunistic' and/or 'Momentum' multipliers //Compute Final Damage Range
 0 sum multiplier LoneWolf & Relentless Perks + 0 overall damage from ?other? perks //Compute Perk Percentage
Damage Range 543 - 543 after compute perk damage range //Compute Final Damage Range
Damage Range 494 - 494  AFTER resistance multiplier (- Caster DR reduction = *(1- 0.18 [* 0.5 if magic damage type]) )
Damage Range 494 - 494 after Subtracting target's block = 0 //Compute Final Damage Range
Final Damage Range 494 - 494; 0.1992831 FixedRngRoll ( FOR PROPAGATION HITS ); 494 Selected Damage in Range // Compute Propagated Damage Data
!! CRIT PROPAGATION CHAIN !! Damage 938.6 upped by crit multiplier 1.9  // Compute Propagated Damage Data
ROUNDED Damage 506 after *0.5386151 = 0.94 propagation damage multiplier ^ 10 propagation index Damage fallof is applied  // Compute Propagated Damage Data
..

 

Damage Application to target
here it checks for armor pierce (ignore) {some perks and monsters have it}
damage type physical doing double damage vs armor
substracts hitpoints from armor and eventual health

Installing/Uninstalling the extra combat logging mod
install

Download https://drive.google.com/file/d/1kUywan325bXCboSwNzYpa3qstHpINeM6/view?usp=sharing and overwrite it
…steamapps\common\The Last Spell\The Last Spell_Data\Managed\TheLastStand.dll

link evernote document [www.evernote.com]with the modifications

uninstall
Right click game in steam and select properties verify local files integrity (will find the modified file and replace it back)


Thanks to peddroelm for his great guide, all credit to his effort. you can also read the original guide from Steam Community. enjoy the game.

Related Posts:

Post Author: Robins Chew

Leave a Reply

Your email address will not be published. Required fields are marked *