Maneus 189 Popular Post Share Posted June 26 (edited) To answer the question about whether BaseCombatArtLevel includes equipment bonuses or not (because I wasn't sure either), I made the following test: Spoiler Shadow Warrior, level 200 Intelligence = 1000 attrSdam_fact = 100000 Skeletal Fortification, level 51, no modifications PhysicalDamage = (700 + (CombatArtLevel * 350)) / 40 PhysicalDamage = 463.75 BaseSpellDamage = 463 (Rounded down) No percentage bonuses IntelligenceDamageBonus = Intelligence * floor(BaseSpellDamage * (1 + SumPercentageBonuses)) * attrSdam_fact * 0.00004 / (min(BaseCombatArtLevel, ceil(CharacterLevel / 3)) + 1) IntelligenceDamageBonus = 1000 * floor(463 * (1 + 0)) * 100000 * 0.00004 / (min(51, ceil(200 / 3)) + 1) IntelligenceDamageBonus = 1000 * 463 * 100000 * 0.00004 / (min(51, 67) + 1) IntelligenceDamageBonus = 1852000 / 52 IntelligenceDamageBonus = 35615.38 (Reference value is 35604) Equipping an item that gives +6 Skeletal Fortification Skeletal Fortification, level 54.2, no modifications PhysicalDamage = (700 + (CombatArtLevel * 350)) / 40 PhysicalDamage = 491.75 BaseSpellDamage = 491 (Rounded down) IntelligenceDamageBonus = Intelligence * floor(BaseSpellDamage * (1 + SumPercentageBonuses)) * attrSdam_fact * 0.00004 / (min(BaseCombatArtLevel, ceil(CharacterLevel / 3)) + 1) IntelligenceDamageBonus = 1000 * floor(491 * (1 + 0)) * 100000 * 0.00004 / (min(57, ceil(200 / 3)) + 1) IntelligenceDamageBonus = 1000 * 491 * 100000 * 0.00004 / (min(57, 67) + 1) IntelligenceDamageBonus = 1964000 / 58 IntelligenceDamageBonus = 33862.06 (Reference value is 33898) To summarize: We have a combat art level of 51 (HCALWP) and increase it by +6 through equipment, resulting in a final level of 54.2. If BaseCombatArtLevel is 54, then the calculation result becomes 35709.09 (1811.09 higher than the reference value) If BaseCombatArtLevel is 55, then the calculation result becomes 35071.42 (1173.42 higher than the reference value) If BaseCombatArtLevel is 56, then the calculation result becomes 34456.14 (558.14 higher than the reference value) If BaseCombatArtLevel is 57, then the calculation result becomes 33862.06 (35.94 lower than the reference value) If BaseCombatArtLevel is 58, then the calculation result becomes 33288.13 (609.87 lower than the reference value) Given that 57 is the closest to the reference value, I assume that it is the correct value and that BaseCombatArtLevel includes the bonus from equipment. For idbeholdME's case, it doesn't matter what the BaseCombatArtLevel is, because the part ceil(CharacterLevel / 3) would still be lower. Unfortunately, the difference between the calculated result and the reference value is bigger than I initially thought. Sometimes the result is lower, sometimes it is higher, but the difference becomes more pronounced as the numbers get bigger. It could still be due to rounding error(s), as small differences can have a compounding effect, but it bothers me. Edit: If we don't round down BaseSpellDamage, but instead use it as is (491.75), then we get 33913.79 (15.79 higher than the reference value). If we want to blame rounding errors, then our result needs to be higher than the reference value. The displayed final damage is 34390. If we remove the displayed damage bonus, we get 492. It is strange for a value to be rounded up. Using 492 in the calculation results in an even higher number than with 491.75. Edited June 26 by Maneus 1 1 Link to comment
Maneus 189 Popular Post Share Posted July 2 (edited) Finally, after many, many hours of testing and filling multiple spreadsheets, here are the revised formulas. They should be 99.99% accurate (with a few caveats explained below). FinalDamage = BaseDamage + IntelligenceBonus Where: - FinalDamage - The combat art damage shown in the inventory screen or in the tooltip when hovering over the combat art itself. BaseDamage = FLOOR(FLOOR((InitialDamage + FLOOR(DamagePerLevel * FinalCombatArtLevel)) * SpellBaseDamage * 0.001) * (1 + SumPercentageBonuses)) Where: - BaseDamage - Not shown directly in-game, but you can easily find it by subtracting the displayed intelligence bonus from the displayed combat art damage. It is one of the components in the next formula. - InitialDamage and DamagePerLevel - Values from spells.txt. Specific for each combat art. - FinalCombatArtLevel - The combat art level after penalty. - SpellBaseDamage - The parameter from balance.txt. Default value is 25 (unmodded game). - 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). IntelligenceMultiplier = 0.001 * FLOOR(attrSdam_fact * 0.001 * FLOOR((25 / SpellBaseDamage) * FLOOR(Intelligence * 40 / (1 + MIN(BaseCombatArtLevel, CEIL(CharacterLevel / 3)))))) - MysteriousPenalty IntelligenceBonus = BaseDamage * IntelligenceMultiplier Where: - IntelligenceBonus - The value shown in the tooltip when you hover over the intelligence attribute (Combat Art Damage +X). - attrSdam_fact - The parameter from balance.txt. Default value is 334 (unmodded game). - Intelligence - The total intelligence value (after Survival Bonus). - BaseCombatArtLevel - The base combat art level before penalty. Add together the runes used + equipment bonuses. - MysteriousPenalty - It is either exactly 0, or exactly 0.1% of the BaseDamage. No exceptions. I was not able to figure out the mechanism behind it. It seems that the combination of attrSdam_fact and the combat art level have something to do with it. In practice, since attrSdam_fact is constant, this penalty will likely appear every other combat art level (irregularly). But the BaseDamage must also be high enough to make a difference. It is the result of precision loss from using a 32-bit float. Caveats: - In spells.txt, multiple entries of the same damage element (physical, magic, fire, ice, poison) are added together. This applies to percentage bonuses too (in general). There is no rounding inbetween. But when there are multiple elements involved, all of the formulas must be used for each element individually. Round down the results, then add them together to form the combined FinalDamage. - Sometimes the calculated IntelligenceBonus (and therefore FinalDamage) will end up being higher. The only reason for that should be the MysteriousPenalty, which you can easily compensate for since it is exactly 0.1% of the BaseDamage. - Sometimes the calculated BaseDamage (and therefore FinalDamage) will end up being lower. Here are two reasons why: 1) When there are percentage bonuses involved, sometimes the stated number is not the actual number that's used. Example: Spoiler We're looking at Ancient Magic, level 200 The tooltip states that it provides a bonus of +188.8% damage. But it is actually +188.9%. 2) When there are partial combat art levels involved, the number shown isn't the entire number. Example: Spoiler HCALWP is 51 We've used 52 runes In-game, the CA level is shown as 51.8 But it is actually 51.8746... - Otherwise, and as far as I'm aware, getting a higher or lower value than expected means that there is a deficiency in the formula. - Number overflowing is another aspect that is not as straightforward as it seems. Maybe I'll look into in at another time. But unless you are testing with some really high values, you shouldn't worry about this. Enough for now. I'll post some of my findings in more detail later Edited September 11 by Maneus 2 1 Link to comment
Maneus 189 Share Posted July 3 (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 July 4 by Maneus Link to comment
Maneus 189 Share Posted July 4 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/ 1 Link to comment
gogoblender 3,278 Share Posted July 5 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! gogo 1 Link to comment
Lindor 542 Share Posted July 6 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
Maneus 189 Share Posted July 6 (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 July 6 by Maneus 1 Link to comment
Lindor 542 Share Posted July 6 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: 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? 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? 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
Maneus 189 Share Posted July 6 (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: 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? 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? 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 July 6 by Maneus Link to comment
SLD 477 Share Posted July 7 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. 1 Link to comment
Maneus 189 Share Posted July 7 (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 August 15 by Maneus 1 Link to comment
Maneus 189 Share Posted July 7 (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 July 8 by Maneus Link to comment
Lindor 542 Share Posted July 7 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 1 Link to comment
Maneus 189 Share Posted July 7 (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 July 7 by Maneus 1 Link to comment
Maneus 189 Share Posted July 7 (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 July 8 by Maneus Mixed up Lore and Focus Link to comment
SLD 477 Share Posted July 8 (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 July 8 by SLD 1 Link to comment
Maneus 189 Popular Post Share Posted July 8 2 hours ago, SLD said: 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. Sorry, I meant the Focus skill. I was so busy contemplating whether to include that info, I never noticed that I mixed them up. 2 hours ago, SLD said: 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. You are absolutely right. The item modifier Attack Speed +X% does not increase the execution speed of weapon-based combat arts. Only the speed of left-click attacks. That means that Dashing Alacrity correctly shows the two bonuses separately. In my previous test, I did use a Weapon Lore skill to test whether attack speed worked on weapon-based combat arts... 2 hours ago, SLD said: 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. My tests show that Combat Discipline does affect hybrid combat arts. I don't know why the wiki states that it doesn't. https://www.sacredwiki.org/index.php/Sacred_2:Hybrid_Damage_Based_Combat_Arts I'll post some examples later. I need to amend my previous posts 1 1 Link to comment
idbeholdME 436 Popular Post Share Posted July 8 (edited) On 7/7/2024 at 9:27 AM, Maneus said: 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. That all depends on animation timings. Weapons, CAs and their combinations have different looking and fast animations. Daggers happen to be a very fast weapon most of the time and some CAs just use a regular weapon swing with some weapons which happens to be very fast. You can check everything in animation.txt. IIRC, the Hybrid CAs all use just a regular weapon swing and don't have custom animations. So the faster the weapon, the higher the theoretical maximum attacks per second (if regen time is shorter than animation length at capped attack speed, or using regen per hit). Edited July 8 by idbeholdME 2 Link to comment
Maneus 189 Share Posted July 8 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
SLD 477 Share Posted July 9 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. 1 Link to comment
gogoblender 3,278 Share Posted July 10 Aaaaand... holee molee...this thread is 42 pages long of eye-watering calculations... yeeeeeeeeeee hawwwwwwwww!!! 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! gogo 1 Link to comment
Maneus 189 Popular Post Share Posted July 11 (edited) 23 hours ago, gogoblender said: Aaaaand... holee molee...this thread is 42 pages long of eye-watering calculations... yeeeeeeeeeee hawwwwwwwww!!! 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! gogo Thank you so much, gogo! Hopefully, there will be many more pages to come I don't like posting without adding anything new, but I'm not ready with some of the things I'm working on right now. So I'll just add this for now: On 7/2/2024 at 9:37 PM, Maneus said: 1) When there are percentage bonuses involved, sometimes the stated number is not the actual number that's used. I just finished making screenshots of the progression of Astral Lord Lore (1-200) in order to compare the damage stated in the inventory screen and the percentage bonus stated in the skill tooltip. Here are some of the results (skill levels 1-10): Spoiler Shadow Warrior, level 200 Skeletal Fortification, level 1, no modifications, edited in spells.txt to have 10000 initial damage SpellBaseDamage = 1000 (This removes the division by 40) attrSdam_fact = 0 (This removes the intelligence bonus) Intelligence = 1000 (Doesn't matter) Astral Lord Lore, level 0 Damage 10000 Astral Lord Lore, level 1, +9.8% Damage 10990 Astral Lord Lore, level 2, +13.6% Damage 11370 Astral Lord Lore, level 3, +17.3% Damage 11740 Astral Lord Lore, level 4, +21.1% Damage 12110 Astral Lord Lore, level 5, +24.7% Damage 12470 Astral Lord Lore, level 6, +28.2% Damage 12830 Astral Lord Lore, level 7, +31.7% Damage 13170 Astral Lord Lore, level 8, +35.0% Damage 13510 Astral Lord Lore, level 9, +38.5% Damage 13850 Astral Lord Lore, level 10, +41.7% Damage 14180 On some skill levels the stated damage in the inventory is higher by 10 points, meaning the percentage bonus is actually 0.1% higher. I quickly went trough all of my screenshots and it looks like this is the only kind of difference that can happen. Edit: Ancient Magic, levels 1-3 Spoiler Ancient Magic, level 1, +4.9% Damage 10490 Ancient Magic, level 2, +6.8% Damage 10680 Ancient Magic, level 3, +8.6% Damage 10870 Combination of Ancient Magic and Astral Lord Lore Ancient Magic, level 3, +8.6% Astral Lord Lore, level 1, +9.8% Total +18.4% Damage 11860 (20 or 0.2% higher) Edited July 11 by Maneus 1 1 Link to comment
Maneus 189 Popular Post Share Posted July 12 (edited) Time for another breakthrough! For Astral Lord Lore, after looking at the numbers from the inventory screen, I was surprised to find that they match perfectly with the results from the formulas in the wiki https://www.sacredwiki.org/index.php/Sacred_2:Astral_Lord_Lore Quote 400*(x+1.5)/(x+100) Pre-Mastery 600*(x-32.5)/(x+66) Mastery Now we're left with the question: Which is correct - the tooltip or the inventory screen? I believe it is the tooltip that is wrong. Here is my theory: I assume that, in-game, all percentages are stored as whole numbers (180.8% is actually 1808). That is exactly how percentages are written in spells.txt. I also know, from my previous tests, that the game uses 32-bit floating point numbers to store some (or all?) of the values. In order to show a whole number as a percentage, we need to divide it by 10. In the case of 32-bit floating point numbers, this very likely leads to a loss of precision. If, due to loss of precision, we get a lower result and round it down, then it will become exactly 0.1 lower. So I did the following test: let convertTo32BitFloat = function (value) { const array = new Float32Array(1); array[0] = value; return array[0]; } let inventoryValues = [99,137,174,211,247,283,317,351,385,418,450,482,513,543,573,603,632,661,689,716,743,770,796,822,848,873,897,921,945,969,992,1015,1037,1059,1081,1102,1124,1144,1165,1185,1205,1225,1244,1263,1282,1301,1319,1337,1355,1373,1390,1407,1424,1441,1458,1474,1490,1506,1522,1537,1552,1567,1582,1597,1612,1626,1640,1654,1668,1682,1695,1709,1722,1735,1808,1838,1867,1895,1924,1952,1979,2006,2033,2060,2086,2111,2137,2162,2187,2211,2235,2259,2283,2306,2329,2351,2374,2396,2418,2439,2461,2482,2502,2523,2543,2563,2583,2603,2622,2642,2661,2679,2698,2716,2734,2752,2770,2788,2805,2822,2839,2856,2873,2889,2905,2921,2937,2953,2969,2984,3000,3015,3030,3045,3059,3074,3088,3102,3117,3131,3144,3158,3172,3185,3199,3212,3225,3238,3251,3263,3276,3288,3301,3313,3325,3337,3349,3361,3373,3384,3396,3407,3419,3430,3441,3452,3463,3474,3485,3495,3506,3516,3527,3537,3547,3557,3567,3577,3587,3597,3607,3616,3626,3636,3645,3654,3664,3673,3682,3691,3700,3709,3718,3726,3735,3744,3752,3761,3769,3778]; let tooltipValues = [98,136,173,211,247,282,317,350,385,417,450,482,512,542,572,602,632,660,689,715,743,770,795,821,848,873,896,920,945,969,991,1015,1036,1059,1080,1101,1124,1144,1165,1185,1205,1225,1244,1263,1281,1301,1318,1336,1355,1373,1390,1406,1423,1441,1458,1473,1490,1506,1521,1536,1551,1566,1581,1596,1611,1626,1640,1653,1668,1681,1695,1708,1721,1735,1808,1838,1866,1895,1923,1951,1978,2006,2033,2060,2086,2111,2136,2161,2186,2211,2235,2258,2283,2306,2328,2351,2373,2396,2418,2438,2461,2481,2501,2523,2543,2562,2582,2602,2622,2642,2661,2678,2697,2716,2733,2752,2770,2787,2805,2822,2838,2856,2872,2888,2905,2921,2937,2952,2968,2983,3000,3015,3030,3045,3058,3073,3087,3102,3117,3131,3143,3157,3172,3185,3198,3212,3225,3237,3251,3262,3276,3287,3301,3312,3325,3337,3348,3361,3372,3383,3396,3407,3418,3430,3441,3452,3462,3473,3485,3495,3506,3516,3527,3537,3547,3557,3567,3577,3587,3597,3607,3616,3626,3636,3645,3653,3663,3672,3682,3691,3700,3708,3717,3726,3735,3743,3752,3761,3768,3777]; for (let I = 0; I < inventoryValues.length; I++) { const inventoryValue = inventoryValues[I]; const tooltipValue = tooltipValues[I]; const convertedValue = Math.floor(convertTo32BitFloat(inventoryValue / 10) * 10); console.log('Skill level', I + 1, 'Inventory', inventoryValue, 'Tooltip', tooltipValue, 'Converted', convertedValue, 'Match?', tooltipValue === convertedValue); } This code can be run in the browser's JavaScript console. 1. We divide the inventoryValue by 10. In JavaScript, all numbers are, by default, stored as 64-bit floating point numbers so this operation alone is very unlikely to lead to a loss of precision. 2. We convert the result to a 32-bit floating point number. This very likely leads to a loss of precision. For example: 9.9 becomes 9.899999618530273 . 3. We multiply by 10 and round down so we can compare the whole numbers (this probably converts the value back to a 64-bit float, but that shouldn't matter). And the results match perfectly with the values from the skill tooltip. In addition, I found out that the very same formulas for the damage bonus of Astral Lord Lore are also used by the focus skill to determine HCALWP and the final combat art level! I'll post my findings soon. Edited July 12 by Maneus 2 Link to comment
Maneus 189 Share Posted July 12 (edited) 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 July 12 by Maneus Simplify formulas 1 Link to comment
Maneus 189 Share Posted July 14 (edited) 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 September 21 by Maneus Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now