diff --git a/game/modules/tome/data/talents/gifts/summon-augmentation.lua b/game/modules/tome/data/talents/gifts/summon-augmentation.lua index c9f51ceab51ef8f5739562b89d94c0f5d56f0fa5..d7ecab2562013b326dbf151307061877d81a94fe 100644 --- a/game/modules/tome/data/talents/gifts/summon-augmentation.lua +++ b/game/modules/tome/data/talents/gifts/summon-augmentation.lua @@ -67,6 +67,14 @@ newTalent{ end end, --]] + explodeDamage = function(self,t) return self:combatTalentMindDamage(t, 30, 250) end, + explodeBleed = function(self,t) return self:combatTalentMindDamage(t, 30, 350) end, + explodeBurn = function(self,t) return self:combatTalentMindDamage(t, 30, 300) end, + explodeFire = function(self,t) return self:combatTalentMindDamage(t, 10, 70) end, + knockbackDamage = function(self,t) return self:combatTalentMindDamage(t, 30, 150) end, + knockbackDist = function(self,t) return 4 end, + shellShiedling = function(self,t) return self:combatTalentMindDamage(t, 10, 35) end, + explodePin = function(self,t) return 3 end, action = function(self, t) local tg = {type="hit", range=self:getTalentRange(t), talent=t, first_target="friend"} local tx, ty, target = self:getTarget(tg) @@ -97,19 +105,19 @@ newTalent{ info = function(self, t) local radius = self:getTalentRadius(t) return ([[Destroys one of your summons, making it detonate in radius of %d. - - Ritch Flamespitter: Explodes into a fireball - - Hydra: Explodes into a ball of lightning, acid or poison - - Rimebark: Explodes into an iceball - - Fire Drake: Generates a cloud of fire - - War Hound: Explodes into a ball of physical damage - - Jelly: Explodes into a ball of slowing slime - - Minotaur: Explodes into a sharp ball, cutting all creatures - - Stone Golem: Knocks back all creatures - - Turtle: Grants a small shell shield to all friendly creatures - - Spider: Pins all foes around + - Ritch Flamespitter: Explodes into a fireball dealing %d damage + - Hydra: Explodes into a ball of %d lightning, acid or poison damage, chosen at random + - Rimebark: Explodes into an iceball dealing %d ice damage, possibly freezing damaged foes + - Fire Drake: Explodes into a cloud of lingering fire, dealing %d damage per turn + - War Hound: Explodes into a ball dealing %d physical damage + - Jelly: Explodes into a ball of slowing slime, dealing %d nature damage and slowing foes by 15%% + - Minotaur: Explodes into a sharp ball, cutting all creatures for %0.1f bleeding damage per turn for 6 turns + - Stone Golem: Knocks back all creatures %d tiles and deals %d physical damage + - Turtle: Grants a small shell shield to all friendly creatures, granting %d%% all resist + - Spider: Pins all foes around for %d turns In addition, a random summon will come off cooldown. Hostile effects will not hit you or your other summons. - The effects improve with your Willpower.]]):format(radius) + The effects improve with your mindpower, and can crit.]]):format(radius, t.explodeBurn(self,t), t.explodeDamage(self,t), t.explodeBurn(self,t), t.explodeFire(self,t), t.explodeDamage(self, t), t.explodeDamage(self,t), t.explodeBleed(self,t) / 6, t.knockbackDist(self,t), t.knockbackDamage(self,t), t.shellShiedling(self,t), t.explodePin(self,t)) end, } diff --git a/game/modules/tome/data/talents/gifts/summon-distance.lua b/game/modules/tome/data/talents/gifts/summon-distance.lua index a3271487a25277d784cba4ef968cb424012aabcf..b039e29158eda6d0daaa119d63a8acfe8469bcd2 100644 --- a/game/modules/tome/data/talents/gifts/summon-distance.lua +++ b/game/modules/tome/data/talents/gifts/summon-distance.lua @@ -404,7 +404,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.FIREBURN, self:mindCrit(self:combatTalentMindDamage(t, 30, 300))) + local explodeBurn = self:callTalent(self.T_DETONATE,"explodeBurn") + self:project(tg, m.x, m.y, DamageType.FIREBURN, self:mindCrit(explodeBurn)) game.level.map:particleEmitter(m.x, m.y, tg.radius, "ball_fire", {radius=tg.radius}) end, on_arrival = function(self, t, m) @@ -518,7 +519,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, rng.table{DamageType.LIGHTNING,DamageType.ACID,DamageType.POISON}, self:mindCrit(self:combatTalentMindDamage(t, 30, 250)), {type="flame"}) + local explodeDamage = self:callTalent(self.T_RESILIENCE,"explodeDamage") + self:project(tg, m.x, m.y, rng.table{DamageType.LIGHTNING,DamageType.ACID,DamageType.POISON}, self:mindCrit(explodeDamage), {type="flame"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} @@ -639,7 +641,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.ICE, self:mindCrit(self:combatTalentMindDamage(t, 30, 300)), {type="freeze"}) + local explodeDamage = self:callTalent(self.T_RESILIENCE,"explodeBurn") + self:project(tg, m.x, m.y, DamageType.ICE, self:mindCrit(explodeDamage), {type="freeze"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} @@ -753,9 +756,10 @@ newTalent{ end, on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) + local explodeFire = self:callTalent(self.T_DETONATE,"explodeFire") game.level.map:addEffect(self, m.x, m.y, 6, - DamageType.FIRE, self:mindCrit(self:combatTalentMindDamage(t, 10, 70)), + DamageType.FIRE, self:mindCrit(explodeFire), self:getTalentRadius(t), 5, nil, {type="inferno"}, diff --git a/game/modules/tome/data/talents/gifts/summon-melee.lua b/game/modules/tome/data/talents/gifts/summon-melee.lua index f52297cdc0b707047cd5c30b4f63fd018b8352d2..8257c10387e3b81d2efd2a1a7cb12941387e0126 100644 --- a/game/modules/tome/data/talents/gifts/summon-melee.lua +++ b/game/modules/tome/data/talents/gifts/summon-melee.lua @@ -97,7 +97,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.PHYSICAL, self:mindCrit(self:combatTalentMindDamage(t, 30, 250)), {type="flame"}) + local explodeDamage = self:callTalent(self.T_DETONATE,"explodeDamage") + self:project(tg, m.x, m.y, DamageType.PHYSICAL, self:mindCrit(explodeDamage), {type="flame"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} @@ -204,7 +205,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.SLIME, self:mindCrit(self:combatTalentMindDamage(t, 30, 200)), {type="flame"}) + local explodeDamage = self:callTalent(self.T_DETONATE, "explodeDamage") + self:project(tg, m.x, m.y, DamageType.SLIME, self:mindCrit(explodeDamage), {type="flame"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} @@ -322,7 +324,8 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.BLEED, self:mindCrit(self:combatTalentMindDamage(t, 30, 350)), {type="flame"}) + local explodeBleed = self:callTalent(self.T_DETONATE, "explodeBleed") + self:project(tg, m.x, m.y, DamageType.BLEED, self:mindCrit(explodeBleed), {type="flame"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} @@ -434,7 +437,9 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} - self:project(tg, m.x, m.y, DamageType.PHYSKNOCKBACK, {dam=self:mindCrit(self:combatTalentMindDamage(t, 30, 150)), dist=4}, {type="flame"}) + local distance = self:callTalent(self.T_DETONATE, "knockbackDist") + local knockbackDamage = self:callTalent(self.T_DETONATE, "knockbackDamage") + self:project(tg, m.x, m.y, DamageType.PHYSKNOCKBACK, {dam=self:mindCrit(knockbackDamage), dist=dist}, {type="flame"}) end, on_arrival = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} diff --git a/game/modules/tome/data/talents/gifts/summon-utility.lua b/game/modules/tome/data/talents/gifts/summon-utility.lua index 80ae4325ee9b82b66ca201526133ce5b318af4b2..464e9445184d86d431635b885bdf7a03d07af4c6 100644 --- a/game/modules/tome/data/talents/gifts/summon-utility.lua +++ b/game/modules/tome/data/talents/gifts/summon-utility.lua @@ -110,10 +110,11 @@ newTalent{ on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) local tg = {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y, ignore_nullify_all_friendlyfire=true} + local shellShielding = self:callTalent(self.T_DETONATE,"shellShielding") self:project(tg, m.x, m.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target or self:reactionToward(target) < 0 then return end - target:setEffect(target.EFF_SHELL_SHIELD, 4, {power=self:mindCrit(self:combatTalentMindDamage(t, 10, 35))}) + target:setEffect(target.EFF_SHELL_SHIELD, 4, {power=self:mindCrit(shellShielding)}) end, nil, {type="flame"}) end, summonTime = function(self, t) return math.floor(self:combatScale(self:getTalentLevel(t), 5, 0, 10, 5)) + self:callTalent(self.T_RESILIENCE, "incDur") end, @@ -234,12 +235,13 @@ newTalent{ end, on_pre_use_ai = aiSummonPreUse, on_detonate = function(self, t, m) + local explodePin = self:callTalent(self.T_DETONATE,"explodePin") local tg = {type="ball", range=self:getTalentRange(t), friendlyfire=false, radius=self:getTalentRadius(t), talent=t, x=m.x, y=m.y} self:project(tg, m.x, m.y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if not target or self:reactionToward(target) >= 0 then return end if target:canBe("pin") then - target:setEffect(target.EFF_PINNED, 3, {apply_power=self:mindCrit(self:combatMindpower())}) + target:setEffect(target.EFF_PINNED, explodePin, {apply_power=self:mindCrit(self:combatMindpower())}) end end, nil, {type="flame"}) end,