Jump to content


How is Sacred 2 Weapon Damage Calculated


Recommended Posts

On 8/17/2024 at 11:37 PM, Maneus said:

CreatureSkillLevel = FLOOR(CreatureLevel / 3)

Still unconvinced by this, because enemies with Ancient Magic do get the mitigation penetration bonus from Mastery at high levels. The small red dragons with homing Fireballs and Elite Temple Guardians that throw fire traps are extremely deadly in late Niobium because of that, even if you have heavily stacked mitigation.

So it either works diffeferently for different skills or once again, is a change caused by the PFP.

Edited by idbeholdME
Link to comment
 

The item modifier Damage over Time: Element -X% affects both secondary damage DOT and spell DOT. It is a separate multiplier than mitigation/vulnerability.

Example:

Spoiler

We have a weapon with 10000 physical damage and 10000 poison damage.
Our opponent has 50% poison mitigation and -50% poison DOT.

The initial hit does 15000 damage (10000 physical and 5000 poison),
The total DOT damage is 3750.

 

The item modifier Opponent's chance to Effect -X% actually reduces your own chance to inflict that secondary effect to an opponent. Based on the wording, one would think it works the other way around. I'll test this later to see if the opponent is also affected.

Example:

Spoiler

We have a weapon with 10000 physical damage and 10000 poison damage.
Base chance to poison is 25%.

We equip an item with Opponent's chance to Poison -90.9%.
The chance to poison is now 2.2%.

This is also what is observed in combat.

The reduction is relative. For example:

Spoiler

Base chance to poison 25.0%
Item modifier Chance to Poison +100.0%
Item modifier Opponent's chance to Poison -23.0% (Value = 300)

Final chance to poison is 96.0% (Should be 96.1% but there is probably precision loss here too)

The formula for this item modifier is:

OpponentChanceToEffect = ValueOfBonus / (ValueOfBonus + 1000)

I'm unsure if the result is rounded down (to three decimal places).

Example:

Spoiler

ValueOfBonus = 1000

OpponentChanceToEffect = ValueOfBonus / (ValueOfBonus + 1000)
OpponentChanceToEffect = 1000 / (1000 + 1000)
OpponentChanceToEffect = 1000 / 2000
OpponentChanceToEffect = 0.5 (Reference value is 50%)

ValueOfBonus = 10000

OpponentChanceToEffect = ValueOfBonus / (ValueOfBonus + 1000)
OpponentChanceToEffect = 10000 / (10000 + 1000)
OpponentChanceToEffect = 10000 / 11000
OpponentChanceToEffect = 0.9090909090909091 (Reference value is 90.9%)

 

The item modifier Detrimental magic effects -X% reduces the duration of both secondary damage DOT and spell DOT. It basically reduces the number of damage instances. The damage instances keep doing the same damage they did before. The last damage instance can appear much earlier and do proportionately less damage - this is done to fit within the DOT duration. The total damage is reduced, but by slightly less than the stated percent. Will have to investigate why. And when/how does willpower come into the picture...?

Example:

Spoiler

We have a spell DOT with a total of 20000 poison damage.
The opponent has Detrimental magic effects -50%.
The total DOT damage done is 10610. (Damage instances are 4048, 4050, 2512)

We have a spell DOT with a total of 10000 poison damage.
The opponent has Detrimental magic effects -50%.
The total DOT damage done is 5305. (Damage instances are 2032, 2023, 1250)

The formula for this item modifier is:

DetrimentalMagicEffects = ValueOfBonus / (ValueOfBonus + 1000)

Like before, I'm unsure if the result is rounded down (to three decimal places).

Example:

Spoiler

ValueOfBonus = 4000

DetrimentalMagicEffects = ValueOfBonus / (ValueOfBonus + 1000)
DetrimentalMagicEffects = 4000 / (4000 + 1000)
DetrimentalMagicEffects = 4000 / 5000
DetrimentalMagicEffects = 0.8 (Reference value is 80%)

 

Are there any other item modifiers that affect DOT damage?

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

Still unconvinced by this, because enemies with Ancient Magic do get the mitigation penetration bonus from Mastery at high levels. The small red dragons with homing Fireballs and Elite Temple Guardians that throw fire traps are extremely deadly in late Niobium because of that, even if you have heavily stacked mitigation.

So it either works diffeferently for different skills or once again, is a change caused by the PFP.

I'm testing on one of the wolves that is wandering near the resurrection monolith in Sloeford. In niobium difficulty. This is the "creature" definition in creature.txt:

Spoiler

mgr.createCreature {
    id = 132,
    itemtype_id = 520,
    name = "wild_wolf_brown",
    behaviour = "Enemy_warrior_dumbattacker",
    dangerclass = 3,
    groupmaxcount = 4,
    elite_creature_id = 129,
    probabilityforelite = 0.000000,
    rank = 0,
    tenergy_creature_id = 244,
    template_creature_id = 1330,
    livesremaining = 0,
    unconscioustime = 5,
    palettebits = "1111111111111111",
    monstertype = 0,
    faction_id = 74,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
}

Also the template creature:

Spoiler

mgr.createCreature {
    id = 1330,
    itemtype_id = 4825,
    name = "Template_w_wolf",
    behaviour = "defaultBehaviour",
    dangerclass = 0,
    groupmaxcount = 0,
    probabilityforelite = 0.000000,
    rank = 0,
    livesremaining = 0,
    unconscioustime = 20,
    palettebits = "1111111111111111",
    monstertype = 0,
    faction_id = 1,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
}

The specific wolf appears to have a base level of 1. By changing the parameters Spawn_OffsetLow and Spawn_OffsetHigh (in balance.txt) I'm able to control the level it spawns at.

For example:

Spoiler

Spawn_OffsetLow = {0,0,40,70,223},
Spawn_OffsetHigh = {0,35,80,120,223},

The wolf is now at level 224.

Spawn_OffsetLow = {0,0,40,70,224},
Spawn_OffsetHigh = {0,35,80,120,224},

The wolf is now at level 225.

First, I tried giving the skills Toughness and Spell Resistance to the template creature, but it appears that adding skills to the template creature does not work.

Also, setting the advanced flag to 1 also makes the skills not work.

So this is how I managed to get the skills to work:

Quote

mgr.addCreatureSkill( 132, {
    skill_id = 23,
    advanced = 0,
    skill_name = "skill_spellresist_lore",
})

mgr.addCreatureSkill( 132, {
    skill_id = 14,
    advanced = 0,
    skill_name = "skill_toughness",
})

First, I tested with only Toughness. At level 224, the damage mitigation is exactly 8.6%. At level 225, the damage mitigation jumps to 12%. It appears that the skill automatically becomes mastered. These values also match the values in the wiki.

Then, I tested with Spell Resistance. At level 224, the DOT is not affected at all (as expected). At level 225, the DOT duration became much shorter.

Here is an example:

Spoiler

We have a weapon that inflicts a total of 20000 damage (10000 physical and 10000 poison).

Without Spell Resistance Mastery the following happens:
Total DOT damage is 20000. The damage instances look something like: 4058, 4039, 4031, 4050, 3822.

With Spell Resistance Mastery the following happens:
Total DOT damage is 7122. The damage instances look something like: 4038, 3084.

 

The wiki states that at level 75, the DOT duration is reduced to 35.6%. So 20000 damage should become 7120. That seems to be the case.

 

When you did your tests, do you remember if the creatures were at or above level 225? @idbeholdME

Link to comment
 
2 hours ago, Maneus said:

Are there any other item modifiers that affect DOT damage?

I currently can't come up with any... have you tried %damage increase? might double dip like mitigation...
All I can come up with about DOT effects are non item mod things that still need to be tested:
-How DOT is affected by impact damage lowered through armor resistances
-How DOT works with attribute damage bonuses
-How exactly damage lore effects DOTs...
and of course what happens when you trigger a new dot while the old one is still running...
then there's testing if ignite and open wound perform the same as poison, but I guess that would be the last step...

sry if any of those things where already covered in the posts I read yesterday. I didn't reread them now.

Link to comment
 
 
 
5 hours ago, Maneus said:

 

 

Right now I'm planning to continue working on the spell damage calculator. There are still some obscure details and edge cases that I need to iron out. Unless that skeleton shows up again to express how utterly unconvinced he is... after all this effort ... grumble grumble

Thanks for your detailed and hard-earned-won work.  Reading this topic is as good as any Poe mystery I've read.

Your work is appreciated and read. :thumbsup:

And dang... is that a new Avatar.. not gonna look it up... gimme a chance to think on it... high-intensity face-gear

:ninjastar:

gogo

 

 

  • Appreciation 1
Link to comment
 
5 hours ago, gogoblender said:

And dang... is that a new Avatar.. not gonna look it up... gimme a chance to think on it... high-intensity face-gear

I'm trying out a few, but ... it's not quite right. I'll think about it some more.

  • Appreciation 1
Link to comment
 
 
 
16 hours ago, Maneus said:

So it looks like when you reapply a secondary damage DOT, not only is the timer reset, but the total DOT damage is also updated to the maximum between the two applications.

Your example only shows that the dot duration is reset not wether the damage for it is refreshed to the maximum between the two. It might just be the first application remains... You only show a test of large dot prolonged with small dots not the other way around.
Ok reread it now, you made a small hit first but didn't let a small dot instance through. It might make a difference...

  • Like! 1
Link to comment
 
 
1 hour ago, Maneus said:

Anyway, let me know if you have any other ideas to test :)

Did I cause all this? Then I'm so sorry. Only Example 4 was kinda missing in the original test...
No I currently don't have any more ideas :)

  • Like! 1
Link to comment
 

What is essence damage and how does it work?

While looking through spells.txt I noticed something odd about the Dryad combat art Malicious Totem.

Spoiler

mgr.defineSpell( "dr_vo_totem", {
    eiStateName = "cSpellCast",
    fxTypeCast = "FX_DR_VOODOOTOTEM_C",
    fxTypeSpell = "FX_DR_VOODOOTOTEM",
    fxTypeCastSpecial = "FX_DR_CAST_K",
    duration = 10.000000,
    animType = "ANIM_TYPE_SM10",
    animTypeApproach = "ANIM_TYPE_INVALID",
    animTypeRide = "ANIM_TYPE_INVALID",
    animTypeSpecial = "ANIM_TYPE_RIDESM04-SPECIAL",
    causesSpellDamage = 1,
    tokens = {
        entry0 = {"et_duration_sec", 2000, 0, 0, 8 },
        entry1 = {"et_hits_persec", 700, 2, 0, 4 },
        entry2 = {"et_essence_spelldam_phy", 420, 210, 0, 133 },
        entry3 = {"et_essence_spelldam_poi", 280, 140, 0, 133 },
        entry4 = {"et_chance_fear", 200, 2, 1, 5 },
        entry5 = {"et_duration_sec", 500, 5, 2, 8 },
        entry6 = {"et_essence_spelldam_phy", 310, 155, 3, 133 },
        entry7 = {"et_essence_spelldam_poi", 210, 105, 4, 133 },
        entry8 = {"et_regThisCool", 1000, 10, 5, 8 },
        entry9 = {"et_hits_persec", 300, 2, 6, 4 },
    },
    fightDistance = 525.000000,
    aspect = "EA_DR_VOODOO",
    cooldown = 15.000000,
    soundProfile = 0,
    cost_level = 215,
    cost_base = 430,
    focus_skill_name = "skill_DR_voodoo_focus",
    lore_skill_name = "skill_DR_voodoo_lore",
    spellClass = "cSpellDrVoodoototem",
    spellcontroltype = "eCAtype_a_effect_location_start",
    sorting_rank = 4,
})

The damage comes from these two entries: et_essence_spelldam_phy and et_essence_spelldam_poi. This is the only combat art in spells.txt that uses such entries. There is also et_essence_spelldam_mag, but it appears to be unused.

But why is it using essence spell damage and not regular spell damage? I tested the difference in-game and essence spell damage was only half of what the regular spell damage would be, given the same values. For example:

Quote

SpellBaseDamage = 25
{"et_spelldamage_poison", 10000, 0, 0, 133 } becomes 250 poison damage
{"et_essence_spelldam_poi", 10000, 0, 0, 133 } becomes 125 poison damage

SpellBaseDamage = 1000
{"et_spelldamage_poison", 10000, 0, 0, 133 } becomes 10000 poison damage
{"et_essence_spelldam_poi", 10000, 0, 0, 133 } becomes 5000 poison damage

And I stopped there.

But I remembered that the Dryad can equip shrunken heads and that some combat arts receive a bonus from it. The in-game description of Malicious Totem states:

Quote

Summons a totem that will fire small poisonous arrows. Shrunken heads may increase damage.

Equipping a shrunken head does not change the damage in the combat art tooltip. But when fighting an opponent that is of the same type as the shrunken head (animal, orc, barbarian, etc.), then the damage increases! But the increase varied based on what level the shrunken head was and what level the opponent was.

So I went looking into blueprint.txt and found that there is an "essence bonus". Actually, many such bonuses - one for each creature type. For example:

Spoiler

newBonus = {
--  name = "sb_neut_essence_wildanimal",
  rating = 15,
  basedonskill = "SKILL_INVALID",
  type = "BONUS_SHRINKHEAD_ESSENCE",
  spez = "SUBFAM_LIFE_ANIMAL",
  spez2 = "",
  usagebits = 65535,
  minconstraints = {1,1,0},
  difficultyvaluerange0 = {0,8,168},
  difficultyvaluerange1 = {1,9,189},
  difficultyvaluerange2 = {2,10,209},
  difficultyvaluerange3 = {3,11,240},
  difficultyvaluerange4 = {4,13,272},
}
mgr.createBonus(523, newBonus);

newBonusgroup = {
  id = 723,
  name = "SB_neut_essence_wildanimal                                                                                                      ",
  bonuslist = { 523,},
}
mgr.createBonusgroup(723, newBonusgroup);

And this bonus is used in the blueprint for a shrunken head:

Spoiler

newBlueprint = {
  id = 1535,
  name = "shrinkhead_animal",
  palettebits = "1111111111111111",
  dmgvariation = 0,
  minconstraints = {1,4,0},
  lvljump = 1,
  usability = 0,
  allotment_pmfpi = {1000,0,0,0,0},
  uniquename = "shrink",
  specialuseonly = 1,
  bonusgroup0 = {304,750,10,10,0},
  bonusgroup1 = {299,750,5,7,0},
  bonusgroup2 = {723,1000,1,4,0},
  itemtypes = {9692,},
  wearergroups = {'WEARGROUP_DRYADIN',},
}
mgr.createBlueprint(1535, newBlueprint);

The bonus is not shown in-game. The value of the bonus depends on the item level and the difficulty. It is calculated like any other bonus. So a level one shrunken head from bronze difficulty will have a value of 8.

Spoiler

ValueOfBonus = FLOOR((FLOOR(((ValueAt200 - ValueAt0) / 200) * ItemLevel) + ValueAt0) * BlueprintMultiplier * 0.001)
ValueOfBonus = FLOOR((FLOOR(((168 - 8) / 200) * 1) + 8) * 1000 * 0.001)
ValueOfBonus = FLOOR((FLOOR(160 / 200) + 8) * 1)
ValueOfBonus = FLOOR(FLOOR(0.8) + 8)
ValueOfBonus = FLOOR(0 + 8)
ValueOfBonus = 8

EssenceValue = FLOOR(ValueOfBonus)
EssenceValue = FLOOR(8)
EssenceValue = 8

Note: I'm trying to keep the formula for ValueOfBonus as generic as possible so it can be applied to all blueprint bonuses. But it is also not the full formula - I'll look into it at some point.

The essence multiplier is calculated as follows:

EssenceMultiplier = FLOOR(EssenceValue * 1000 / (9 + CreatureLevel)) + 500

Against a level one Wolf, the EssenceMultiplier becomes:

EssenceMultiplier = FLOOR(EssenceValue * 1000 / (9 + CreatureLevel)) + 500
EssenceMultiplier = FLOOR(8 * 1000 / (9 + 1)) + 500
EssenceMultiplier = FLOOR(8000 / 10) + 500
EssenceMultiplier = FLOOR(800) + 500
EssenceMultiplier = 800 + 500
EssenceMultiplier = 1300

Apply this EssenceMultipler to the damage like so:

Damage = FLOOR(Damage * EssenceMultiplier / 1000)

So now, instead of doing half damage (EssenceMultiplier = 500), we are doing 1.3 times the regular damage to the wolf. Compared to before, that is 2.6 times more. Just by equipping a level 1 shrunken head.

In the full damage formula, this EssenceMultiplier is applied after the SpellBaseDamage, but before the PercentageBonuses. It is not affected by the Aspect Lore skill.

The same level 1 shrunken head against a level 2 wolf:

Spoiler

EssenceMultiplier = FLOOR(EssenceValue * 1000 / (9 + CreatureLevel)) + 500
EssenceMultiplier = FLOOR(8 * 1000 / (9 + 2)) + 500
EssenceMultiplier = FLOOR(8000 / 11) + 500
EssenceMultiplier = FLOOR(727.2727272727273) + 500
EssenceMultiplier = 727 + 500
EssenceMultiplier = 1227

The same level 1 shrunken head against a level 200 wolf:

Spoiler

EssenceMultiplier = FLOOR(EssenceValue * 1000 / (9 + CreatureLevel)) + 500
EssenceMultiplier = FLOOR(8 * 1000 / (9 + 200)) + 500
EssenceMultiplier = FLOOR(8000 / 209) + 500
EssenceMultiplier = FLOOR(38.27751196172249) + 500
EssenceMultiplier = 38 + 500
EssenceMultiplier = 538

 

Note: The essence bonuses and entries can be given to any other character and will work as expected.

Enough for now :)

Edited by Maneus
  • Like! 1
Link to comment
 
On 8/30/2024 at 10:40 PM, SLD said:

No I currently don't have any more ideas :)

I just had 2 unrelated ideas pop into my head today :)

The first was about the damage conversion item mod.
From Gloves: Afaik it doesn't apply to spells but the tooltip once claimed that it did...
You checked the mod only for weapon based combat so there might be a quick test that would confirm my "knowledge". After all my knowledge is worthless compared to things that have been properly tested..


The second is about added flat damage from weapon based combat arts. I can't remember that having being looked into already. I might be wrong but looking through all the posts would probably eat up the entire day... Maybe you have a better memory than I have...
I remember you looked at bfg for the added damage and the effects on attribute bonus etc., but I don't think you ever checked the behaviour of directly added damage through weapon based combat arts like the +poison damage on a mod for frenzied rampage.

Just wanted to post that stuff before I forget about it again. :)

  • Like! 1
Link to comment
 
On 8/30/2024 at 11:40 PM, SLD said:

No I currently don't have any more ideas :)

This is how I know I'm having a bad dream :lol:

 

16 hours ago, SLD said:

The first was about the damage conversion item mod.
From Gloves: Afaik it doesn't apply to spells but the tooltip once claimed that it did...
You checked the mod only for weapon based combat so there might be a quick test that would confirm my "knowledge".

In the tooltips, the damage appears to be converted for all spell combat arts, but there is no change in actual combat. Magic Coup still shows physical and magic damage because of the built-in conversion.

For example:

Ancestral Fireball shows 104 physical and 208 fire.
I equip gloves with Conversion damage to Ice +38%.
Ancestral Fireball now shows 64 physical and 249 ice.

I gave the usual wolf 100% mitigation to all elements, except ice. I verified, that without the gloves, only ice damage can be dealt to him (Frost Flare, Glacial Thorns, Raging Nimbus). I equpped the gloves and, even though all spell combat arts now show ice damage in their tooltips, only the Mystic Stormite spells do any damage. And it's the same damage as before.

For Magic Coup, due to the extra conversion, the proportion of physical to magic damage changes. But still no damage done to the wolf.

My previous tests were done with rings (modified) instead of gloves. With the rings, the same thing can be observed.

 

16 hours ago, SLD said:

The second is about added flat damage from weapon based combat arts. I can't remember that having being looked into already. I might be wrong but looking through all the posts would probably eat up the entire day... Maybe you have a better memory than I have...
I remember you looked at bfg for the added damage and the effects on attribute bonus etc., but I don't think you ever checked the behaviour of directly added damage through weapon based combat arts like the +poison damage on a mod for frenzied rampage.

I'm testing with a High Elf and Magic Coup. In spells.txt:

Quote

entry0 = {"et_weapondamage_physical", 1000, 0, 0, 9 },
entry1 = {"et_weapondamage_magic", 1000, 0, 0, 9 },
entry2 = {"et_weapondamage_fire", 1000, 0, 0, 9 },
entry3 = {"et_weapondamage_poison", 1000, 0, 0, 9 },
entry4 = {"et_weapondamage_ice", 1000, 0, 0, 9 },
entry5 = {"et_mult_weapondamage", 1000, 0, 0, 9 },
entry8 = {"et_damage_any_rel", 0, 0, 0, 5 },

I've removed the magic damage conversion!

This result is:

Quote

Physical 100-100
Magic 100-100
Fire 100-100
Poison 100-100
Ice 100-100

Damage done is exactly 500, so it doesn't interact with the attribute bonus.

Let's try again with Delphic Arcania Lore, level 11, +45% damage.

Quote

Physical 145-145
Magic 145-145
Fire 145-145
Poison 145-145
Ice 145-145

Damage done is exactly 725. These entries are not multiplied by the aspect lore. The aspect lore only provides a percentage bonus.

Let's now add a percentage bonus of 900.0%. The total percentage bonus becomes 945%.

Quote

entry8 = {"et_damage_any_rel", 9000, 0, 0, 5 },

The damage is now:

Quote

Physical 1045-1045
Magic 1045-1045
Fire 1045-1045
Poison 1045-1045
Ice 1045-1045

Damage dealt 5225.

Let's increase the combat art multiplier by 10 times:

Quote

entry5 = {"et_mult_weapondamage", 10000, 0, 0, 9 },

The damage is now:

Quote

Physical 10450-10450
Magic 10450-10450
Fire 10450-10450
Poison 10450-10450
Ice 10450-10450

Damage dealt 52250.

Let's replace the percentage bonus entries with an item modifier that gives 900% damage.

The damage is now (the same):

Quote

Physical 10450-10450
Magic 10450-10450
Fire 10450-10450
Poison 10450-10450
Ice 10450-10450

 

This is also what is observed with a Shadow Warrior and Frenzied Rampage (and Tactics Lore).

In conclusion, these entries act just like flat damage bonuses (item modifiers). They are not added to the weapon itself, so they don't affect the attribute bonus.

Edited by Maneus
  • Like! 1
Link to comment
 
8 hours ago, Maneus said:

For Magic Coup, due to the extra conversion, the proportion of physical to magic damage changes. But still no damage done to the wolf.

Yes, Magic Coup was already covered by your previous rules as that is just weapon damage. And it has a conversion mod, so we already knew this result. You just technically didn't look at spell damage like ancestral fireball, that's why I asked. And now we know that one as well. Well ok, technically we now also know that gloves work like rings.
Lets just say I'm satisfied :)
 

8 hours ago, Maneus said:

In conclusion, these entries act just like flat damage bonuses (item modifiers). They are not added to the weapon itself, so they don't affect the attribute bonus.

You could slap a conversion item mod in here to learn more about the order of operations. We know in what order the different conversion sources happen but not at what point added damage from a CA is added. So it might be possible that it happens after the conversion from items etc...


While we're at the measuring the obvious stage, I don't think you have tested that, but the weapon damage converter only applies to hits with "that weapon" in dual wield cases, right? Just another technicality to knock over...
 

8 hours ago, Maneus said:

This is how I know I'm having a bad dream :lol:

Currently not having any more ideas doesn't say anything about the future.
Don't worry, it's just the calm before the storm :diablo:

  • Haha 1
Link to comment
 
On 9/1/2024 at 9:20 PM, SLD said:

You could slap a conversion item mod in here to learn more about the order of operations. We know in what order the different conversion sources happen but not at what point added damage from a CA is added. So it might be possible that it happens after the conversion from items etc...

The conversion happens after. It doesn't matter if the flat damage comes from an item or from a combat art entry.

I tested this on a Shadow Warrior with a modified Demonic Blow:

Spoiler

entry0 = {"et_weapondamage_physical", 1000, 0, 0, 9 },
entry1 = {"et_weapondamage_magic", 1000, 0, 0, 9 },
entry2 = {"et_weapondamage_fire", 1000, 0, 0, 9 },
entry3 = {"et_weapondamage_poison", 1000, 0, 0, 9 },
entry4 = {"et_weapondamage_ice", 1000, 0, 0, 9 },
entry5 = {"et_mult_weapondamage", 1000, 0, 0, 9 },
entry7 = {"et_damage_any_rel", 0, 0, 0, 5 },

I've disabled the natural damage of the weapon. The attribute bonus is enabled (same as the previous tests).

Damage shown in the inventory screen (for the combat art):

Quote

Physical 100-100
Magic 100-100
Fire 100-100
Poison 100-100
Ice 100-100

The wolf has 100% mitigation to everything, except ice damage. The damage dealt is 100.

I equip a ring with Conversion damage to Ice +50.0%.

Now the inventory screen shows:

Quote

Physical 50-50
Ice 450-450

This is the same behavior when the flat damage comes from equipment (rings). Damage dealt to the wolf is 450.

 

On 9/1/2024 at 9:20 PM, SLD said:

While we're at the measuring the obvious stage, I don't think you have tested that, but the weapon damage converter only applies to hits with "that weapon" in dual wield cases, right? Just another technicality to knock over...

I've been thinking about Dual Wielding, but I haven't sat down to investigate it in detail. I feel like it deserves its own dedicated post. But yes, similarly to how it is in Diablo 2, some item modifiers are specific to the weapon, and some are shared. I don't know if there is a list somewhere. It's probably a very short list :)

Anyway, let's continue the previous example.

When dual wielding, Demonic Blow hits twice. Visually, it looks like both weapons are used, but it is actually only the weapon in the right hand (first in slot) that is used for both hits. If I equip a second weapon and perform Demonic Blow on the wolf, I do two hits for 450 damage each. If I swap the weapons, then the other weapon is used for both hits.

I swap back the weapons. If I add an ice crystal to the second weapon (Conversion damage to Ice +80.1%), then I still do 450 damage per hit. So, damage conversion appears to be one of the item modifiers that is specific to the weapon. If I remove the ring (with the 50% damage conversion), then I do 100 damage.

The other weapon, now with 80.1% damage conversion, does most of its damage to the wolf. Adding the ring on top, the damage increases even further. So the damage conversion from the ring is shared (as expected).

Enough for today :)

Edit: Left-click attacks use both weapons. The normal animation consists of two hits - one with the right hand weapon, and one with the left hand weapon, in that order. The triple attack animation does two hits with the left hand weapon, followed by one hit with the right hand weapon. Don't know if there are any other animations, and whether this is true for all character classes.

Edited by Maneus
  • Thanks! 1
Link to comment
 
1 hour ago, Maneus said:

some item modifiers are specific to the weapon, and some are shared. I don't know if there is a list somewhere. It's probably a very short list :)

I thought about that for a bit. But I can't come up with any weapon specific modifiers other than its damage range and the conversion from a socketed converter item.
And of course all the weapon type stuff like what animations to use, is it ranged/melee, type of projectile, number of hands it fills, is it dual wieldable at all etc. The only thing from this freak catergory that would matter in a dual wield setup is the magic staff projectile crap... it's not really melee but also not really ranged allows for dual wielding with another staff or a real melee weapon and leads to all kinds of bs behaviour but afaik in most cases here the mainhand behaviour "wins" and affects both weapons whatever that might lead to... just thought I'd spill my knowledge here as it came up when thinking about weapon specific effects...
If you have no other ideas I guess this is the "very short list" :)
There ma also be some derivative effects that are specific to the weapon like the weapon damage types leading to a chance for secondary effects that would then be specific to that weapon.

 

1 hour ago, Maneus said:

When dual wielding, Demonic Blow hits twice. Visually, it looks like both weapons are used, but it is actually only the weapon in the right hand (first in slot) that is used for both hits.

That is universal behaviour for all weapon based combat arts. Let's just call that a theory so you don't have to run an exhaustive test... :)

  • Like! 1
Link to comment
 
On 8/27/2024 at 10:58 PM, Maneus said:

When you did your tests, do you remember if the creatures were at or above level 225? @idbeholdME

Sorry for the hiatus. RL got in the way.

For Spell Resistance, I only tested enemy DoTs vs player skill. The moment I mastered it on a character, DoTs started to get reduced.

As for enemy skill levels, I always based it off of enemies with Ancient Magic. Who seemingly start penetrating a huge chunk of damage mitigation long before 225 and assumed all enemy skill levels thus behave the same. Should be pretty easy to test with the small red dragons in the dragon caves that shoot homing fireballs and a character with very high fire mitigation. Those have Ancient Magic (not the green ones). The only other option besides a couple bosses is near the end of the game, with the Elite Temple Guardians that throw Fire Traps, no other regular enemies have it.

On 8/28/2024 at 8:09 PM, Maneus said:

Burning and poison appear to work the same. But the different "wound" effects are an entirely different mechanic that I'll need to look into. It's best to ignore my previous posts when it comes to these effects.

Wounds used to work the same as other secondary damage effects in the vanilla Sacred 2 if I remember correctly. However, with Ice & Blood, Wounds can only happen if given either through a Combat Art mod, or by bonuses from gear. It can't happen simply by dealing physical damage anymore. Wiki used to say that it was the same as all others, but I went over the relevant sections a while back and added that Wound effects work differently.

  

20 hours ago, Maneus said:

Edit: Left-click attacks use both weapons. The normal animation consists of two hits - one with the right hand weapon, and one with the left hand weapon, in that order. The triple attack animation does two hits with the left hand weapon, followed by one hit with the right hand weapon. Don't know if there are any other animations, and whether this is true for all character classes.

Indeed. This always bothered me. They were able to make normal attacks cycle weapons, but not Combat Arts. Which also causes visual confusion, because the animations do perform hits with both weapons visually.

Meaning that my originally planned Damage Lore focused Inquisitor build was relegated to mostly a left-click build in order to apply poison and fire damage secondary effects regularly. Ended up working quite well, but a lot of power was lost due to CAs only using the main weapon. Always had to use a CA to apply the main weapon one and then left click to apply the off-hand effect, which was considerably weaker because of that.

And as for the triple attack animation - the chance for it to happen increases as you put points into the relevant weapon lore skill.

-----

As for the conversion stuff, never toyed around with non-weapon conversions much. Damage conversion gloves are quite rare in the first place and never really found a good use for them. Either way, some very interesting reading on the topic :)

 

Edited by idbeholdME
  • Like! 1
Link to comment
 
 
On 9/3/2024 at 7:01 PM, idbeholdME said:

As for enemy skill levels, I always based it off of enemies with Ancient Magic. Who seemingly start penetrating a huge chunk of damage mitigation long before 225 and assumed all enemy skill levels thus behave the same. Should be pretty easy to test with the small red dragons in the dragon caves that shoot homing fireballs and a character with very high fire mitigation. Those have Ancient Magic (not the green ones).

I equipped a ring with 100% mitigation to all elements and went to the dragon caves to see if the red dragons have ancient magic. Neither the elite red dragon nor the non-elite red dragon did any damage to me with the homing fireball. I thought that this must be because they are below level 225. So I set Spawn_OffsetLow and Spawn_OffsetHigh to 211 to make everything in the caves level 225. But to my surprise, they still didn't do any damage to me.

So I went looking in creatures.txt to see what's going on. The data for the non-elite red dragon is this:

Spoiler

mgr.createCreature {
    id = 501,
    itemtype_id = 6730,
    name = "Dragon_small_red",
    behaviour = "Enemy_mage",
    dangerclass = 6,
    groupmaxcount = 1,
    elite_creature_id = 500,
    probabilityforelite = 0.000000,
    rank = 0,
    tenergy_creature_id = 286,
    template_creature_id = 1328,
    livesremaining = 0,
    unconscioustime = 5,
    palettebits = "1111111111111111",
    monstertype = 0,
    faction_id = 23,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
    spells = {
        entry0 = { "enemy_feuerball_homing" },
    },
}

And the template creature:

Spoiler

mgr.createCreature {
    id = 1328,
    itemtype_id = 4829,
    name = "Template_Dragon_small",
    behaviour = "defaultBehaviour",
    dangerclass = 0,
    groupmaxcount = 0,
    probabilityforelite = 0.000000,
    rank = 0,
    livesremaining = 0,
    unconscioustime = 20,
    palettebits = "1111111111111111",
    monstertype = 0,
    faction_id = 23,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
}

For the elite red dragon:

Spoiler

mgr.createCreature {
    id = 500,
    itemtype_id = 6730,
    name = "Dragon_small_red_elite",
    behaviour = "Enemy_mage",
    dangerclass = 7,
    groupmaxcount = 1,
    elite_creature_id = 500,
    probabilityforelite = 0.000000,
    rank = 0,
    tenergy_creature_id = 286,
    template_creature_id = 1329,
    livesremaining = 0,
    unconscioustime = 5,
    palettebits = "1111111111111111",
    monstertype = 1,
    faction_id = 23,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
    spells = {
        entry0 = { "enemy_area_meteor" },
        entry1 = { "enemy_feuerball_homing" },
        entry2 = { "enemy_shield_flameskin" },
    },
}

And the template creature for that:

Spoiler

mgr.createCreature {
    id = 1329,
    itemtype_id = 4829,
    name = "Template_Dragon_small_elite",
    behaviour = "defaultBehaviour",
    dangerclass = 0,
    groupmaxcount = 0,
    probabilityforelite = 0.000000,
    rank = 0,
    livesremaining = 0,
    unconscioustime = 20,
    palettebits = "1111111111111111",
    monstertype = 0,
    faction_id = 23,
    modelscale = 1.000000,
    rise_from_ground = 0,
    has_corpse = 1,
    has_soul = 1,
    can_strafe = 0,
}

 

For skills I found the following:

Spoiler

mgr.addCreatureSkill( 501, {
    skill_id = 19,
    advanced = 1,
    skill_name = "skill_ancient_magic_lore",
})

mgr.addCreatureSkill( 500, {
    skill_id = 19,
    advanced = 1,
    skill_name = "skill_ancient_magic_lore",
})

So they do have the skill, but it appears that it is not working. I believe it is because the "advanced" flag is set to 1. This would match my conclusions from the previous tests. But still, I find it really strange that it doesn't work.

Some possible reasons that come to mind:
- My game files are somehow broken.
- The mods changed the "advanced" flag from 1 to 0. But this wouldn't explain why you encountered enemies with Ancient Magic Mastery before level 225.
- The mods somehow fix the "advanced" flag. I should probably try to install one and see.
- ... or I'm misunderstanding what the "advanced" flag is supposed to do.

For now, could you check what is the value of the "advanced" flag in your creatures.txt? @idbeholdME

 

Edited by Maneus
  • Like! 1
Link to comment
 
1 hour ago, Maneus said:

The mods somehow fix the "advanced" flag. I should probably try to install one and see.

Not even I would have had the audacity to suggest,
you could test everything in all the potential mod combinations as well. :4rofl:

Link to comment
 

Well I downloaded (not installed yet) the PFP mod from Nexus mods and this is what I found in creatures.txt:

Quote

mgr.addCreatureSkill( 501, {skill_id = 19, advanced = 0, skill_name = "skill_ancient_magic_lore",})

mgr.addCreatureSkill( 500, {skill_id = 19, advanced = 0, skill_name = "skill_ancient_magic_lore",})

Edit: Same in EE. Can't check the contents of the Community Patch since it is all merged into a single .exe file.

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

Edit: Same in EE. Can't check the contents of the Community Patch since it is all merged into a single .exe file.

don't have a clean CMPatch install lying around right now and didn't want to mess anything up that I wouldn't notice because I'm not playing it at this time, but if I understand the GME correctly, in its backup/scripts folder the "Creatures.txt.MODTHATREPLACESIT" file should be the one from the CM Patch. That file also has advanced=0 in both cases(500,501).

  • Like! 1
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...