Skip to content
Snippets Groups Projects
Commit f425cac1 authored by Lisa Greene's avatar Lisa Greene
Browse files

Slightly restructure Detonate effects and add a useful tooltip to Detonate

parent ff5cabe5
No related branches found
No related tags found
2 merge requests!543Summoner Tweaks,!539Summoner Tweaks
......@@ -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,
}
......
......@@ -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"},
......
......@@ -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}
......
......@@ -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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment