wanda/data/modmain.lua
2021-10-06 17:42:29 +03:00

132 lines
3.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})
local G = GLOBAL
local agelesskey = GetModConfigData("ageless_key")
local backstepkey = GetModConfigData("backstep_key")
local backtrekkey = GetModConfigData("backtrek_key")
local keybinds = GetModConfigData("key_binds")
local allActions = {
ageless = { key = agelesskey, prefab = "pocketwatch_heal" },
backstep = { key = backstepkey, prefab = "pocketwatch_warp" },
backtrek = { key = backtrekkey, prefab = "pocketwatch_recall" }
}
local function IsInGameplay()
return G.ThePlayer ~= nil and G.TheFrontEnd:GetActiveScreen().name == "HUD"
end
local function GetWatch(watchType)
if (keybinds ~= true) then return end
local items = G.ThePlayer.replica.inventory:GetItems()
local backpack = G.ThePlayer.replica.inventory:GetEquippedItem(G.EQUIPSLOTS.BODY)
local watchbag = nil
for k, v in pairs(items) do
if (v.prefab == "pocketwatchpack") then
watchbag = v
break
end
end
local bagitems = watchbag and watchbag.replica.container and watchbag.replica.container:GetItems() or nil
local packitems = backpack and backpack.replica.container and backpack.replica.container:GetItems() or nil
local watch = nil
for k, v in pairs(items) do
if (v.prefab == watchType and v:HasTag("pocketwatch_inactive")) then
watch = v
break
end
end
if (watch ~= nil or (packitems == nil and bagitems == nil)) then return watch end
if (packitems ~= nil) then
for k, v in pairs(packitems) do
if (v.prefab == watchType and v:HasTag("pocketwatch_inactive")) then
watch = v
break
end
end
end
if (watch ~= nil or bagitems == nil) then return watch end
for k, v in pairs(bagitems) do
if (v.prefab == watchType and v:HasTag("pocketwatch_inactive")) then
watch = v
break
end
end
return watch
end
if (keybinds == true) then
for k, v in pairs(allActions) do
if (v.key ~= "None") then
local keybind = G["KEY_" .. v.key]
G.TheInput:AddKeyDownHandler(keybind, function()
if (not IsInGameplay()) then return end
local pocketwatch = GetWatch(v.prefab)
if (pocketwatch == nil or not G.ThePlayer:HasTag("pocketwatchcaster")) then return end
local act = G.ACTIONS.CAST_POCKETWATCH
local buffact = G.BufferedAction(G.ThePlayer, target, act, pocketwatch)
if (not G.TheWorld.ismastersim) then
local function cb()
G.SendRPCToServer(G.RPC.ControllerUseItemOnSelfFromInvTile, act.code, pocketwatch, target)
end
if G.ThePlayer.components.locomotor then
buffact.preview_cb = cb
else
cb()
end
end
G.ThePlayer.components.playercontroller:DoAction(buffact)
end)
end
end
end
local lang = {
eng = {
name = "Watch bag",
desc = "A bag for your watch!",
insp = "It contains the power of shadows..."
},
ru = {
name = "Сумка с часами",
desc = "Сумка для всех Ваших часов!",
insp = "В ней сила теней..."
},
chi = {
name = "怀表工具袋",
desc = "收纳时间",
insp = "蕴含暗影的力量"
},
pt = { -- thx to Gioga ( https://steamcommunity.com/profiles/76561198240723100 )
name = "Bolsa dos relógios",
desc = "Uma bolsa para seus relógios!",
insp = "Ele contém o poder das sombras..."
}
}
local language = GetModConfigData("lang")
PrefabFiles = { "pocketwatchpack" }
Assets = {
Asset("ATLAS", "images/inventoryimages/pocketwatchpack.xml")
}
modimport("scripts/main/watch_container.lua")
AddRecipe("pocketwatchpack",
{
Ingredient("pocketwatch_dismantler", 1),
Ingredient("livinglog", 2),
Ingredient("nightmarefuel", 2)
},
CUSTOM_RECIPETABS.CLOCKMAKER,
TECH.NONE,
nil, nil, nil, nil,
"clockmaker",
"images/inventoryimages/pocketwatchpack.xml",
"pocketwatchpack.tex"
)
STRINGS.NAMES.POCKETWATCHPACK = lang[language].name
STRINGS.RECIPE_DESC.POCKETWATCHPACK = lang[language].desc
STRINGS.CHARACTERS.GENERIC.DESCRIBE.POCKETWATCHPACK = lang[language].insp