diff --git a/game/engines/default/engine/Entity.lua b/game/engines/default/engine/Entity.lua index ed9bb3c97f2a5fff32846db89198ee231c763402..dad642e16ff379ef1d53988cc627054477143b0b 100644 --- a/game/engines/default/engine/Entity.lua +++ b/game/engines/default/engine/Entity.lua @@ -324,6 +324,8 @@ function _M:makeMapObject(tiles, idx) end end + self._mo, self.z, last_mo = self:alterMakeMapObject(tiles, self._mo, self.z, last_mo) + -- Setup shader if tiles.use_images and core.shader.active() and self.shader then local shad = Shader.new(self.shader, self.shader_args) @@ -333,8 +335,6 @@ function _M:makeMapObject(tiles, idx) end end - self._mo, self.z, last_mo = self:alterMakeMapObject(tiles, self._mo, self.z, last_mo) - return self._mo, self.z, last_mo end diff --git a/game/modules/tome/class/FortressPC.lua b/game/modules/tome/class/FortressPC.lua index fc1c16a956f26e707797d4a005e1923062e5326d..f5c41a39751a493cf230fed325cd2f17f3b87fca 100644 --- a/game/modules/tome/class/FortressPC.lua +++ b/game/modules/tome/class/FortressPC.lua @@ -64,7 +64,7 @@ function _M:init(t, no_default) self:addParticles(Particles.new("shertul_fortress_orbiters", 1, {})) if core.shader.active(4) then - self:addParticles(Particles.new("shader_shield", 1, {size_factor=1.8, img="shield4"}, {type="shield", ellipsoidalFactor=1.5, shieldIntensity=0.18, color={0xbe/255, 0x3e/255, 0xf9/255}})) + self:addParticles(Particles.new("shader_shield", 1, {size_factor=1.8, img="shield5"}, {type="shield", ellipsoidalFactor=1.5, shieldIntensity=0.18, color={0xbe/255, 0x3e/255, 0xf9/255}})) end if core.shader.allow("distort") then self:addParticles(Particles.new("shertul_fortress_engine", 1, {})) end end diff --git a/game/modules/tome/data/gfx/shaders/moving_transparency.lua b/game/modules/tome/data/gfx/shaders/moving_transparency.lua index df58ab1f5d0620725bf0d0450e956f17b3321505..0cac4f29e70702a1e60825ea2dc8c4495899145d 100644 --- a/game/modules/tome/data/gfx/shaders/moving_transparency.lua +++ b/game/modules/tome/data/gfx/shaders/moving_transparency.lua @@ -21,8 +21,8 @@ return { frag = "moving_transparency", vert = nil, args = { - a_min = 0.4, - a_max = 1.5, + a_min = a_min or 0.4, + a_max = a_max or 1.5, base = base or 0.3, time_factor = time_factor or 3000, p2 = p2 or {1,1}, diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua index 16d8e1a01e49af44ca06795b9f02c87ad0b4f535..75195c986daedc852e32aed40383b45a76e68623 100644 --- a/game/modules/tome/data/timed_effects/magical.lua +++ b/game/modules/tome/data/timed_effects/magical.lua @@ -975,12 +975,24 @@ newEffect{ eff.tmpid = self:addTemporaryValue("can_pass", {pass_wall=20}) eff.defid = self:addTemporaryValue("combat_def", eff.def) eff.armid = self:addTemporaryValue("combat_armor", eff.armor) + if not self.shader then + eff.set_shader = true + self.shader = "moving_transparency" + self.shader_args = { a_min=0.3, a_max=0.8, time_factor = 3000 } + self:removeAllMOs() + game.level.map:updateMap(self.x, self.y) + end end, deactivate = function(self, eff) + if eff.set_shader then + self.shader = nil + self:removeAllMOs() + game.level.map:updateMap(self.x, self.y) + end self:removeTemporaryValue("can_pass", eff.tmpid) self:removeTemporaryValue("combat_def", eff.defid) self:removeTemporaryValue("combat_armor", eff.armid) - if not self:canMove(self.x, self.y) then + if not self:canMove(self.x, self.y, true) then self:teleportRandom(self.x, self.y, 50) end end,