Please note that new user registrations disabled at this time.

DC for spells/abilities etc.

This forum is to be used for all discussions pertaining to BioWare's Dragon Age: Origins, Dragon Age II, and all addons.
Post Reply
User avatar
Solusek
Posts: 339
Joined: Wed Nov 05, 2003 5:37 pm
Contact:

DC for spells/abilities etc.

Post by Solusek »

Can anyone tell me how the DC(=Difficulty Class) for spells and abilities is calculated exactly? In other words, what factors does it depend on how difficult a spell or ability is to resist?


So long,
Sol
User avatar
Nightmare
Posts: 3141
Joined: Fri Mar 30, 2001 11:00 pm
Location: Canada
Contact:

Post by Nightmare »

With the annoying lack of feedback in the game, it'll probably take someone to thoroughly test it before we know...
If nothing we do matters, then all that matters is what we do.
User avatar
mr_sir
Posts: 3337
Joined: Mon Oct 17, 2005 11:43 pm
Location: UK
Contact:

Post by mr_sir »

Each spell will state in its description which resistances are used to avoid spell effects - eg some may require a mental resistance check to avoid effects, others a physical or elemental resistance.

As for spellpower, this is what is used to determine the potency of the spell - ie. both damage and how hard it is to resist, and is determined by the magic attribute. The higher the magic attribute of the caster, the harder the spell is to resist.
User avatar
Scottg
Posts: 1721
Joined: Mon Jul 03, 2006 2:35 pm
Contact:

Post by Scottg »

http://social.bioware.com/wiki/datoolse ... hp/Ability

(..if it comes back as an "error" on the page, search for "ABILITY"."

Of particular note:

"Spells deal damage of different damage types following a rough rule of (Constant * (Spellpower / Variable)) / [Variables] ) + Modifiers but this only tells part of the story as actual damage is dependent on the target, it's resistances, rank and a number of other factors.

Some additional factors affecting spell damage are:
damage resistance.
magical shields.
difficulty level.
elemental damage bonuses from spells or items
Environmental conditions (frozen targets take less damage from fire, etc.)"

"difficulty level" here references the game's difficulty level.. like normal or hardcore settings.


A few additional things to note:

Spell Resistance, Mental Resistance, and Physical Resistance, ALL appear to be a pass/fail check like Defense and "Dodge %". (..though with potentially a duration check as well for the Mental and Physical Resistance once the initial check "passes".) This is in contrast to the elemental resistances.

Elemental Resistances have a Damage REDUCTION feature that limits damage of the particular type, working in a similar fashion to Armor (..but for their respective resistance and based on a percentage of damage rather than Armor's base reduction). Note however that some opponents either seem to have an outright immunity OR have a resistance ABOVE 100% for some elements. IF the opponent is immune then it's basically acting like the above Spell/Mental/Physical resistance and just giving you a "fail" response. IF instead it's above 100% then presumably there is still the chance for damage from that element IF the opponent is Hexed and/or is of lower Rank, or game "difficulty level" is lowered. And speaking of lowered game difficulty and Rank:

"Based on these guidelines, you can expect the following ability behaviors in game:
The lower the difficulty, the longer your hostile effects such as stuns will last on enemies and the shorter they will last on you.
The lower the difficulty, the more damage your abilities will do.
The lower the difficulty, the less likely the enemy AI will use devastating special abilities (Note: less likely does not mean 'does not use').
Casual and Normal have reduced friendly or nullified fire damage damage from area effect spells. Hard and Nightmare require careful positioning and tactical use of spells.
The higher the difficulty, the more careful you need to manage threat when using spells and abilities (The AI becomes smarter about picking targets)."

".. the game uses creature ranks (instead of levels) in addition to stats and resistances to define how creatures get affected by abilities. In short: Boss monsters get affected differently by abilities and effects than Lieutenants or Critters.
The rank system is the primary balancing vector for the games difficulty levels and profoundly affects all aspects of combat. The gory details of this system are defined in creature_ranks.xls and difficulty.xls.
Rank mitigation affects not just damage in- and output of a creature, but also the duration that hostile effects persist on it and is different for each difficulty level of the game. Note that party members have their own rank in this system and are handled differently from other creatures in some cases."

// sys_resistances_h
// @brief Returns an effect duration scaled by rank of oCreature and game difficulty
// @author Georg
float GetRankAdjustedEffectDuration(object oCreature, float fDur)
{

// -------------------------------------------------------------------------
// Georg: This deserves some explanation:
//
// One of the core issues when designing the combat system was always
// the fact that the story called for sequences during the game in which
// your main character acts solo.
//
// Characters reliant on special abilities, such as rogues, would require
// them to be very effective in order to beat enemies that a standard tank
// can plow through. However, if these abilities would maintain the same
// effectiveness in a full party, most encounters would turn into a stunfest.
//
// The solution is to add 1 second flat to each detrimental effect duration
// lasting at least 1 second for each unoccupied slot in the party - before applying
// rank and difficulty modifiers. This also makes solo play a bit more viable.
//
// This is in addition to the diminishing returns on quickly successive stuns.
//
// -------------------------------------------------------------------------
if (!IsPartyMember(oCreature))
{
float fPartySizeModifier = IntToFloat(Max(0,4 - GetArraySize(GetPartyList())));

if (fDur >= 1.0f)
{
fDur += fPartySizeModifier;
}
}

float fRankDurMod = Diff_GetDurationModifier(oCreature);
if (fRankDurMod >0.0f)
{
return (fDur * fRankDurMod);
}
else
{
return fDur;
}
}"
User avatar
Solusek
Posts: 339
Joined: Wed Nov 05, 2003 5:37 pm
Contact:

Post by Solusek »

Whoa, thx Scottg. You really helped me out ;)


So long,
Sol
Post Reply