From b15cb792633daddabc634de32c96f4a8991f216e Mon Sep 17 00:00:00 2001 From: Eric Wykoff <ericwykoff@yahoo.com> Date: Thu, 22 Jan 2015 09:09:51 -0600 Subject: [PATCH] scaling tweaks on all the rest --- .../data/talents/chronomancy/chronomancy.lua | 2 -- .../data/talents/chronomancy/fate-weaving.lua | 2 +- .../tome/data/talents/chronomancy/gravity.lua | 14 +++++--- .../tome/data/talents/chronomancy/matter.lua | 4 +-- .../talents/chronomancy/spacetime-folding.lua | 12 +++---- .../tome/data/talents/chronomancy/stasis.lua | 33 +++++-------------- .../chronomancy/timeline-threading.lua | 3 -- .../data/talents/chronomancy/timetravel.lua | 2 +- 8 files changed, 28 insertions(+), 44 deletions(-) diff --git a/game/modules/tome/data/talents/chronomancy/chronomancy.lua b/game/modules/tome/data/talents/chronomancy/chronomancy.lua index 5b88ef4177..1e10bb219b 100644 --- a/game/modules/tome/data/talents/chronomancy/chronomancy.lua +++ b/game/modules/tome/data/talents/chronomancy/chronomancy.lua @@ -168,8 +168,6 @@ newTalent{ paradox = function (self, t) return getParadoxCost(self, t, 20) end, cooldown = 50, no_npc_use = true, -- so rares don't learn useless talents - allow_temporal_clones = true, -- let clones copy it anyway so they can benefit from the effects - on_pre_use = function(self, t, silent) if self ~= game.player then return false end return true end, -- but don't let them cast it getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 10, 25))) end, on_pre_use = function(self, t, silent) if checkTimeline(self) then diff --git a/game/modules/tome/data/talents/chronomancy/fate-weaving.lua b/game/modules/tome/data/talents/chronomancy/fate-weaving.lua index 3902362d8c..2df1a5cbdb 100644 --- a/game/modules/tome/data/talents/chronomancy/fate-weaving.lua +++ b/game/modules/tome/data/talents/chronomancy/fate-weaving.lua @@ -112,7 +112,7 @@ newTalent{ cooldown = 12, tactical = { BUFF = 2, DEFEND = 2 }, range = 10, - getPower = function(self, t) return self:combatTalentLimit(t, 25, 5, 15)/100 end, -- Limit < 25% + getPower = function(self, t) return self:combatTalentLimit(t, 50, 10, 30)/100 end, -- Limit < 50% getDuration = function(self, t) return getExtensionModifier(self, t, 5) end, no_energy = true, action = function(self, t) diff --git a/game/modules/tome/data/talents/chronomancy/gravity.lua b/game/modules/tome/data/talents/chronomancy/gravity.lua index 8f838f70c0..ba30d898cf 100644 --- a/game/modules/tome/data/talents/chronomancy/gravity.lua +++ b/game/modules/tome/data/talents/chronomancy/gravity.lua @@ -190,9 +190,9 @@ newTalent{ cooldown = 10, tactical = { BUFF = 2 }, points = 5, - getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 50, getParadoxSpellpower(self, t)) end, - getSlow = function(self, t) return self:combatTalentLimit(t, 80, 20, 50) end, + getSlow = function(self, t) return self:combatTalentLimit(t, 80, 10, 50) end, getAnti = function(self, t) return self:combatTalentLimit(t, 100, 10, 75) end, + getConversion= function(self, t) return self:combatTalentLimit(t, 100, 10, 75) end, callbackOnMeleeHit = function(self, t, target) if not self.dead and self:isTalentActive(self.T_GRAVITY_LOCUS) then self:project({type="hit", talent=t}, target.x, target.y, DamageType.GRAVITY, {dam=t.getDamage(self, t), anti=true, dur=2, apply=getParadoxSpellpower(self, t)}) @@ -202,21 +202,25 @@ newTalent{ game:playSoundNear(self, "talents/heal") local particle = Particles.new("ultrashield", 1, {rm=204, rM=220, gm=102, gM=120, bm=0, bM=0, am=35, aM=90, radius=0.5, density=10, life=28, instop=100}) return { + converttype = self:addTemporaryValue("all_damage_convert", DamageType.PHYSICAL), + convertamount = self:addTemporaryValue("all_damage_convert_percent", t.getConversion(self, t)), proj = self:addTemporaryValue("slow_projectiles", t.getSlow(self, t)), particle = self:addParticles(particle) } end, deactivate = function(self, t, p) + self:removeTemporaryValue("all_damage_convert", p.converttype) + self:removeTemporaryValue("all_damage_convert_percent", p.convertamount) self:removeTemporaryValue("slow_projectiles", p.proj) self:removeParticles(p.particle) return true end, info = function(self, t) + local conv = t.getConversion(self, t) local proj = t.getSlow(self, t) local anti = t.getAnti(self, t) - return ([[Create a gravity field around you that slows incoming projectiles by %d%% and protects you from all gravity damage and effects. - Additionally, damage dealt by Repulsion Blast has a %d%% chance to reduce the target's knockback resistance by half for two turns. - Some spells may have their damage type changed to physical by this spell. See individual talent descriptions for details.]]):format(proj, anti) + return ([[Create a gravity field around you that converts %d%% of your damage to physical, slows incoming projectiles by %d%%, and protects you from all gravity damage and effects. + Additionally, damage dealt by Repulsion Blast has a %d%% chance to reduce the target's knockback resistance by half for two turns.]]):format(conv, proj, anti) end, } diff --git a/game/modules/tome/data/talents/chronomancy/matter.lua b/game/modules/tome/data/talents/chronomancy/matter.lua index 6ab61475b4..5ae740aabd 100644 --- a/game/modules/tome/data/talents/chronomancy/matter.lua +++ b/game/modules/tome/data/talents/chronomancy/matter.lua @@ -133,7 +133,7 @@ newTalent{ direct_hit = true, requires_target = true, radius = function(self, t) return math.floor(self:combatTalentScale(t, 1.25, 3.25)) end, - getDamage = function(self, t) return self:combatTalentSpellDamage(t, 10, 120, getParadoxSpellpower(self, t)) end, + getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 220, getParadoxSpellpower(self, t)) end, getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 4, 6))) end, getLength = function(self, t) return 1 + math.floor(self:combatTalentScale(t, 3, 7)/2)*2 end, target = function(self, t) @@ -228,7 +228,7 @@ newTalent{ cooldown = 10, tactical = { BUFF = 2 }, getDigs = function(self, t) return math.floor(self:combatTalentScale(t, 1, 5, "log")) end, - getChance = function(self, t) return self:combatTalentLimit(t, 40, 10, 30) end, -- Limit < 40%end, + getChance = function(self, t) return self:combatTalentLimit(t, 50, 10, 40) end, -- Limit < 50%end, doStrip = function(self, t, target, type) local what = type == "PHYSICAL" and "physical" or "magical" local p = self:isTalentActive(self.T_DISINTEGRATION) diff --git a/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua b/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua index 82863b44c7..9887edd813 100644 --- a/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua +++ b/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua @@ -147,7 +147,7 @@ newTalent{ name = "Warp Mine Toward", type = {"chronomancy/other", 1}, points = 1, - cooldown = 10, + cooldown = 4, paradox = function (self, t) return getParadoxCost(self, t, 10) end, tactical = { ATTACKAREA = { TEMPORAL = 1, PHYSICAL = 1 }, CLOSEIN = 2 }, requires_target = true, @@ -198,7 +198,7 @@ newTalent{ name = "Warp Mine Away", type = {"chronomancy/other", 1}, points = 1, - cooldown = 10, + cooldown = 4, paradox = function (self, t) return getParadoxCost(self, t, 10) end, tactical = { ATTACKAREA = { TEMPORAL = 1, PHYSICAL = 1 }, ESCAPE = 2 }, requires_target = true, @@ -250,8 +250,8 @@ newTalent{ type = {"chronomancy/spacetime-folding", 2}, require = chrono_req2, points = 5, - paradox = function (self, t) return getParadoxCost(self, t, 10) end, - cooldown = 10, + paradox = function (self, t) return getParadoxCost(self, t, 12) end, + cooldown = 6, tactical = { ESCAPE = 2 }, range = 0, radius = function(self, t) return math.floor(self:combatTalentScale(t, 2.5, 5.5)) end, @@ -308,8 +308,8 @@ newTalent{ type = {"chronomancy/spacetime-folding", 3}, require = chrono_req3, points = 5, - paradox = function (self, t) return getParadoxCost(self, t, 10) end, - cooldown = 10, + paradox = function (self, t) return getParadoxCost(self, t, 12) end, + cooldown = 8, tactical = { DISABLE = 2 }, range = 10, requires_target = true, diff --git a/game/modules/tome/data/talents/chronomancy/stasis.lua b/game/modules/tome/data/talents/chronomancy/stasis.lua index 4f1656abea..80dac709d7 100644 --- a/game/modules/tome/data/talents/chronomancy/stasis.lua +++ b/game/modules/tome/data/talents/chronomancy/stasis.lua @@ -76,41 +76,30 @@ newTalent{ require = chrono_req3, points = 5, paradox = function (self, t) return getParadoxCost(self, t, 20) end, - cooldown = 12, + cooldown = 8, tactical = { ATTACKAREA = 1, DISABLE = 3 }, range = 10, radius = function(self, t) return math.floor(self:combatTalentScale(t, 1.3, 2.7)) end, direct_hit = true, requires_target = true, target = function(self, t) - return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=self:spellFriendlyFire(), talent=t} + return {type="ball", range=self:getTalentRange(t), radius=self:getTalentRadius(t), selffire=false, talent=t} end, getDuration = function(self, t) return getExtensionModifier(self, t, math.ceil(self:combatTalentScale(t, 2.3, 4.3))) end, - getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 170, getParadoxSpellpower(self, t)) end, - getDamageType = function(self, t) - local damage_type = DamageType.TEMPORAL - local dt_name = "temporal" - if self:isTalentActive(self.T_GRAVITY_LOCUS) then - damage_type = DamageType.PHYSICAL - dt_name = "physical" - end - return damage_type, dt_name - end, + getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 220, getParadoxSpellpower(self, t)) end, action = function(self, t) local tg = self:getTalentTarget(t) local x, y = self:getTarget(tg) if not x or not y then return nil end local _ _, _, _, x, y = self:canProject(tg, x, y) - - local dt_type, dt_name = t.getDamageType(self, t) local dam = self:spellCrit(t.getDamage(self, t)) local dur = t.getDuration(self, t) local grids = self:project(tg, x, y, function(px, py) local target = game.level.map(px, py, Map.ACTOR) if target then - self:project({type="hit"}, px, py, dt_type, dam) + self:project({type="hit"}, px, py, DamageType.TEMPORAL, dam) -- Apply Stun or Time Prison if self:hasEffect(self.EFF_STATIC_HISTORY) then @@ -129,9 +118,7 @@ newTalent{ end end) - local particle_name = "temporal_flash" - if dt_name == "physical" then particle_name = "gravity_spike" end - game.level.map:particleEmitter(x, y, tg.radius, particle_name, {radius=tg.radius, tx=x, ty=y}) + game.level.map:particleEmitter(x, y, tg.radius, "temporal_flash", {radius=tg.radius, tx=x, ty=y}) game:playSoundNear(self, "talents/tidalwave") return true end, @@ -139,11 +126,9 @@ newTalent{ local damage = t.getDamage(self, t) local radius = self:getTalentRadius(t) local duration = t.getDuration(self, t) - local dt_type, dt_name = t.getDamageType(self, t) - return ([[Inflicts %0.2f %s damage, and attempts to stun all creatures in a radius %d ball for %d turns. - If you have Gravity Locus sustained this spell will deal physical damage, otherwise it deals temporal damage. + return ([[Inflicts %0.2f temporal damage, and attempts to stun all other creatures in a radius %d ball for %d turns. The damage will scale with your Spellpower.]]): - format(damDesc(self, dt_type, damage), dt_name, radius, duration) + format(damDesc(self, DamageType.TEMPORAL, damage), radius, duration) end, } @@ -154,8 +139,8 @@ newTalent{ points = 5, cooldown = 24, tactical = { PARADOX = 2 }, - getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 3.5, 6.5))) end, - getParadoxMulti = function(self, t) return self:combatTalentLimit(t, 2, 0.40, .60) end, + getDuration = function(self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 3.5, 8.5))) end, + getParadoxMulti = function(self, t) return self:combatTalentLimit(t, 1, 0.2, .60) end, -- limit 100% no_energy = true, action = function(self, t) game:playSoundNear(self, "talents/spell_generic") diff --git a/game/modules/tome/data/talents/chronomancy/timeline-threading.lua b/game/modules/tome/data/talents/chronomancy/timeline-threading.lua index a60b8f14ed..eb222d9566 100644 --- a/game/modules/tome/data/talents/chronomancy/timeline-threading.lua +++ b/game/modules/tome/data/talents/chronomancy/timeline-threading.lua @@ -221,9 +221,6 @@ newTalent{ tactical = { ATTACK = 2 }, requires_target = true, direct_hit = true, - no_npc_use = true, -- so rares don't learn useless talents - allow_temporal_clones = true, -- let clones copy it anyway so they can benefit from the effects - on_pre_use = function(self, t, silent) if self ~= game.player then return false end return true end, -- but don't let them cast it getDuration = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9)) end, getPower = function(self, t) return self:combatTalentScale(t, 20, 50, 100) end, target = function(self, t) diff --git a/game/modules/tome/data/talents/chronomancy/timetravel.lua b/game/modules/tome/data/talents/chronomancy/timetravel.lua index 5a7f2958a2..c68b4985ae 100644 --- a/game/modules/tome/data/talents/chronomancy/timetravel.lua +++ b/game/modules/tome/data/talents/chronomancy/timetravel.lua @@ -296,7 +296,7 @@ newTalent{ end, direct_hit = true, requires_target = true, - getDamage = function(self, t) return self:combatTalentSpellDamage(t, 18, 160, getParadoxSpellpower(self, t)) end, + getDamage = function(self, t) return self:combatTalentSpellDamage(t, 20, 220, getParadoxSpellpower(self, t)) end, getPercent = function(self, t) return self:combatTalentLimit(t, 60, 20, 40)/100 end, action = function(self, t) local tg = self:getTalentTarget(t) -- GitLab