Skip to content

Commit

Permalink
Enable auto-turn when double clicking Tongs near appropriate static t…
Browse files Browse the repository at this point in the history
…ools
  • Loading branch information
brightrim committed Jun 18, 2023
1 parent 3fbca0a commit b2771b6
Showing 1 changed file with 105 additions and 60 deletions.
165 changes: 105 additions & 60 deletions item/id_2140_tong.lua
Original file line number Diff line number Diff line change
@@ -1,60 +1,105 @@
--[[
Illarion Server
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.
You should have received a copy of the GNU Affero General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
]]
-- UPDATE items SET itm_script='item.id_2140_tong' WHERE itm_id=2140;

local gemcutting = require("craft.final.gemcutting")
local metal = require("item.general.metal")
local common = require("base.common")

local M = {}

M.LookAtItem = metal.LookAtItem

function M.UseItem(user, sourceItem, actionstate)


local staticTool = common.GetFrontItemID(user)
local kilns = {1240, 1241, 1242, 1243}
local germanKiln = world:getItemName(1240, Player.german)
local englishKiln = world:getItemName(1240, Player.english)
local grinder = 270
local germanGrinder = world:getItemName(grinder, Player.german)
local englishGrinder = world:getItemName(grinder, Player.english)
local staticToolExists = false
local germanText = "Du stehst nicht neben dem benötigten Werkzeug: " .. germanGrinder .." oder " .. germanKiln
local englishText = "There is no " .. englishKiln .. " or " .. englishGrinder .. " close by to work with."

if staticTool == grinder then
staticToolExists = true
else
for _, kiln in pairs(kilns) do
if staticTool == kiln then
staticToolExists = true
end
end
end

if staticToolExists then
gemcutting.gemcutting:showDialog(user, sourceItem)
else
common.HighInformNLS(user, germanText, englishText)
end

end

return M

--[[
Illarion Server
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU Affero General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option) any
later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Affero General Public License for more
details.
You should have received a copy of the GNU Affero General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
]]
-- UPDATE items SET itm_script='item.id_2140_tong' WHERE itm_id=2140;

local gemcutting = require("craft.final.gemcutting")
local pottery = require("craft.final.pottery")
local metal = require("item.general.metal")
local common = require("base.common")

local M = {}

local grinder = 270
local kilns = {1240, 1241, 1242, 1243}

M.LookAtItem = metal.LookAtItem

local function checkItem(user, staticTool, dir)

local craft
local turn

if not staticTool then
return false
end

if staticTool.id == grinder then
craft = "gemcutting"
turn = true
else
for _, kiln in pairs(kilns) do
if staticTool.id == kiln then
craft = "pottery"
turn = true
end
end
end

if turn then
user:turn(dir)
if craft == "gemcutting" then
gemcutting.gemcutting:showDialog(user, staticTool)
elseif craft == "pottery" then
pottery.pottery:showDialog(user, staticTool)
end

return true
end

return false
end

function M.UseItem(user, sourceItem, actionstate)

local germanKiln = world:getItemName(1240, Player.german)
local englishKiln = world:getItemName(1240, Player.english)
local germanGrinder = world:getItemName(grinder, Player.german)
local englishGrinder = world:getItemName(grinder, Player.english)
local germanText = "Du stehst nicht neben dem benötigten Werkzeug: " .. germanGrinder .." oder " .. germanKiln
local englishText = "There is no " .. englishKiln .. " or " .. englishGrinder .. " close by to work with."
local staticToolExists = false

local dir = user:getFaceTo()
local right = dir
local left = (right - 1) % 8

for i=1,4 do
local staticToolRight = common.GetFrontItem(user, right)
local staticToolLeft = common.GetFrontItem(user, left)

local success = checkItem(user, staticToolRight, right)
if not success then
success = checkItem(user, staticToolLeft, left)
end

if success then
staticToolExists = true
break
end

right = (right + 1) % 8
left = (left - 1) % 8

end

if not staticToolExists then
common.HighInformNLS(user, germanText, englishText)
end
end

return M

0 comments on commit b2771b6

Please sign in to comment.