Dragon Age Wiki
Advertisement
Dragon Age Wiki
For combat mechanics in other games, see Combat mechanics (Origins) and Combat mechanics (Dragon Age II).
See also: Attributes (Inquisition), Combos (Inquisition), and Abilities (Inquisition)

Combat mechanics comprise the technical details relevant to combat in Dragon Age: Inquisition.

Damage[]

Simplified logic for player vs enemy damage:

damage = (random between 0.95 and 1.05) * damage

if physical and not rune
    effectiveArmor = armor * (1 - armorPenetration)
    damage = damage - effectiveArmor
    if critical
        damage = max(2, damage)
    else
        damage = max(1, damage)

isMeleeRange = distance less than 3 meters
if flanking
    if not isMeleeRange
        flankingBonus = max(0, flankingBonus - 25%)
else
    flankingBonus = 0

damage = damage * (1 + abilityBonus)
damage = damage * (1 + damageMultiplier + typeBonus + attackBonus)
damage = damage * (1 + criticalBonus + flankingBonus)
damage = damage * (1 - resistance)

if physical
    if isMeleeRange
        defense = defenseMelee
    else
        defense = defenseRanged
else
    defense = defenseMagic

damage = damage * (1 - defense)

if shielded and not flanking
    damage = damage * 0.5

Guard[]

Main article: Guard


In game, guard max often appears incorrect due to the order in which the engine applies modifiers from abilities and items. This is typically the case when abilities that modify guard max or maximum health are first unlocked, e.g. Bulwark, Untouchable Defense, or when equipment that modify guard max or maximum health, e.g. Sigil of the Bronto, Sigil of the Tusket, are equipped. To fix this, restart the game or enter a different location on the world map.

A character's maximum guard is represented by Stat_Guard_Max. Its initial value is set by DA3/Scripts/Stats/stat_compute_maxguard_script and is further modified by abilities and items. The script as a simplified formula is:

Initial Stat_Guard_Max = Stat_Health_Max * 0.25 * Stat_Guard_Multiplier
Where:

Stat_Health_Max is the character's maximum health including all bonuses from abilities and items
Stat_Guard_Multiplier is 2 if Sigil of Bronto is equipped, otherwise it is 1


Only the Sigil of the Bronto modifies Stat_Guard_Multiplier. All other items, e.g. Evanura or Wintersbreath, and abilities, e.g. Untouchable Defense and Bulwark, directly modify Stat_Guard_Max and do not modify Stat_Guard_Multiplier at all.

Both Bulwark and Untouchable Defense are coded identically, i.e. they modify Stat_Guard_Max and grant +3 constitution which equates to +15 Stat_Health_Max. The additional guard max granted for either Bulwark or Untouchable Defense is:

Bulwark/Untouchable Defense guard max = (Stat_Health_Max - BUD_health_bonus * Stat_Health_Multiplier) * 0.25
Where:

Stat_Health_Max is the character's maximum health including all bonuses from abilities and items
BUD_health_bonus is 30 if both Bulwark and Untouchable Defense are unlocked, otherwise 15 if only one is unlocked
Stat_Health_Multiplier is 2 if Sigil of Tusket is equipped, otherwise it is 1

Due to the coding order of Bulwark and Untouchable Defense, the Stat_Guard_Max modifier applies before the maximum health bonus so no additional guard max is gained from the maximum health bonus, as reflected in the formula above.

To calculate the total guard max with bonuses from all abilities and items, simply add the bonuses together:

Total Stat_Guard_Max = Initial Stat_Guard_Max + Bulwark guard max + Untouchable Defense guard max + Additional guard max
Where:

Initial Stat_Guard_Max is given from the formula above
Bulwark guard max/Untouchable Defense guard max is given from the formula above
Additional guard max is the sum of +Guard Max from all items


All belts that grant guard max are bugged and confer no guard max bonuses. Belts that grant maximum health can be used in their place since guard max is a function of maximum health. Other items such as Evanura and Wintersbreath confer guard max bonuses correctly.

Examples[]

The total guard max for a Warrior with 892 maximum health wearing Evanura and Wintersbreath with Untouchable Defense unlocked is:

Stat_Health_Max = 892
Stat_Guard_Modifier = 1, Sigil of the Bronto is not equipped
Stat_Health_Modifier = 1, Sigil of Tusket is not equipped
Initial Stat_Guard_Max = 892 * 0.25 * 1 = 223
Bulwark guard max = 0
Untouchable Defense guard max = (892 - 15 * 1) * 0.25 = 219.25
Additional guard max = 40 + 20 = 60, Evanura and Wintersbreath is equipped
Total Stat_Guard_Max = 223 + 0 + 219.25 + 60 = 502.25


The total guard max for a Champion with 892 maximum health wearing the Sigil of the Bronto with both Bulwark and Untouchable Defense abilities unlocked is:

Stat_Health_Max = 892
Stat_Guard_Modifier = 2, Sigil of the Bronto is equipped
Stat_Health_Modifier = 1, Sigil of Tusket is not equipped
Initial Stat_Guard_Max = 892 * 0.25 * 2 = 446
Bulwark guard max = (892 - 30 * 1) * 0.25 = 215.5
Untouchable Defense guard max = (892 - 30 * 1) * 0.25 = 215.5
Additional guard max = 0
Total Stat_Guard_Max = 446 + 215.5 + 215.5 + 0 = 877


The total guard max for a Champion with 1784 maximum health wearing the Sigil of the Tusket and Wintersbreath with both Bulwark and Untouchable Defense abilities unlocked is:

Stat_Health_Max = 1784
Stat_Guard_Modifier = 1, Sigil of Bronto is not equipped
Stat_Health_Modifier = 2, Sigil of Tusket is equipped
Initial Stat_Guard_Max = 1784 * 0.25 * 1 = 446
Bulwark modifier = (1784 - 30 * 2) * 0.25 = 431
Untouchable Defense guard max = (1784 - 30 * 2) * 0.25 = 431
Additional guard max = 20, Wintersbreath is equipped
Total Stat_Guard_Max = 446 + 431 + 431 + 20 = 1328

Barrier[]

Barrier provides protection from damage from incoming attacks and has a finite protection amount. Barrier effects slowly dissipate until they are no more. Various mage abilities can increase the strength and duration of barrier effects. Certain abilities and items give bonuses to damage done to barriers.

Simplified logic for maximum Barrier applied to a target:

barrier_max = (base_weapon + 10) * 48 - 300 
              * (1 + strength_of_the_spirits_bonus + ring_bonus) 
              * stat_barrier_multiplier

where

     base_weapon is the caster's base weapon damage.
     strength_of_the_spirits_bonus is 0.5 if the caster has Strength of the Spirits, otherwise 0.
     ring_bonus is 0.3 if one Enhanced Barrier Ring is equipped, 0.6 if two, or 0 if none.
     stat_barrier_multiplier is typically 1.0.

Full details on how maximum Barrier is computed can be found at DA3/Scripts/compute_barrier_max_fromweapon_script

function compiledlua_0832cb4b_f2d1_53d8_7f26_ac04c40267af( TimelineContext,BWStat,BarrierTag,RingAbilityTag,Stat_Barrier_Multiplier )
    --function <guid>( arg1, arg2, arg3)     <<- Inserted by the Pipeline
    do
        statCharacter = DA3.GetCasterCharacter(TimelineContext)
        targetCharacter = DA3.GetOwnerCharacter(TimelineContext)
        if DA3.IsMultiplayer() then
            statValue = ((DA3.GetStatTotalValue(statCharacter, BWStat)+23)*24);
        else
            statValue = ((DA3.GetStatTotalValue(statCharacter, BWStat)+10)*48-300);
        end
        Mult = 1;
        SPIRIT_MULT_BONUS = 0.5;
        RING_MULT_BONUS = 0.3;
        if DA3.CharacterHasTimelineTag(statCharacter, BarrierTag) then
            Mult = Mult + SPIRIT_MULT_BONUS;    
        end    
        if DA3.CharacterHasTimelineTag(statCharacter, RingAbilityTag) then
            Mult = Mult + RING_MULT_BONUS;                    
        end
        
        print("compute max barrier - base value: " .. statValue .. ", mult: :", Mult);
        statValue = statValue * Mult;
        
        -- the next multiplier is global, should be applied after all other multipluer
        barrierMultipluer = DA3.GetStatTotalValue(targetCharacter, Stat_Barrier_Multiplier);
        print("compute max barrier - base value: " .. statValue .. ", global mult: :" .. barrierMultipluer .. ", Character: " .. DA3.ToString(targetCharacter));
        
        statValue = statValue * barrierMultipluer;
        return statValue
    end
end

Elemental Effects[]

Effects of opposite elements do not cancel each other out. For example, a target may be Frozen and Burning at the same time.

Cross-Class Combo[]

Main article: Cross-class combo (Inquisition)
Advertisement