Commit 68f079fe6e6ac2d268133ba26e22d234bfdb2d2d

Authored by dg
1 parent 7c5adab1

Damage penalty on rares stretches up until level 20


git-svn-id: http://svn.net-core.org/repos/t-engine4@5156 51575b47-30f0-44d4-a5cc-537603b46e54
... ... @@ -111,7 +111,7 @@ function _M:resolveLevelTalents()
111 111 end
112 112
113 113 --- Make the actor use the talent
114   -function _M:useTalent(id, who, force_level, ignore_cd, force_target)
  114 +function _M:useTalent(id, who, force_level, ignore_cd, force_target, silent)
115 115 who = who or self
116 116 local ab = _M.talents_def[id]
117 117 assert(ab, "trying to cast talent "..tostring(id).." but it is not defined")
... ... @@ -121,7 +121,7 @@ function _M:useTalent(id, who, force_level, ignore_cd, force_target)
121 121 game.logPlayer(who, "%s is still on cooldown for %d turns.", ab.name:capitalize(), self.talents_cd[ab.id])
122 122 return
123 123 end
124   - if not self:preUseTalent(ab) then return end
  124 + if not self:preUseTalent(ab, silent) then return end
125 125 local co = coroutine.create(function()
126 126 local old_level
127 127 local old_target
... ... @@ -145,7 +145,7 @@ function _M:useTalent(id, who, force_level, ignore_cd, force_target)
145 145 game.logPlayer(who, "%s is still on cooldown for %d turns.", ab.name:capitalize(), self.talents_cd[ab.id])
146 146 return
147 147 end
148   - if not self:preUseTalent(ab) then return end
  148 + if not self:preUseTalent(ab, silent) then return end
149 149 local co = coroutine.create(function()
150 150 if not self.sustain_talents[id] then
151 151 local old_level
... ... @@ -220,7 +220,7 @@ function _M:forceUseTalent(t, def)
220 220 if def.ignore_energy then self.energy.value = 10000 end
221 221
222 222 if def.ignore_ressources then self:attr("force_talent_ignore_ressources", 1) end
223   - local ret = {self:useTalent(t, def.force_who, def.force_level, def.ignore_cd, def.force_target)}
  223 + local ret = {self:useTalent(t, def.force_who, def.force_level, def.ignore_cd, def.force_target, def.silent)}
224 224 if def.ignore_ressources then self:attr("force_talent_ignore_ressources", -1) end
225 225
226 226 if def.ignore_energy then
... ...
... ... @@ -255,7 +255,7 @@ function _M:stripForExport()
255 255 for tid, act in pairs(self.sustain_talents) do if act then list[#list+1] = tid end end
256 256 while #list > 0 do
257 257 local eff = rng.tableRemove(list)
258   - self:forceUseTalent(eff, {ignore_energy=true, no_equilibrium_fail=true, no_paradox_fail=true})
  258 + self:forceUseTalent(eff, {silent=true, ignore_energy=true, no_equilibrium_fail=true, no_paradox_fail=true, save_cleanup=true})
259 259 end
260 260 end
261 261
... ... @@ -3219,10 +3219,12 @@ function _M:forceUseTalent(t, def)
3219 3219 if def.no_equilibrium_fail then self:attr("no_equilibrium_fail", 1) end
3220 3220 if def.no_paradox_fail then self:attr("no_paradox_fail", 1) end
3221 3221 if def.talent_reuse then self:attr("talent_reuse", 1) end
  3222 + if def.save_cleanup then self:attr("save_cleanup", 1) end
3222 3223 local ret = {engine.interface.ActorTalents.forceUseTalent(self, t, def)}
3223 3224 if def.no_equilibrium_fail then self:attr("no_equilibrium_fail", -1) end
3224 3225 if def.no_paradox_fail then self:attr("no_paradox_fail", -1) end
3225 3226 if def.talent_reuse then self:attr("talent_reuse", -1) end
  3227 + if def.save_cleanup then self:attr("save_cleanup", -1) end
3226 3228 return unpack(ret)
3227 3229 end
3228 3230
... ...
... ... @@ -1118,9 +1118,9 @@ function _M:entityFilterPost(zone, level, type, e, filter)
1118 1118 level = filter.random_elite.level or zone:level_adjust_level(level, zone, type),
1119 1119 check_talents_level = true,
1120 1120 post = function(b, data)
1121   - if data.level <= 12 then
  1121 + if data.level <= 20 then
1122 1122 b.inc_damage = b.inc_damage or {}
1123   - b.inc_damage.all = (b.inc_damage.all or 0) - 40 * (12 - data.level + 1) / 12
  1123 + b.inc_damage.all = (b.inc_damage.all or 0) - 40 * (20 - data.level + 1) / 20
1124 1124 end
1125 1125 end,
1126 1126 }
... ...
... ... @@ -90,6 +90,7 @@ newTalent{
90 90 deactivate = function(self, t, p)
91 91 local spike_str = getSpikeStrength(self, t)
92 92 self:removeTemporaryValue("kinetic_shield", p.am)
  93 + if self:attr("save_cleanup") then return true end
93 94 self:setEffect(self.EFF_KINSPIKE_SHIELD, 5, {power=spike_str})
94 95 return true
95 96 end,
... ... @@ -193,6 +194,7 @@ newTalent{
193 194 deactivate = function(self, t, p)
194 195 local spike_str = getSpikeStrength(self, t)
195 196 self:removeTemporaryValue("thermal_shield", p.am)
  197 + if self:attr("save_cleanup") then return true end
196 198 self:setEffect(self.EFF_THERMSPIKE_SHIELD, 5, {power=spike_str})
197 199 return true
198 200 end,
... ... @@ -293,6 +295,7 @@ newTalent{
293 295 deactivate = function(self, t, p)
294 296 local spike_str = getSpikeStrength(self, t)
295 297 self:removeTemporaryValue("charged_shield", p.am)
  298 + if self:attr("save_cleanup") then return true end
296 299 self:setEffect(self.EFF_CHARGESPIKE_SHIELD, 5, {power=spike_str})
297 300 return true
298 301 end,
... ...
... ... @@ -154,6 +154,7 @@ newTalent{
154 154 return true
155 155 end,
156 156 deactivate = function(self, t, p)
  157 + if self:attr("save_cleanup") then return true end
157 158 local dam = t.getAuraSpikeStrength(self, t)
158 159 local cost = t.getSpikeCost(self, t)
159 160 if self:getPsi() <= cost then
... ... @@ -269,6 +270,7 @@ newTalent{
269 270 return true
270 271 end,
271 272 deactivate = function(self, t, p)
  273 + if self:attr("save_cleanup") then return true end
272 274 local dam = t.getAuraSpikeStrength(self, t)
273 275 local cost = t.getSpikeCost(self, t)
274 276 --if self:isTalentActive(self.T_CONDUIT) then return true end
... ... @@ -390,6 +392,7 @@ newTalent{
390 392 return true
391 393 end,
392 394 deactivate = function(self, t, p)
  395 + if self:attr("save_cleanup") then return true end
393 396 local dam = t.getAuraSpikeStrength(self, t)
394 397 local cost = t.getSpikeCost(self, t)
395 398 --if self:isTalentActive(self.T_CONDUIT) then return true end
... ...