Skip to content
Snippets Groups Projects
Commit 0751aaa1 authored by dg's avatar dg
Browse files

fix targettting for phase door and teleport

git-svn-id: http://svn.net-core.org/repos/t-engine4@368 51575b47-30f0-44d4-a5cc-537603b46e54
parent 7fa66fd0
No related branches found
No related tags found
No related merge requests found
......@@ -277,13 +277,16 @@ function _M:display()
end
function _M:targetMode(v, msg, co, typ)
local old = self.target_mode
self.target_mode = v
if not v then
Map:setViewerFaction(self.always_target and "players" or nil)
if msg then self.log(type(msg) == "string" and msg or "Tactical display disabled. Press shift+'t' or right mouse click to enable.") end
self.level.map.changed = true
self.target:setActive(false)
if tostring(self.target_mode) == "exclusive" then
if tostring(old) == "exclusive" then
self.key = self.normal_key
self.key:setCurrent()
if self.target_co then
......@@ -313,51 +316,39 @@ function _M:targetMode(v, msg, co, typ)
end
end
end
self.target_mode = v
end
function _M:setupCommands()
self.targetmode_key = engine.KeyBind.new()
self.targetmode_key:addCommands
self.targetmode_key:addCommands{ _SPACE=function() self:targetMode(false, false) end, }
self.targetmode_key:addBinds
{
_t = function()
self:targetMode(false, false)
end,
_RETURN = {"alias", "_t"},
_SPACE = {"alias", "_t"},
_KP_ENTER = {"alias", "_t"},
_ESCAPE = function()
TACTICAL_DISPLAY = function() self:targetMode(false, false) end,
ACCEPT = function() self:targetMode(false, false) end,
EXCIT = function()
self.target.target.entity = nil
self.target.target.x = nil
self.target.target.y = nil
self:targetMode(false, false)
end,
-- Targeting movement
[{"_LEFT","shift"}] = function() self.target:freemove(4) end,
[{"_RIGHT","shift"}] = function() self.target:freemove(6) end,
[{"_UP","shift"}] = function() self.target:freemove(8) end,
[{"_DOWN","shift"}] = function() self.target:freemove(2) end,
[{"_KP4","shift"}] = function() self.target:freemove(4) end,
[{"_KP6","shift"}] = function() self.target:freemove(6) end,
[{"_KP8","shift"}] = function() self.target:freemove(8) end,
[{"_KP2","shift"}] = function() self.target:freemove(2) end,
[{"_KP1","shift"}] = function() self.target:freemove(1) end,
[{"_KP3","shift"}] = function() self.target:freemove(3) end,
[{"_KP7","shift"}] = function() self.target:freemove(7) end,
[{"_KP9","shift"}] = function() self.target:freemove(9) end,
_LEFT = function() if self.target_style == "lock" then self.target:scan(4) else self.target:freemove(4) end end,
_RIGHT = function() if self.target_style == "lock" then self.target:scan(6) else self.target:freemove(6) end end,
_UP = function() if self.target_style == "lock" then self.target:scan(8) else self.target:freemove(8) end end,
_DOWN = function() if self.target_style == "lock" then self.target:scan(2) else self.target:freemove(2) end end,
_KP4 = function() if self.target_style == "lock" then self.target:scan(4) else self.target:freemove(4) end end,
_KP6 = function() if self.target_style == "lock" then self.target:scan(6) else self.target:freemove(6) end end,
_KP8 = function() if self.target_style == "lock" then self.target:scan(8) else self.target:freemove(8) end end,
_KP2 = function() if self.target_style == "lock" then self.target:scan(2) else self.target:freemove(2) end end,
_KP1 = function() if self.target_style == "lock" then self.target:scan(1) else self.target:freemove(1) end end,
_KP3 = function() if self.target_style == "lock" then self.target:scan(3) else self.target:freemove(3) end end,
_KP7 = function() if self.target_style == "lock" then self.target:scan(7) else self.target:freemove(7) end end,
_KP9 = function() if self.target_style == "lock" then self.target:scan(9) else self.target:freemove(9) end end,
RUN_LEFT = function() self.target:freemove(4) end,
RUN_RIGHT = function() self.target:freemove(6) end,
RUN_UP = function() self.target:freemove(8) end,
RUN_DOWN = function() self.target:freemove(2) end,
RUN_LEFT_DOWN = function() self.target:freemove(1) end,
RUN_RIGHT_DOWN = function() self.target:freemove(3) end,
RUN_LEFT_UP = function() self.target:freemove(7) end,
RUN_RIGHT_UP = function() self.target:freemove(9) end,
MOVE_LEFT = function() if self.target_style == "lock" then self.target:scan(4) else self.target:freemove(4) end end,
MOVE_RIGHT = function() if self.target_style == "lock" then self.target:scan(6) else self.target:freemove(6) end end,
MOVE_UP = function() if self.target_style == "lock" then self.target:scan(8) else self.target:freemove(8) end end,
MOVE_DOWN = function() if self.target_style == "lock" then self.target:scan(2) else self.target:freemove(2) end end,
MOVE_LEFT_DOWN = function() if self.target_style == "lock" then self.target:scan(1) else self.target:freemove(1) end end,
MOVE_RIGHT_DOWN = function() if self.target_style == "lock" then self.target:scan(3) else self.target:freemove(3) end end,
MOVE_LEFT_UP = function() if self.target_style == "lock" then self.target:scan(7) else self.target:freemove(7) end end,
MOVE_RIGHT_UP = function() if self.target_style == "lock" then self.target:scan(9) else self.target:freemove(9) end end,
}
self.normal_key = self.key
......@@ -600,6 +591,7 @@ function _M:setupMouse()
if button == "wheelup" then self.logdisplay:scrollUp(1) end
if button == "wheeldown" then self.logdisplay:scrollUp(-1) end
end, {button=true})
self.mouse:setCurrent()
end
--- Ask if we realy want to close, if so, save the game first
......
......@@ -139,7 +139,7 @@ function _M:getTarget(typ)
local msg
if type(typ) == "string" then msg, typ = typ, nil
elseif type(typ) == "table" then
if typ.default_target then self.target.target.entity = typ.default_target end
if typ.default_target then game.target.target.entity = typ.default_target end
msg = typ.msg
end
game:targetMode("exclusive", msg, coroutine.running(), typ)
......
newTalent{
name = "Phase Door",
type = {"spell/conveyance",1},
message = "@Source@ blinks.",
require = spells_req1,
points = 5,
mana = 10,
......@@ -13,15 +12,15 @@ newTalent{
local target = self
if self:getTalentLevel(t) >= 5 then
-- local tx, ty = self:getTarget{type="hit", range=10}
-- if tx and ty then
-- target = game.level.map(tx, ty, Map.ACTOR) or self
-- end
local tx, ty = self:getTarget{type="hit", range=10}
if tx and ty then
target = game.level.map(tx, ty, Map.ACTOR) or self
end
end
local x, y = self.x, self.y
if self:getTalentLevel(t) >= 4 then
x, y = self:getTarget{type="ball", range=10 + self:combatSpellpower(0.1), radius=7 - self:getTalentLevel(t)}
x, y = self:getTarget{type="ball", nolock=true, no_restrict=true, range=10 + self:combatSpellpower(0.1), radius=7 - self:getTalentLevel(t)}
if not x then return nil end
-- Target code doesnot restrict the target coordinates to the range, it lets the poject function do it
-- but we cant ...
......@@ -47,7 +46,6 @@ newTalent{
newTalent{
name = "Teleport",
type = {"spell/conveyance",2},
message = "@Source@ teleports away.",
require = spells_req2,
points = 5,
mana = 20,
......@@ -67,17 +65,17 @@ newTalent{
local x, y = self.x, self.y
if self:getTalentLevel(t) >= 4 then
x, y = self:getTarget{type="ball", range=100 + self:combatSpellpower(1), radius=20 - self:getTalentLevel(t)}
x, y = self:getTarget{type="ball", nolock=true, no_restrict=true, range=100 + self:combatSpellpower(1), radius=20 - self:getTalentLevel(t)}
if not x then return nil end
-- Target code doesnot restrict the target coordinates to the range, it lets the poject function do it
-- but we cant ...
x, y = game.target:pointAtRange(self.x, self.y, x, y, 10 + self:combatSpellpower(0.1))
x, y = game.target:pointAtRange(self.x, self.y, x, y, 100 + self:combatSpellpower(0.1))
game.level.map:particleEmitter(target.x, target.y, 1, "teleport")
target:teleportRandom(x, y, 20 - self:getTalentLevel(t))
game.level.map:particleEmitter(target.x, target.y, 1, "teleport")
else
game.level.map:particleEmitter(target.x, target.y, 1, "teleport")
target:teleportRandom(x, y, 100 + self:combatSpellpower(1))
target:teleportRandom(x, y, 100 + self:combatSpellpower(0.1))
game.level.map:particleEmitter(target.x, target.y, 1, "teleport")
end
return true
......@@ -86,7 +84,7 @@ newTalent{
return ([[Teleports you randomly on a big scale range (%d)
At level 4 it allows to specify the target area.
At level 5 it allows to choose the target to teleport.
The range will increase with the Magic stat]]):format(10 + self:combatSpellpower(0.1))
The range will increase with the Magic stat]]):format(100 + self:combatSpellpower(0.1))
end,
}
......
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