From 23d4f996553dfe8cfa438f11b0c931812b6ac5c7 Mon Sep 17 00:00:00 2001 From: Hachem_Muche <Hachem_Muche@stanfordalumni.org> Date: Fri, 17 Feb 2017 16:02:50 -0800 Subject: [PATCH] Poison, Stoning Poison, and Deadly Poison, on merge automatically set their max_power to 5x the power set by default. This means that their damage cannot stack more than 5x times by default. Poisonous Bite is an unarmed attack (prevents stacking of weapon bonuses with built in multiplier). --- game/modules/tome/data/talents/misc/npcs.lua | 4 ++-- .../modules/tome/data/timed_effects/physical.lua | 16 +++++++++++----- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua index ff99a4ac2e..4c3a91b561 100644 --- a/game/modules/tome/data/talents/misc/npcs.lua +++ b/game/modules/tome/data/talents/misc/npcs.lua @@ -344,11 +344,11 @@ newTalent{ local tg = self:getTalentTarget(t) local x, y, target = self:getTarget(tg) if not target or not self:canProject(tg, x, y) then return nil end - self:attackTarget(target, DamageType.POISON, t.getMult(self, t), true) + self:attackTarget(target, DamageType.POISON, t.getMult(self, t), true, true) return true end, info = function(self, t) - return ([[Bites the target, doing %d%% damage and injecting it with poison.]]):format(100 * t.getMult(self, t)) + return ([[Bites the target (an unarmed attack), doing %d%% damage and injecting it with poison.]]):format(100 * t.getMult(self, t)) end, } diff --git a/game/modules/tome/data/timed_effects/physical.lua b/game/modules/tome/data/timed_effects/physical.lua index d3df07b7ee..230c658362 100644 --- a/game/modules/tome/data/timed_effects/physical.lua +++ b/game/modules/tome/data/timed_effects/physical.lua @@ -234,7 +234,9 @@ newEffect{ local dur = math.ceil((old_eff.dur + new_eff.dur) / 2) old_eff.dur = dur old_eff.power = (olddam + newdam) / dur - if new_eff.max_power then old_eff.power = math.min(old_eff.power, new_eff.max_power) end + -- by default, can stack up to 5x power + old_eff.max_power = math.max(old_eff.max_power or old_eff.power, new_eff.max_power or new_eff.power*5) + old_eff.power = math.min(old_eff.power, old_eff.max_power) return old_eff end, on_timeout = function(self, eff) @@ -397,14 +399,16 @@ newEffect{ old_eff.time_to_stone = math.ceil(new_eff.time_to_stone*new_fct + old_eff.time_to_stone*(1-new_fct)) old_eff.dur = math.max(old_eff.dur, new_eff.dur) old_eff.power = dam/old_eff.dur - if new_eff.max_power then old_eff.power = math.min(old_eff.power, new_eff.max_power) end - old_eff._from_toxic_death = nil + -- by default, can stack up to 5x power + old_eff.max_power = math.max(old_eff.max_power or old_eff.power, new_eff.max_power or new_eff.power*5) + old_eff.power = math.min(old_eff.power, old_eff.max_power) +-- old_eff._from_toxic_death = nil return old_eff end, activate = function(self, eff) if eff._from_toxic_death then -- reset turn counter if spread from Toxic Death eff.turn_count = 0 - eff._from_toxic_death = nil +-- eff._from_toxic_death = nil end end, deactivate = function(self, eff) -- chance to stone when deactivated @@ -3156,7 +3160,9 @@ newEffect{ local dur = math.ceil((old_eff.dur + new_eff.dur) / 2) old_eff.dur = dur old_eff.power = (olddam + newdam) / dur - if new_eff.max_power then old_eff.power = math.min(old_eff.power, new_eff.max_power) end + -- by default, can stack up to 5x power + old_eff.max_power = math.max(old_eff.max_power or old_eff.power, new_eff.max_power or new_eff.power*5) + old_eff.power = math.min(old_eff.power, old_eff.max_power) if old_eff.healid then self:removeTemporaryValue("healing_factor", old_eff.healid) old_eff.healid = null -- GitLab