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{
if target and not target.dead then
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})
--local dx, dy = target.x - self.x, target.y - self.y
......
......@@ -223,7 +223,7 @@ newTalent{
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
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
end
......@@ -394,7 +394,7 @@ newTalent{
-- your will ignores friendly targets (except for knockback hits)
local target = game.level.map(x, y, Map.ACTOR)
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 not target.dead and target:canBe("blind") then
target:setEffect(target.EFF_BLINDED, 3, {apply_power=self:combatMindpower(), min_dur=1})
......
......@@ -22,11 +22,11 @@
-- knockback: distance to knockback
-- knockbackDamage: when knockback strikes something, both parties take damage - percent of damage * remaining knockback
-- 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
if damage > 0 then
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})
end
......@@ -66,12 +66,12 @@ local function forceHit(self, target, sourceX, sourceY, damage, knockback, knock
-- take partial damage
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
-- start a new force hit with the knockback damage and current knockback
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
......@@ -128,7 +128,7 @@ newTalent{
local power = 1 --(1 - ((distance - 1) / range))
local damage = t.getDamage(self, t) * power
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
end,
on_learn = function(self, t)
......@@ -266,7 +266,7 @@ newTalent{
local localDamage = damage * power
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
target:setEffect(target.EFF_DAZED, dazeDuration, {src=self})
end
......@@ -351,7 +351,7 @@ newTalent{
-- Randomly take targets
for i = 1, hitCount do
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
......
......@@ -53,7 +53,7 @@ newTalent{
damage = damage * math.pow(spreadFactor, #targets - 1)
end
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 })
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