chattius 2,668 Share Posted April 13, 2011 While talking about direct damage I noticed that there is no information about how weapon damage is calculated. I had only a few old values from pre Ice and Blood on some papers, but comparing these numbers with the damage numbers in Ice and Blood I saw differences which are probably due to a change how stat points are used. Sadly I lack the time to play Sacred2 to do the tests and my daughter is still at hospital. So what I want you to do is helping with tests following test patterns I am asking for. The test I have done so far: Using a level 1 character with different white weapons(no attributes on them) using different stats. Playing bronze (there might be damage multipliers in other difficulties) No tactic lore taken Now adding pieces with x% damage and plotting the function. It shows that: damage= weapon-base*(1+x/100)+stat_damage fits very well. It seems as if the lower value is always rounded down and the upper value always rounded up. All my tests could be explained with this rounding and the above formula. So it looks as if pressing C and looking at the stat supporting the weapon: the damage is just added last to the formula. In other words the damage you receive from stats is a fixed amount. However this fixed amount is diffrent for different weapon types. So the first result is: Step1: Damage part from the stat supporting the weapon Different weapon-types - even sharing the same supporting stat - may have different damage-values added by the supporting stat. This stat related damage part seems to be added after all other damage calculations are done (at least in bronze). In the final formula step1 will be probably the last step HELP WANTED! For the second test pattern I need help from people playing Ice and Blood. Take a naked level 1 character in bronze and equip it with different white weapons. Write down the character-class, the value of the supporting stat, how much damage it shows, which base damage your weapon has and which type it is (not just throwing weapon). There might even be a difference for the different images of a weapon, so if it is a shuriken write shuriken and perhaps how many points it has. I do not know if there is a difference, but if we add the stat related damage to wiki a list of weapon types would be nice. So an entry should be like (just some fantasy values): Dryad, 30 dex, +8weapon damage, 24-32 base-damage, 4-pointed shuriken, damage shown: 31-42 Even this first test made me re-considering my melee characters already. If the stat related damage part is just added last and not boosted by any x% damage stuff- should I stop to push the main stat of my weapon for Ice and Blood builds? Just all into vitality or stamina? Link to comment
Maneus 236 Popular Post Share Posted June 15 (edited) Hi, everybody! I know I'm 13 years late, but I too was curious about the same thing as chattius. I'm pretty sure that some people already know this information, especially modders, but I couldn't find any info on this. I'm sorry in advance if I've missed it somehow. Anyway, I think I've figured it out (mostly) and I thought I'd share. I'm playing on PC, Sacred 2 Gold, version 2.65.1 (GOG version), without the CM patch. 1) Damage formula for left-click attacks We will use fists since fists have the same minimum and maximum damage. For simplicity. See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 How to find the base fist (weapon) damage: Spoiler Seraphim, level 200, no items or skills (edited with CharacterEditor) Weapon damage shown in the character inventory screen: 210-210 (This is the CombinedDamage) Bonus damage from strength (from the tooltip): +62 (This is the AttributeBonus) We have no flat or percentage bonuses. Replacing the values in the formulas gives us: CombinedDamage = BaseDamage + AttributeBonus 210 = BaseDamage + 62 BaseDamage = 210 - 62 BaseDamage = 148 BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) Not a critical hit. Not using a combat art. 0 for percentage bonuses. 0 for flat damage bonuses. The weapon damage is already rounded. This leaves us with: BaseDamage = WeaponDamage 148 = WeaponDamage WeaponDamage = 148 (Reference value is 148) Another way is to set the parameter attrWdam_fact to 0 (in balance.txt) - this will remove the attribute bonus. Now that we know the "weapon" damage, we can calculate the attribute bonus: Spoiler Seraphim, level 200 Attribute = 472 (Strength) attrWdam_fact = 250 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 200 (When using fists, the item level is equal to the character level) basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(472 * 200 * FLOOR(100 * 20 / (20 + 200)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(188.8 * FLOOR(2000 / 220))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(188.8 * FLOOR(9.090909090909091))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(188.8 * 9)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(1699.2)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 1699) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(424.75) AttributeBonus = AttributeBaseDamage * 0.001 * 424 AttributeBonus = AttributeBaseDamage * 0.424 AttributeBaseDamage = WeaponDamage (For the inventory screen) AttributeBonus = WeaponDamage * 0.424 AttributeBonus = 148 * 0.424 AttributeBonus = 62.752 (Reference value is 62) The AttributeBonus appears to be rounded down in the inventory screen, but it is not in actual combat. More examples: Spoiler Seraphim, level 200 Tactics Mastery, level 75, gives a damage bonus of 180.8% Weapon damage shown in the character inventory screen: 477-477 (This is the CombinedDamage) Bonus damage from strength (from the tooltip): +62 (This is the AttributeBonus) If we don't know what our base fist (weapon) damage is, we can find it this way (imprecise): CombinedDamage = BaseDamage + AttributeBonus 477 = BaseDamage + 62 BaseDamage = 477 - 62 BaseDamage = 415 BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) Not a critical hit. Not using a combat art. 0 for flat damage bonuses. This leaves us with: BaseDamage = FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) 415 = FLOOR(WeaponDamage * (1 + 1808 / 1000)) 415 = FLOOR(WeaponDamage * (1 + 1.808)) 415 = FLOOR(WeaponDamage * 2.808) WeaponDamage = CEIL(415 / 2.808) WeaponDamage = CEIL(147.7920227920228) WeaponDamage = 148 (Reference value 148) If we already know what our base fist (weapon) damage is and want to test the formula: BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) Not a critical hit. Not using a combat art. This leaves us with: BaseDamage = FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) BaseDamage = FLOOR((148 + 0) * (1 + 1808 / 1000)) BaseDamage = FLOOR(148 * (1 + 1.808)) BaseDamage = FLOOR(148 * 2.808) BaseDamage = FLOOR(415.584) BaseDamage = 415 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 415 + 62.752 CombinedDamage = 477.752 (Reference value is 477) And here is how the equation would look like if you also equip a 57-57 flat damage ring and a +47% physical damage ring: BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) Not a critical hit. Not using a combat art. This leaves us with: BaseDamage = FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) BaseDamage = FLOOR((148 + 57) * (1 + (1808 + 470) / 1000)) BaseDamage = FLOOR(205 * (1 + 2278 / 1000)) BaseDamage = FLOOR(205 * (1 + 2.278)) BaseDamage = FLOOR(205 * 3.278) BaseDamage = FLOOR(671.99) BaseDamage = 671 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 671 + 62.752 CombinedDamage = 733.752 (Reference value is 733) 2) Damage formula for left-click attacks, when using a weapon Now lets look at what happens when we have a weapon equipped. All weapons have a damage range, so there is a minimum damage value and a maximum damage value. See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Lets look at a practical example. I'll be using one of my actual characters this time: Spoiler Seraphim, level 65 Dexterity 344 Bull's-eye, Item level 80, Gold difficulty Base damage of the weapon (from the tooltip): 182-223 (149-190 physical, 33 poison) Bonus damage from dexterity (from the tooltip): Weapon Damage +138 No flat damage bonuses +74.3% damage bonus from Tactics Lore (level 21) +310.5% damage bonus from equipment +138.6% damage bonus from battle stance Weapon damage shown in the character inventory screen: 1257 - 1541 First we need to find MinAttributeBonus and MaxAttributeBonus. AttributeBonus = WeaponDamage * 0.688 Spoiler Attribute = 344 (Dexterity) attrWdam_fact = 250 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 80 basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(344 * 200 * FLOOR(100 * 20 / (20 + 80)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(137.6 * FLOOR(2000 / 100))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(137.6 * FLOOR(20))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(137.6 * 20)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(2752)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 2752) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(688) AttributeBonus = AttributeBaseDamage * 0.001 * 688 AttributeBonus = AttributeBaseDamage * 0.688 AttributeBaseDamage = WeaponDamage (For the inventory screen) MinAttributeBonus = 102.512 (Physical) Spoiler MinWeaponDamage = 149 (Physical) MinAttributeBonus = MinWeaponDamage * 0.688 MinAttributeBonus = 149 * 0.688 MinAttributeBonus = 102.512 MaxAttributeBonus = 130.72 (Physical) Spoiler MaxWeaponDamage = 190 (Physical) MaxAttributeBonus = MaxWeaponDamage * 0.688 MaxAttributeBonus = 190 * 0.688 MaxAttributeBonus = 130.72 AttributeBonus = 22.704 (Poison) Spoiler WeaponDamage = 33 (Poison) AttributeBonus = WeaponDamage * 0.688 AttributeBonus = 33 * 0.688 AttributeBonus = 22.704 AverageAttributeBonus = 138 (Reference value is 138) Spoiler AverageAttributeBonus = FLOOR((FLOOR(MinAttributeBonus) + FLOOR(MaxAttributeBonus)) / 2) AverageAttributeBonus = FLOOR((FLOOR(102.512) + FLOOR(130.72) + FLOOR(22.704) + FLOOR(22.704)) / 2) AverageAttributeBonus = FLOOR((102 + 130 + 22 + 22) / 2) AverageAttributeBonus = FLOOR(276 / 2) AverageAttributeBonus = FLOOR(138) AverageAttributeBonus = 138 Now that we know the attribute bonus damage we can easily calculate how our damage would change if we mastered Tactics Lore, or added additional rings, or turned off Battle Stance, etc. Let's calculate our damage with the current setup: Poison 227.704-227.704 (Reference value is 227-227) Spoiler WeaponDamage = 33 (Poison) Tactics Lore, level 21, +74.3% Equipment +310.5% Battle Stance +138.6% BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) BaseDamage = FLOOR((33 + 0) * (1 + (743 + 3105 + 1386) / 1000)) BaseDamage = FLOOR(33 * (1 + 5234 / 1000)) BaseDamage = FLOOR(33 * (1 + 5.234)) BaseDamage = FLOOR(33 * 6.234) BaseDamage = FLOOR(205.722) BaseDamage = 205 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 205 + 22.704 CombinedDamage = 227.704 Physical 1030.512-1314.72 (Reference value is 1030-1314) Spoiler MinWeaponDamage = 149 (Physical) MaxWeaponDamage = 190 (Physical) Tactics Lore, level 21, +74.3% Equipment +310.5% Battle Stance +138.6% MinBaseDamage = FLOOR(FLOOR((MinWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) MinBaseDamage = FLOOR((MinWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) MinBaseDamage = FLOOR((149 + 0) * (1 + (743 + 3105 + 1386) / 1000)) MinBaseDamage = FLOOR(149 * (1 + 5234 / 1000)) MinBaseDamage = FLOOR(149 * (1 + 5.234)) MinBaseDamage = FLOOR(149 * 6.234) MinBaseDamage = FLOOR(928.866) MinBaseDamage = 928 MinCombinedDamage = MinBaseDamage + MinAttributeBonus MinCombinedDamage = 928 + 102.512 MinCombinedDamage = 1030.512 MaxBaseDamage = FLOOR(FLOOR((MaxWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) MaxBaseDamage = FLOOR((MaxWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) MaxBaseDamage = FLOOR((190 + 0) * (1 + (743 + 3105 + 1386) / 1000)) MaxBaseDamage = FLOOR(190 * (1 + 5234 / 1000)) MaxBaseDamage = FLOOR(190 * (1 + 5.234)) MaxBaseDamage = FLOOR(190 * 6.234) MaxBaseDamage = FLOOR(1184.46) MaxBaseDamage = 1184 MaxCombinedDamage = MaxBaseDamage + MaxAttributeBonus MaxCombinedDamage = 1184 + 130.72 MaxCombinedDamage = 1314.72 Total 1257-1541 (Reference value is 1257-1541) 3) Damage formula for weapon-based combat arts. More specifically Pelting Strikes. We will use fists again for simplicity. See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Pelting strikes has two different kinds of bonuses, which we need to see from the file spells.txt Spoiler mgr.defineSpell( "se_co_schlaghagel", { eiStateName = "cSMSchlaghagel", fxTypeCast = "", fxTypeSpell = "", duration = 0.000000, animType = "ANIM_TYPE_SM02", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM02-SPECIAL", causesSpellDamage = 0, tokens = { entry0 = {"et_duration_sec", 1500, 10, 0, 8 }, entry1 = {"et_mult_weapondamage", 900, 3, 0, 9 }, entry2 = {"et_baseAW", 200, 250, 0, 5 }, entry3 = {"et_damage_any_rel", 320, 80, 0, 5 }, entry4 = {"et_chance_doublehit", 200, 0, 1, 5 }, entry5 = {"et_mult_weapondamage", 150, 1, 2, 9 }, entry6 = {"et_cost_thisSpell", 250, 0, 3, 4 }, entry7 = {"et_debuff_EVW", 1000, 10, 4, 42 }, entry8 = {"et_chance_criticalhit", 99, 1, 5, 5 }, entry9 = {"et_debuff_armor_phy", 500, 10, 6, 42 }, }, fightDistance = 45.000000, aspect = "EA_SE_COMBAT", cooldown = 0.000000, soundProfile = 0, cost_level = 250, cost_base = 500, focus_skill_name = "skill_SE_combat_focus", lore_skill_name = "skill_tactics_lore", spellClass = "cSpellSMove", spellcontroltype = "eCAtype_a_weapon_attack", magicType = "MAGIC_TYPE_ATTACK", sorting_rank = 2, }) The first one is et_mult_weapondamage, which is our CombatArtMultiplier. It is calculated as follows: CombatArtMultiplier= 900 + FLOOR(FinalCombatArtLevel * 3) Note that if you get the Thrust modification, then the formula becomes: CombatArtMultiplier = 1050 + FLOOR(FinalCombatArtLevel * 4) The second one is et_damage_any_rel, which acts as an additional percentage bonus. It is calculated as follows: CombatArtPercentageBonus = 320 + FLOOR(FinalCombatArtLevel * 80) You add this CombatArtPercentageBonus to SumPercentageBonuses. At combat art level 1, this gives us: CombatArtMultiplier = 903 (or 90.3%) CombatArtPercentageBonus = 400 (or 40%) Now lets look at a specific example: Spoiler Seraphim, level 200, no items or skills Pelting Strikes, level 1, no modifications Remember from above: Our base fist damage is 148 and our strength bonus is 62.752. BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) BaseDamage = FLOOR(FLOOR((148 + 0) * (1 + 400 / 1000)) * (903 / 1000)) BaseDamage = FLOOR(FLOOR(148 * (1 + 0.4)) * 0.903) BaseDamage = FLOOR(FLOOR(148 * 1.4) * 0.903) BaseDamage = FLOOR(FLOOR(207.2) * 0.903) BaseDamage = FLOOR(207 * 0.903) BaseDamage = FLOOR(186.921) BaseDamage = 186 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 186 + 62.752 CombinedDamage = 248.752 (Reference value is 248) 4) Damage formula for weapon-based combat arts, when using a weapon See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Example: Spoiler Seraphim, level 65 Dexterity 344 Bull's-eye, Item level 80, Gold difficulty Base damage of the weapon (from the tooltip): 182-223 (149-190 physical, 33 poison) Bonus damage from dexterity (from the tooltip): Weapon Damage +138 No flat damage bonuses +74.3% damage bonus from Tactics Lore (level 21) +310.5% damage bonus from equipment +138.6% damage bonus from battle stance Pelting strikes, level 11, with Thrust modification CombatArtMultiplier = 1094 (or 109.4%) Spoiler FinalCombatArtLevel = 11 CombatArtMultiplier = 1050 + FLOOR(FinalCombatArtLevel * 4) CombatArtMultiplier = 1050 + FLOOR(11 * 4) CombatArtMultiplier = 1050 + FLOOR(44) CombatArtMultiplier = 1050 + 44 CombatArtMultiplier = 1094 CombatArtPercentageBonus = 1200 (or 120%) Spoiler FinalCombatArtLevel = 11 CombatArtPercentageBonus = 320 + FLOOR(FinalCombatArtLevel * 80) CombatArtPercentageBonus = 320 + FLOOR(11 * 80) CombatArtPercentageBonus = 320 + FLOOR(880) CombatArtPercentageBonus = 320 + 880 CombatArtPercentageBonus = 1200 Stated damage of Pelting Strikes in the inventory screen: 1603 - 1964 From our previous example, we know that the dexterity bonus is Physical 102.512-130.72 Poison 22.704 Lets see if the formula is correct: Physical 1313.512-1674.72 (Reference value is 1313-1674) Spoiler MinBaseDamage = FLOOR(FLOOR((MinWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) MinBaseDamage = FLOOR(FLOOR((MinWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) MinBaseDamage = FLOOR(FLOOR((149 + 0) * (1 + (743 + 3105 + 1386 + 1200) / 1000)) * (1094 / 1000)) MinBaseDamage = FLOOR(FLOOR(149 * (1 + 6434 / 1000)) * 1.094) MinBaseDamage = FLOOR(FLOOR(149 * (1 + 6.434)) * 1.094) MinBaseDamage = FLOOR(FLOOR(149 * 7.434) * 1.094) MinBaseDamage = FLOOR(FLOOR(1107.666) * 1.094) MinBaseDamage = FLOOR(1107 * 1.094) MinBaseDamage = FLOOR(1211.058) MinBaseDamage = 1211 MinCombinedDamage = MinBaseDamage + MinAttributeBonus MinCombinedDamage = 1211 + 102.512 MinCombinedDamage = 1313.512 MaxBaseDamage = FLOOR(FLOOR((MaxWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) MaxBaseDamage = FLOOR(FLOOR((MaxWeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) MaxBaseDamage = FLOOR(FLOOR((190 + 0) * (1 + (743 + 3105 + 1386 + 1200) / 1000)) * (1094 / 1000)) MaxBaseDamage = FLOOR(FLOOR(190 * (1 + 6434 / 1000)) * 1.094) MaxBaseDamage = FLOOR(FLOOR(190 * (1 + 6.434)) * 1.094) MaxBaseDamage = FLOOR(FLOOR(190 * 7.434) * 1.094) MaxBaseDamage = FLOOR(FLOOR(1412.46) * 1.094) MaxBaseDamage = FLOOR(1412 * 1.094) MaxBaseDamage = FLOOR(1544.728) MaxBaseDamage = 1544 MaxCombinedDamage = MaxBaseDamage + MaxAttributeBonus MaxCombinedDamage = 1544 + 130.72 MaxCombinedDamage = 1674.72 Poison 290.704 (Reference value is 290-290) Spoiler BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) BaseDamage = FLOOR(FLOOR((33 + 0) * (1 + (743 + 3105 + 1386 + 1200) / 1000)) * (1094 / 1000)) BaseDamage = FLOOR(FLOOR(33 * (1 + 6434 / 1000)) * 1.094) BaseDamage = FLOOR(FLOOR(33 * (1 + 6.434)) * 1.094) BaseDamage = FLOOR(FLOOR(33 * 7.434) * 1.094) BaseDamage = FLOOR(FLOOR(245.322) * 1.094) BaseDamage = FLOOR(245 * 1.094) BaseDamage = FLOOR(268.03) BaseDamage = 268 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 268 + 22.704 CombinedDamage = 290.704 Total 1603-1964 (Reference value is 1603-1964) 5) Damage formula for spell-based combat arts See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7144732 There are more formulas in the following posts. Research is ongoing. Examples: Spoiler Seraphim, level 200 Intelligence 525 Radiant Pillar, base level 52, final level 51.8 (in tooltip) Celestial Magic Proficiency level 75, +180.8% Ancient Magic Mastery level 75, +90.4% spells.txt Spoiler mgr.defineSpell( "se_cm_lichtsaeule", { eiStateName = "cSpellCast", fxTypeCast = "FX_SE_LICHTSAEULE_C", fxTypeSpell = "FX_SE_LICHTSAEULE", fxTypeCastSpecial = "FX_SE_CAST_M", duration = 10.000000, animType = "ANIM_TYPE_SM13", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM06-SPECIAL", causesSpellDamage = 1, tokens = { entry0 = {"et_duration_sec", 1000, 10, 0, 8 }, entry1 = {"et_hits_persec", 500, 3, 0, 4 }, entry2 = {"et_range_area", 750, 0, 0, 4 }, entry3 = {"et_spelldamage_magic", 280, 140, 0, 133 }, entry4 = {"et_pull_range_rel", 1200, 0, 1, 6 }, entry5 = {"et_debuff_EAW", 650, 10, 2, 42 }, entry6 = {"et_range_area", 250, 0, 3, 4 }, entry7 = {"et_duration_sec", 500, 5, 4, 8 }, entry8 = {"et_spelldamage_magic", 100, 50, 5, 133 }, entry9 = {"et_deathblow", 250, 5, 6, 5 }, }, fightDistance = 525.000000, aspect = "EA_SE_CELESTIALMAGIC", cooldown = 0.000000, soundProfile = 0, cost_level = 300, cost_base = 600, focus_skill_name = "skill_SE_celestialmagic_focus", lore_skill_name = "skill_SE_celestialmagic_lore", spellClass = "cSpellSeLichtsaeule", spellcontroltype = "eCAtype_a_effect_location_start", sorting_rank = 2, }) FinalCombatArtLevel = 51.8746 Spoiler CharacterLevel = 200 FocusValue = 1.75 (No focus skill) HCALWP = FocusValue + CharacterLevel * 0.25 HCALWP = 1.75 + 200 * 0.25 HCALWP = 51.75 BaseCombatArtLevel = 52 BaseCombatArtLevel > HCALWP FinalCombatArtLevel = (HCALWP * BaseCombatArtLevel * 2) / (HCALWP + BaseCombatArtLevel) FinalCombatArtLevel = (51.75 * 52 * 2) / (51.75 + 52) FinalCombatArtLevel = 5382 / 103.75 FinalCombatArtLevel = 51.87469879518072 BaseDamage = 697 Spoiler InitialDamage = 280 DamagePerLevel = 140 SpellBaseDamage = 25 FinalCombatArtLevel = 51.8746 Celestial Magic Proficiency level 75, +180.8% Ancient Magic Mastery level 75, +90.4% BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((280 + FLOOR(140 * 51.8746)) * 25 * 0.001) * (1 + (1808 + 904) * 0.001)) BaseDamage = FLOOR(FLOOR((280 + FLOOR(7262.444)) * 0.025) * (1 + 2712 * 0.001)) BaseDamage = FLOOR(FLOOR((280 + 7262) * 0.025) * (1 + 2.712)) BaseDamage = FLOOR(FLOOR(7542 * 0.025) * 3.712) BaseDamage = FLOOR(FLOOR(188.55) * 3.712) BaseDamage = FLOOR(188 * 3.712) BaseDamage = FLOOR(697.856) BaseDamage = 697 IntelligenceBonus = 91.307 Spoiler BaseDamage = 697 attrSdam_fact = 334 SpellBaseDamage = 25 Intelligence = 525 BaseCombatArtLevel = 52 CharacterLevel = 200 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(525 * 40 / (1 + MIN(52, CEIL(200 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(21000 / (1 + MIN(52, CEIL(66.66666666666667)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(21000 / (1 + MIN(52, 67)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(21000 / (1 + 52))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(21000 / 53)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(396.2264150943396)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 396) IntelligenceMultiplier = 0.001 * FLOOR(132.264) IntelligenceMultiplier = 0.001 * 132 IntelligenceMultiplier = 0.132 IntelligenceMultiplier = 0.131 (Precision loss from 32-bit float) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 697 * 0.131 IntelligenceBonus = 91.307 FinalDamage = 788.307 (Reference value is 788) Spoiler FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 697 + 91.307 FinalDamage = 788.307 With Combat Discipline: BaseDamage = 952 Spoiler InitialDamage = 280 DamagePerLevel = 140 SpellBaseDamage = 25 FinalCombatArtLevel = 51.8746 Celestial Magic Proficiency level 75, +180.8% Ancient Magic Mastery level 75, +90.4% Combat Discipline Mastery, level 75, +135.6% BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((280 + FLOOR(140 * 51.8746)) * 25 * 0.001) * (1 + (1808 + 904 + 1356) * 0.001)) BaseDamage = FLOOR(FLOOR((280 + FLOOR(7262.444)) * 0.025) * (1 + 4068 * 0.001)) BaseDamage = FLOOR(FLOOR((280 + 7262) * 0.025) * (1 + 4.068)) BaseDamage = FLOOR(FLOOR(7542 * 0.025) * 5.068) BaseDamage = FLOOR(FLOOR(188.55) * 5.068) BaseDamage = FLOOR(188 * 5.068) BaseDamage = FLOOR(952.784) BaseDamage = 952 IntelligenceBonus = 124.712 Spoiler IntelligenceMultiplier = 0.131 (From the previous example) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 952 * 0.131 IntelligenceBonus = 124.712 FinalDamage = 1076.712 (Reference value is 1076) Spoiler FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 952 + 124.712 FinalDamage = 1076.712 Some takeaways from the above: - In the inventory screen (not in actual combat), left-click attacks and weapon-based combat arts receive a flat damage bonus from the respective attribute. This bonus is added after all other calculations. It is not affected by the combat art and is not multiplied by any +% bonuses you have. I believe this is the reason why many people suggest to avoid putting points in these attributes (Strength, Dexterity, Intelligence). - For spell-based combat arts, the bonus from Intelligence does take part in the multiplications and it seems like it plays a big role. - Combat Discipline is just as effective as Tactics Lore for boosting the damage of weapon-based combat arts, meaning that the % value you see is working as expected. But since weapon-based combat arts already receive a huge % bonus from the combat art itself, the relative increase seems small. For example, Pelting Strikes at level 98 receives a bonus of 816%. Similarly, Tactics Lore starts to pale too when compared to such big numbers. That's enough for now. I might make a few edits as I review what I've written, but right now I'm gonna take a break. Edited September 12 by Maneus 2 1 Link to comment
idbeholdME 436 Popular Post Share Posted June 16 (edited) Very well put together with detailed calculations. About Intelligence, from observation, it seems that the spell CAs have some hardcoded, invisible INT coefficient that varies from spell to spell. Cobalt Strike for example scales extremely well with Intelligence, while something like Radiant Pillar gets much less bonus from it. The coefficients could probably be dug out from some .dll file by some code magician. But INT is worth pumping for any spellcaster anyway simply due to the Crit Chance and Spell Intensity bonuses. About Strength and Dexterity, also correct. If they worked the same as INT and the damage bonus got multiplied by the % bonuses and basically acted as an extra source of flat damage like damage rings do, they'd be much more appealing. Then again, as the Weapon CAs already multiply the base weapon damage innately, it would probably be a bit too much if it also got multiplied. And regarding Tactics Lore or Combat Discipline, as with pretty much any ARPG, you main goal is to evenly increase the numbers in all the "multiplication buckets". Focusing on one exclusively is not desired. Instead of a 100 base damage and +1000% increased damage (1100), it's much better to get a 150 base damage and 800% increased damage (1350). So in the end-game, the main appeal of Tactics Lore eventually becomes the extra crit chance, which becomes an extra x1.2 multiplier to the total damage whenever it procs. When you've already got a ton of flat damage and % bonus, the 20% total bonus becomes very noticeable. Direct Damage % is also another big multiplier to the overall damage and of course Double Hit. Edited June 16 by idbeholdME 1 1 Link to comment
Maneus 236 Popular Post Share Posted June 16 (edited) I've been doing a lot of tests to figure out how the displayed damage translates into actual damage dealt. And the results are surprising. In order to do these tests, I edited balance.txt to reduce enemy armor to 0. I also set the enemy health multiplier to a really high value in order to avoid killing anything - we want to avoid the "Damage against enemy type +X%" bonus. I've also been careful to account for changes from the Survival Bonus. Here are the findings: 1) As long as you are fighting enemies close to your level (see points 2 and 3), and don't have any percentage bonuses (see point 4), then you deal exactly the same damage as displayed in the inventory screen. Example 1: High Elf, level 1 Spoiler High Elf, level 1, using fists, Weapon damage 8, Strength 17 Damage in inventory screen: 9-9 Actual damage dealt to level 1 enemies: 9 for regular hits, 10 for critical hits Example 2: High Elf, level 200 Spoiler High Elf, level 200, using fists, Weapon damage 129, Strength 367 Damage in inventory screen: 171-171 Actual damage dealt to level 200 enemies: 171 for regular hits, 197 for critical hits Actual damage dealt to level 201 enemies: 171 for regular hits, 197 for critical hits Actual damage dealt to level 189 enemies: 171 for regular hits, 197 for critical hits Actual damage dealt to level 176 enemies: 171 for regular hits, 197 for critical hits Example 3: High Elf, level 200, +200 flat damage from rings Spoiler High Elf, level 200, using fists, Weapon damage 129, Strength 367 +200 flat damage from rings Damage in inventory screen: 371-371 Actual damage dealt to level 200 enemies: 371 for regular hits, 437 for critical hits 2) If you fight much lower level enemies than you, you receive an additional multiplier to your damage. If your character is level 5, and you fight a level 1 enemy, then you receive the maximum bonus of around +125% (multiply the total damage by 2.25). Edit: The multiplier increases gradually as the level difference increases, up to a maximum of 2.25. But how wide the level difference must be depends on your character level. For example, a level 200 character does not receive this bonus when fighting against a level 176 enemy. This special bonus is not affected by the difficulty setting. Example 1: Spoiler High Elf, level 5, usings fists, Weapon damage 11, Strength 24 Damage in inventory screen: 13-13 Actual damage dealt to level 1 enemies: 29 for regular hits, 34 for critical hits Actual damage dealt to level 2 enemies: 20 for regular hits, 24 for critical hits Example 2: Spoiler High Elf, level 200, using fists, Weapon damage 129, Strength 367 Damage in inventory screen: 171-171 Actual damage dealt to low level enemies: 386 for regular hits, 444 for critical hits 3) Similarly, there is a damage penalty when fighting enemies much higher level than you. But I haven't done any tests about this. 4) When it comes to actual damage dealt, the attribute bonus (from Strength, Dexterity, Intelligence) IS actually multiplied by any percentage bonuses you have. See the formulas here https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Example 1: Spoiler High Elf, level 1, using fists I used CharacterEditor to add Tactics Mastery, level 75, which provides a bonus of +180.8% Damage in inventory screen: 23-23 Expected damage dealt to level 1 enemies: 23 for regular hits Actual damage dealt to level 1 enemies: 25 for regular hits, 29 for critical hits If we use the formula to calculate the damage shown in the inventory screen, we get: BaseDamage = 22 Spoiler WeaponDamage = 8 (Fists) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) BaseDamage = FLOOR((8 + 0) * (1 + 1808 / 1000)) BaseDamage = FLOOR(8 * (1 + 1.808)) BaseDamage = FLOOR(8 * 2.808) BaseDamage = FLOOR(22.464) BaseDamage = 22 AttributeBonus = AttributeBaseDamage * 0.161 Spoiler attrWdam_fact = 250 Attribute = 17 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 1 basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(17 * 200 * FLOOR(100 * 20 / (20 + 1)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(6.8 * FLOOR(2000 / 21))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(6.8 * FLOOR(95.23809523809524))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(6.8 * 95)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(646)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 646) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(161.5) AttributeBonus = AttributeBaseDamage * 0.001 * 161 AttributeBonus = AttributeBaseDamage * 0.161 AttributeBonus = 1.288 (Reference value is 1) Spoiler AttributeBaseDamage = WeaponDamage AttributeBaseDamage = 8 AttributeBonus = AttributeBaseDamage * 0.161 AttributeBonus = 8 * 0.161 AttributeBonus = 1.288 CombinedDamage = 23.288 (Reference value is 23) Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 22 + 1.288 CombinedDamage = 23.288 But the actual damage is calculated as: AttributeBonus = 3.542 Spoiler AttributeBaseDamage = FLOOR(FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) AttributeBaseDamage = FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) AttributeBaseDamage = FLOOR(8 * (1 + 1808 / 1000)) AttributeBaseDamage = FLOOR(8 * (1 + 1.808)) AttributeBaseDamage = FLOOR(8 * 2.808) AttributeBaseDamage = FLOOR(22.464) AttributeBaseDamage = 22 AttributeBonus = AttributeBaseDamage * 0.161 AttributeBonus = 22 * 0.161 AttributeBonus = 3.542 CombinedDamage = 25.542 (Reference value is 25) Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 22 + 3.542 CombinedDamage = 25.542 Example 2: Spoiler High Elf, level 200, using fists +180.8% from Tactics Mastery, level 75 Damage in inventory screen: 404-404 Expected damage dealt to level 1 enemies: 909 for regular hits (404 multiplied by 2.25) Actual damage dealt to level 1 enemies: 1083 for regular hits, 1246 for critical hits If we use the formula to calculate the damage shown in the inventory screen, we get: BaseDamage = 362 Spoiler WeaponDamage = 129 (Fists) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) BaseDamage = FLOOR((129 + 0) * (1 + 1808 / 1000)) BaseDamage = FLOOR(129 * (1 + 1.808)) BaseDamage = FLOOR(129 * 2.808) BaseDamage = FLOOR(362.232) BaseDamage = 362 AttributeBonus = AttributeBaseDamage * 0.33 Spoiler attrWdam_fact = 250 Attribute = 367 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 200 basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(367 * 200 * FLOOR(100 * 20 / (20 + 200)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(2000 / 220))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(9.090909090909091))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * 9)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(1321.2)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 1321) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(330.25) AttributeBonus = AttributeBaseDamage * 0.001 * 330 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 42.57 (Reference value is 42) Spoiler AttributeBaseDamage = WeaponDamage AttributeBaseDamage = 129 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 129 * 0.33 AttributeBonus = 42.57 CombinedDamage = 404.57 (Reference value is 404) Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 362 + 42.57 CombinedDamage = 404.57 DamageDealt = 910.2825 (WRONG) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 404.57 * (1 + 1250 / 1000) DamageDealt = 404.57 * (1 + 1.25) DamageDealt = 404.57 * 2.25 DamageDealt = 910.2825 But the actual damage is calculated as: AttributeBonus = 119.46 Spoiler AttributeBaseDamage = FLOOR(FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) AttributeBaseDamage = FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 1808 / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 1.808)) AttributeBaseDamage = FLOOR(129 * 2.808) AttributeBaseDamage = FLOOR(362.232) AttributeBaseDamage = 362 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 362 * 0.33 AttributeBonus = 119.46 CombinedDamage = 481.46 Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 362 + 119.46 CombinedDamage = 481.46 DamageDealt = 1083.285 (Reference value is 1083) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 481.46 * (1 + 1250 / 1000) DamageDealt = 481.46 * (1 + 1.25) DamageDealt = 481.46 * 2.25 DamageDealt = 1083.285 Example 3: Spoiler High Elf, level 200, using fists +180.8% from Tactics Mastery, level 75 +200 flat damage from rings Damage in inventory screen: 965-965 Expected damage dealt to level 1 enemies: 2171.25 for regular hits (965 multiplied by 2.25) Actual damage dealt to level 1 enemies: 2345 for regular hits, 2760 for critical hits If we use the formula to calculate the damage shown in the inventory screen, we get: BaseDamage = 923 Spoiler WeaponDamage = 129 (Fists) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) BaseDamage = FLOOR((129 + 200) * (1 + 1808 / 1000)) BaseDamage = FLOOR(329 * (1 + 1.808)) BaseDamage = FLOOR(329 * 2.808) BaseDamage = FLOOR(923.832) BaseDamage = 923 AttributeBonus = AttributeBaseDamage * 0.33 Spoiler attrWdam_fact = 250 Attribute = 367 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 200 basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(367 * 200 * FLOOR(100 * 20 / (20 + 200)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(2000 / 220))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(9.090909090909091))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * 9)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(1321.2)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 1321) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(330.25) AttributeBonus = AttributeBaseDamage * 0.001 * 330 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 42.57 (Reference value is 42) Spoiler AttributeBaseDamage = WeaponDamage AttributeBaseDamage = 129 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 129 * 0.33 AttributeBonus = 42.57 CombinedDamage = 965.57 (Reference value is 965) Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 923 + 42.57 CombinedDamage = 965.57 DamageDealt = 2172.5325 (WRONG) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 965.57 * (1 + 1250 / 1000) DamageDealt = 965.57 * (1 + 1.25) DamageDealt = 965.57 * 2.25 DamageDealt = 2172.5325 But the actual damage is calculated as: AttributeBonus = 119.46 Spoiler AttributeBaseDamage = FLOOR(FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) AttributeBaseDamage = FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 1808 / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 1.808)) AttributeBaseDamage = FLOOR(129 * 2.808) AttributeBaseDamage = FLOOR(362.232) AttributeBaseDamage = 362 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 362 * 0.33 AttributeBonus = 119.46 CombinedDamage = 1042.46 Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 923 + 119.46 CombinedDamage = 1042.46 DamageDealt = 2345.535 (Reference value is 2345) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 1042.46 * (1 + 1250 / 1000) DamageDealt = 1042.46 * (1 + 1.25) DamageDealt = 1042.46 * 2.25 DamageDealt = 2345.535 Example 4: Spoiler High Elf, level 200, using fists +180.8% from Tactics Mastery, level 75 +85.1% Physical Damage (from rings) (Shown as +85% due to precision loss!) Damage in inventory screen: 514-514 Expected damage dealt to level 1 enemies: 1156.5 for regular hits (514 multiplied by 2.25) Actual damage deal to level 1 enemies: 1412 for regular hits, 1624 for critical hits If we use the formula to calculate the damage shown in the inventory screen, we get: BaseDamage = 471 Spoiler WeaponDamage = 129 (Fists) BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = FLOOR((129 +0) * (1 + (1808 + 851) / 1000)) BaseDamage = FLOOR(129 * (1 + 2659 / 1000)) BaseDamage = FLOOR(129 * (1 + 2.659)) BaseDamage = FLOOR(129 * 3.659) BaseDamage = FLOOR(472.011) BaseDamage = 472 AttributeBonus = AttributeBaseDamage * 0.33 Spoiler attrWdam_fact = 250 Attribute = 367 TopLevelCalc = 200 damBasepoints = 20 ItemLevel = 200 basepointsMultiplier = 500 AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(attrWdam_fact * 0.001 * FLOOR(Attribute * TopLevelCalc * FLOOR(100 * damBasepoints / (damBasepoints + ItemLevel)) / basepointsMultiplier)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(250 * 0.001 * FLOOR(367 * 200 * FLOOR(100 * 20 / (20 + 200)) / 500)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(2000 / 220))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * FLOOR(9.090909090909091))) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(146.8 * 9)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * FLOOR(1321.2)) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.25 * 1321) AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(330.25) AttributeBonus = AttributeBaseDamage * 0.001 * 330 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 42.57 (Reference value is 42) Spoiler AttributeBaseDamage = WeaponDamage AttributeBaseDamage = 129 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 129 * 0.33 AttributeBonus = 42.57 CombinedDamage = 514.57 (Reference value is 514) Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 472 + 42.57 CombinedDamage = 514.57 DamageDealt = 1157.7825 (WRONG) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 514.57 * (1 + 1250 / 1000) DamageDealt = 514.57 * (1 + 1.25) DamageDealt = 514.57 * 2.25 DamageDealt = 1157.7825 But the actual damage is calculated as: AttributeBonus = 155.76 Spoiler AttributeBaseDamage = FLOOR(FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) AttributeBaseDamage = FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + (1808 + 851) / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 2659 / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 2.659)) AttributeBaseDamage = FLOOR(129 * 3.659) AttributeBaseDamage = FLOOR(472.011) AttributeBaseDamage = 472 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 472 * 0.33 AttributeBonus = 155.76 CombinedDamage = 627.76 Spoiler CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 472 + 155.76 CombinedDamage = 627.76 DamageDealt = 1412.46 (Reference value is 1412) Spoiler DamageDealt = CombinedDamage * ArmorMultiplier * (1 + (Vulnerability - Mitigation) / 1000) * (1 + LevelDifferenceBonus / 1000) * (1 + DirectDamage / 1000) DamageDealt = CombinedDamage * (1 + LevelDifferenceBonus / 1000) DamageDealt = 627.76 * (1 + 1250 / 1000) DamageDealt = 627.76 * (1 + 1.25) DamageDealt = 627.76 * 2.25 DamageDealt = 1412.46 5) Critical Hits. For spell-based combat arts, they increase the total damage by 20%. But for left-click attacks (and probably weapon-based combat arts) they don't increase the damage as much. From the above examples: Given a regular hit of 25, we expect the critical hit to be 30. But it is only 29. Given a regular hit of 1083, we expect the critical hit to be 1299.6. But it is only 1246. Given a regular hit of 2345, we expect the critical hit to be 2814. But it is only 2760. Given a regular hit of 1412, we expect the critical hit to be 1694.4. But it is only 1624. The reason appears to be that the attribute bonus is not multiplied by the critical hit multiplier. See https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Example 1: Spoiler High Elf, level 200, using fists Damage in inventory screen: 171-171 Fighting against a level 200 enemy to avoid the 2.25 damage multiplier. Actual damage dealt to level 200 enemies: 171 for regular hits, 197 for critical hits. Lets apply the formula from above: AdjustCriticalDamageFactor = 1200 WeaponDamage = 129 AttributeBonus = 42.57 BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = WeaponDamage * (CriticalMultiplier / 1000) BaseDamage = 129 * (1200 / 1000) BaseDamage = 129 * 1.2 BaseDamage = 154.8 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 154.8 + 42.57 CombinedDamage = 197.37 (Reference value is 197) Example 2: Spoiler High Elf, level 200, using fists +85.1% Physical Damage (from rings) (Shown as 85% due to precision loss!) Damage in inventory screen: 280-280 Fighting against a level 200 enemy to avoid the 2.25 damage multiplier. Actual damage dealt to level 200 enemies: 316 for regular hits, 364 for critical hits Lets apply the formula from above: AdjustCriticalDamageFactor = 1200 WeaponDamage = 129 AttributeBonus = 78.54 Spoiler AttributeBaseDamage = FLOOR(FLOOR(WeaponDamage * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 851 / 1000)) AttributeBaseDamage = FLOOR(129 * (1 + 0.851)) AttributeBaseDamage = FLOOR(129 * 1.851) AttributeBaseDamage = FLOOR(238.779) AttributeBaseDamage = 238 AttributeBonus = AttributeBaseDamage * 0.33 AttributeBonus = 238 * 0.33 AttributeBonus = 78.54 BaseDamage = FLOOR(FLOOR((WeaponDamage + SumFlatBonuses) * (1 + SumPercentageBonuses / 1000)) * (CombatArtMultiplier / 1000)) * (CriticalMultiplier / 1000) BaseDamage = 238 * 1.2 BaseDamage = 285.6 CombinedDamage = BaseDamage + AttributeBonus CombinedDamage = 285.6 + 78.54 CombinedDamage = 364.14 (Reference value is 364) Enough for today Edited August 21 by Maneus 1 1 Link to comment
SLD 523 Popular Post Share Posted June 17 Thank you for all the great and detailed work. Now all we need is the attribute question answered for spell CAs. Is it only the tooltip or is the int bonus really multiplicative as you suggested above? I think your Seraphim could "shine some light" on that, I mean on a test enemy that is. I've taken the liberty of editing some of my old misconceptions and linked to your work there. Just in case someone stumbles upon my ramblings, they'll now be solidly informed by your magnificent data. It's so nice to have a research scientist join the community 1 1 Link to comment
idbeholdME 436 Share Posted June 17 (edited) The level difference bonus depends mostly on the color of the circle the enemies have under them. The paler the circle, the higher the damage bonus, reaching max when it becomes fully white. Same the other direction and deep purple. The acutal levels for the min and max vary depending on character level. As for attribute bonuses, do a test with weapons. I wouldn't be surprised if fists were a special case scenario and the behavior was different for actual weapons. I am 99% sure it's just additive. Even just tested. Pumped 100 points into Strength, the Weapon damage bonus increased by 68 and the tooltip damages went up by basically the same amount. Slightly more for Pelting Strikes, so if anything, Strength bonus gets multiplied by the et_mult_weapondamage of a given CA. Definitely not % bonuses, because I tested on a character with nearly a 1000% bonus to damage. Although..... I'm on the PFP patch. If you arrive at a different conclusion in the full vanilla game, then it's yet another thing that is different. Eagerly awaiting results. Edited June 17 by idbeholdME 1 Link to comment
Maneus 236 Popular Post Share Posted June 17 (edited) On 6/17/2024 at 4:25 PM, SLD said: Thank you for all the great and detailed work. Now all we need is the attribute question answered for spell CAs. Is it only the tooltip or is the int bonus really multiplicative as you suggested above? I think your Seraphim could "shine some light" on that, I mean on a test enemy that is. I've taken the liberty of editing some of my old misconceptions and linked to your work there. Just in case someone stumbles upon my ramblings, they'll now be solidly informed by your magnificent data. It's so nice to have a research scientist join the community Thank you very much, SLD In the coming days I plan to go through most of the combat arts to see if my conclusions still hold. There are still some things that the above examples do not cover. I'll certainly take a deeper look into the spell-based combat arts. On 6/17/2024 at 6:02 PM, idbeholdME said: The level difference bonus depends mostly on the color of the circle the enemies have under them. The paler the circle, the higher the damage bonus, reaching max when it becomes fully white. Same the other direction and deep purple. The acutal levels for the min and max vary depending on character level. Yes, the bonus is gradual. And yes, the level difference needs to be higher at high character levels. Examples: Spoiler High Elf, level 5 Damage bonus from strength: 2 Damage in inventory screen: 13-13 Actual damage dealt to level 5 enemies: 13 for regular hits, 15 for critical hits Actual damage dealt to level 4 enemies: 13 for regular hits, 15 for critical hits Actual damage dealt to level 3 enemies: 13 for regular hits, 15 for critical hits Actual damage dealt to level 2 enemies: 20 for regular hits, 24 for critical hits (About 1.538 times higher than normal) Actual damage dealt to level 1 enemies: 29 for regular hits, 34 for critical hits (About 2.23 times higher than normal) More examples: Spoiler High Elf, level 200 Damage bonus from strength: 43 Damage in inventory screen: 172-172 +5.8% Damage against High Elf Actual damage dealt to level 189 enemies (high elves): 182 for regular hits, 209 for critical hits Actual damage dealt to level 177 enemies (high elves): 182 for regular hits, 209 for critical hits Actual damage dealt to level 176 enemies (high elves): 182 for regular hits, 209 for critical hits I don't think I can find lower level enemies in niobium. So I went into platinum: Actual damage dealt to level 121 enemies (high elves): 410 for regular hits, 471 for critical hits Actual damage dealt to level 134 enemies (high elves): 410 for regular hits, 471 for critical hits I'll need to go deep into platinum to find higher level enemies, but maybe another time. Another thing I wanted to point out is that level 189 enemies have a white-green circle below them, and level 177 enemies have a completely white circle below them, but I still don't receive the damage bonus. So I don't think the color of the circle is an accurate indication of when the bonus is applied. On 6/17/2024 at 6:02 PM, idbeholdME said: As for attribute bonuses, do a test with weapons. I wouldn't be surprised if fists were a special case scenario and the behavior was different for actual weapons. I am 99% sure it's just additive. Even just tested. Pumped 100 points into Strength, the Weapon damage bonus increased by 68 and the tooltip damages went up by basically the same amount. Slightly more for Pelting Strikes, so if anything, Strength bonus gets multiplied by the et_mult_weapondamage of a given CA. Definitely not % bonuses, because I tested on a character with nearly a 1000% bonus to damage. I'm curious, did you look at what is displayed in the inventory screen, or the actual damage - the floating numbers when you hit enemies? My tests above suggest that there is a difference between the two. In the inventory screen, yes, the attribute bonus is not multiplied by any percentage bonuses (Tactics Lore, +X% damage rings and whet blacksmith arts, the % bonus from pelting strikes, etc.). It might be multiplied by the et_mult_weapondamage - I will do more tests with combat arts to figure these things out. But when it comes to actual damage dealt, the floating numbers suggest that the attribute bonus is multiplied by all of the percentage bonuses. Unless the floating numbers are misleading too, which is something that I plan to test too. As for testing with weapons instead of with fists - I'll post some results soon Edited June 19 by Maneus 2 Link to comment
Maneus 236 Share Posted June 17 (edited) Here come the weapon tests Note: The testing is not very thorough as it is very tedious and time-consuming. High Elf, level 200, starting with 10.6% survival bonus that grew to 20% over the course of the tests Fighting against a Scarab, level 203 Example 1: No bonuses, just the weapon Spoiler Case 1: Using fists Damage bonus from strength: 44 Damage in inventory screen: 173-173 Actual damage dealt: 173 for regular hits, 198 for critical hits Case 2: Using a dagger with a base damage of 19-22 (The starting dagger from bronze difficulty) Damage bonus from dexterity: 84 Damage in inventory screen: 97-113 Actual damage dealt: Between 98-113 for regular hits, (116, 110, 110, 112) for critical hits Case 3: Using a desert saber with a base damage of 324-388 Damage bonus from strength: 161 Damage in inventory screen: 471-564 Actual damage dealt: Between 472-560 for regular hits, (618, 630, 634, 628, 620, 614, 627, 637, 635) for critical hits Example 2: Same weapons, but now with added 200 flat damage from rings Spoiler Case 4: Using fists + rings with 200 flat damage Damage bonus from strength: 44 Damage in inventory screen: 373-373 Actual damage dealt: 373 for regular hits, 439 for critical hits Case 5: Using the dagger + rings with 200 flat damage Damage bonus from dexterity: 85 Damage in inventory screen: 298-313 Actual damage dealt: Between 298-313 for regular hits, (347, 347, 354, 357, 355) for critical hits Case 6: Using the desert saber + rings with 200 flat damage Damage bonus from strength: 163 Damage in inventory screen: 672-766 Actual damage dealt: Between 673-761 for regular hits, (864, 874, 876, 882) for critical hits Example 3: Same weapons, but instead with added +85% physical damage from rings Spoiler Case 7: Using fists + rings with +85% physical damage Damage bonus from strength: 44 Damage in inventory screen: 282-282 (MISLEADING) Actual damage dealt: 320 for regular hits, 368 for critical hits Case 8: Using the dagger + rings with +85% physical damage Damage bonus from dexterity: 85 Damage in inventory screen: 114-132 (MISLEADING) Actual damage dealt: 205 (Crit), 185, 206, 193, 190, 198, 192, 192, 206, 193, 204, 198, 183, 182, 202, 205, 195, 185, 195, 211 (Crit), 205, 203 (Crit), 190, 186, 183, 195, 203 (Crit), 189, 188, 194 Attribute bonus should be: 79-92 Expected damage range: 181.30-210.90 Case 9: Using the desert saber + whet blacksmith arts for +86.4% (we can't use the physical damage rings because the desert saber has a magic component) Damage bonus from strength: 165 Damage in inventory screen: 753-903 (MISLEADING) Actual damage dealt: 903, 955, 954, 1027, 908, 1047, 912, 964, 1029, 899, 906, 1193 (Crit), 914, 996, 925, 932, 949, 1182 (Crit), 1157 (Crit), 1036, 910, 921, 930, 995, 913, 1036, 903, 1153 (Crit), 966, 1026, 1192 (Crit), 1191 (Crit), 955, 987, 1027, 931, 972, 980, 1160 (Crit), 1035, 965, 958, 1024, 1037, 900, 928, 945, 1166 (Crit), 1153 (Crit), 930 ... 1049 ... 892 ... 1050 ... 889 ... 1052 Attribute bonus should be: 150-180 Expected damage range: 883.54-1058.75 Quick summary: In example 1 and example 2, we can see that whatever is stated in the inventory screen is the actual damage dealt (according to the floating numbers). In example 3 we can see that once we add a percentage bonus, then a discrepancy appears between what is shown in the inventory screen and the floating numbers. Also, since the dagger has a very low base damage, there is barely any difference in damage between regular hits and critical hits. This is a very extreme example which shows us that the attribute bonus is not multiplied by the critical hit multiplier. The sample size is very small and we cannot use that to draw conclusions about specifics, but I think it is enough to illustrate the points I'm trying to make. Edited June 19 by Maneus 1 Link to comment
idbeholdME 436 Share Posted June 17 (edited) 5 hours ago, Maneus said: I'm curious, did you look at what is displayed in the inventory screen, or the actual damage - the floating numbers when you hit enemies? My tests above suggest that there is a difference between the two. In the inventory screen, yes, the attribute bonus is not multiplied by any percentage bonuses (Tactics Lore, +X% damage rings and whet blacksmith arts, the % bonus from pelting strikes, etc.). It might be multiplied by the et_mult_weapondamage - I will do more tests with combat arts to figure these things out. But when it comes to actual damage dealt, the floating numbers suggest that the attribute bonus is multiplied by all of the percentage bonuses. Unless the floating numbers are misleading too, which is something that I plan to test too. As for testing with weapons instead of with fists - I'll post some results soon Just the tooltip. Couldn't really do mild tests because because it was on my fully built level 200 character. So wouldn't really notice a difference between 60K damage and 60.3K damage with the big weapon spread. But it seems like it'd be pretty easy to test. Just pump Strength to ridiculous levels through character editor, equip some % damage bonuses and then check whether the damage went up by the difference on the attribute tooltip or a lot more. Also, there is a hidden level scaling for the effectiveness of the attribute bonus based on the weapon level. The higher the weapon level, the less effective the damage bonus from the attribute. Theoretically, if you equipped 2 weapons which were exactly the same other than item level, the higher level item would get lower damage bonus from the attribute. IIRC, this change was introduced in Ice & Blood. In vanilla Sacred 2, the attribute bonuses to weapon damage did actually scale. It is also possible that the PFP adjusted some weapon calculation logic when it comes to the tooltips and the tooltips actually show the correct values. I know for certain that putting points into Strength or Dexterity for the purposes of weapon damage has next to no effect on the overall damage, even with massive damage bonuses equipped, which made me pretty sure the bonus is just flatly added after all calculations. Edited June 17 by idbeholdME 1 Link to comment
SLD 523 Popular Post Share Posted June 19 On 6/18/2024 at 1:47 AM, idbeholdME said: Also, there is a hidden level scaling for the effectiveness of the attribute bonus based on the weapon level. The higher the weapon level, the less effective the damage bonus from the attribute. Theoretically, if you equipped 2 weapons which were exactly the same other than item level, the higher level item would get lower damage bonus from the attribute. That is correct though two identical weapons on different levels are kinda impossible. The Idea here is that higher weapons do higher damage and the bonus added from attribute is based on the weapons current damage. So that level offset is there to prevent the same amount of attribute to give the same relative amount of damage on higher lvls because higher levels also mean higher attributes. To exploit this mechainc you can: a) use low level weapons with socketed high lvl dmg rings (the weapons level then shows higher, but the calculation is based on the original low level) or b) use a weapon with really high damage (I.e. a bfg summoned while selecting an empty slot adds the buff damage onto the weapon itself which is a lot more than any other weapon can achieve. Don't make the mistake tto summon in with a non empty weapon set equipped it won't be added then) On 6/18/2024 at 1:47 AM, idbeholdME said: It is also possible that the PFP adjusted some weapon calculation logic when it comes to the tooltips and the tooltips actually show the correct values. Possible yet unlikely as the incrorrect tooltip is still in EE, D2F and the Addendum. Same guys work so I doubt the tooltip fix made it only through to one mod. On 6/18/2024 at 1:47 AM, idbeholdME said: I know for certain that putting points into Strength or Dexterity for the purposes of weapon damage has next to no effect on the overall damage, even with massive damage bonuses equipped, which made me pretty sure the bonus is just flatly added after all calculations. How would you even measure this? Did you keep a couple hundred points for testing once? otherwise a few points here or ther ewouldn't make much of adifference. I know EE,D2F and the addendum claim to buff the attribute effects so it's possible that in normal games/PFP versions you might be correct that it ain't worth it. pfp would also not give extra attribute points, while the other mods I mentioned all add some kind of infinite bonus. cm patch changes lighsabers to willpower so shadow warriors can use a buff to get a couple thousand there which probably wouldn't be in pfp either but if you really want to test attribute effect on weapons staff attacks with a dryad(semi-buff) or dragon mage(buff) should still work. And one point for Maneus: Could you look into collapsing the testdata somehow? Maybe with a conclusion sentance for each test. Currently its kinda hard to read/find the correct numbers to check. It seems so cluttered with data, and I think some spoilers or similar would clean it up while giving the same amount of information. Just a selfish suggestion for future posts from someone whith really bad eyesight. 1 1 Link to comment
Maneus 236 Popular Post Share Posted June 19 4 hours ago, SLD said: And one point for Maneus: Could you look into collapsing the testdata somehow? Maybe with a conclusion sentance for each test. Currently its kinda hard to read/find the correct numbers to check. It seems so cluttered with data, and I think some spoilers or similar would clean it up while giving the same amount of information. Just a selfish suggestion for future posts from someone whith really bad eyesight. Thank you for your input I've added spoilers and tried to make some explanations clearer, including the formulas. It should hopefully be much better now. Of course, there is always room for improvement. I'll take another go at it later. 1 1 Link to comment
SLD 523 Popular Post Share Posted June 20 7 hours ago, Maneus said: It should hopefully be much better now. It is. Thank you. Man, you got energy. I only suggested to make new posts better and you went over all the old ones. 1 1 Link to comment
idbeholdME 436 Popular Post Share Posted June 20 (edited) On 6/19/2024 at 3:20 PM, SLD said: How would you even measure this? Did you keep a couple hundred points for testing once? Character editor. Also, the effectiveness of the attributes on weapons should be adjustable in balance.txt with attrWdam_fact, which is what the mods which increased the effect of attributes did IIRC. Edited June 20 by idbeholdME 1 1 Link to comment
Maneus 236 Popular Post Share Posted June 22 (edited) EDIT: OUTDATED INFO See this post https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7145350 Another breakthrough! Thank you, idbeholdME, for telling me about attrWdam_fact - that was key! How the bonus damage from strength is calculated: The formula is: DamageBonus = Strength * AverageBaseDamage * attrWdam_fact * ItemLevelMultiplier / BasepointsMultiplier Where: - DamageBonus - The value shown in the tooltip when you hover over the strength attribute (Weapon Damage +X) - Strength - The total strength value (after Survival Bonus). - AverageBaseDamage - The base fist damage OR the average base damage of the weapon. - attrWdam_fact - From balance.txt. Default value is 250 (unmodded game). - BasepointsMultiplier - From balance.txt. Default value is 500 (unmodded game). - ItemLevelMultiplier - A special multiplier that involves the item level and TopLevelCalc from balance.txt. For fists the item level is equal to the character level. See the table below: ItemLevelMultiplier table Spoiler Item Level Multiplier 1 0.019 2 0.018 3 0.0172 4 0.0166 5 0.016 6 0.0152 7 0.0148 8 0.0142 9 0.0136 10 0.0132 11 0.0128 12 0.0124 13 0.012 14 0.0116 15 0.0114 16 0.011 17 0.0108 18 0.0104 19 0.0102 20 0.01 21 0.0096 22 0.0094 23 0.0092 24 0.009 25 0.0088 26 0.0086 27 0.0084 28 0.0082 29 0.008 30 0.008 31 0.0078 32 0.0076 33 0.0074 34 0.0074 35 0.0072 36 0.007 37 0.007 38 0.0068 39 0.0066 40 0.0066 41 0.0064 42 0.0064 43 0.0062 44 0.0062 45 0.006 46 0.006 47 0.0058 48 0.0058 49 0.0056 50 0.0056 51 0.0056 52 0.0054 53 0.0054 54 0.0054 55 0.0052 56 0.0052 57 0.005 58 0.005 59 0.005 60 0.005 61 0.0048 62 0.0048 63 0.0048 64 0.0046 65 0.0046 66 0.0046 67 0.0044 68 0.0044 69 0.0044 70 0.0044 71 0.0042 72 0.0042 73 0.0042 74 0.0042 75 0.0042 76 0.004 77 0.004 78 0.004 79 0.004 80 0.004 81 0.0038 82 0.0038 83 0.0038 84 0.0038 85 0.0038 86 0.0036 87 0.0036 88 0.0036 89 0.0036 90 0.0036 91 0.0036 92 0.0034 93 0.0034 94 0.0034 95 0.0034 96 0.0034 97 0.0034 98 0.0032 99 0.0032 100 0.0032 101 0.0032 102 0.0032 103 0.0032 104 0.0032 105 0.0032 106 0.003 107 0.003 108 0.003 109 0.003 110 0.003 111 0.003 112 0.003 113 0.003 114 0.0028 115 0.0028 116 0.0028 117 0.0028 118 0.0028 119 0.0028 120 0.0028 121 0.0028 122 0.0028 123 0.0026 124 0.0026 125 0.0026 126 0.0026 127 0.0026 128 0.0026 129 0.0026 130 0.0026 131 0.0026 132 0.0026 133 0.0026 134 0.0024 135 0.0024 136 0.0024 137 0.0024 138 0.0024 139 0.0024 140 0.0024 141 0.0024 142 0.0024 143 0.0024 144 0.0024 145 0.0024 146 0.0024 147 0.0022 148 0.0022 149 0.0022 150 0.0022 151 0.0022 152 0.0022 153 0.0022 154 0.0022 155 0.0022 156 0.0022 157 0.0022 158 0.0022 159 0.0022 160 0.0022 161 0.0022 162 0.002 163 0.002 164 0.002 165 0.002 166 0.002 167 0.002 168 0.002 169 0.002 170 0.002 171 0.002 172 0.002 173 0.002 174 0.002 175 0.002 176 0.002 177 0.002 178 0.002 179 0.002 180 0.002 181 0.0018 182 0.0018 183 0.0018 184 0.0018 185 0.0018 186 0.0018 187 0.0018 188 0.0018 189 0.0018 190 0.0018 191 0.0018 192 0.0018 193 0.0018 194 0.0018 195 0.0018 196 0.0018 197 0.0018 198 0.0018 199 0.0018 200 0.0018 201 0.0018 202 0.0018 203 0.0016 204 0.0016 205 0.0016 206 0.0016 207 0.0016 208 0.0016 209 0.0016 210 0.0016 211 0.0016 212 0.0016 213 0.0016 214 0.0016 215 0.0016 216 0.0016 217 0.0016 218 0.0016 219 0.0016 220 0.0016 ... How to get these numbers: Spoiler For levels 1-200 you can use fists, but for levels above 200 you will need to get higher level items (can be from the shop). 1. Set attrWdam_fact to 50000. After dividing by the BasepointsMultiplier (500) this leaves us with a factor of 100. A factor of 100 is precise enough to give us the exact value of the multiplier. 2. Use character editor to set your total strength value to 1000. Then either raise the character level one by one (while keeping the strength value constant) or go shopping for different level items. 3. Write down the values for each item level. Then use the formula from above to solve ItemLevelMultiplier. Note: You can use a higher factor/strength/damage (all multiply eachother), but there is some integer overflowing going on at higher values. You will have to account for this. I'm sure the values from the table above are produced from a mathematical function, but I'm not that good at math to find it. It certainly involves the value TopLevelCalc from balance.txt (default value 200). Changing that value produces drastically different results for ItemLevelMultiplier. Some other notes: BasepointsMultiplier has two roles: one is to act as a divisor in this formula, but the other is to multiply the base weapon damage of weapons (excluding base fists damage). For its role in this formula,, setting it to 0 is no different than setting it to 1. I assume this is done to avoid division by 0. But because of its second role, we shouldn't be modifying it. The ItemLevelMultiplier table is not affected by character class or difficulty setting. The calculated damage bonus can contain a fractional part (e.g. 10.8), but it is shown as 10 in the tooltip. In other words, it is rounded down. But this might be just for presentation. Will have to test. There are a few very specific cases, where there is a discrepancy between the calculated result and the value shown in-game. For example: Spoiler Strength = 74 AverageBaseDamage = 11 attrWdam_fact = 250 ItemLevelMultiplier = 0.0172 (For item level = 3) BasepointsMultiplier = 500 This gives a result of 7.0004, but due to some weird roundings, it ends up being ~6.9999 and is shown as 6 in the tooltip. If we increase the precision, then this discrepancy disappears. Enough for now Edit: The formula for dexterity or intelligence is absolutely the same! Just use dexterity or intelligence instead of strength. Edited August 17 by Maneus 1 1 Link to comment
idbeholdME 436 Popular Post Share Posted June 22 (edited) 5 hours ago, Maneus said: Edit: The formula for dexterity or intelligence is absolutely the same! Just use dexterity or intelligence instead of strength. Now this is breaking some new ground. Don't think it was ever specifically documented, how the various balance.txt parameters affected the weapon and attribute damage calculations. Looking at the itemLevelMultiplier table, it's no wonder attribute scaling does next to nothing in the late game. IIRC, in vanilla Sacred 2, without Ice & Blood, the attribute scaling was much better in general. Could probably be interesting to compare the values of these parameters between the versions. I think the itemLevelMultiplier was not present at all before, so it was probably 1 for all item levels. Or the values got massively lower in I&B due to some formula change. Edited June 22 by idbeholdME 1 1 Link to comment
Maneus 236 Share Posted June 22 (edited) 1 hour ago, idbeholdME said: Now this is breaking some new ground. Don't think it was ever specifically documented, how the various balance.txt parameters affected the weapon and attribute damage calculations. Looking at the itemLevelMultiplier table, it's no wonder attribute scaling does next to nothing in the late game. IIRC, in vanilla Sacred 2, without Ice & Blood, the attribute scaling was much better in general. Could probably be interesting to compare the values of these parameters between the versions. I think the itemLevelMultiplier was not present at all before, so it was probably 1 for all item levels. Or the values got massively lower in I&B due to some formula change. Indeed. As the item level goes up, the bonus from each individual point of strength and/or damage goes down. When testing with fists, it is common to see the bonus damage drop after a level-up. Especially in the early levels. This is because the base fist damage does not increase on every level. Well not that common actually, since the attributes naturally increase too. I forgot I was testing with a constant value It appears that weapons with high base damage for their item level (typically two-handed) receive the biggest bonus to damage. Still, the overall sentiment remains the same. Next, I'll be looking into spell-based combat arts and how intelligence affects them Edited June 22 by Maneus 1 Link to comment
gogoblender 3,338 Share Posted June 22 6 hours ago, Maneus said: Another breakthrough! Thank you, idbeholdME, for telling me about attrWdam_fact - that was key! How the bonus damage from strength is calculated: The formula is: DamageBonus = Strength * AverageBaseDamage * attrWdam_fact * ItemLevelMultiplier / BasepointsMultiplier Where: - DamageBonus - The value shown in the tooltip when you hover over the strength attribute (Weapon Damage +X) - Strength - The total strength value (after Survival Bonus). - AverageBaseDamage - The base fist damage OR the average base damage of the weapon. - attrWdam_fact - From balance.txt. Default value is 250 (unmodded game). - BasepointsMultiplier - From balance.txt. Default value is 500 (unmodded game). - ItemLevelMultiplier - A special multiplier that involves the item level and TopLevelCalc from balance.txt. For fists the item level is equal to the character level. See the table below: ItemLevelMultiplier table Reveal hidden contents Item Level Multiplier 1 0.019 2 0.018 3 0.0172 4 0.0166 5 0.016 6 0.0152 7 0.0148 8 0.0142 9 0.0136 10 0.0132 11 0.0128 12 0.0124 13 0.012 14 0.0116 15 0.0114 16 0.011 17 0.0108 18 0.0104 19 0.0102 20 0.01 21 0.0096 22 0.0094 23 0.0092 24 0.009 25 0.0088 26 0.0086 27 0.0084 28 0.0082 29 0.008 30 0.008 31 0.0078 32 0.0076 33 0.0074 34 0.0074 35 0.0072 36 0.007 37 0.007 38 0.0068 39 0.0066 40 0.0066 41 0.0064 42 0.0064 43 0.0062 44 0.0062 45 0.006 46 0.006 47 0.0058 48 0.0058 49 0.0056 50 0.0056 51 0.0056 52 0.0054 53 0.0054 54 0.0054 55 0.0052 56 0.0052 57 0.005 58 0.005 59 0.005 60 0.005 61 0.0048 62 0.0048 63 0.0048 64 0.0046 65 0.0046 66 0.0046 67 0.0044 68 0.0044 69 0.0044 70 0.0044 71 0.0042 72 0.0042 73 0.0042 74 0.0042 75 0.0042 76 0.004 77 0.004 78 0.004 79 0.004 80 0.004 81 0.0038 82 0.0038 83 0.0038 84 0.0038 85 0.0038 86 0.0036 87 0.0036 88 0.0036 89 0.0036 90 0.0036 91 0.0036 92 0.0034 93 0.0034 94 0.0034 95 0.0034 96 0.0034 97 0.0034 98 0.0032 99 0.0032 100 0.0032 101 0.0032 102 0.0032 103 0.0032 104 0.0032 105 0.0032 106 0.003 107 0.003 108 0.003 109 0.003 110 0.003 111 0.003 112 0.003 113 0.003 114 0.0028 115 0.0028 116 0.0028 117 0.0028 118 0.0028 119 0.0028 120 0.0028 121 0.0028 122 0.0028 123 0.0026 124 0.0026 125 0.0026 126 0.0026 127 0.0026 128 0.0026 129 0.0026 130 0.0026 131 0.0026 132 0.0026 133 0.0026 134 0.0024 135 0.0024 136 0.0024 137 0.0024 138 0.0024 139 0.0024 140 0.0024 141 0.0024 142 0.0024 143 0.0024 144 0.0024 145 0.0024 146 0.0024 147 0.0022 148 0.0022 149 0.0022 150 0.0022 151 0.0022 152 0.0022 153 0.0022 154 0.0022 155 0.0022 156 0.0022 157 0.0022 158 0.0022 159 0.0022 160 0.0022 161 0.0022 162 0.002 163 0.002 164 0.002 165 0.002 166 0.002 167 0.002 168 0.002 169 0.002 170 0.002 171 0.002 172 0.002 173 0.002 174 0.002 175 0.002 176 0.002 177 0.002 178 0.002 179 0.002 180 0.002 181 0.0018 182 0.0018 183 0.0018 184 0.0018 185 0.0018 186 0.0018 187 0.0018 188 0.0018 189 0.0018 190 0.0018 191 0.0018 192 0.0018 193 0.0018 194 0.0018 195 0.0018 196 0.0018 197 0.0018 198 0.0018 199 0.0018 200 0.0018 201 0.0018 202 0.0018 203 0.0016 204 0.0016 205 0.0016 206 0.0016 207 0.0016 208 0.0016 209 0.0016 210 0.0016 211 0.0016 212 0.0016 213 0.0016 214 0.0016 215 0.0016 216 0.0016 217 0.0016 218 0.0016 219 0.0016 220 0.0016 ... How to get these numbers: Reveal hidden contents For levels 1-200 you can use fists, but for levels above 200 you will need to get higher level items (can be from the shop). 1. Set attrWdam_fact to 50000. After dividing by the BasepointsMultiplier (500) this leaves us with a factor of 100. A factor of 100 is precise enough to give us the exact value of the multiplier. 2. Use character editor to set your total strength value to 1000. Then either raise the character level one by one (while keeping the strength value constant) or go shopping for different level items. 3. Write down the values for each item level. Then use the formula from above to solve ItemLevelMultiplier. Note: You can use a higher factor/strength/damage (all multiply eachother), but there is some integer overflowing going on at higher values. You will have to account for this. I'm sure the values from the table above are produced from a mathematical function, but I'm not that good at math to find it. It certainly involves the value TopLevelCalc from balance.txt (default value 200). Changing that value produces drastically different results for ItemLevelMultiplier. Some other notes: BasepointsMultiplier does not affect fists damage, but it does have a big effect on weapon damage. Setting it to 0 is no different than setting it to 1. I assume this is done to avoid division by 0. The ItemLevelMultiplier table is not affected by character class or difficulty setting. The calculated damage bonus can contain a fractional part (e.g. 10.8), but it is shown as 10 in the tooltip. In other words, it is rounded down. But this might be just for presentation. Will have to test. There are a few very specific cases, where there is a discrepancy between the calculated result and the value shown in-game. For example: Reveal hidden contents Strength = 74 AverageBaseDamage = 11 attrWdam_fact = 250 ItemLevelMultiplier = 0.0172 (For item level = 3) BasepointsMultiplier = 500 This gives a result of 7.0004, but due to some weird roundings, it ends up being ~6.9999 and is shown as 6 in the tooltip. If we increase the precision, then this discrepancy disappears. Enough for now Edit: The formula for dexterity or intelligence is absolutely the same! Just use dexterity or intelligence instead of strength. Maneus, thank you for this break neck pace (friend you must have the BEST coffee!! ) on Sacred 2 Calculations! I was thinking about getting your work into a area that has even more reach... if you want i can change you into an editor for SacredWiki and you can contribute, copy paste your work into the wiki in the section for for Player Contributed guides... https://www.sacredwiki.org/index.php/Sacred_2:Sacred_2_Player_Contributed_Guides and at the bottom of that wiki page you can put in a link linking to your latest work here on this forum. Would that be okay gogo 1 Link to comment
Maneus 236 Share Posted June 22 15 minutes ago, gogoblender said: Maneus, thank you for this break neck pace (friend you must have the BEST coffee!! ) on Sacred 2 Calculations! I was thinking about getting your work into a area that has even more reach... if you want I can change you into an editor for SacredWiki and you can contribute, copy paste your work into the wiki in the section for for Player Contributed guides... https://www.sacredwiki.org/index.php/Sacred_2:Sacred_2_Player_Contributed_Guides and at the bottom of that wiki page you can put in a link linking to your latest work here on this forum. Would that be okay gogo Thank you, gogo. That sounds really cool . I do have some ideas... Well, all in good time. Right now I'd like explore more mechanics and do more testing. I'll message you when I think something is worthy enough to put on a wiki 1 Link to comment
Maneus 236 Popular Post Share Posted June 23 (edited) EDIT: OUTDATED INFO See this post https://darkmatters.org/forums/index.php?/topic/18511-how-is-sacred-2-weapon-damage-calculated/&do=findComment&comment=7144732 Finally, we have uncovered another big mystery! I think SLD is going to like this one For spell-based combat arts, how the bonus damage from intelligence is calculated The formula is: IntelligenceDamageBonus = Intelligence * floor(BaseSpellDamage * (1 + SumPercentageBonuses)) * attrSdam_fact * 0.00004 / (min(BaseCombatArtLevel, ceil(CharacterLevel / 3)) + 1) Where: - IntelligenceDamageBonus - The value shown in the tooltip when you hover over the intelligence attribute (Combat Art Damage +X). - Intelligence - The total intelligence value (after Survival Bonus). - BaseSpellDamage - From spells.txt. Examples below. - SumPercentageBonuses - Sum of all percentage bonuses (bonus from the combat art itself, Aspect Lore, Ancient Magic, Combat Discipline, Rings with +X% damage of the same element). - attrSdam_fact - From balance.txt. Default value is 334 (unmodded game). - BaseCombatArtLevel - The base combat art level before being reduced by the penalty. For example: Out highest combat art level without penalty is 51, but we have used 56 runes, resulting in a final combat art level of 53.7. We must use the base level (56) in the formula. I assume that it's the same when the combat art level is boosted trough equipment. And with that, the formula for our final damage becomes: FinalDamage = floor(BaseSpellDamage * (1 + SumPercentageBonuses)) + IntelligenceDamageBonus Where: - FinalDamage - The combat art damage shown in the inventory screen or in the tooltip when hovering over the combat art itself. Finding the base spell damage Each individual combat art has its own specific rules. Lets look at a few of them. Example 1: The shadow warrior's Skeletal Fortification Spoiler spells.txt Spoiler mgr.defineSpell( "sk_ap_unterstuetzung", { eiStateName = "cSpellCast", fxTypeCast = "FX_SK_UNTERSTUETZUNG_C", fxTypeSpell = "FX_SK_UNTERSTUETZUNG", fxTypeCastSpecial = "FX_SK_CAST_M", duration = 10.000000, animType = "ANIM_TYPE_SM13", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM05-SPECIAL", causesSpellDamage = 1, tokens = { entry0 = {"et_duration_sec", 2000, 0, 0, 8 }, entry1 = {"et_missile_count", 300, 10, 0, 8 }, entry2 = {"et_hits_persec", 800, 2, 0, 4 }, entry3 = {"et_spelldamage_physical", 700, 350, 0, 133 }, entry4 = {"et_hits_persec", 400, 1, 1, 4 }, entry5 = {"et_regThisCool", 1000, 10, 2, 8 }, entry6 = {"et_spelldamage_ice", 280, 140, 3, 133 }, entry7 = {"et_spelldamage_magic", 280, 140, 4, 133 }, entry8 = {"et_missile_count", 300, 10, 5, 8 }, entry9 = {"et_chance_piercing", 1000, 0, 6, 5 }, }, fightDistance = 525.000000, aspect = "EA_SK_ASTRALPLANE", cooldown = 15.000000, soundProfile = 0, cost_level = 250, cost_base = 500, focus_skill_name = "skill_SK_astral_plane_focus", lore_skill_name = "skill_SK_astral_plane_lore", spellClass = "cSpellSkUnterstuetzung", spellcontroltype = "eCAtype_a_effect_location_start", spelllogictype = "ca_ct_summoning", sorting_rank = 2, }) The main source of damage here is defined in entry3 - et_spelldamage_physical. As the name suggests, it is physical damage. This is how the damage is calculated: PhysicalDamage = (700 + (CombatArtLevel * 350)) / 40 For the modification "Ice Shards" (adds additional ice damage via et_spelldamage_ice) the damage is calculated as follows: IceDamage = (280 + (CombatArtLevel * 140)) / 40 For the modification "Arcane Power" (adds additional magic damage via et_spelldamage_magic) the damage is calculated as follows: MagicDamage = (280 + (CombatArtLevel * 140)) / 40 Without modifications, our BaseSpellDamage is just the PhysicalDamage, but if we have either of the above modifications (cannot get both), then we add the respective damage to the total. Example 2: The seraphim's Radiant Pillar Spoiler spells.txt Spoiler mgr.defineSpell( "se_cm_lichtsaeule", { eiStateName = "cSpellCast", fxTypeCast = "FX_SE_LICHTSAEULE_C", fxTypeSpell = "FX_SE_LICHTSAEULE", fxTypeCastSpecial = "FX_SE_CAST_M", duration = 10.000000, animType = "ANIM_TYPE_SM13", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM06-SPECIAL", causesSpellDamage = 1, tokens = { entry0 = {"et_duration_sec", 1000, 10, 0, 8 }, entry1 = {"et_hits_persec", 500, 3, 0, 4 }, entry2 = {"et_range_area", 750, 0, 0, 4 }, entry3 = {"et_spelldamage_magic", 280, 140, 0, 133 }, entry4 = {"et_pull_range_rel", 1200, 0, 1, 6 }, entry5 = {"et_debuff_EAW", 650, 10, 2, 42 }, entry6 = {"et_range_area", 250, 0, 3, 4 }, entry7 = {"et_duration_sec", 500, 5, 4, 8 }, entry8 = {"et_spelldamage_magic", 100, 50, 5, 133 }, entry9 = {"et_deathblow", 250, 5, 6, 5 }, }, fightDistance = 525.000000, aspect = "EA_SE_CELESTIALMAGIC", cooldown = 0.000000, soundProfile = 0, cost_level = 300, cost_base = 600, focus_skill_name = "skill_SE_celestialmagic_focus", lore_skill_name = "skill_SE_celestialmagic_lore", spellClass = "cSpellSeLichtsaeule", spellcontroltype = "eCAtype_a_effect_location_start", sorting_rank = 2, }) The main source of damage here is defined in entry3 - et_spelldamage_magic. This is how the damage is calculated: MagicDamage = (280 + (CombatArtLevel * 140)) / 40 If we also have the "Magnify" modification, then the formula becomes: MagicDamage = (380 + (CombatArtLevel * 190)) / 40 And that is our BaseSpellDamage. Example 3: The high elf's Frost Flare Spoiler spells.txt Spoiler mgr.defineSpell( "he_st_frostschlag", { eiStateName = "cSpellCast", fxTypeCast = "FX_HE_FROSTSCHLAG_C", fxTypeSpell = "FX_HE_FROSTSCHLAG", fxTypeCastSpecial = "FX_HE_CAST_K", duration = 10.000000, animType = "ANIM_TYPE_SM08", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM01-SPECIAL", causesSpellDamage = 1, tokens = { entry0 = {"et_duration_sec", 1000, 5, 0, 8 }, entry1 = {"et_dotdamage_ice", 1050, 525, 0, 42 }, entry2 = {"et_damage_ice_rel", 0, 20, 0, 5 }, entry3 = {"et_debuff_movespeed", 400, 10, 0, 42 }, entry4 = {"et_spelldamage_ice", 210, 105, 0, 133 }, entry5 = {"et_range_area", 150, 0, 0, 4 }, entry6 = {"et_cost_thisSpell", 250, 0, 1, 4 }, entry7 = {"et_debuff_movespeed", 300, 3, 2, 42 }, entry8 = {"et_debuff_EAW", 500, 20, 3, 42 }, entry9 = {"et_dotdamage_ice", 400, 200, 4, 42 }, entry10 = {"et_range_area", 350, 0, 5, 4 }, entry11 = {"et_duration_sec", 500, 2, 6, 8 }, }, fightDistance = 525.000000, aspect = "EA_HE_STORM", cooldown = 0.000000, soundProfile = 0, cost_level = 300, cost_base = 600, focus_skill_name = "skill_HE_storm_focus", lore_skill_name = "skill_HE_storm_lore", spellClass = "cSpellHeFrostschlag", spellcontroltype = "eCAtype_a_effect_attack_ray", sorting_rank = 1, }) This one is a bit more complex. First, there is et_spelldamage_ice, which is the main source of damage. It is calculated as follows: IceDamage = (210 + (CombatArtLevel * 105)) / 40 This is our BaseSpellDamage. Second, there is et_damage_ice_rel which acts as an additional percentage bonus. It is calculated as follows: IcePercentageBonus = (CombatArtLevel * 20) / 1000 We add this IcePercentageBonus to the SumPercentageBonuses. Third, there is an additional DOT damage, but we won't be looking into it now as it is a completely separate mechanic. I might look into it in the future. Example 4: The high elf's Ancestral Fireball Spoiler spells.txt Spoiler mgr.defineSpell( "he_in_feuerball", { eiStateName = "cSpellCastProjectile", fxTypeCast = "FX_HE_FEUERBALL_C", fxTypeSpell = "FX_HE_FEUERBALL", fxTypeCastSpecial = "FX_HE_CAST_K", duration = 1.000000, animType = "ANIM_TYPE_SM01", animTypeApproach = "ANIM_TYPE_INVALID", animTypeRide = "ANIM_TYPE_INVALID", animTypeSpecial = "ANIM_TYPE_RIDESM01-SPECIAL", causesSpellDamage = 1, tokens = { entry0 = {"et_maxangle_cone", 30, 0, 0, 8 }, entry1 = {"et_damage_any_rel", 0, 20, 0, 5 }, entry2 = {"et_spelldamage_fire", 700, 350, 0, 133 }, entry3 = {"et_spelldamage_physical", 350, 175, 0, 133 }, entry4 = {"et_missile_adapt", 300, 10, 0, 9 }, entry5 = {"et_chance_burning", 297, 3, 1, 133 }, entry6 = {"et_chance_areasplash", 595, 5, 2, 5 }, entry7 = {"et_missile_adapt", 300, 10, 3, 9 }, entry8 = {"et_spelldamage_fire", 400, 200, 4, 133 }, entry9 = {"et_missile_adapt", 300, 10, 5, 9 }, entry10 = {"et_target_seeker", 1000, 0, 6, 133 }, }, fightDistance = 525.000000, aspect = "EA_HE_INFERNO", cooldown = 0.000000, soundProfile = 0, cost_level = 150, cost_base = 300, focus_skill_name = "skill_HE_inferno_focus", lore_skill_name = "skill_HE_inferno_lore", spellClass = "cSpellHeFeuerball", spellcontroltype = "eCAtype_a_missile_attack", sorting_rank = 1, }) This combat art has two main sources of damage - et_spelldamage_fire and et_spelldamage_physical. They are calculated as follows: FireDamage = (700 + (CombatArtLevel * 350)) / 40 PhysicalDamage = (350 + (CombatArtLevel * 175)) / 40 If we have the modification "Globe", then the total fire damage becomes: FireDamage = (1100 + (CombatArtLevel * 550)) / 40 We add both the PhysicalDamage and FireDamage together to form our BaseSpellDamage. There is also the bonus et_damage_any_rel. This is an additional percentage bonus to all elements. It is calculated as follows: PercentageBonus = (CombatArtLevel * 20) / 1000 We add this PercentageBonus to the SumPercentageBonuses. Additional notes: - Round down. If the BaseSpellDamage is calculated as 10.5 - round it down to 10. After that apply any percentage bonuses, and then round down again. - The formula is accurate, but due to some weird roundings, the displayed value is sometimes off by a few points. By increasing the precision (add a few zeroes to the end of attrSdam_fact), then the discrepancies disappear. Some cases require higher precision than others. I have no solution for now, but I might look into it in the future. - I tried to see if any other parameters from balance.txt affect the calculations. There was no visible difference after changing TopLevelCalc or BasepointsMultiplier, but there was a significant difference after changing SpellBaseDamage. Phew I'll add some examples later. Edited August 17 by Maneus 3 Link to comment
Maneus 236 Share Posted June 23 (edited) Here are some examples. I'm making a new post because the previous one is too big for comfortable editing. Example 1: Shadow Warrior, level 1, Skeletal Fortification, level 1 Spoiler Total intelligence 22 Skeletal Fortification, level 1, no modifications BaseDamage = 26 (Physical) Spoiler FinalCombatArtLevel = 1 InitialDamage = 700 DamagePerLevel = 350 SumPercentageBonuses = 0 SpellBaseDamage = 25 BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350 * 1)) * 25 * 0.001) * (1 + 0)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350)) * 0.025) * 1) BaseDamage = FLOOR((700 + 350) * 0.025) BaseDamage = FLOOR(1050 * 0.025) BaseDamage = FLOOR(26.25) BaseDamage = 26 IntelligenceBonus = 3.77 (Reference value is 3) Spoiler Intelligence = 22 attrSdam_fact = 334 SpellBaseDamage = 25 BaseCombatArtLevel = 1 CharacterLevel = 1 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(22 * 40 / (1 + MIN(1, CEIL(1 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(880 / (1 + MIN(1, CEIL(0.3333333333333333)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / (1 + MIN(1, 1)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / (1 + 1))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / 2)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(440)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 440) IntelligenceMultiplier = 0.001 * FLOOR(146.96) IntelligenceMultiplier = 0.001 * 146 IntelligenceMultiplier = 0.146 IntelligenceMultiplier = 0.145 (Precision loss from 32-bit float) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 26 * 0.145 IntelligenceBonus = 3.77 FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 26 + 3.77 FinalDamage = 29.77 (Reference value is 29) Reference value for combat art level 2 is 40. Example 2: Shadow Warrior, level 1, Skeletal Fortification, level 49 (Requires Astral Lord Mastery, level 200) Spoiler Total intelligence 22 Skeletal Fortification, level 49, no modifications BaseDamage = 446 (Physical) Spoiler FinalCombatArtLevel = 49 InitialDamage = 700 DamagePerLevel = 350 SumPercentageBonuses = 0 SpellBaseDamage = 25 BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350 * 49)) * 25 * 0.001) * (1 + 0)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(17150)) * 0.025) * 1) BaseDamage = FLOOR((700 + 17150) * 0.025) BaseDamage = FLOOR(17850 * 0.025) BaseDamage = FLOOR(446.25) BaseDamage = 446 IntelligenceBonus = 65.116 (Reference value is 64) Spoiler Intelligence = 22 attrSdam_fact = 334 SpellBaseDamage = 25 BaseCombatArtLevel = 49 CharacterLevel = 1 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(22 * 40 / (1 + MIN(49, CEIL(1 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(880 / (1 + MIN(49, CEIL(0.3333333333333333)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / (1 + MIN(49, 1)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / (1 + 1))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(880 / 2)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(440)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 440) IntelligenceMultiplier = 0.001 * FLOOR(146.96) IntelligenceMultiplier = 0.001 * 146 IntelligenceMultiplier = 0.146 IntelligenceMultiplier = 0.145 (Precision loss from 32-bit float) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 446 * 0.145 IntelligenceBonus = 64.67 FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 446 + 64.67 FinalDamage = 510.67 (Reference value is 510) Reference value for combat art level 49.6 is 516 Example 3: Shadow Warrior, level 200, Skeletal Fortification, level 1 Spoiler Total intelligence 462 Skeletal Fortification, level 1, no modifications BaseDamage = 26 (Physical) Spoiler FinalCombatArtLevel = 1 InitialDamage = 700 DamagePerLevel = 350 SumPercentageBonuses = 0 SpellBaseDamage = 25 BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350 * 1)) * 25 * 0.001) * (1 + 0)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350)) * 0.025) * 1) BaseDamage = FLOOR((700 + 350) * 0.025) BaseDamage = FLOOR(1050 * 0.025) BaseDamage = FLOOR(26.25) BaseDamage = 26 IntelligenceBonus = 80.21 (Reference value is 80) Spoiler Intelligence = 462 attrSdam_fact = 334 SpellBaseDamage = 25 BaseCombatArtLevel = 1 CharacterLevel = 200 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(462 * 40 / (1 + MIN(1, CEIL(200 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(18480 / (1 + MIN(1, CEIL(66.66666666666667)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + MIN(1, 67)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + 1))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / 2)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(9240)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 9240) IntelligenceMultiplier = 0.001 * FLOOR(3086.16) IntelligenceMultiplier = 0.001 * 3086 IntelligenceMultiplier = 3.086 IntelligenceMultiplier = 3.085 (Precision loss from 32-bit float) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 26 * 3.085 IntelligenceBonus = 80.21 FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 26 + 80.21 FinalDamage = 106.21 (Reference value is 106) Reference value for combat art level 2 is 106 (The same as level 1) Example 4: Shadow Warrior, level 200, Skeletal Fortification, level 98 (Requires Astral Lord Mastery, level 200) Spoiler Total intelligence 462 Skeletal Fortification, level 98, no modifications BaseDamage = 875 (Physical) Spoiler FinalCombatArtLevel = 98 InitialDamage = 700 DamagePerLevel = 350 SumPercentageBonuses = 0 SpellBaseDamage = 25 BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350 * 98)) * 25 * 0.001) * (1 + 0)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(34300)) * 0.025) * 1) BaseDamage = FLOOR((700 + 34300) * 0.025) BaseDamage = FLOOR(35000 * 0.025) BaseDamage = FLOOR(875) BaseDamage = 875 IntelligenceBonus = 78.75 (Reference value is 78) Spoiler Intelligence = 462 attrSdam_fact = 334 SpellBaseDamage = 25 BaseCombatArtLevel = 98 CharacterLevel = 200 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(462 * 40 / (1 + MIN(98, CEIL(200 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(18480 / (1 + MIN(98, CEIL(66.66666666666667)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + MIN(98, 67)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + 67))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / 68)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(271.7647058823529)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 271) IntelligenceMultiplier = 0.001 * FLOOR(90.514) IntelligenceMultiplier = 0.001 * 90 IntelligenceMultiplier = 0.09 IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 875 * 0.09 IntelligenceBonus = 78.75 FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 875 + 78.75 FinalDamage = 953.75 (Reference value is 953) Reference value for combat art level 98.9 is 962 Example 5: Shadow Warrior, level 200, Skeletal Fortification, level 3, +85.1% physical damage Spoiler Total intelligence 462 Skeletal Fortification, level 3, no modifications BaseDamage = 79 (Physical) Spoiler FinalCombatArtLevel = 3 InitialDamage = 700 DamagePerLevel = 350 SumPercentageBonuses = 851 (Shown as 85.0% due to precision loss) SpellBaseDamage = 25 BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(350 * 3)) * 25 * 0.001) * (1 + 851 / 1000)) BaseDamage = FLOOR(FLOOR((700 + FLOOR(1050)) * 0.025) * (1 + 0.851)) BaseDamage = FLOOR(FLOOR((700 + 1050) * 0.025) * 1.851) BaseDamage = FLOOR(FLOOR(1750 * 0.025) * 1.851) BaseDamage = FLOOR(FLOOR(43.75) * 1.851) BaseDamage = FLOOR(43 * 1.851) BaseDamage = FLOOR(79.593) BaseDamage = 79 IntelligenceBonus = 121.818 (Reference value 121) Spoiler Intelligence = 462 attrSdam_fact = 334 SpellBaseDamage = 25 BaseCombatArtLevel = 3 CharacterLevel = 200 IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(334 * 0.001 * FLOOR((25 / 25) * FLOOR(462 * 40 / (1 + MIN(3, CEIL(200 / 3)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(1 * FLOOR(18480 / (1 + MIN(3, CEIL(66.66666666666667)))))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + MIN(3, 67)))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / (1 + 3))) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(18480 / 4)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * FLOOR(4620)) IntelligenceMultiplier = 0.001 * FLOOR(0.334 * 4620) IntelligenceMultiplier = 0.001 * FLOOR(1543.08) IntelligenceMultiplier = 0.001 * 1543 IntelligenceMultiplier = 1.543 IntelligenceMultiplier = 1.542 (Precision loss from 32-bit float) IntelligenceBonus = BaseDamage * IntelligenceMultiplier IntelligenceBonus = 79 * 1.542 IntelligenceBonus = 121.818 FinalDamage = BaseDamage + IntelligenceBonus FinalDamage = 79 + 121.818 FinalDamage = 200.818 (Reference value is 200) Reference value for combat art level 4 is 214. Edited September 11 by Maneus 1 Link to comment
idbeholdME 436 Popular Post Share Posted June 23 (edited) 14 hours ago, Maneus said: Finally, we have uncovered another big mystery! I think SLD is going to like this one For spell-based combat arts, how the bonus damage from intelligence is calculated The formula is: IntelligenceDamageBonus = Intelligence * floor(BaseSpellDamage * (1 + SumPercentageBonuses)) * attrSdam_fact * 0.00004 / (min(BaseCombatArtLevel, ceil(CharacterLevel / 3)) + 1) Where: - IntelligenceDamageBonus - The value shown in the tooltip when you hover over the intelligence attribute (Combat Art Damage +X). - Intelligence - The total intelligence value (after Survival Bonus). - BaseSpellDamage - From spells.txt. Examples below. - SumPercentageBonuses - Sum of all percentage bonuses (bonus from the combat art itself, Aspect Lore, Ancient Magic, Combat Discipline, Rings with +X% damage of the same element). - attrSdam_fact - From balance.txt. Default value is 334 (unmodded game). - BaseCombatArtLevel - The base combat art level before being reduced by the penalty. For example: Out highest combat art level without penalty is 51, but we have used 56 runes, resulting in a final combat art level of 53.7. We must use the base level (56) in the formula. I assume that it's the same when the combat art level is boosted trough equipment. Seems to check out. An advanced example from my character with big numbers with a multi-element spell: 171 character level, 125.8 Cobalt Strike level (125 runes used), with the Heavy Damage bronze mod (increased magic damage) +241.6% bonus Physical and Magic damage, Combat Discipline +271.8%, Delphic Arcania Lore +398.2% Intelligence = 1409 1 + SumPercentageBonuses = 10.116 BaseSpellDamage = 20846,7999 (15190.6914 for the Magic portion, 5656.1085 for the Physical portion) Magic portion - (940 + (470*125.8)) / 40 = 15190.6914 Physical portion - (350 + (175*125.8)) / 40 = 5656.1085 1409*20846*334*0.00004 = 392 410 392 410 / (57 + 1) = 6765.69 Intelligence bonus displayed in-game: 6751 vs 6765 from the formula. Probably within the internal rounding error margin. The formula number is roughly 0.2% higher than what is displayed on the tooltip. With very high survival bonus and attribute values, the bonus increases the attributes at somewhat irregular chunks. The discrepancy is most likely caused by that. The internal rounding the game performs in the background will forever remain a mystery, but it also means that any and all calculations in the game are subject to at least some margin of error. Either way, Intelligence is not subject to diminishing returns like Strength and Dexterity are because of item levels. So it is actually pretty good at boosting spell damage, unlike the other two attributes, which only keep losing effectiveness the higher your weapon level is. Edited June 23 by idbeholdME 2 Link to comment
SLD 523 Popular Post Share Posted June 25 (edited) On 6/24/2024 at 12:53 AM, idbeholdME said: BaseSpellDamage = 20846,7999 (15190.6914 for the Magic portion, 5656.1085 for the Physical portion) Careful there what you call "BaseSpellDamage" is actually what Maneus formulas would call "(BaseSpellDamage * (1 + SumPercentageBonuses)", so your value is misleading even though you later use it correctly. On 6/24/2024 at 12:53 AM, idbeholdME said: 125.8 Cobalt Strike level (125 runes used) You don't give any explanation as to how you get this. I guess you have bonus points. But you would have to use the full number of points pre reduction acording to this: On 6/23/2024 at 10:20 AM, Maneus said: - BaseCombatArtLevel - The base combat art level before being reduced by the penalty. For example: Out highest combat art level without penalty is 51, but we have used 56 runes, resulting in a final combat art level of 53.7. We must use the base level (56) in the formula. I assume that it's the same when the combat art level is boosted trough equipment. so your calculation is off and as I don't know the number of bonus points you have I can't tell what the correct values would be. On 6/24/2024 at 12:53 AM, idbeholdME said: Either way, Intelligence is not subject to diminishing returns like Strength and Dexterity are because of item levels. So it is actually pretty good at boosting spell damage, unlike the other two attributes, which only keep losing effectiveness the higher your weapon level is. I do not understand how you can come to this conclusion. At higher Levels a character is expected to have access to higher attribute values. But also:Higher Level weapons have a higher base damage. So for attacks if you had no "diminishing returns" on the attribute effectiveness 1000 str would add the same relative amount on lvl 1 and a lvl 200 weapon yet its supposed to give about the same absolute amount. For the Spell Calculation the Character Level/ CA Level is used to "diminish" the relative value of Int. For easy example assuming the Spell Base Damage works like one of Maneus' examples: [BaseDamageperLVL=BaseDamage/2]: at a fixed Character Level of 200 and fixed ~800 Int you would always get around "10 Levels" of the CA added in Damage through Int so Ca Lvl 1 ->Dmg of Ca lvl 11 Ca Lvl 2 ->Dmg of Ca lvl 12 Int bonus remaining the exact same value until your CA LVL surpasses 67(I.e. charLVL/3). than the absolute Int effect slowly Increases to double at ca LVL 134 etc. So the relative effect in this scenario slowly went from a factor 11 to a factor 2 (from 1-67) and then reamains around the same (from 67-134) well now I do undestand your conclusion If you only look at the end portion of the scaling it reamins the same in relative bonus. And it actually increases in effectiveness if you allow combat arts over penalty levels or high CaLVL + low CharLVL scenarios. This however does not yet cover the question which one is "better" or any good at all. Because always adding like 20% of your Normal damage (relative) isn't necessarily better tha always adding an arbitrary absolute value. The absolute one could just be "diminishing" from relative 500% to relative 25%. And then there is also the fact while you can't scale SpellBaseDamage without raising the CA lvl and you don't want to limit your Character LVL it is still possible to raise the BaseWeaponDamage of a lowLVL weapon by socketing high LVL rings into it, bypassing all the diminishing effect while retaining some of the increase that comes with higher lvl weapons.In cases of very high attribute values this can significantly increase the dmage because of its absolute benefits. I have no access to a standard base game but the question of how "useful" attribute stacking is could be calculated in general by multiplying that slowly diminishing factor for weapon damage per Level with the base damage of wepons of the corresponding Lvl and then run some numbers on realistically achievable attribute values on certain character scenarios to compare the flat values of StrBonus with the weapon Base damage to calculate a relative value in endgame. This brings me back to the earlier example on the Int Spell Bonus. Its the same for weapon bonuses just that the section for (CALvL 1-67) is here for (weapon lvl 1-255). Just with the freak effect of underleveled weapons which you could call a bug. In all other terms its just the same, double Int gives double relative bonus, so does double strength. To determine whether the bonus of strength is "high enough" to matter in relative terms we need some exact values. So now that I've rambled on in written form for over 90 minutes I'll just post it and let others find out whether there is anything useful in here Edited June 25 by SLD 1 1 Link to comment
idbeholdME 436 Share Posted June 25 (edited) 16 hours ago, SLD said: You don't give any explanation as to how you get this. I guess you have bonus points. But you would have to use the full number of points pre reduction acording to this: so your calculation is off and as I don't know the number of bonus points you have I can't tell what the correct values would be. Assuming we do have to use the runes read = BaseCombatArtLevel, which in the previous example would have been 125, we get a result (6723) that is further off from the tooltip in-game (6751). The original discrepancy is also maybe caused due to having a fractional CA level. The game is also finnicky when it comes to rounding those. It could easily be either 125.81 or 125.89. 16 hours ago, SLD said: I do not understand how you can come to this conclusion. At higher Levels a character is expected to have access to higher attribute values. But also:Higher Level weapons have a higher base damage. So for attacks if you had no "diminishing returns" on the attribute effectiveness 1000 str would add the same relative amount on lvl 1 and a lvl 200 weapon yet its supposed to give about the same absolute amount. Simply in-the-field experience. At later levels with high level weapons, the damage increases from STR and DEX are basically meaningless, with the base value of attrWdam_fact being as low as it is. Try it yourself with the character editor. Give yourself 500 free points, pump strength and see how slowly the damage goes up when you have a character with level 150+ and have a 175+ level weapon. The lower level weapons actually do gain much higher attribute bonuses. As can be seen from the table, a level 1 weapon will get roughly 12 times more effective increase in damage from the relevant attribute than a level 200 one. Even then, due to the very low value of attrWdam_fact, the increases are still irrelevant. A single flat damage ring will give you the damage equal to a couple hundred strength points. There is no realistic scenario where putting that point into vitality, stamina or even willpower won't give incomparably more to your character. Here is a video from a level 200 character with a level 242 weapon (shown at the end of the video), where I dump over 100 points into strength. Strength goes up from 684 to 868 and the tooltip bonus goes up from 347 to 441 and the minimum damage of basic weapon attack goes up by a mere 78 points. https://www.dropbox.com/scl/fi/w83l5zmsuz81w6wvqu0y4/Sacred-2-Ice-Blood-2024-06-25-22-03-17.mp4?rlkey=7sf2n3udm33559qtnolnbtt6o&st=qp4vgjb6&dl=0 Even tried removing the converter to check whether Strength only increases the physical damage or something but no, the damage increases at the same speed even without the converter. As for STR and DEX bonuses not being multipled by extra damage, performed a very easy check - Battle Stance with the Aggression mod, which currently gives my character +453.8% extra damage. The value of the STR bonus did not change before and after activating it. So no, they do not scale with % bonuses and are just added additively to the final result, not even the base weapon damage like rings, but just a flat + after all other calculations are done. Meaning irrelevant in the later stages of the game. This is at least how it works with the PFP. One of 2 things was done in Ice & Blood: 1) Either they disabled the attribute bonus scaling with % bonuses (most likely) 2) They somehow changed the formula for it. Either way, it used to be viable to put points into STR and DEX before Ice & Blood release and you could meaningfully increase damage with them. So much so in fact, that it was deemed worth nerfing (into oblivion) in the expansion. Edited June 25 by idbeholdME 1 Link to comment
SLD 523 Share Posted June 26 18 hours ago, idbeholdME said: There is no realistic scenario where putting that point into vitality, stamina or even willpower won't give incomparably more to your character. Well I can say for sure that vitality and willpower do absolutely nothing on a character with 100% mitigation, which I would consider a very realistic scenario... 18 hours ago, idbeholdME said: Here is a video from a level 200 character with a level 242 weapon (shown at the end of the video), where I dump over 100 points into strength. Strength goes up from 684 to 868 and the tooltip bonus goes up from 347 to 441 and the minimum damage of basic weapon attack goes up by a mere 78 points. Looking at the Video example: Weapon Damage is 604-853 thats 1457/2 average or ~728.5 The original 684 STR show a damage bonus of 347 which is about 0.507 dmg per point of STR STR is then being raised to 868 so it goes up by 184 points so STR damage Bonus is expected to rise by ~93.345 damage points CA dmg rises from 25355-33954 to 25433-34064 which is a change of 78-110 or an average of 188/2 = 94 hmm pretty close how much did it do now? Well I can't see the rest of the gear but if there were no added dmg rings outside your weapon: average base dmg goes up from 728,5+347=1031 to 1125 or in realtive terms 94/1031= ~9.1% multiplicative increase in damage. For spending only 139 attribute points. Doesn't look like nothing to me... 18 hours ago, idbeholdME said: As for STR and DEX bonuses not being multipled by extra damage, performed a very easy check - Battle Stance with the Aggression mod, which currently gives my character +453.8% extra damage. The value of the STR bonus did not change before and after activating it. So no, they do not scale with % bonuses and are just added additively to the final result, not even the base weapon damage like rings, but just a flat + after all other calculations are done. Meaning irrelevant in the later stages of the game. This is at least how it works with the PFP. And this is were I give up on you. Maneus and I have already told you that the tooltip dmg is WRONG! Your video shows again that you have done no testing at all with the actual damage done and only looked at the proven wrong tooltip to contradict our reality. Here again Maneus' findings: On 6/16/2024 at 10:02 PM, Maneus said: 4) When it comes to actual damage dealt, the attribute bonus (from Strength, Dexterity, Intelligence) IS actually multiplied by any percentage bonuses you have. I hope the confusion is now finally cleared up. I don't know what else I could say to make it more clear. 1 Link to comment
idbeholdME 436 Popular Post Share Posted June 26 (edited) 3 hours ago, SLD said: Maneus and I have already told you that the tooltip dmg is WRONG! Turns out it indeed is. Finally had some time for tests. 6 normal hits, 8 crit hits. Before: 684 STR, 347 bonus Double bonus, so 1365 (closest possible due to SB). 695 bonus. Achieved by dumping 516 points into STR, 684 STR: Normal - 17034, 18966, 17661, 20243, 17346, 17638: average 18148 Crits - 23748, 25070, 23245, 23879, 23943, 24598, 25124, 24537: average 24268 1365 STR Normal - 26735, 26806, 23642, 24932, 26799, 24044: average 25493 Crits - 29669, 30012, 30861, 31563, 29147, 28765, 28617, 30675: average 29913 Conclusion - dumping 516 points into STR, more than is available in the entire 200 levels your character can gain (401) netted a 40% (probably too high due to small sample size) increase in left click attacks and 26% increase in critical hits. Seemed about 20 or so % for Pelting Strike hits. Not as worthless as previously thought, but still extremely lackluster. EDIT: Larger sample size: 684 STR, 347 bonus: Normal - 20221, 19805, 22191, 18318, 19807, 21029, 17125, 20810, 16770, 16746, 17450, 21324, 20574, 19917, 16397, 20393, 17115, 20081, 21108, 20101 - 19364.2 average Crits - 24036, 24347, 24556, 24236, 24394, 25242, 23419, 24062, 25313, 24023, 25402, 24155, 23810, 24676, 24029, 24275, 24107, 24853, 23405, 23809 - 24307.45 average (Interesting note - for some reason, Critical Hits have a much tighter spread than normal hits. It would seem like a Critical Hit actually causes a bias to the damage roll, so that values closer to the maximum damage of the weapon are picked more often) 1365 STR, 695 bonus Normal - 25319, 26810, 24278, 24932, 27420, 24935, 26789, 26818, 23341, 24186, 22635, 26533, 27198, 22070, 26848, 22413, 23737, 25660, 24551, 25505 - 25098.95 average Crits - 30776, 29354, 30503, 31119, 29540, 30866, 31873, 28607, 29910, 29831, 30049, 29982, 28971, 29901, 29525, 29391, 28990, 30366, 30012, 29556 - 29956.1 average Doubling Strength bonus led to an increase of 29.6% for normal hits (higher most likely due to better armor penetration) and 23.2% for Critical Hits. Didn't do an extensive test for Pelting Strikes, but seemed to be about a ~20% increase by eye. The entire escapade required dumping 516 points into strength. Still will never put a point into STR or DEX unless I increase the attrWdam_fact value in balance.txt. Edited June 26 by idbeholdME 3 Link to comment