Skip to content
Snippets Groups Projects
Commit 827069de authored by dg's avatar dg
Browse files

Right-click during birth correctly works

Implemented "no teleport" objects. They do not prevent you from teleporting, but they do not follow.


git-svn-id: http://svn.net-core.org/repos/t-engine4@1849 51575b47-30f0-44d4-a5cc-537603b46e54
parent 681c65f5
No related branches found
No related tags found
No related merge requests found
......@@ -90,7 +90,7 @@ Mouse: #00FF00#Left click#FFFFFF# to accept; #00FF00#right click#FFFFFF# to go b
{name="", width=92, display_prop="display_name"},
}, list={}, fct=function(item, sel, button, event)
self.sel = sel
if event == "button" and button == "left" then self:next()
if (event == "key" or event == "button") and button == "left" then self:next()
elseif event == "button" and button == "right" then self:prev()
end
end, select=function(item, sel) self.sel = sel self:select(item) end}
......
......@@ -314,6 +314,19 @@ function _M:getPathString()
return ps
end
--- Drop no-teleport items
function _M:dropNoTeleportObjects()
for inven_id, inven in pairs(self.inven) do
for item = #inven, 1, -1 do
local o = inven[item]
if o.no_teleport then
self:dropFloor(inven, item, false, true)
game.logPlayer(self, "#LIGHT_RED#Your %s is immunte to the teleportation and drops to the floor!", o:getName{do_color=true})
end
end
end
end
--- Blink through walls
function _M:probabilityTravel(x, y, dist)
if game.zone.wilderness then return true end
......@@ -327,6 +340,7 @@ function _M:probabilityTravel(x, y, dist)
dist = dist - 1
end
if game.level.map:isBound(tx, ty) and not game.level.map:checkAllEntities(tx, ty, "block_move", self) and not game.level.map.attrs(tx, ty, "no_teleport") then
self:dropNoTeleportObjects()
return engine.Actor.move(self, tx, ty, false)
end
return true
......@@ -343,7 +357,14 @@ function _M:teleportRandom(x, y, dist, min_dist)
if game.level.data.no_teleport_south and y + dist > self.y then
y = self.y - dist
end
return engine.Actor.teleportRandom(self, x, y, dist, min_dist)
local ox, oy = self.x, self.y
local ret = engine.Actor.teleportRandom(self, x, y, dist, min_dist)
if self.x ~= ox or self.y ~= oy then
self.x, self.y, ox, oy = ox, oy, self.x, self.y
self:dropNoTeleportObjects()
self.x, self.y, ox, oy = ox, oy, self.x, self.y
end
return ret
end
--- Quake a zone
......
......@@ -552,7 +552,7 @@ function _M:doDrop(inven, item)
return
end
self:dropFloor(inven, item, true, true)
self:sortInven()
self:sortInven(inven)
self:useEnergy()
self.changed = true
end
......
......@@ -22,8 +22,8 @@ setStatusAll{no_teleport=true}
rotates = {"default", "90", "180", "270", "flipx", "flipy"}
defineTile('.', "GRASS_DARK1")
defineTile('#', "TREE_DARK")
defineTile('X', "HARDTREE_DARK")
defineTile('#', {"TREE_DARK1","TREE_DARK2","TREE_DARK3","TREE_DARK4","TREE_DARK5","TREE_DARK6","TREE_DARK7","TREE_DARK8","TREE_DARK9","TREE_DARK10","TREE_DARK11","TREE_DARK12","TREE_DARK13","TREE_DARK14","TREE_DARK15","TREE_DARK16","TREE_DARK17","TREE_DARK18","TREE_DARK19","TREE_DARK20"})
defineTile('X', {"HARDTREE_DARK1","HARDTREE_DARK2","HARDTREE_DARK3","HARDTREE_DARK4","HARDTREE_DARK5","HARDTREE_DARK6","HARDTREE_DARK7","HARDTREE_DARK8","HARDTREE_DARK9","HARDTREE_DARK10","HARDTREE_DARK11","HARDTREE_DARK12","HARDTREE_DARK13","HARDTREE_DARK14","HARDTREE_DARK15","HARDTREE_DARK16","HARDTREE_DARK17","HARDTREE_DARK18","HARDTREE_DARK19","HARDTREE_DARK20"})
defineTile('~', "POISON_SHALLOW_WATER")
defineTile('!', "ROCK_VAULT")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment