diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index d55cda1f3e9970f4678e8fc1b70ad70da763ffd4..f98658a5c05ae4921729bae961f853a2527345c9 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -1468,10 +1468,7 @@ function _M:onTakeHit(value, src) else drain = 2 end - if self:getPositive() <= 0 then - self:forceUseTalent(self.T_SHIELD_OF_LIGHT, {ignore_energy=true}) - game.logSeen(self, "%s's shield of light spell has crumbled under the attack!", self.name:capitalize()) - else + if self:getPositive() >= drain then self:incPositive(- drain) self:heal(self:combatTalentSpellDamage(self.T_SHIELD_OF_LIGHT, 5, 25), self) end diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua index 5a918b37290caaf8cbd005bdbe998e42a3471127..8f015b9ef91cb348e0e741850a672c5d6a0028fb 100644 --- a/game/modules/tome/class/interface/Combat.lua +++ b/game/modules/tome/class/interface/Combat.lua @@ -454,11 +454,10 @@ function _M:attackTargetWith(target, weapon, damtype, mult, force_dam) -- Weapon of light cast if hitted and not target.dead and self:knowTalent(self.T_WEAPON_OF_LIGHT) and self:isTalentActive(self.T_WEAPON_OF_LIGHT) then - local dam = 7 + self:getTalentLevel(self.T_WEAPON_OF_LIGHT) * self:combatSpellpower(0.092) - DamageType:get(DamageType.LIGHT).projector(self, target.x, target.y, DamageType.LIGHT, dam) - self:incPositive(-3) - if self:getPositive() <= 0 then - self:forceUseTalent(self.T_WEAPON_OF_LIGHT, {ignore_energy=true}) + if self:getPositive() >= 3 then + local dam = 7 + self:getTalentLevel(self.T_WEAPON_OF_LIGHT) * self:combatSpellpower(0.092) + DamageType:get(DamageType.LIGHT).projector(self, target.x, target.y, DamageType.LIGHT, dam) + self:incPositive(-3) end end diff --git a/game/modules/tome/data/talents/celestial/combat.lua b/game/modules/tome/data/talents/celestial/combat.lua index ae8751de9d928ba3cc8ac8a21dd82fed23b74fd6..6da0ff0b3bc425a2c92a498b25857a610c780c4f 100644 --- a/game/modules/tome/data/talents/celestial/combat.lua +++ b/game/modules/tome/data/talents/celestial/combat.lua @@ -39,8 +39,8 @@ newTalent{ end, info = function(self, t) local damage = t.getDamage(self, t) - return ([[Infuse your weapon of the power of the Sun, doing %0.2f light damage with each hit. - Each hit will drain 3 positive energy. The spell ends when energy reaches 0. + return ([[Infuse your weapon of the power of the Sun, doing %0.2f light damage with each hit and costing 3 positive energy. + If you do not have enough positive energy, the effect will not trigger. The damage will increase with the Magic stat]]): format(damDesc(self, DamageType.LIGHT, damage)) end, diff --git a/game/modules/tome/data/talents/celestial/guardian.lua b/game/modules/tome/data/talents/celestial/guardian.lua index e530c582a2bb07c2c9127aa6360a72f5d42b268b..71e54a8fcbe7ff4f030d573ef4c2dc7967f7beb0 100644 --- a/game/modules/tome/data/talents/celestial/guardian.lua +++ b/game/modules/tome/data/talents/celestial/guardian.lua @@ -45,8 +45,8 @@ newTalent{ end, info = function(self, t) local heal = t.getHeal(self, t) - return ([[Infuse your shield with light energy, healing you for %0.2f each time you take damage. - Each heal will drain up to 2 positive energy. The spell ends when energy reaches 0. + return ([[Infuse your shield with light energy, healing you for %0.2f each time you take damage and costing up to 2 positive energy. + If you do not have enough positive energy, the effect will not trigger. The healing done will increase with the Magic stat]]): format(heal) end, diff --git a/game/modules/tome/data/talents/celestial/hymns.lua b/game/modules/tome/data/talents/celestial/hymns.lua index 3121c254892ddbb188ac436ac4c270d9957fbdbe..6ca9ca4a9be720a9506cad5af2f66f23ecc6e242 100644 --- a/game/modules/tome/data/talents/celestial/hymns.lua +++ b/game/modules/tome/data/talents/celestial/hymns.lua @@ -178,13 +178,7 @@ newTalent{ getTargetCount = function(self, t) return math.floor(self:getTalentLevel(t)) end, getNegativeDrain = function(self, t) return 9 - self:getTalentLevelRaw(t) end, do_beams = function(self, t) - if self:getNegative() <= 0 then - local old = self.energy.value - self.energy.value = 100000 - self:useTalent(self.T_HYMN_OF_MOONLIGHT) - self.energy.value = old - return - end + if self:getNegative() < t.getNegativeDrain(self, t) then return end local tgts = {} local grids = core.fov.circle_grids(self.x, self.y, 5, true)