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.

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.

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.

For the threshold, I would suggest something like 5 + NPC_level/2Makes 10 at lvl 1030 at level 5080 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.

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:

local basetakeHit = _M.takeHitfunction _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, valend

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.

Who is online

Users browsing this forum: No registered users and 4 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum