From 45e6bbfbd8efd644deefcd1d1d4d931a32290890 Mon Sep 17 00:00:00 2001 From: Eric Wykoff <ericwykoff@yahoo.com> Date: Thu, 22 Jan 2015 19:26:25 -0600 Subject: [PATCH] better range on wormhole, dimensional anchor learned sooner --- .../talents/chronomancy/spacetime-folding.lua | 123 +++++++++--------- .../talents/chronomancy/spacetime-weaving.lua | 2 +- .../data/zones/unhallowed-morass/npcs.lua | 2 +- 3 files changed, 64 insertions(+), 63 deletions(-) diff --git a/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua b/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua index dc91a16a25..e4fa85f762 100644 --- a/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua +++ b/game/modules/tome/data/talents/chronomancy/spacetime-folding.lua @@ -246,69 +246,11 @@ newTalent{ } newTalent{ - name = "Banish", + name = "Spatial Tether", type = {"chronomancy/spacetime-folding", 2}, require = chrono_req2, points = 5, 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, - getTeleport = function(self, t) return math.floor(self:combatTalentScale(t, 8, 16)) end, - target = function(self, t) - return {type="ball", range=0, radius=self:getTalentRadius(t), selffire=false, talent=t} - end, - requires_target = true, - direct_hit = true, - action = function(self, t) - local tg = self:getTalentTarget(t) - local hit = false - - self:project(tg, self.x, self.y, function(px, py) - local target = game.level.map(px, py, Map.ACTOR) - if not target or target == self then return end - game.level.map:particleEmitter(target.x, target.y, 1, "temporal_teleport") - if self:checkHit(getParadoxSpellpower(self, t), target:combatSpellResist() + (target:attr("continuum_destabilization") or 0)) and target:canBe("teleport") then - if not target:teleportRandom(target.x, target.y, self:getTalentRadius(t) * 4, self:getTalentRadius(t) * 2) then - game.logSeen(target, "The spell fizzles on %s!", target.name:capitalize()) - else - target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100, {power=getParadoxSpellpower(self, t, 0.3)}) - game.level.map:particleEmitter(target.x, target.y, 1, "temporal_teleport") - hit = true - end - else - game.logSeen(target, "%s resists the banishment!", target.name:capitalize()) - end - end) - - if not hit then - game:onTickEnd(function() - if not self:attr("no_talents_cooldown") then - self.talents_cd[self.T_BANISH] = self.talents_cd[self.T_BANISH] /2 - end - end) - end - - game:playSoundNear(self, "talents/teleport") - - return true - end, - info = function(self, t) - local radius = self:getTalentRadius(t) - local range = t.getTeleport(self, t) - return ([[Randomly teleports all targets within a radius of %d around you. Targets will be teleported between %d and %d tiles from their current location. - If no targets are teleported the cooldown will be halved. - The chance of teleportion will scale with your Spellpower.]]):format(radius, range / 2, range) - end, -} - -newTalent{ - name = "Spatial Tether", - type = {"chronomancy/spacetime-folding", 3}, - require = chrono_req3, - points = 5, - paradox = function (self, t) return getParadoxCost(self, t, 12) end, cooldown = 8, tactical = { DISABLE = 2 }, range = 10, @@ -400,8 +342,8 @@ newTalent{ newTalent{ name = "Dimensional Anchor", - type = {"chronomancy/spacetime-folding", 4}, - require = chrono_req4, + type = {"chronomancy/spacetime-folding", 3}, + require = chrono_req3, points = 5, paradox = function (self, t) return getParadoxCost(self, t, 20) end, cooldown = 12, @@ -450,4 +392,63 @@ newTalent{ return ([[Create a radius %d anti-teleport field for %d turns. Enemies in the field will be anchored, preventing teleportation and taking %0.2f physical and %0.2f temporal (warp) damage on teleport attempts. The damage will scale with your Spellpower.]]):format(radius, duration, damDesc(self, DamageType.PHYSICAL, damage), damDesc(self, DamageType.TEMPORAL, damage)) end, +} + + +newTalent{ + name = "Banish", + type = {"chronomancy/spacetime-folding", 4}, + require = chrono_req4, + points = 5, + 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, + getTeleport = function(self, t) return math.floor(self:combatTalentScale(t, 8, 16)) end, + target = function(self, t) + return {type="ball", range=0, radius=self:getTalentRadius(t), selffire=false, talent=t} + end, + requires_target = true, + direct_hit = true, + action = function(self, t) + local tg = self:getTalentTarget(t) + local hit = false + + self:project(tg, self.x, self.y, function(px, py) + local target = game.level.map(px, py, Map.ACTOR) + if not target or target == self then return end + game.level.map:particleEmitter(target.x, target.y, 1, "temporal_teleport") + if self:checkHit(getParadoxSpellpower(self, t), target:combatSpellResist() + (target:attr("continuum_destabilization") or 0)) and target:canBe("teleport") then + if not target:teleportRandom(target.x, target.y, self:getTalentRadius(t) * 4, self:getTalentRadius(t) * 2) then + game.logSeen(target, "The spell fizzles on %s!", target.name:capitalize()) + else + target:setEffect(target.EFF_CONTINUUM_DESTABILIZATION, 100, {power=getParadoxSpellpower(self, t, 0.3)}) + game.level.map:particleEmitter(target.x, target.y, 1, "temporal_teleport") + hit = true + end + else + game.logSeen(target, "%s resists the banishment!", target.name:capitalize()) + end + end) + + if not hit then + game:onTickEnd(function() + if not self:attr("no_talents_cooldown") then + self.talents_cd[self.T_BANISH] = self.talents_cd[self.T_BANISH] /2 + end + end) + end + + game:playSoundNear(self, "talents/teleport") + + return true + end, + info = function(self, t) + local radius = self:getTalentRadius(t) + local range = t.getTeleport(self, t) + return ([[Randomly teleports all targets within a radius of %d around you. Targets will be teleported between %d and %d tiles from their current location. + If no targets are teleported the cooldown will be halved. + The chance of teleportion will scale with your Spellpower.]]):format(radius, range / 2, range) + end, } \ No newline at end of file diff --git a/game/modules/tome/data/talents/chronomancy/spacetime-weaving.lua b/game/modules/tome/data/talents/chronomancy/spacetime-weaving.lua index 7c11cc5476..4b4528666b 100644 --- a/game/modules/tome/data/talents/chronomancy/spacetime-weaving.lua +++ b/game/modules/tome/data/talents/chronomancy/spacetime-weaving.lua @@ -139,7 +139,7 @@ newTalent{ paradox = function (self, t) return getParadoxCost(self, t, 10) end, cooldown = 10, tactical = { ESCAPE = 2 }, - range = function(self, t) return math.floor(self:combatTalentScale(t, 5, 9, 0.5, 0, 1)) end, + range = 10, radius = function(self, t) return math.floor(self:combatTalentLimit(t, 1, 5, 2)) end, -- Limit to radius 1 requires_target = true, getDuration = function (self, t) return getExtensionModifier(self, t, math.floor(self:combatTalentScale(t, 6, 10))) end, diff --git a/game/modules/tome/data/zones/unhallowed-morass/npcs.lua b/game/modules/tome/data/zones/unhallowed-morass/npcs.lua index 62a21f83bb..d862487d06 100644 --- a/game/modules/tome/data/zones/unhallowed-morass/npcs.lua +++ b/game/modules/tome/data/zones/unhallowed-morass/npcs.lua @@ -117,7 +117,7 @@ newEntity{ base = "BASE_NPC_SPIDER", } newEntity{ base = "BASE_NPC_SPIDER", define_as = "WEAVER_QUEEN", - name = "Weaver Queen", color=colors.WHITE, + name = "Weaver Queen", color=colors.WHITE, female=1, resolvers.nice_tile{image="invis.png", add_mos = {{image="npc/spiderkin_spider_weaver_queen.png", display_h=2, display_y=-1}}}, desc = [[A large white spider.]], level_range = {7, nil}, exp_worth = 1, -- GitLab