diff --git a/game/modules/tome/data/talents/spells/master-of-bones.lua b/game/modules/tome/data/talents/spells/master-of-bones.lua index d4e803849d6237136a78c6450c0579f2ac01a5cc..7da8e6383116e25e52e79c7b4d9f48c17017cc25 100644 --- a/game/modules/tome/data/talents/spells/master-of-bones.lua +++ b/game/modules/tome/data/talents/spells/master-of-bones.lua @@ -476,7 +476,7 @@ newTalent{ melee_project = {[DamageType.BLIGHT]=resolvers.mbonus(15, 5)}, autolevel = "warriormage", resists = {all = 50}, - resolvers.talents{ T_BONE_ARMOUR={base=5, every=10, max=7}, T_STUN={base=3, every=10, max=5}, T_SKELETON_REASSEMBLE=5, }, + resolvers.talents{ T_BONE_ARMOUR={base=5, every=10, max=7}, T_THROW_BONES={base=4, every=10, max=7}, T_STUN={base=3, every=10, max=5}, T_SKELETON_REASSEMBLE=5, }, }, }, tactical = { ATTACK = 2 }, @@ -542,34 +542,35 @@ newTalent{ onAIGetTarget = function(self, t) local targets = {} for _, act in pairs(game.level.entities) do - if act.summoner == self and act.necrotic_minion and act.skeleton_minion and self:hasLOS(act.x, act.y) and core.fov.distance(self.x, self.y, act.x, act.y) <= self:getTalentRange(t) then + if act.summoner == self and act.necrotic_minion and (act.skeleton_minion or act.is_bone_giant) and self:hasLOS(act.x, act.y) and core.fov.distance(self.x, self.y, act.x, act.y) <= self:getTalentRange(t) then targets[#targets+1] = act end end if #targets == 0 then return nil end local tgt = rng.table(targets) return tgt.x, tgt.y, tgt end, - on_pre_use = function(self, t) return necroArmyStats(self).nb_skeleton > 0 end, + on_pre_use = function(self, t) local stats = necroArmyStats(self) return stats.nb_skeleton > 0 or stats.bone_giant end, action = function(self, t, p) local tg = self:getTalentTarget(t) local x, y, target = self:getTargetLimited(tg) if not x or not y or not target then return nil end - if not target.skeleton_minion or target.summoner ~= self then return nil end + if (not target.skeleton_minion and not target.is_bone_giant) or target.summoner ~= self then return nil end local stats = necroArmyStats(self) if stats.lord_of_skulls then stats.lord_of_skulls:removeEffect(stats.lord_of_skulls.EFF_LORD_OF_SKULLS, false, true) end - target:setEffect(target.EFF_LORD_OF_SKULLS, 1, {life=t:_getLife(self), talents=self:getTalentLevel(t) >= 6}) + target:setEffect(target.EFF_LORD_OF_SKULLS, 1, {life=t:_getLife(self), talents=self:getTalentLevel(t)}) return true end, info = function(self, t) return ([[Consume a soul to empower one of your skeleton, making it into a Lord of Skulls. The Lord of Skulls gain %d%% more life, is instantly healed to full. There can be only one active Lord of Skulls, casting this spell on an other skeleton removes the effect from the current one. - At level 6 it also gains a new talent: - - Warriors learn Giant Leap, a powerful jump attack that deals damage and dazes and impact and frees the skeleton from any stun, daze and pin effects they may have - - Archers learn Vital Shot, a devastating attack that can stun and cripple their foes - - Mages learn Meteoric Crash, a destructive spell that crushes and burns foes in a big radius for multiple turns + It also gains a new talent if high enough: + At level 2 Warriors learn Giant Leap, a powerful jump attack that deals damage and dazes and impact and frees the skeleton from any stun, daze and pin effects they may have + At level 3 Archers learn Vital Shot, a devastating attack that can stun and cripple their foes + At level 5 Mages learn Meteoric Crash, a destructive spell that crushes and burns foes in a big radius for multiple turns + At level 6 Bone Giants learn You Shall Be My Weapon!, a massive attack that deals high damage, knockbacks foes and stuns them ]]): tformat(t:_getLife(self)) end, diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index 7e9d7212212219c2f04f8c4d4e6fadd955bec278..994a3b1fb7f4e0b685e54bf342546047121aec1a 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -4745,35 +4745,38 @@ newEffect{ if self.skeleton_minion == "warrior" then self.name = _t"Lord of Skulls (warrior)" elseif self.skeleton_minion == "archer" then self.name = _t"Lord of Skulls (archer)" elseif self.skeleton_minion == "mage" then self.name = _t"Lord of Skulls (mage)" + elseif self.is_bone_giant then self.name = _t"Lord of Skulls (bone giant)" end - if eff.talents then - if self.skeleton_minion == "warrior" then self:learnTalent(self.T_GIANT_LEAP, true) - elseif self.skeleton_minion == "archer" then self:learnTalent(self.T_VITAL_SHOT, true) - elseif self.skeleton_minion == "mage" then self:learnTalent(self.T_METEORIC_CRASH, true) - end + if eff.talents >= 2 and self.skeleton_minion == "warrior" then self:learnTalent(self.T_GIANT_LEAP, true) + elseif eff.talents >= 3 and self.skeleton_minion == "archer" then self:learnTalent(self.T_VITAL_SHOT, true) + elseif eff.talents >= 5 and self.skeleton_minion == "mage" then self:learnTalent(self.T_METEORIC_CRASH, true) + elseif eff.talents >= 6 and self.is_bone_giant then self:learnTalent(self.T_TITAN_S_SMASH, true) end local image if self.skeleton_minion == "warrior" then image = "npc/lord_of_skulls_warrior.png" elseif self.skeleton_minion == "archer" then image = "npc/lord_of_skulls_archer.png" elseif self.skeleton_minion == "mage" then image = "npc/lord_of_skulls_magus.png" + elseif self.is_bone_giant then image = "npc/undead_giant_heavy_sentinel.png" end self.replace_display = mod.class.Actor.new{ - image = image, display_y = -1, display_h = 2 + image = "invis.png", + add_mos = {{image = image, display_y = -1, display_h = 2}} } self:removeAllMOs() game.level.map:updateMap(self.x, self.y) end, deactivate = function(self, eff) self.lord_of_skulls = false - if eff.talents then - if self.skeleton_minion == "warrior" then self:unlearnTalent(self.T_GIANT_LEAP, 1) - elseif self.skeleton_minion == "archer" then self:unlearnTalent(self.T_VITAL_SHOT, 1) - elseif self.skeleton_minion == "mage" then self:unlearnTalent(self.T_METEORIC_CRASH, 1) - end + + if eff.talents >= 2 and self.skeleton_minion == "warrior" then self:unlearnTalent(self.T_GIANT_LEAP, 1) + elseif eff.talents >= 3 and self.skeleton_minion == "archer" then self:unlearnTalent(self.T_VITAL_SHOT, 1) + elseif eff.talents >= 5 and self.skeleton_minion == "mage" then self:unlearnTalent(self.T_METEORIC_CRASH, 1) + elseif eff.talents >= 6 and self.is_bone_giant then self:unlearnTalent(self.T_TITAN_S_SMASH, 1) end + self.name = self.old_los_name self.replace_display = nil self:removeAllMOs()