Page 1 of 1

[1.5.5] Set Bone Shield to only trigger on hits over XX dmg

Posted: Sun Jun 18, 2017 2:37 pm
by jenx
Lots of talents reduce damage by a percentage, such as retribution. So if you are damaged for 2, retribution reduces this to 1.

And this 1 point of damage (or even 0.00001 point of damage) will take out one bone shield.

With all the procs and poisons and other little sources of damage, bone shields get taken out all the time, mostly for trivial amounts of damage.

So I suggest we set a minimum threshold for the dmg amount, roughly between 20 and 50.

This would be easy to do and I think make the game better.

Yes, NPCs then with bone shield will need more effort sometimes to get through the shields, but I don't think a value between 20 and 50 will cause problems.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Sun Jun 18, 2017 9:43 pm
by nsrr
Another idea would be to make each charge "fully block one attack", as the talent reads. That is, prevent not just individual hits, but damage from any attack/projectile/spell and all subsequent damage that it would cause, from poisons or bleeds or procs or whatever. It would probably be harder to implement, and might require tweaking the number of charges/recharge rate. I don't even know if I would support this idea, but I figure it was worth throwing out for discussion, anyway.

Another idea that is kind of tangential would be to introduce a system to flag damage as 'direct' or 'indirect'. Essentially, damage from poison or bleed or other damage over time, or retaliation damage, or damage from the environment, or traps, etc, would be 'indirect'. Damage from spells and melee or ranged attacks would be 'direct'. Nekarcos implemented something like this with his rather extensive Odyssey of the Summoner addon that could possibly be used as a reference (it's too far above my head for me to judge how well it works honestly,, but it seemed to work accordingly with the talents he had which distinguished between them). If such a change were made, then Bone Shield could be made to block only 'direct' damage.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Mon Jun 19, 2017 12:58 pm
by Razakai
You could just have it block attacks over like... 5% of your maximum life, prob easier than having to figure out the ideal number.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Mon Jun 19, 2017 10:53 pm
by jenx
Razakai wrote:You could just have it block attacks over like... 5% of your maximum life, prob easier than having to figure out the ideal number.
Yes, but we'd have to be careful with Insane (and MAdness, though I know we don't code for Madness). With a character with 30,000 health, 5% is 1500 and they can have huge numbers of bone shields (this is in insane). So I think they'd become invincible.

On Madness, you get over 200,000 in life for enemies, so this wouldn't work there definitely!

I think a small threshold of say 20 might do the trick. It is just to stop little bits of damage turning off the bones.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Tue Jun 20, 2017 12:42 am
by nsrr
In case anyone else likes this idea and does not regularly check the Addons forum, I might as well plug my newly published Bone Shield Tweak (available here: https://te4.org/games/addons/tome/boneshield_tweak and on Steam), based on jenx's idea here. More details over in this thread in the Addons forum.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Tue Jun 20, 2017 8:20 am
by Razakai
aha - what I meant was that attacks under the threshold wouldn't be affected by the shield at all. Though would make it fairly pointless for some bosses on higher difficulties with enough life, and would be a bit of a change to how defiler defenses work. I know DG is planning on some separate buffs for them though.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Tue Jun 20, 2017 2:49 pm
by ghostbuster
For the threshold, I would suggest something like 5 + NPC_level/2
Makes 10 at lvl 10
30 at level 50
80 at level 150


BTW, I think a similar tweak should be applied to the daze effect.
Presently, daze is useless whenever you apply some poison with your weapon, or bleed, or are standing on lava floor, or have some small DOT like burning, etc... And IMHO, it is one of the most useless effect in the game.
Giving a similar threshold would make it more interesting, as small damage would maintain the daze, while real attacks would of course completely remove it.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Tue Jun 20, 2017 4:31 pm
by nsrr
ghostbuster wrote: BTW, I think a similar tweak should be applied to the daze effect.
Presently, daze is useless whenever you apply some poison with your weapon, or bleed, or are standing on lava floor, or have some small DOT like burning, etc... And IMHO, it is one of the most useless effect in the game.
Giving a similar threshold would make it more interesting, as small damage would maintain the daze, while real attacks would of course completely remove it.
I think I could whip up an addon to handle this. Messing with onTakeHit (where 'undaze' is handled) is messy, but this has a sort of 'backdoor' built into the check that I could utilize. Any damage at all will undaze an actor unless they have the 'damage_dont_undaze' attribute... which, as far as my file search shows me, is not actually set by anything, ever. Seems odd that the attribute would be checked for and never used, but then again, the devs have included a lot of things that could be used, but never are, presumably for the sake of mods or potential future changes.

I know that astralInferno's High Blade uses this attribute, at least, but I think it would be pretty easy to work in compatibility for it. Something like this should work, I think:

Code: Select all

local basetakeHit = _M.takeHit
function _M:takeHit(value, src, death_note)
   local dontUndaze = false
   if self:attr("damage_dont_undaze") then dontUndaze = true end -- check if dont_undaze is already set, for compatibility
   if self:hasEffect(self.EFF_DAZED) and not dontUndaze then -- if dont_undaze was already set, let things be handled normally
      if value < 5 + self.level/2 then
         self:attr("damage_dont_undaze") = true -- if the damage is below the threshold, set the attribute so undaze will be ignored when we pass it back to the original onTakeHit
      end
   end
    -- Do stuff "before" loading the original file
    local dead, val = basetakeHit(self, value, src, death_note)  -- Loads the original file
    -- Do stuff "after" loading the original file
   if self:attr:("damage_dont_undaze") and not dontUndaze then -- if it was set before, keep it set, for compatibility
      self:attr:("damage_dont_undaze") = false -- clear the attribute if it was set by our check
   end   
    return dead, val
end

return _M
This is just 'dummy' code, I'm not sure all the syntax is right, but I think it would work, in principle. I don't have time to properly code it up and test it out at the moment, but if anyone wants to look over that and sees a serious flaw, please point it out. It's entirely likely that I overlooked something.

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Tue Jun 20, 2017 10:56 pm
by nsrr
Well, I did mess up the syntax a tad, but it didn't take long to fix. Seems to be working as intended.

Here it is, ghostbuster: https://te4.org/games/addons/tome/daze_tweak. I used the the threshold scaling that you suggested, 5 + level/2 .

I will make a thread in the Addons forum for any further discussion, so as not to hijack this one any further...

Re: [1.5.5] Set Bone Shield to only trigger on hits over XX

Posted: Thu Sep 07, 2017 10:52 pm
by astralInferno
nsrr wrote:I know that astralInferno's High Blade uses this attribute
oh hey that's me

I dont think my use of it actually works.