Skip to content
Snippets Groups Projects
Commit 4ecc59ca authored by dg's avatar dg
Browse files

Doomed talents can now proc mind procs

git-svn-id: http://svn.net-core.org/repos/t-engine4@6360 51575b47-30f0-44d4-a5cc-537603b46e54
parent 04c05901
No related branches found
No related tags found
No related merge requests found
...@@ -113,7 +113,7 @@ newTalent{ ...@@ -113,7 +113,7 @@ newTalent{
if target and not target.dead then if target and not target.dead then
local lifeSteal = t.getLifeSteal(self, t) local lifeSteal = t.getLifeSteal(self, t)
self:project({type="hit", x=target.x,y=target.y}, target.x, target.y, DamageType.DEVOUR_LIFE, { dam=lifeSteal }) self:project({type="hit", talent=t, x=target.x,y=target.y}, target.x, target.y, DamageType.DEVOUR_LIFE, { dam=lifeSteal })
game.level.map:particleEmitter(self.x, self.y, math.max(math.abs(target.x-self.x), math.abs(target.y-self.y)), "dark_torrent", {tx=target.x-self.x, ty=target.y-self.y}) game.level.map:particleEmitter(self.x, self.y, math.max(math.abs(target.x-self.x), math.abs(target.y-self.y)), "dark_torrent", {tx=target.x-self.x, ty=target.y-self.y})
--local dx, dy = target.x - self.x, target.y - self.y --local dx, dy = target.x - self.x, target.y - self.y
......
...@@ -223,7 +223,7 @@ newTalent{ ...@@ -223,7 +223,7 @@ newTalent{
local actor = game.level.map(self.x, self.y, Map.ACTOR) local actor = game.level.map(self.x, self.y, Map.ACTOR)
if actor and actor ~= self.summoner and (not actor.summoner or actor.summoner ~= self.summoner) then if actor and actor ~= self.summoner and (not actor.summoner or actor.summoner ~= self.summoner) then
self.projecting = true -- simplest way to indicate that this damage should not be amplified by the in creeping dark bonus self.projecting = true -- simplest way to indicate that this damage should not be amplified by the in creeping dark bonus
self.summoner:project(actor, actor.x, actor.y, engine.DamageType.DARKNESS, self.damage) self.summoner:project({type="hit", range=self:getTalentRange(t), talent=self:getTalentFromId(self.T_CREEPING_DARKNESS)}, actor.x, actor.y, engine.DamageType.DARKNESS, self.damage)
self.projecting = false self.projecting = false
end end
...@@ -394,7 +394,7 @@ newTalent{ ...@@ -394,7 +394,7 @@ newTalent{
-- your will ignores friendly targets (except for knockback hits) -- your will ignores friendly targets (except for knockback hits)
local target = game.level.map(x, y, Map.ACTOR) local target = game.level.map(x, y, Map.ACTOR)
if target then if target then
self:project(target, target.x, target.y, DamageType.DARKNESS, damage) self:project({type="hit", range=self:getTalentRange(t), talent=t}, target.x, target.y, DamageType.DARKNESS, damage)
if rng.percent(25) then if rng.percent(25) then
if not target.dead and target:canBe("blind") then if not target.dead and target:canBe("blind") then
target:setEffect(target.EFF_BLINDED, 3, {apply_power=self:combatMindpower(), min_dur=1}) target:setEffect(target.EFF_BLINDED, 3, {apply_power=self:combatMindpower(), min_dur=1})
......
...@@ -22,11 +22,11 @@ ...@@ -22,11 +22,11 @@
-- knockback: distance to knockback -- knockback: distance to knockback
-- knockbackDamage: when knockback strikes something, both parties take damage - percent of damage * remaining knockback -- knockbackDamage: when knockback strikes something, both parties take damage - percent of damage * remaining knockback
-- power: used to determine the initial radius of particles -- power: used to determine the initial radius of particles
local function forceHit(self, target, sourceX, sourceY, damage, knockback, knockbackDamage, power, max) local function forceHit(self, t, target, sourceX, sourceY, damage, knockback, knockbackDamage, power, max)
-- apply initial damage -- apply initial damage
if damage > 0 then if damage > 0 then
damage = self:mindCrit(damage) damage = self:mindCrit(damage)
self:project(target, target.x, target.y, DamageType.PHYSICAL, damage) self:project({type="hit", range=10, talent=t}, target.x, target.y, DamageType.PHYSICAL, damage)
game.level.map:particleEmitter(target.x, target.y, 1, "force_hit", {power=power, dx=target.x - sourceX, dy=target.y - sourceY}) game.level.map:particleEmitter(target.x, target.y, 1, "force_hit", {power=power, dx=target.x - sourceX, dy=target.y - sourceY})
end end
...@@ -66,12 +66,12 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock ...@@ -66,12 +66,12 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
-- take partial damage -- take partial damage
local blockDamage = damage * util.bound(knockback * (knockbackDamage / 100), 0, 1.5) local blockDamage = damage * util.bound(knockback * (knockbackDamage / 100), 0, 1.5)
self:project(target, target.x, target.y, DamageType.PHYSICAL, blockDamage) self:project({type="hit", range=10, talent=t}, target.x, target.y, DamageType.PHYSICAL, blockDamage)
if nextTarget then if nextTarget then
-- start a new force hit with the knockback damage and current knockback -- start a new force hit with the knockback damage and current knockback
if max > 0 then if max > 0 then
forceHit(self, nextTarget, sourceX, sourceY, blockDamage, knockback, knockbackDamage, power / 2, max - 1) forceHit(self, t, nextTarget, sourceX, sourceY, blockDamage, knockback, knockbackDamage, power / 2, max - 1)
end end
end end
...@@ -128,7 +128,7 @@ newTalent{ ...@@ -128,7 +128,7 @@ newTalent{
local power = 1 --(1 - ((distance - 1) / range)) local power = 1 --(1 - ((distance - 1) / range))
local damage = t.getDamage(self, t) * power local damage = t.getDamage(self, t) * power
local knockback = t.getKnockback(self, t) local knockback = t.getKnockback(self, t)
forceHit(self, target, self.x, self.y, damage, knockback, 7, power, 10) forceHit(self, t, target, self.x, self.y, damage, knockback, 7, power, 10)
return true return true
end, end,
on_learn = function(self, t) on_learn = function(self, t)
...@@ -266,7 +266,7 @@ newTalent{ ...@@ -266,7 +266,7 @@ newTalent{
local localDamage = damage * power local localDamage = damage * power
local dazeDuration = t.getDazeDuration(self, t) local dazeDuration = t.getDazeDuration(self, t)
forceHit(self, target, blastX, blastY, damage, math.max(0, knockback - distance), 7, power, 10) forceHit(self, t, target, blastX, blastY, damage, math.max(0, knockback - distance), 7, power, 10)
if target:canBe("stun") then if target:canBe("stun") then
target:setEffect(target.EFF_DAZED, dazeDuration, {src=self}) target:setEffect(target.EFF_DAZED, dazeDuration, {src=self})
end end
...@@ -351,7 +351,7 @@ newTalent{ ...@@ -351,7 +351,7 @@ newTalent{
-- Randomly take targets -- Randomly take targets
for i = 1, hitCount do for i = 1, hitCount do
local target, index = rng.table(targets) local target, index = rng.table(targets)
forceHit(self, target, target.x, target.y, damage, knockback, 7, 0.6, 10) forceHit(self, t, target, target.x, target.y, damage, knockback, 7, 0.6, 10)
end end
end end
......
...@@ -53,7 +53,7 @@ newTalent{ ...@@ -53,7 +53,7 @@ newTalent{
damage = damage * math.pow(spreadFactor, #targets - 1) damage = damage * math.pow(spreadFactor, #targets - 1)
end end
for i, t in ipairs(targets) do for i, t in ipairs(targets) do
self:project({type="hit", x=t.x,y=t.y}, t.x, t.y, DamageType.MIND, { dam=damage, crossTierChance=25 }) self:project({type="hit", talent=t, x=t.x,y=t.y}, t.x, t.y, DamageType.MIND, { dam=damage, crossTierChance=25 })
game.level.map:particleEmitter(t.x, t.y, 1, "reproach", { dx = self.x - t.x, dy = self.y - t.y }) game.level.map:particleEmitter(t.x, t.y, 1, "reproach", { dx = self.x - t.x, dy = self.y - t.y })
end 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