Jump to content


How is Sacred 2 Weapon Damage Calculated


Recommended Posts

 
 
Posted (edited)

Another exception to the list:

If the total damage from spells.txt (any combination of InitialDamage and DamagePerLevel) ends up being exactly 8040, then the game decides that the resulting BaseDamage is not 201 as it should be, but 200. This ends up lowering the IntelligenceBonus and the FinalDamage too.

When the total is (8000, 8041, 8080, 80040, 80400), then it correctly calculates BaseDamage as (200, 201, 202, 2001, 2010).

Edit: I'll look into this again when I have the time. If I find anything I'll update this post.

Edited by Maneus
Link to comment
 
 
6 hours ago, Maneus said:

I'm happy to announce that we have a damage calculator for spell-based combat arts! https://darkmatters.org/forums/index.php?/files/file/816-sacred-2-calc-spells/

 

 

Bravo Maneus...  This topic is an amazing read... for adventure, teamwork and, ultimately.. to solution!!

Thanks for putting all your work into a calculator AND making it downloadeable.... thanks for your work and love of this journey!

:JC_hurrah:

gogo

  • Appreciation 1
Link to comment
 

Seeing your formula for spell damage, weapon lvl doesn't appear here. Did you ever test wether intelligence based weapons decrease intelligence bonus damage? And what about lightsabers being willpower based weapons?

Link to comment
 
Posted (edited)
4 hours ago, Lindor said:

Seeing your formula for spell damage, weapon lvl doesn't appear here. Did you ever test wether intelligence based weapons decrease intelligence bonus damage? And what about lightsabers being willpower based weapons?

Hi, Lindor. I hope I'm not misunderstanding your question.

Weapons receive bonus damage from the respective attribute (Strength, Dexterity, Intelligence, and certainly Willpower in the CM patch), shown as Weapon Damage +X.

Spells (specifically spell-based combat arts) receive bonus damage only from Intelligence, shown as Combat Art Damage +X.

One of the parameters in the formula for Weapon Damage +X is indeed the item level. But the formula for Combat Art Damage +X is different, because spells do not use weapons.

If you are using a staff (intelligence-based weapon) and a spell, then, when you hover over the intelligence attribute, you will see both the Weapon Damage +X and the Combat Art Damage +X bonuses. They are independent of each other.

The effectiveness of each attribute point decreases for both, but for different reasons. For Weapon Damage +X it is because of the item level. For Combat Art Damage +X it is because of the character level and/or combat art level.

I hope I explained this well :)

 

Edit: From what I've tested, the formula for Weapon Damage +X is the exact same regarding Strength, Dexterity and Intelligence. I don't have the CM patch to test with Willpower, but I assume that it is using the same formula too.

 

Edited by Maneus
  • Thanks! 1
Link to comment
 

Hi Maneus :)

12 minutes ago, Maneus said:

I hope I explained this well :)

Yeah you did but apparently I did not. I'm trying to be more precise.

 

Given that in Ice&Blood and later versions, when single-handedly wielding one of two swords with the same stats including base damage but different levels, you receive less Weapon Damage +X from strength when wielding the one of higher level, the questions where:

  1. When wielding one of two intelligence-based weapons like magic staves with the same stats including base damage but different levels, do you receive less Combat Art Damage +X from intelligence when wielding the one of higher level?
  2. When wielding one of two intelligence-based weapons like magic staves with the same stats including base damage but different levels, do you receive less Weapon Damage +X from intelligence when wielding the one of higher level?
  3. In CM-Patch and later, when wielding one of two willpower-based weapons like lightsabers with the same stats including base damage but different levels, do you receive less Weapon Damage +X from willpower when wielding the one of higher level?

Question 1 has been answered, but not 2 and 3 :). And now that I'm thinking about it, I can think of even more questions when it comes to Hybrid damage based combat arts like magic coup. There is a whole lot more to figure out there I think. Like do these hybrid spells receive bonus damage from both ends, Combat Art Damage and Weapon Damage, or only the latter?

Link to comment
 
Posted (edited)
2 hours ago, Lindor said:

Hi Maneus :)

Yeah you did but apparently I did not. I'm trying to be more precise.

 

Given that in Ice&Blood and later versions, when single-handedly wielding one of two swords with the same stats including base damage but different levels, you receive less Weapon Damage +X from strength when wielding the one of higher level, the questions where:

  1. When wielding one of two intelligence-based weapons like magic staves with the same stats including base damage but different levels, do you receive less Combat Art Damage +X from intelligence when wielding the one of higher level?
  2. When wielding one of two intelligence-based weapons like magic staves with the same stats including base damage but different levels, do you receive less Weapon Damage +X from intelligence when wielding the one of higher level?
  3. In CM-Patch and later, when wielding one of two willpower-based weapons like lightsabers with the same stats including base damage but different levels, do you receive less Weapon Damage +X from willpower when wielding the one of higher level?

Question 1 has been answered, but not 2 and 3 :). And now that I'm thinking about it, I can think of even more questions when it comes to Hybrid damage based combat arts like magic coup. There is a whole lot more to figure out there I think. Like do these hybrid spells receive bonus damage from both ends, Combat Art Damage and Weapon Damage, or only the latter?

Given the stats are somehow the same, then yes, the item with the higher level will show a lower value for the Weapon Damage +X bonus.

But we must make a distinction between the "original" item level, and the modified one (through socketing). Example: If we socket a level 202 Ice Crystal into a level 1 sword, the sword now states that it is a level 202 item, but the Weapon Damage +X remained the same - it is still based on the original item level of 1.

Also, the ItemLevelMultiplier (from the formula) becomes 0.0016 at item level 203, and remains the same all the way to item level 220 and probably beyond (I don't have data for higher item levels). Again, given the same stats, there will be no difference between a level 203 item and a level 220 item.

If you are asking specifically about Intelligence as opposed to Strength or Dexterity - my tests show that they all work the same. While I don't have the CM patch to test with Willpower, I have no reason to doubt that it is any different.

 

Weapon-based and hybrid combat arts do show the Combat Art Damage +X bonus, but the value is exactly the same as the Weapon Damage +X bonus. It is simply mirroring the other bonus and not actually providing any extra damage.

 

If you have any other questions, ask away. I might not be able to answer them right now, but I'll certainly keep them in mind for later :)

 

Edit: I don't want it to seem like we've figured it all out and there is nothing more to add. Instead, it is all a work in progress. In fact, I'd be really happy if other people tested the formulas and posted their results. Especially if someone could do it on the CM patch with lightsabers - that would be amazing :) 

Edited by Maneus
Link to comment
 
8 hours ago, Lindor said:

In CM-Patch and later, when wielding one of two willpower-based weapons like lightsabers with the same stats including base damage but different levels, do you receive less Weapon Damage +X from willpower when wielding the one of higher level?

In D2F that is correct. I doubt it's any different with only the CM Patch. All weapon types also seem to use the same numbers here so the amount of damage a weapon has to deal to get a specific amount of damage bonus per attribute point is the same on all weapon types. At least I never stumbled on measurable exceptions. Caveat remains that there was no exhaustive test so this information is not Maneus-Level and it comes from D2F.
 

8 hours ago, Lindor said:

when it comes to Hybrid damage based combat arts like magic coup.

I don't think there are any hybrid damage based combat arts in the game. Combat arts either use the Weapon to base their damage on or don't use the weapon damage at all. Magic Coup has no damage of it's own, so it's a pure weapon damage based CA. And weapon based ones that "add" a damage bonus through a mod option like frenzied rampage's bonus poison damage add this damage to the weapon damage calculation. Where exactly? That's a question for Maneus :)
I think it's added like a ring so no effect on the attribute bonuses. I know that according to tooltips(which we know like to lie) it does not double dip tactics lore. So the damage appears to be added unmodified like an extra damage ring and then multiplied with all damage bonuses from gear and the combat art itself. I'm sure Maneus will soon have more reliable data on this... :)

Magic Coup is however special in a different way. It ignores the weapon when calculating it's animation speed. So yes it's kinda hybrid but not in terms of damage.

 

7 hours ago, Maneus said:

In fact, I'd be really happy if other people tested the formulas and posted their results.

I can't give accurate numbers as reading them is almost impossible with my eyesight. Depends a bit on the background etc. but it's definitely not a thing I have the energy for. I had no knowledge about the spell calculation's, so there's nothing to compare there and so far your weapon damage formulas haven't been in conflict with my expectations except for crit not affecting the attribute bonus. Now that I think of it, you haven't tested the deathblow property yet, right? It would be expected to be a separate multiplier like crit. Then there's damage conversion, but other than that I don't think there's much more affecting damage than you've already tested and to be honest, your results are already more accurate after a couple weeks work than what the community had in decades. I don't think we need more data on what you've already tested. Should someone knowing about this thread stumble upon conflicting data it's certainly gonna end up here. From my perspective your "Damage Theory" is about as solid as it can be.

  • Like! 1
Link to comment
 
Posted (edited)

I don't think I ever posted some test results for the Weapon Damage +X bonus. So here are some:

Testing with a Magic Staff (Intelligence)

Spoiler

Magic Staff (One-handed), level 215,  base damage 285-335

Intelligence = 462
attrWdam_fact = 250
TopLevelCalc = 200
damBasepoints = 20
BasepointsMultiplier = 500

AttributeBaseDamage = WeaponDamage

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(462 * 200 * FLOOR(100 * 20 / (20 + 215)) / 500))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * FLOOR(2000 / 235)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * FLOOR(8.51063829787234)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * 8))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(1478.4))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * 1478)
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(369.5)
AttributeBonus = AttributeBaseDamage * 0.001 * 369
AttributeBonus = AttributeBaseDamage * 0.369

MinAttributeBonus = MinAttributeBaseDamage * 0.369
MinAttributeBonus = 285 * 0.369
MinAttributeBonus = 105.165

MaxAttributeBonus = MaxAttributeBaseDamage * 0.369
MaxAttributeBonus = 335 * 0.369
MaxAttributeBonus = 123.615

AverageAttributeBonus = FLOOR((FLOOR(MinAttributeBonus) + FLOOR(MaxAttributeBonus)) / 2)
AverageAttributeBonus = FLOOR((FLOOR(105.165) + FLOOR(123.615)) / 2)
AverageAttributeBonus = FLOOR((105 + 123) / 2)
AverageAttributeBonus = FLOOR(228 / 2)
AverageAttributeBonus = FLOOR(114)
AverageAttributeBonus = 114 (Reference value is 114)

 

Ritual Staff (Two-handed), level 108, base damage 166-195 (69-81 physical, 97-114 poison)

Intelligence = 462
attrWdam_fact = 250
TopLevelCalc = 200
damBasepoints = 20
BasepointsMultiplier = 500

AttributeBaseDamage = WeaponDamage

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(462 * 200 * FLOOR(100 * 20 / (20 + 108)) / 500))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * FLOOR(2000 / 128)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * FLOOR(15.625)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(184.8 * 15))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(2772))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * 2772)
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(693)
AttributeBonus = AttributeBaseDamage * 0.001 * 693
AttributeBonus = AttributeBaseDamage * 0.693

Poison 67.221-79.002

Spoiler

MinAttributeBonus = MinAttributeBaseDamage * 0.693
MinAttributeBonus = 97 * 0.693
MinAttributeBonus = 67.221

MaxAttributeBonus = MaxAttributeBaseDamage * 0.693
MaxAttributeBonus = 114 * 0.693
MaxAttributeBonus = 79.002

Physical 47.817-56.133

Spoiler

MinAttributeBonus = MinAttributeBaseDamage * 0.693
MinAttributeBonus = 69 * 0.693
MinAttributeBonus = 47.817

MaxAttributeBonus = MaxAttributeBaseDamage * 0.693
MaxAttributeBonus = 81 * 0.693
MaxAttributeBonus = 56.133

AverageAttributeBonus = FLOOR((FLOOR(MinAttributeBonus) + FLOOR(MaxAttributeBonus)) / 2)
AverageAttributeBonus = FLOOR((FLOOR(67.221) + FLOOR(47.817) + FLOOR(79.002) + FLOOR(56.133)) / 2)
AverageAttributeBonus = FLOOR((67 + 47 + 79 + 56) / 2)
AverageAttributeBonus = FLOOR(249 / 2)
AverageAttributeBonus = FLOOR(124.5)
AverageAttributeBonus = 124 (Reference value is 124)

Testing with a Longbow (Dexterity)

Spoiler

Longbow, level 212, base damage 268-342

Dexterity = 441
attrWdam_fact = 250
TopLevelCalc = 200
damBasepoints = 20
BasepointsMultiplier = 500

AttributeBaseDamage = WeaponDamage

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(441 * 200 * FLOOR(100 * 20 / (20 + 212)) / 500))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(176.4 * FLOOR(2000 / 232)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(176.4 * FLOOR(8.620689655172414)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(176.4 * 8))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(1411.2))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * 1411)
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(352.75)
AttributeBonus = AttributeBaseDamage * 0.001 * 352
AttributeBonus = AttributeBaseDamage * 0.352

MinAttributeBonus = MinAttributeBaseDamage * 0.352
MinAttributeBonus = 268 * 0.352
MinAttributeBonus = 94.336

MaxAttributeBonus = MaxAttributeBaseDamage * 0.352
MaxAttributeBonus = 342 * 0.352
MaxAttributeBonus = 120.384

AverageAttributeBonus = FLOOR((FLOOR(MinAttributeBonus) + FLOOR(MaxAttributeBonus)) / 2)
AverageAttributeBonus = FLOOR((FLOOR(94.336) + FLOOR(120.384)) / 2)
AverageAttributeBonus = FLOOR((94 + 120) / 2)
AverageAttributeBonus = FLOOR(214 / 2)
AverageAttributeBonus = FLOOR(107)
AverageAttributeBonus = 107 (Reference value is 107)

Testing with a Two-handed Sword

Spoiler

Great Sword, level 210, base damage 362-491

Strength = 567
attrWdam_fact = 250
TopLevelCalc = 200
damBasepoints = 20
BasepointsMultiplier = 500

AttributeBaseDamage = WeaponDamage

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(567 * 200 * FLOOR(100 * 20 / (20 + 210)) / 500))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(226.8 * FLOOR(2000 / 230)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(226.8 * FLOOR(8.695652173913043)))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(226.8 * 8))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * FLOOR(1814.4))
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(0.250 * 1814)
AttributeBonus = AttributeBaseDamage * 0.001 * FLOOR(453.5)
AttributeBonus = AttributeBaseDamage * 0.001 * 453
AttributeBonus = AttributeBaseDamage * 0.453

MinAttributeBonus = MinAttributeBaseDamage * 0.453
MinAttributeBonus = 362 * 0.453
MinAttributeBonus = 163.986

MaxAttributeBonus = MaxAttributeBaseDamage * 0.453
MaxAttributeBonus = 491 * 0.453
MaxAttributeBonus = 222.423

AverageAttributeBonus = FLOOR((FLOOR(MinAttributeBonus) + FLOOR(MaxAttributeBonus)) / 2)
AverageAttributeBonus = FLOOR((FLOOR(163.986) + FLOOR(222.423)) / 2)
AverageAttributeBonus = FLOOR((163 + 222) / 2)
AverageAttributeBonus = FLOOR(385 / 2)
AverageAttributeBonus = FLOOR(192.5)
AverageAttributeBonus = 192 (Reference value is 192)

 

In some of the cases, there is a one point difference (so far) between the calculated value and the reference value, but I assume that it is because the formula is not 100% complete. Just look at how the revised formulas for spell-based combat arts look, and consider, that even they don't account for absolutely everything, like loss of precision from floating point numbers, number overflows, other parameteres from balance.txt, etc.

I'll be revisiting these formulas in the future, but first I need to figure out how the base damage of weapons is determined (from blueprint.txt, typification.txt, itemtype.txt, material.txt, iteminfo.txt). I need that in order to do accurate tests, just like how CharacterEditor is a prerequisite for everything so far, and how the formulas for spell-based combat arts help us understand how HCALWP works.

For example, I now know that it is the average(?) weapon damage that is used as the basis, and then there is a combination of weapondamagespread (in typification.txt) and dmgvariation (in blueprint.txt) that determines the range of the minimum/maximum damage. Removing the weapondamagespread and dmgvariation is how I plan to do actual damage tests from now on.

 

On 7/7/2024 at 6:46 AM, SLD said:

And weapon based ones that "add" a damage bonus through a mod option like frenzied rampage's bonus poison damage add this damage to the weapon damage calculation. Where exactly? That's a question for Maneus :)
I think it's added like a ring so no effect on the attribute bonuses. I know that according to tooltips(which we know like to lie) it does not double dip tactics lore. So the damage appears to be added unmodified like an extra damage ring and then multiplied with all damage bonuses from gear and the combat art itself. I'm sure Maneus will soon have more reliable data on this... :)

 

A quick test shows that it acts exactly like a flat damage ring, but with poison damage instead of physical.

Spoiler

spells.txt

Spoiler

mgr.defineSpell( "sk_tc_attacke", {
    eiStateName = "cSMSKAttack",
    fxTypeCast = "",
    fxTypeSpell = "",
    duration = 0.000000,
    animType = "ANIM_TYPE_SM07",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDESM07-SPECIAL",
    causesSpellDamage = 0,
    tokens = {
        entry0 = {"et_mult_weapondamage", 899, 1, 0, 9 },
        entry1 = {"et_baseAW", 200, 250, 0, 5 },
        entry2 = {"et_damage_any_rel", 320, 80, 0, 5 },
        entry3 = {"et_chance_doublehit", 200, 0, 1, 5 },
        entry4 = {"et_chance_bleeding", 98, 2, 2, 5 },
        entry5 = {"et_chance_doublehit", 200, 0, 3, 5 },
        entry6 = {"et_chance_criticalhit", 99, 1, 4, 5 },
        entry7 = {"et_weapondamage_poison", 28, 14, 5, 9 },
        entry8 = {"et_life_leech", 20, 10, 6, 9 },
    },
    fightDistance = 45.000000,
    aspect = "EA_SK_TACTICALCOMBAT",
    cooldown = 0.000000,
    soundProfile = 0,
    cost_level = 250,
    cost_base = 500,
    focus_skill_name = "skill_SK_tactical_combat_focus",
    lore_skill_name = "skill_tactics_lore",
    spellClass = "cSpellSMove",
    spellcontroltype = "eCAtype_a_weapon_attack",
    spelllogictype = "ca_ct_direct_attack",
    magicType = "MAGIC_TYPE_ATTACK",
    sorting_rank = 1,
})

The corresponding entry is:

entry7 = {"et_weapondamage_poison", 28, 14, 5, 9 },

The first number is the InitialDamage, and the second number is the PerLevelDamage.

The formula is:

PosionDamage = (InitialDamage + (FinalCombatArtLevel * PerLevelDamage)) / 10

 

It is further modified by all percentage bonuses, including the one in entry2, just like regular flat damage rings.

I do need to do more in-depth testing, but that would be at another time. :)

 

Edited by Maneus
  • Like! 1
Link to comment
 
Posted (edited)
On 7/7/2024 at 6:46 AM, SLD said:

Magic Coup is however special in a different way. It ignores the weapon when calculating it's animation speed. So yes it's kinda hybrid but not in terms of damage.

Some time ago I was playing with a seraphim that used Archangel's Wrath (another hybrid combat art) as the main form of attack. I was suprised to see that, when using daggers, the attack animation was much faster than with a two-handed weapon. The projectile(s) speed was still the same, but the swinging part was noticeably different, which also affects when the projectile will come out.

Another thing that I learned from other people is that Attack Speed +X% affects the speed of left-click attacks and (non-hybrid) weapon-based combat arts, but Casting Speed +X% apparently affects all combat arts, including the non-hybrid weapon-based. I haven't tested this myself, but I find it quite interesting. It's also mentioned in the wiki https://www.sacredwiki.org/index.php/Sacred_2:Casting_Speed

Specifically for Magic Coup, allegedly it does lower damage when using a ranged weapon as opposed to a melee weapon. This is something that I want to test at some point.

Edit: Since Dashing Alacrity gives both Attack Speed +X% and Casting Speed +X%, I wonder if non-hybrid weapon-based combat arts benefit from both. Edit2: According to the inventory screen, it doesn't.

Edit3: I can confirm that Casting Speed +X% affects the execution speed of Soul Hammer. It is reflected in the inventory screen, and does actually make the animation faster when fighting. For Dashing Alacrity, my guess is that it is meant to be a single bonus that increases both types of speed. It is misleadingly shown as two separate bonuses (Attack Speed +X% and Casting Speed +X%) in the Bonus Overview.

 

Edit4: The above was tested with the Sword Weapons skill and apparently Weapon Lore skills work differently than expected. See the posts below.

Edited by Maneus
Link to comment
 
13 hours ago, SLD said:

In D2F that is correct.

Thx! Good to know! It has been a strategy using willpower boosting buffs with lightsabers, I think it was the dryad who can get her willpower to astronomical values, or was it the inquisitor? Anyways, always wanted to know wether that strategy is really as broken as it has been anounced in builds multiple times. Given the anti-synergy with item level, I doubt that it's that good of a strategy.

13 hours ago, SLD said:

I don't think there are any hybrid damage based combat arts in the game.

There are spell damage based combat arts, weapon damage based combat arts and hybrid damage based combat arts. This classification system is not made by me and has been established for a very long time. You can read more about this in the wiki.

11 hours ago, Maneus said:

from blueprint.txt, typification.txt, itemtype.txt, material.txt, iteminfo.txt

blueprint.txt, typification.txt and material.txt do indeed define general rules as to how damage works. If you're interested in speed and damage of combat arts and items, you should take a look at balance.txt, animation.txt and spells.txt as well.

Itemtype.txt is a very important file for modding, but it is not that important for your mission. When you have the itemtype of an item, you can use Iteminfo.txt to figure out the material of a specific item, but neither of these files produce any general rule for how damage or speed work.

21 hours ago, Maneus said:

If you have any other questions, ask away. I might not be able to answer them right now, but I'll certainly keep them in mind for later :)

I say this much - having complete formulae would be an argument for me redoing the blueprint.txt functionality overhaul. But on the other hand I have grown somewhat tired of modding lately - just want to publish my mod at last. But, who knows, maybe afterwards, who knows what happens:)

 

  • Appreciation 1
Link to comment
 
Posted (edited)
On 6/19/2024 at 4:20 PM, SLD said:

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)

On 6/25/2024 at 7:33 AM, SLD said:

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.

 

That sounded very interesting so I decided do a test. I bought a level 1 weapon with 2 silver sockets. I also bought two level 220 rings with 63 flat damage each.

Weapon, not socketed

Spoiler

Ironclad Hatchet of Numbing, level 1, base damage 29-36
Strength = 1000
attrWdam_fact = 250
BasepointsMultiplier = 500
AverageBaseDamage = 32.5
ItemLevelMultiplier = 0.019

DamageBonus = Strength * AverageBaseDamage * attrWdam_fact * ItemLevelMultiplier / BasepointsMultiplier
DamageBonus = 1000 * 32.5 * 250 * 0.019 / 500
DamageBonus = 154375 / 500
DamageBonus = 308.75 (Reference value is 308)

The displayed final damage is 304-378

Weapon, socketed with two 63-63 damage rings (in silver sockets)

Spoiler

Ironclad Hatchet of Numbing, level 220, base damage 165-172
Strength = 1000
attrWdam_fact = 250
BasepointsMultiplier = 500
AverageBaseDamage = 168.5
ItemLevelMultiplier = 0.019

DamageBonus = Strength * AverageBaseDamage * attrWdam_fact * ItemLevelMultiplier / BasepointsMultiplier
DamageBonus = 1000 * 168.5 * 250 * 0.019 / 500
DamageBonus = 800375 / 500
DamageBonus = 1600.75 (Reference value is 1600)

The displayed final damage is 1732-1806

So it is true! I wonder if its possible to make a build around this.

Thank you, SLD, for telling me about this! :)

 

Edited by Maneus
  • Appreciation 1
Link to comment
 
Posted (edited)
On 6/19/2024 at 4:20 PM, SLD said:

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)

I decided to test this too.

BeeEffGee in spells.txt

Spoiler

mgr.defineSpell( "se_te_beeeffgee", {
    eiStateName = "cSpellCast",
    fxTypeCast = "FX_SE_BEEEFFGEE_C",
    fxTypeSpell = "FX_SE_BEEEFFGEE",
    fxTypeCastSpecial = "FX_SE_CAST_L",
    duration = 10.000000,
    animType = "ANIM_TYPE_SM10",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDESM07-SPECIAL",
    causesSpellDamage = 1,
    tokens = {
        entry0 = {"et_summon_level", 10, 10, 0, 8 },
        entry1 = {"et_AW_rel", 100, 20, 0, 5 },
        entry2 = {"et_summon_item", 1000, 1412, 0, 5 },
        entry3 = {"et_addskill_distancewpn", 30, 20, 0, 5 },
        entry4 = {"et_item_chance_piercing", 200, 1, 0, 133 },
        entry5 = {"et_itemdam_phy", 80, 20, 1, 133 },
        entry6 = {"et_regThisBuff", 500, 5, 2, 8 },
        entry7 = {"et_itemdam_phy", 80, 20, 3, 133 },
        entry8 = {"et_regThisBuff", 500, 5, 4, 8 },
        entry9 = {"et_item_chance_surehit", 100, 1, 5, 133 },
        entry10 = {"et_item_chance_piercing", 500, 5, 6, 133 },
    },
    fightDistance = 0.000000,
    aspect = "EA_SE_TECHNICS",
    cooldown = 0.000000,
    soundProfile = 0,
    cost_level = 667,
    cost_base = 667,
    focus_skill_name = "skill_SE_technics_focus",
    lore_skill_name = "skill_SE_technics_lore",
    spellClass = "cSpellSeBeeeffgee",
    spellcontroltype = "eCAtype_t_buff",
    sorting_rank = 5,
})

Lets look at these entries:

entry5 = {"et_itemdam_phy", 80, 20, 1, 133 },
entry7 = {"et_itemdam_phy", 80, 20, 3, 133 },

They represent the "Enhancement" modifications. If you don't take them, then there is no difference whether you summon the BFG from an empty slot (fists), or a weapon.

But if you do take them, then something interesting happens.

I'm testing on a level 200 Seraphim with 200 points in Revered Technology Focus. Dexterity is 548.

BFG, level 98, no modifications

Spoiler

Weapon level 200
Weapon base damage 367-508
Dexterity bonus +215
Final damage 365-506 Ice, 182-252 Physical, 547-758 Total

BFG, level 98, 2x Enhancement modification, summoned while a weapon is equipped

Spoiler

Weapon level 200
Weapon base damage 367-508
Dexterity bonus +215
Final damage 365-506 Ice, 590-660 Physical, 955-1166 Total

That is exactly 408 more physical damage which is what is expected.

PhysicalDamage = (160 + (98 * 40)) / 10
PhysicalDamage = (160 + 3920) / 10
PhysicalDamage = 4080 / 10
PhysicalDamage = 408

In the above example, the extra damage works similarly to flat damage rings (not socketed on the weapon).

BFG, level 98, 2x Enhancement modification, summoned from an empty slot

Spoiler

Weapon level 200
Weapon base damage 775-916
Dexterity bonus +416
Final damage 365-506 Ice, 791-861 Physical, 1156-1367 Total

The weapon base damage is increased by exactly 408, resulting in a higher bonus from dexterity, and therefore a higher final damage.

In the above example. the extra damage is added directly to the weapon base damage, therefore significantly increasing the bonus from dexterity and the final damage. This is also what happens when you socket a flat damage ring on the weapon itself.

So the difference in damage comes from the Weapon Damage +X provided by dexterity.

Edited by Maneus
Mixed up Lore and Focus
Link to comment
 
Posted (edited)
5 hours ago, Maneus said:

I'm testing on a level 200 Seraphim with 200 points in Revered Technology Lore.

Are you sure about that? I could swear the tech lore should be a multiplicative effect on the enhancement mods before they are added to your base damage. So if you had tactics lore they would afterwards multiply by each other or using archangel's wrath tech lore would multiply with itself. At least that has been the expectation so far and the reason why bfg seras take tech lore at all. Your numbers however suggest the opposite, please investigate the effects of tech lore here.

 

 

9 hours ago, Lindor said:

Thx! Good to know! It has been a strategy using willpower boosting buffs with lightsabers, I think it was the dryad who can get her willpower to astronomical values, or was it the inquisitor? Anyways, always wanted to know wether that strategy is really as broken as it has been anounced in builds multiple times. Given the anti-synergy with item level, I doubt that it's that good of a strategy.

7 hours ago, Maneus said:

So it is true! I wonder if its possible to make a build around this.

It's the shadow warrior buff that gives all that willpower. It is already very powerful when used normally but with the socketing method and a low level lightsaber it can be quite op. For example in D2F(careful higher attribute effect) you can easily get more than 6.5k damage bonus from willpower on a 2 socketed lvl 10 lightsaber. Yes that is 6.5k BASE DMG so I guess it's not a bad strategy wielding the damage of more than 11 normal standard one handed weapons at once :)
 

9 hours ago, Lindor said:

and hybrid damage based combat arts. This classification system is not made by me and has been established for a very long time. You can read more about this in the wiki.

Have taken a look and surprisingly there is allegedly one damage effecting difference to them (combat discipline) so calling them hybrid damage is not as much off as I thought before. It's a confusing way of thought as they're just off-lore weapon based CAs but according to the wiki you're right to assume that their damage calculation may be different as with the aforementioned combat discipline there might be more differences about them so testing dmg formulas on them is warranted.
 

18 hours ago, Maneus said:

Specifically for Magic Coup, allegedly it does lower damage when using a ranged weapon as opposed to a melee weapon. This is something that I want to test at some point.

Never noticed anything like that. Have my doubts about it.

18 hours ago, Maneus said:

Edit3: I can confirm that Casting Speed +X% affects the execution speed of Soul Hammer. It is reflected in the inventory screen, and does actually make the animation faster when fighting. For Dashing Alacrity, my guess is that it is meant to be a single bonus that increases both types of speed. It is misleadingly shown as two separate bonuses (Attack Speed +X% and Casting Speed +X%) in the Bonus Overview.

As far as I know ALL Combat arts use casting speed for their execution speed and only casting speed. Attack speed, like the mod from items, doesn't affect any combat art, only left click attacks. The weapon lores however do give both attack and cast speed with the weapon type equipped(USED to be precise) and the attack speed malus for wearing a too high level weapon also effects both attack and cast speed with that weapon being used. Clarification to "used" as opposed to just "equipped" because it only affects weapon based combat arts not spell ones and not the hybrid ones that are spells with a weapon based damage.

18 hours ago, Maneus said:

Another thing that I learned from other people is that Attack Speed +X% affects the speed of left-click attacks and (non-hybrid) weapon-based combat arts,

As this stands in opposition to what I just said please double check with attack speed item mods.

18 hours ago, Maneus said:

I was suprised to see that, when using daggers, the attack animation was much faster than with a two-handed weapon. The projectile(s) speed was still the same, but the swinging part was noticeably different, which also affects when the projectile will come out.

That is an interesting piece of information. So the base animation depends on weapon type here. Though I kinda already know the opposite "benefit" where dual wielding causes spectral hand to take longer but still only hit once. Not that useful here :)

Edited by SLD
  • Like! 1
Link to comment
 
 
 

1) Archangel's Wrath

spells.txt

Spoiler

mgr.defineSpell( "se_te_schwertfeuer", {
    eiStateName = "cSpellCast",
    fxTypeCast = "FX_SE_SCHWERTFEUER_C",
    fxTypeSpell = "FX_SE_SCHWERTFEUER",
    fxTypeCastSpecial = "FX_SE_CAST_K",
    duration = 10.000000,
    animType = "ANIM_TYPE_ATTACKA",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDEATTACKA-SPECIAL",
    causesSpellDamage = 0,
    tokens = {
        entry0 = {"et_mult_weapondamage", 1100, 4, 0, 9 },
        entry1 = {"et_baseAW", 200, 350, 0, 5 },
        entry2 = {"et_damage_any_rel", 400, 100, 0, 5 },
        entry3 = {"et_physical_to_fire", 900, 100, 0, 5 },
        entry4 = {"et_missile_adapt", 300, 10, 0, 9 },
        entry5 = {"et_mult_weapondamage", 250, 1, 1, 9 },
        entry6 = {"et_missile_adapt", 300, 10, 2, 9 },
        entry7 = {"et_chance_areasplash", 750, 5, 3, 5 },
        entry8 = {"et_target_seeker", 1000, 0, 4, 133 },
        entry9 = {"et_chance_burning", 198, 2, 5, 133 },
        entry10 = {"et_chance_criticalhit", 198, 2, 6, 5 },
    },
    fightDistance = 525.000000,
    aspect = "EA_SE_TECHNICS",
    cooldown = 0.000000,
    soundProfile = 0,
    cost_level = 200,
    cost_base = 400,
    focus_skill_name = "skill_SE_technics_focus",
    lore_skill_name = "skill_SE_technics_lore",
    spellClass = "cSpellSeSchwertfeuer",
    spellcontroltype = "eCAtype_a_missile_attack",
    sorting_rank = 1,
})

 

Seraphim, level 200
Strength = 474
StrengthBonus = 63
Weapon damage in inventory screen: 211-211
BaseFistDamage = 148
Revered Technology Focus (Mastery), level 200
Archangel's Wrath, level 98, no modifications

Spoiler

The relevant entries are:
entry0 = {"et_mult_weapondamage", 1100, 4, 0, 9 },
entry2 = {"et_damage_any_rel", 400, 100, 0, 5 },

CombatArtMultiplier = (1100 + (FinalCombatArtLevel * 4)) / 1000
CombatArtMultiplier = (1100 + (98 * 4)) / 1000
CombatArtMultiplier = (1100 + 392) / 1000
CombatArtMultiplier = 1492 / 1000
CombatArtMultiplier = 1.492

PercentageBonus = (400 + (FinalCombatArtLevel * 100)) / 1000
PercentageBonus = (400 + (98 * 100)) / 1000
PercentageBonus = (400 + 9800) / 1000
PercentageBonus = 10200 / 1000
PercentageBonus = 10.2

CombatArtMultiplier = 1.492
PercentageBonus = 10.2

No other skills

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 10.2) * 1.492) + 63
FinalDamage = (148 * 11.2 * 1.492) + 63
FinalDamage = 2473.1392 + 63
FinalDamage = 2536.1392 (Reference value is 2534)

For the future: 262 Physical, 2272 Fire

Combat Discipline Mastery, level 75, +135.6%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 10.2 + 1.356) * 1.492) + 63
FinalDamage = (148 * 12.556 * 1.492) + 63
FinalDamage = 2772.565696 + 63
FinalDamage = 2835.565696 (Reference value is 2832)

For the future: 286 Physical, 2546 Fire

Combat Discipline (Mastery), level 75, +135.6%
Revered Technology Lore (Mastery), level 75, +180.8%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 10.2 + 1.356 + 1.808) * 1.492) + 63
FinalDamage = (148 * 14.364 * 1.492) + 63
FinalDamage = 3171.801024 + 63
FinalDamage = 3234.801024 (Reference value is 3232)

For the future: 319 Physical, 2913 Fire

 

2) Magic Coup

spells.txt

Spoiler

mgr.defineSpell( "he_ar_magischerschlag", {
    eiStateName = "cSMZealhit",
    fxTypeCast = "FX_HE_MAGISCHERSCHLAG_C",
    fxTypeSpell = "FX_HE_MAGISCHERSCHLAG",
    duration = 0.000000,
    animType = "ANIM_TYPE_SM13",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDESM13-SPECIAL",
    causesSpellDamage = 0,
    tokens = {
        entry0 = {"et_mult_weapondamage", 1200, 2, 0, 9 },
        entry1 = {"et_AW_rel", 500, 20, 0, 5 },
        entry2 = {"et_baseAW", 200, 350, 0, 5 },
        entry3 = {"et_damage_any_rel", 400, 100, 0, 5 },
        entry4 = {"et_physical_to_magic", 500, 20, 0, 5 },
        entry5 = {"et_chance_surehit", 300, 2, 1, 5 },
        entry6 = {"et_mult_weapondamage", 200, 1, 2, 9 },
        entry7 = {"et_life_leech", 50, 50, 3, 9 },
        entry8 = {"et_energy_leech_whit", 95, 5, 4, 5 },
        entry9 = {"et_chance_criticalhit", 200, 2, 5, 5 },
        entry10 = {"et_chance_areasplash", 500, 5, 6, 5 },
    },
    fightDistance = 45.000000,
    aspect = "EA_HE_ARCANE",
    cooldown = 0.000000,
    soundProfile = 0,
    cost_level = 150,
    cost_base = 300,
    focus_skill_name = "skill_HE_arcane_focus",
    lore_skill_name = "skill_HE_arcane_lore",
    spellClass = "cSpellSMove",
    spellcontroltype = "eCAtype_a_weapon_attack",
    sorting_rank = 2,
})

 

High Elf, level 200
Strength = 367
StrengthBonus = 42
Weapon damage in inventory screen: 171-171
BaseFistDamage = 129
Delphic Arcania Focus (Mastery), level 200
Magic Coup, level 98, no modifications

Spoiler

The relevant entries are:
entry0 = {"et_mult_weapondamage", 1200, 2, 0, 9 },
entry3 = {"et_damage_any_rel", 400, 100, 0, 5 },

CombatArtMultiplier = (1200 + (FinalCombatArtLevel * 2)) / 1000
CombatArtMultiplier = (1200 + (98 * 2)) / 1000
CombatArtMultiplier = (1200 + 196) / 1000
CombatArtMultiplier = 1396 / 1000
CombatArtMultiplier = 1.396

PercentageBonus = (400 + (FinalCombatArtLevel * 100)) / 1000
PercentageBonus = (400 + (98 * 100)) / 1000
PercentageBonus = (400 + 9800) / 1000
PercentageBonus = 10200 / 1000
PercentageBonus = 10.2

CombatArtMultiplier = 1.396
PercentageBonus = 10.2

No other skills

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((129 + 0) * (1 + 10.2) * 1.396) + 42
FinalDamage = (129 * 11.2 * 1.396) + 42
FinalDamage = 2016.9408 + 42
FinalDamage = 2058.9408 (Reference value is 2056)

For the future: 619 Physical, 1437 Magic

Combat Discipline Mastery, level 75, +135.6%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((129 + 0) * (1 + 10.2 + 1.356) * 1.396) + 42
FinalDamage = (129 * 12.556 * 1.396) + 42
FinalDamage = 2261.134704 + 42
FinalDamage = 2303.134704 (Reference value is 2301)

For the future: 689 Physical, 1612 Magic

Combat Discipline (Mastery), level 75, +135.6%
Delphic Arcania Lore (Mastery), level 75, +180.8%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((129 + 0) * (1 + 10.2 + 1.356 + 1.808) * 1.396) + 42
FinalDamage = (129 * 14.364 * 1.396) + 42
FinalDamage = 2586.726576 + 42
FinalDamage = 2628.726576 (Reference value is 2627)

For the future: 783 Physical, 1844 Magic

 

3) Spectral Hand

spells.txt

Spoiler

mgr.defineSpell( "sk_ap_geisterhand", {
    eiStateName = "cSpellCast",
    fxTypeCast = "FX_SK_GEISTERHAND_C",
    fxTypeSpell = "FX_SK_GEISTERHAND",
    fxTypeCastSpecial = "FX_SK_GEISTERHAND_C",
    duration = 10.000000,
    animType = "ANIM_TYPE_ATTACKA",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDEATTACKA-SPECIAL",
    causesSpellDamage = 0,
    tokens = {
        entry0 = {"et_mult_weapondamage", 1150, 2, 0, 9 },
        entry1 = {"et_baseAW", 200, 350, 0, 5 },
        entry2 = {"et_damage_any_rel", 200, 140, 0, 5 },
        entry3 = {"et_ThisSpeed", 200, 0, 1, 4 },
        entry4 = {"et_damage_any_rel", 100, 70, 2, 5 },
        entry5 = {"et_weapondamage_ice", 40, 10, 3, 9 },
        entry6 = {"et_chance_criticalhit", 198, 2, 4, 5 },
        entry7 = {"et_chance_doublehit", 250, 0, 5, 5 },
        entry8 = {"et_mult_weapondamage", 200, 1, 6, 9 },
    },
    fightDistance = 525.000000,
    aspect = "EA_SK_ASTRALPLANE",
    cooldown = 0.000000,
    soundProfile = 0,
    cost_level = 225,
    cost_base = 450,
    focus_skill_name = "skill_SK_astral_plane_focus",
    lore_skill_name = "skill_SK_astral_plane_lore",
    spellClass = "cSpellSkGeisterhand",
    spellcontroltype = "eCAtype_a_effect_attack",
    spelllogictype = "ca_ct_indirect_attack",
    sorting_rank = 1,
})

 

Shadow Warrior, level 200
Strength = 567
StrengthBonus = 75
Weapon damage in inventory screen: 223-223
BaseFistDamage = 148
Astral Lord Focus (Mastery), level 200
Spectral Hand, level 98, no modifications

Spoiler

The relevant entries are:
entry0 = {"et_mult_weapondamage", 1150, 2, 0, 9 },
entry2 = {"et_damage_any_rel", 200, 140, 0, 5 },

CombatArtMultiplier = (1150 + (FinalCombatArtLevel * 2)) / 1000
CombatArtMultiplier = (1150 + (98 * 2)) / 1000
CombatArtMultiplier = (1150 + 196) / 1000
CombatArtMultiplier = 1346 / 1000
CombatArtMultiplier = 1.346

PercentageBonus = (200 + (FinalCombatArtLevel * 140)) / 1000
PercentageBonus = (200 + (98 * 140)) / 1000
PercentageBonus = (200 + 13720) / 1000
PercentageBonus = 13920 / 1000
PercentageBonus = 13.92

CombatArtMultiplier = 1.346
PercentageBonus = 13.92

No other skills

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 13.92) * 1.346) + 75
FinalDamage = (148 * 14.92 * 1.346) + 75
FinalDamage = 2972.18336 + 75
FinalDamage = 3047.18336 (Reference value is 3046)

Combat Discipline Mastery, level 75, +135.6%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 13.92 + 1.356) * 1.346) + 75
FinalDamage = (148 * 16.276 * 1.346) + 75
FinalDamage = 3242.309408 + 75
FinalDamage = 3317.309408 (Reference value is 3316)

Combat Discipline (Mastery), level 75, +135.6%
Astral Lord Lore (Mastery), level 75, +180.8%

Spoiler

FinalDamage = ((BaseFistDamage + SumFlatBonuses) * (1 + SumPercentageBonuses) * CombatArtMultiplier) + StrengthBonus
FinalDamage = ((148 + 0) * (1 + 13.92 + 1.356 + 1.808) * 1.346) + 75
FinalDamage = (148 * 18.084 * 1.346) + 75
FinalDamage = 3602.477472 + 75
FinalDamage = 3677.477472 (Reference value is 3676)

 

Conclusion:

Combat Discipline stacks additively with all other percentage bonuses.

 

Phew :)

Link to comment
 
9 hours ago, Maneus said:

Combat Discipline stacks additively with all other percentage bonuses.

Thanks for testing and proving that everything works as expected. So at some point someone claimed "freaky behaviour" on the wiki and noone ever challenged it. Now all that reamins is that someone corrects that entry on the wiki...
That's why I love your work so much. We know how the data was acquired.
When we look at that statement from the wiki there's no way of knowing how it came to be. Could have been high quality science or just a gut feeling. It was certainly worded in a way that one would never suspect it could be wrong.

  • Thanks! 1
Link to comment
 

Aaaaand... holee molee...this thread is 42 pages long of eye-watering calculations... yeeeeeeeeeee hawwwwwwwww!!! :cow:

Maneus, I've just updated your permissions for the Da Wiki... I've sent you a pm with your login instructions and some links regarding where to publish in Wiki if you think this is canon and where to publish if you want to publish as a POV guides

Merci!

:drunkards:

gogo

  • Appreciation 1
Link to comment
 
 
 

How are HCALWP and the final combat art level (after penalty) determined?

First we need to determine, what I will call, the FocusValue.

Case 1: No focus skill

FocusValue = 1.75

Case 2: Focus skill without mastery

FocusValue = 1.75 + FLOOR(4000 * (FocusSkillLevel + 1.5) / (FocusSkillLevel + 100)) / 80

Case 3: Focus skill with mastery

FocusValue = 1.75 + FLOOR(6000 * (FocusSkillLevel - 32.5) / (FocusSkillLevel + 66)) / 80

 

The formula for HCALWP is:

HCALWP = FocusValue + CharacterLevel * 0.25

 

And the formula for the final combat art level is:

Case 1: BaseCombatArtLevel <= HCALWP

FinalCombatArtLevel = BaseCombatArtLevel

Case 2: BaseCombatArtLevel > HCALWP

FinalCombatArtLevel = (HCALWP * BaseCombatArtLevel * 2) / (HCALWP + BaseCombatArtLevel)

 

Or as a single formula (seems to achieve the same results):

FinalCombatArtLevel = MIN(BaseCombatArtLevel, (HCALWP * BaseCombatArtLevel * 2) / (HCALWP + BaseCombatArtLevel))

 

 

Edit: I'll give an example using idbeholdME's character.

Spoiler

CharacterLevel = 171
FocusSkillLevel = 233 (Mastery)
BaseCombatArtLevel = 187

FocusValue = 1.75 + FLOOR(6000 * (FocusSkillLevel - 32.5) / (FocusSkillLevel + 66)) / 80
FocusValue = 1.75 + FLOOR(6000 * (233 - 32.5) / (233 + 66)) / 80
FocusValue = 1.75 + FLOOR(6000 * 200.5 / 299) / 80
FocusValue = 1.75 + FLOOR(4023.411371237458) / 80
FocusValue = 1.75 + 4023 / 80
FocusValue = 1.75 + 50.2875
FocusValue = 52.0375

HCALWP = FocusValue + CharacterLevel * 0.25
HCALWP = 52.0375 + 171 * 0.25
HCALWP = 52.0375 + 42.75
HCALWP = 94.7875 (Reference value is 94)

FinalCombatArtLevel = (HCALWP * BaseCombatArtLevel * 2) / (HCALWP + BaseCombatArtLevel)
FinalCombatArtLevel = (94.7875 * 187 * 2) / (94.7875 + 187)
FinalCombatArtLevel = 35450.525 / 281.7875
FinalCombatArtLevel = 125.805882092002 (Reference value is 125.8058)

 

Edited by Maneus
Simplify formulas
  • Like! 1
Link to comment
 

How to give an item the item modifier All Skills +X, with X being the exact value that you need.

I decided to edit the unlockable item "Ceremonial Might". Unlockable items are easily accessible*, and, because they are unique, can be easily found in blueprint.txt.

* Each unlock code can only be used once per character, per difficulty. This information is stored in the character's own save file.

Ceremonial Might already has the item mod All Skills +X, so I will give an example of how it works.

There are three things that we must find in blueprint.txt:
- The blueprint (ID 2499)
- The bonus group (ID 515)
- The bonus (ID 370)

blueprint.txt

Spoiler

newBlueprint = {
  id = 2499,
  name = "unlock_shortsword_might",
  palettebits = "1111111111111111",
  dmgvariation = 90,
  minconstraints = {1,13,0},
  lvljump = 1,
  usability = 0,
  allotment_pmfpi = {1000,0,0,0,0},
  uniquename = "unique",
  specialuseonly = 0,
  bonusgroup0 = {527,1100,1,9,0},
  bonusgroup1 = {803,1250,1,9,0},
  bonusgroup2 = {515,1200,1,9,0},
  bonusgroup3 = {750,1000,1,9,0},
  bonusgroup4 = {857,1000,1,9,0},
  itemtypes = {2447,},
  wearergroups = {'WEARGROUP_DEFAULT',},
}
mgr.createBlueprint(2499, newBlueprint);

 

newBonusgroup = {
  id = 515,
  name = "SB_addskill_any                                                                                                                 ",
  bonuslist = { 370,},
}
mgr.createBonusgroup(515, newBonusgroup);

 

newBonus = {
--  name = "sb_addskill_any",
  rating = 38,
  basedonskill = "SKILL_INVALID",
  type = "BONUS_SKILL",
  spez = "SKILL_ANY",
  spez2 = "",
  usagebits = 65535,
  minconstraints = {15,9,0},
  difficultyvaluerange0 = {0,10,60},
  difficultyvaluerange1 = {1,12,75},
  difficultyvaluerange2 = {2,14,90},
  difficultyvaluerange3 = {3,17,105},
  difficultyvaluerange4 = {4,20,120},
}
mgr.createBonus(370, newBonus);

 

In the "blueprint", you will find the following:

Quote

 bonusgroup2 = {515,1200,1,9,0},

The first number is the ID of the bonus group.
The second number is a multiplier of the bonus.
The other three numbers are conditions for the bonus to appear.  Better explained here https://darkmatters.org/forums/index.php?/topic/22064-how-to-mod-items-stats-in-sacred-2/&do=findComment&comment=6973695

The bonus group has a list of only one bonus - the All Skills +X mod.

Quote

bonuslist = { 370,},

How bonus groups work https://darkmatters.org/forums/index.php?/topic/22888-how-do-you-do-bonusgroups-in-blueprinttxt/&do=findComment&comment=6988037

 

Lets look at the bonus itself:

Quote

minconstraints = {15,9,0},
difficultyvaluerange0 = {0,10,60},
difficultyvaluerange1 = {1,12,75},
difficultyvaluerange2 = {2,14,90},
difficultyvaluerange3 = {3,17,105},
difficultyvaluerange4 = {4,20,120},

The bonus has constraints just like blueprints do. If I understand it right, the numbers mean:
- The bonus can appear only at character level 15 and above
- The bonus can appear only on item tiers 9 and above
- The bonus can appear on any difficulty setting.

The "difficultyvaluerangeX" fields do exactly what they sound like - they specify the range of the value for each difficulty.
The first number is the difficulty.
The second number is the value at item level 0.
The third number is the value at item level 200.

The final formula is:

ValueOfBonus = FLOOR((FLOOR(((ValueAt200 - ValueAt0) / 200) * ItemLevel) + ValueAt0) * BlueprintMultiplier * 0.001)

AllSkills = FLOOR(ValueOfBonus / 10)

The displayed value does not have a decimal part. I believe that the decimal part is still there, it is just not shown. Some other item mods do show a decimal part, but only one digit after the decimal point.

 

So in niobium difficulty and at item level 100 the equation becomes:
ValueOfBonus = FLOOR((FLOOR(((ValueAt200 - ValueAt0) / 200) * ItemLevel) + ValueAt0) * BlueprintMultiplier * 0.001)
ValueOfBonus = FLOOR((FLOOR(((120 - 20) / 200) * 100) + 20) * 1200 * 0.001)
ValueOfBonus = FLOOR((FLOOR((100 / 200) * 100) + 20) * 1.2)
ValueOfBonus = FLOOR((FLOOR(0.5 * 100) + 20) * 1.2)
ValueOfBonus = FLOOR((FLOOR(50) + 20) * 1.2)
ValueOfBonus = FLOOR((50 + 20) * 1.2)
ValueOfBonus = FLOOR(70 * 1.2)
ValueOfBonus = FLOOR(84)
ValueOfBonus = 84

AllSkills = FLOOR(ValueOfBonus / 10)
AllSkills = FLOOR(84 / 10)
AllSkills = FLOOR(8.4)
AllSkills = 8 (Reference value is 8)

And at item level 200:
ValueOfBonus = FLOOR((FLOOR(((ValueAt200 - ValueAt0) / 200) * ItemLevel) + ValueAt0) * BlueprintMultiplier * 0.001)
ValueOfBonus = FLOOR((FLOOR(((120 - 20) / 200) * 200) + 20) * 1200 * 0.001)
ValueOfBonus = FLOOR((FLOOR((100 / 200) * 200) + 20) * 1.2)
ValueOfBonus = FLOOR((FLOOR(0.5 * 200) + 20) * 1.2)
ValueOfBonus = FLOOR((FLOOR(100) + 20) * 1.2)
ValueOfBonus = FLOOR((100 + 20) * 1.2)
ValueOfBonus = FLOOR(120 * 1.2)
ValueOfBonus = FLOOR(144)
ValueOfBonus = 144

AllSkills = FLOOR(ValueOfBonus / 10)
AllSkills = FLOOR(144 / 10)
AllSkills = FLOOR(14.4)
AllSkills = 14 (Reference value is 14)

 

Now I plan to test if the formulas for the Aspect Lore and Focus hold up at skill levels 200+ :)

 

Edit: I also tested if the formula works for the Chance to find valuables +X% mod. The decimal part is shown (1 digit after the decimal point), but suffers from the same loss of precision as the percentage bonus from Aspect Lore. For example:

Spoiler

ItemLevel = 200
BlueprintMultiplier = 1000

difficultyvaluerange4 = {4,0,100}
For All Skills +X the result in-game is 10
For Chance to find valuables +X% the result in-game is 10.0%

difficultyvaluerange4 = {4,0,99}
For All Skills +X the result in-game is 9
For Chance to find valuables +X% the result in-game is 9.8%

difficultyvaluerange4 = {4,0,98}
For All Skills +X the result in-game is 9
For Chance to find valuables +X% the result in-game is 9.8%

difficultyvaluerange4 = {4,0,97}
For All Skills +X the result in-game is 9
For Chance to find valuables +X% the result in-game is 9.6%

difficultyvaluerange4 = {4,0,96}
For All Skills +X the result in-game is 9
For Chance to find valuables +X% the result in-game is 9.6%

difficultyvaluerange4 = {4,0,95}
For All Skills +X the result in-game is 9
For Chance to find valuables +X% the result in-game is 9.5%

 

Edited by Maneus
Link to comment
 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...