Game Menu / Attacking fixes
- No more "Attack" / "Follow" for creatures on different floor - No rule violation for monsters, only players now - Alt + Click to target works through roofs -> fixes #203 - Fixed battle list issue (check position when trying to attack)
This commit is contained in:
parent
987c6d6c91
commit
c7c259ef80
|
@ -482,17 +482,20 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
|
local localPosition = localPlayer:getPosition()
|
||||||
if not classic then shortcut = '(Alt)' else shortcut = nil end
|
if not classic then shortcut = '(Alt)' else shortcut = nil end
|
||||||
if g_game.getAttackingCreature() ~= creatureThing then
|
if creatureThing:getPosition().z == localPosition.z then
|
||||||
menu:addOption(tr('Attack'), function() g_game.attack(creatureThing) end, shortcut)
|
if g_game.getAttackingCreature() ~= creatureThing then
|
||||||
else
|
menu:addOption(tr('Attack'), function() g_game.attack(creatureThing) end, shortcut)
|
||||||
menu:addOption(tr('Stop Attack'), function() g_game.cancelAttack() end, shortcut)
|
else
|
||||||
end
|
menu:addOption(tr('Stop Attack'), function() g_game.cancelAttack() end, shortcut)
|
||||||
|
end
|
||||||
if g_game.getFollowingCreature() ~= creatureThing then
|
|
||||||
menu:addOption(tr('Follow'), function() g_game.follow(creatureThing) end)
|
if g_game.getFollowingCreature() ~= creatureThing then
|
||||||
else
|
menu:addOption(tr('Follow'), function() g_game.follow(creatureThing) end)
|
||||||
menu:addOption(tr('Stop Follow'), function() g_game.cancelFollow() end)
|
else
|
||||||
|
menu:addOption(tr('Stop Follow'), function() g_game.cancelFollow() end)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if creatureThing:isPlayer() then
|
if creatureThing:isPlayer() then
|
||||||
|
@ -538,7 +541,7 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if modules.game_ruleviolation.hasWindowAccess() then
|
if modules.game_ruleviolation.hasWindowAccess() and creatureThing:isPlayer() then
|
||||||
menu:addSeparator()
|
menu:addSeparator()
|
||||||
menu:addOption(tr('Rule Violation'), function() modules.game_ruleviolation.show(creatureThing:getName()) end)
|
menu:addOption(tr('Rule Violation'), function() modules.game_ruleviolation.show(creatureThing:getName()) end)
|
||||||
end
|
end
|
||||||
|
@ -550,7 +553,7 @@ function createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
||||||
menu:display(menuPosition)
|
menu:display(menuPosition)
|
||||||
end
|
end
|
||||||
|
|
||||||
function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing)
|
function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing, attackCreature)
|
||||||
local keyboardModifiers = g_keyboard.getModifiers()
|
local keyboardModifiers = g_keyboard.getModifiers()
|
||||||
|
|
||||||
if not modules.client_options.getOption('classicControl') then
|
if not modules.client_options.getOption('classicControl') then
|
||||||
|
@ -576,7 +579,10 @@ function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, u
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
elseif creatureThing and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
||||||
|
g_game.attack(attackCreature)
|
||||||
|
return true
|
||||||
|
elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
||||||
g_game.attack(creatureThing)
|
g_game.attack(creatureThing)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -585,7 +591,10 @@ function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, u
|
||||||
else
|
else
|
||||||
if useThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then
|
if useThing and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseRightButton and not g_mouse.isPressed(MouseLeftButton) then
|
||||||
local player = g_game.getLocalPlayer()
|
local player = g_game.getLocalPlayer()
|
||||||
if creatureThing and creatureThing ~= player then
|
if attackCreature and attackCreature ~= player then
|
||||||
|
g_game.attack(attackCreature)
|
||||||
|
return true
|
||||||
|
elseif creatureThing and creatureThing ~= player and creatureThing:getPosition().z == autoWalkPos.z then
|
||||||
g_game.attack(creatureThing)
|
g_game.attack(creatureThing)
|
||||||
return true
|
return true
|
||||||
elseif useThing:isContainer() then
|
elseif useThing:isContainer() then
|
||||||
|
@ -613,7 +622,10 @@ function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, u
|
||||||
elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
elseif useThing and keyboardModifiers == KeyboardCtrlModifier and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
||||||
createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
createThingMenu(menuPosition, lookThing, useThing, creatureThing)
|
||||||
return true
|
return true
|
||||||
elseif creatureThing and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
elseif attackCreature and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
||||||
|
g_game.attack(attackCreature)
|
||||||
|
return true
|
||||||
|
elseif creatureThing and creatureThing:getPosition().z == autoWalkPos.z and g_keyboard.isAltPressed() and (mouseButton == MouseLeftButton or mouseButton == MouseRightButton) then
|
||||||
g_game.attack(creatureThing)
|
g_game.attack(creatureThing)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
|
@ -78,15 +78,21 @@ function UIGameMap:onMouseRelease(mousePosition, mouseButton)
|
||||||
local useThing
|
local useThing
|
||||||
local creatureThing
|
local creatureThing
|
||||||
local multiUseThing
|
local multiUseThing
|
||||||
|
local attackCreature
|
||||||
|
|
||||||
local tile = self:getTile(mousePosition)
|
local tile = self:getTile(mousePosition)
|
||||||
if tile then
|
if tile then
|
||||||
lookThing = tile:getTopLookThing()
|
lookThing = tile:getTopLookThing()
|
||||||
useThing = tile:getTopUseThing()
|
useThing = tile:getTopUseThing()
|
||||||
creatureThing = tile:getTopCreature()
|
creatureThing = tile:getTopCreature()
|
||||||
|
end
|
||||||
|
|
||||||
|
local autoWalkTile = g_map.getTile(autoWalkPos)
|
||||||
|
if autoWalkTile then
|
||||||
|
attackCreature = autoWalkTile:getTopCreature()
|
||||||
end
|
end
|
||||||
|
|
||||||
local ret = modules.game_interface.processMouseAction(mousePosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing)
|
local ret = modules.game_interface.processMouseAction(mousePosition, mouseButton, autoWalkPos, lookThing, useThing, creatureThing, attackCreature)
|
||||||
if ret then
|
if ret then
|
||||||
self.allowNextRelease = false
|
self.allowNextRelease = false
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue