Commit 8a7ba0f9207de3faa366a3d043462dfe10289cb5

Authored by dg
1 parent 5330a5ef

Fire Body drains 4 times less mana, does more damage and projectiles go throught friends safely

Fire Storm damage increased and cooldown reduced
Smoke Bomb radius increased
Smoke Bomb now will spread burning effects instead of changing LOS if a target is burning


git-svn-id: http://svn.net-core.org/repos/t-engine4@6257 51575b47-30f0-44d4-a5cc-537603b46e54
... ... @@ -61,38 +61,55 @@ newTalent{
61 61 requires_target = true,
62 62 getDuration = function(self, t) return 2 + self:combatSpellpower(0.03) * self:getTalentLevel(t) end,
63 63 action = function(self, t)
64   - local tg = {type="ball", range=self:getTalentRange(t), radius=1, talent=t}
  64 + local tg = {type="ball", range=self:getTalentRange(t), radius=2, talent=t}
65 65 local x, y = self:getTarget(tg)
66 66 if not x or not y then return nil end
  67 +
  68 + local heat = nil
67 69 self:project(tg, x, y, function(px, py)
68   - local e = Object.new{
69   - block_sight=true,
70   - temporary = t.getDuration(self, t),
71   - x = px, y = py,
72   - canAct = false,
73   - act = function(self)
74   - self:useEnergy()
75   - self.temporary = self.temporary - 1
76   - if self.temporary <= 0 then
77   - game.level.map:remove(self.x, self.y, engine.Map.TERRAIN+2)
78   - game.level:removeEntity(self)
79   - game.level.map:redisplay()
80   - end
81   - end,
82   - summoner_gain_exp = true,
83   - summoner = self,
84   - }
85   - game.level:addEntity(e)
86   - game.level.map(px, py, Map.TERRAIN+2, e)
87   - end, nil, {type="dark"})
  70 + local target = game.level.map(px, py, Map.ACTOR)
  71 + if target and target:hasEffect(target.EFF_BURNING) then heat = target:hasEffect(target.EFF_BURNING) end
  72 + end)
  73 +
  74 + if not heat then
  75 + self:project(tg, x, y, function(px, py)
  76 + local e = Object.new{
  77 + block_sight=true,
  78 + temporary = t.getDuration(self, t),
  79 + x = px, y = py,
  80 + canAct = false,
  81 + act = function(self)
  82 + self:useEnergy()
  83 + self.temporary = self.temporary - 1
  84 + if self.temporary <= 0 then
  85 + game.level.map:remove(self.x, self.y, engine.Map.TERRAIN+2)
  86 + game.level:removeEntity(self)
  87 + game.level.map:redisplay()
  88 + end
  89 + end,
  90 + summoner_gain_exp = true,
  91 + summoner = self,
  92 + }
  93 + game.level:addEntity(e)
  94 + game.level.map(px, py, Map.TERRAIN+2, e)
  95 + end, nil, {type="dark"})
  96 + else
  97 + self:project(tg, x, y, function(px, py)
  98 + local target = game.level.map(px, py, Map.ACTOR)
  99 + if target and not target:hasEffect(target.EFF_BURNING) and self:reactionToward(target) < 0 then
  100 + target:setEffect(target.EFF_BURNING, heat.dur + math.ceil(t.getDuration(self, t)/3), {src=self, power=heat.power})
  101 + end
  102 + end)
  103 + end
88 104 game:playSoundNear(self, "talents/breath")
89 105 return true
90 106 end,
91 107 info = function(self, t)
92 108 local duration = t.getDuration(self, t)
93 109 return ([[Throw a smoke bomb, blocking everyone's line of sight. The smoke dissipates after %d turns.
  110 + If a creature inside is victim of fire burns the smoke will consume instantly, replicating the burns on all foes and increasing its duration by %d turns.
94 111 Duration will increase with your Spellpower.]]):
95   - format(duration)
  112 + format(duration, math.ceil(duration / 3))
96 113 end,
97 114 }
98 115
... ... @@ -103,7 +120,7 @@ newTalent{
103 120 points = 5,
104 121 random_ego = "attack",
105 122 mana = 70,
106   - cooldown = 30,
  123 + cooldown = 20,
107 124 range = 0,
108 125 radius = 3,
109 126 target = function(self, t)
... ... @@ -111,7 +128,7 @@ newTalent{
111 128 end,
112 129 tactical = { ATTACKAREA = { FIRE = 2 } },
113 130 getDuration = function(self, t) return 5 + self:combatSpellpower(0.05) + self:getTalentLevel(t) end,
114   - getDamage = function(self, t) return self:combatTalentSpellDamage(t, 5, 90) end,
  131 + getDamage = function(self, t) return self:combatTalentSpellDamage(t, 5, 120) end,
115 132 action = function(self, t)
116 133 -- Add a lasting map effect
117 134 game.level.map:addEffect(self,
... ... @@ -155,7 +172,7 @@ newTalent{
155 172 getFireDamageOnHit = function(self, t) return self:combatTalentSpellDamage(t, 5, 25) end,
156 173 getResistance = function(self, t) return self:combatTalentSpellDamage(t, 5, 45) end,
157 174 getFireDamageInSight = function(self, t) return self:combatTalentSpellDamage(t, 15, 70) end,
158   - getManaDrain = function(self, t) return -0.4 * self:getTalentLevelRaw(t) end,
  175 + getManaDrain = function(self, t) return -0.1 * self:getTalentLevelRaw(t) end,
159 176 do_fire = function(self, t)
160 177 if self:getMana() <= 0 then
161 178 self:forceUseTalent(t.id, {ignore_energy=true})
... ... @@ -172,7 +189,7 @@ newTalent{
172 189 end end
173 190
174 191 -- Randomly take targets
175   - local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_fire"}}
  192 + local tg = {type="bolt", range=self:getTalentRange(t), talent=t, display={particle="bolt_fire"}, friendlyblock=false}
176 193 for i = 1, math.floor(self:getTalentLevel(t)) do
177 194 if #tgts <= 0 then break end
178 195 local a, id = rng.table(tgts)
... ... @@ -204,6 +221,7 @@ newTalent{
204 221 local res = t.getResistance(self, t)
205 222 local manadrain = t.getManaDrain(self, t)
206 223 return ([[Turn your body into pure flame, increasing your fire resistance by %d%%, burning any creatures attacking you for %0.2f fire damage, and projecting random slow-moving fire bolts at targets in sight, doing %0.2f fire damage with each bolt.
  224 + The projectiles safely go through your friends without harming them.
207 225 This powerful spell drains %0.2f mana while active.
208 226 The damage and resistance will increase with your Spellpower.]]):
209 227 format(res,onhitdam,insightdam,-manadrain)
... ...