diff --git a/game/engine/KeyBind.lua b/game/engine/KeyBind.lua index b0cb4d51cf9a7dee199023b46abff38a5d32ffdf..29af2dff71f5b10d65a769d5f292055128042bf0 100644 --- a/game/engine/KeyBind.lua +++ b/game/engine/KeyBind.lua @@ -169,6 +169,8 @@ function _M:receiveKey(sym, ctrl, shift, alt, meta, unicode, isup) if isup then return end + if self.any_key then self.any_key(sym, ctrl, shift, alt, meta, unicode, isup) end + local ks, us = self:makeKeyString(sym, ctrl, shift, alt, meta, unicode) -- print("[BIND]", sym, ctrl, shift, alt, meta, unicode, " :=: ", ks, us, " ?=? ", self.binds[ks], us and self.binds[us]) if self.binds[ks] and self.virtuals[self.binds[ks]] then diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua index 82facdc2069d1a951c80218ebe7f727ee108e49a..423926415e4347eb3ae8686473999a8b786ab5c9 100644 --- a/game/modules/tome/class/Game.lua +++ b/game/modules/tome/class/Game.lua @@ -459,10 +459,13 @@ end function _M:setupCommands() self.targetmode_key = engine.KeyBind.new() - self.targetmode_key:addCommands{ _SPACE=function() self:targetMode(false, false) end, } + self.targetmode_key:addCommands{ _SPACE=function() self:targetMode(false, false) self.tooltip_x, self.tooltip_y = nil, nil end, } self.targetmode_key:addBinds { - TACTICAL_DISPLAY = function() self:targetMode(false, false) end, + TACTICAL_DISPLAY = function() + self:targetMode(false, false) + self.tooltip_x, self.tooltip_y = nil, nil + end, ACCEPT = function() self:targetMode(false, false) self.tooltip_x, self.tooltip_y = nil, nil diff --git a/game/modules/tome/data/gfx/particles/lightning.lua b/game/modules/tome/data/gfx/particles/lightning.lua index a5ffe199a8c55a22517afeec62081a62915ed009..64bdac64c95f73cca358762f6cb57287f98f6ebf 100644 --- a/game/modules/tome/data/gfx/particles/lightning.lua +++ b/game/modules/tome/data/gfx/particles/lightning.lua @@ -21,8 +21,9 @@ local forks = {{}, {}} local m1 = forks[1] local m2 = forks[2] -local tx = tx * 32 -local ty = ty * 32 +local tiles = math.ceil(math.sqrt(tx*tx+ty*ty)) +local tx = tx * engine.Map.tile_w +local ty = ty * engine.Map.tile_h local breakdir = math.rad(rng.range(-8, 8)) m1.bx = 0 m1.by = 0 @@ -76,7 +77,7 @@ end, }, function(self) self.nb = (self.nb or 0) + 1 if self.nb < 4 then - self.ps:emit(1000) + self.ps:emit(230*tiles) end end, -4000 +4*230*tiles diff --git a/game/modules/tome/data/talents/spells/air.lua b/game/modules/tome/data/talents/spells/air.lua index 4b06487867b544b9d621ead44cbcc49cc069147c..974f6043f7e64da3b56ea3bb1cba89e0d6c92c8c 100644 --- a/game/modules/tome/data/talents/spells/air.lua +++ b/game/modules/tome/data/talents/spells/air.lua @@ -35,7 +35,7 @@ newTalent{ if not x or not y then return nil end self:project(tg, x, y, DamageType.LIGHTNING, rng.avg(1, self:spellCrit(20 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), 3)) local _ _, x, y = self:canProject(tg, x, y) - game.level.map:particleEmitter(self.x, self.y, 1, "lightning", {tx=x-self.x, ty=y-self.y}) + game.level.map:particleEmitter(self.x, self.y, math.max(math.abs(x-self.x), math.abs(y-self.y)), "lightning", {tx=x-self.x, ty=y-self.y}) game:playSoundNear(self, "talents/lightning") return true end, @@ -101,7 +101,7 @@ newTalent{ local tgr = {type="beam", range=self:getTalentRange(t), talent=t, x=sx, y=sy} print("[Chain lightning] jumping from", sx, sy, "to", actor.x, actor.y) self:project(tgr, actor.x, actor.y, DamageType.LIGHTNING, rng.avg(1, self:spellCrit(20 + self:combatSpellpower(0.8) * self:getTalentLevel(t)), 5)) - game.level.map:particleEmitter(sx, sy, 1, "lightning", {tx=actor.x-sx, ty=actor.y-sy}) + game.level.map:particleEmitter(sx, sy, math.max(math.abs(actor.x-sx), math.abs(actor.y-sy)), "lightning", {tx=actor.x-sx, ty=actor.y-sy}) sx, sy = actor.x, actor.y end @@ -193,7 +193,7 @@ newTalent{ table.remove(tgts, id) self:project(tg, a.x, a.y, DamageType.LIGHTNING, rng.avg(1, self:spellCrit(20 + self:combatSpellpower(0.2) * self:getTalentLevel(t)), 3)) - game.level.map:particleEmitter(self.x, self.y, 1, "lightning", {tx=a.x-self.x, ty=a.y-self.y}) + game.level.map:particleEmitter(self.x, self.y, math.max(math.abs(a.x-self.x), math.abs(a.y-self.y)), "lightning", {tx=a.x-self.x, ty=a.y-self.y}) game:playSoundNear(self, "talents/lightning") end end,