-- Bundled by luabundle {"version":"1.6.0"} local __bundle_require, __bundle_loaded, __bundle_register, __bundle_modules = (function(superRequire) local loadingPlaceholder = {[{}] = true} local register local modules = {} local require local loaded = {} register = function(name, body) if not modules[name] then modules[name] = body end end require = function(name) local loadedModule = loaded[name] if loadedModule then if loadedModule == loadingPlaceholder then return nil end else if not modules[name] then if not superRequire then local identifier = type(name) == 'string' and '\"' .. name .. '\"' or tostring(name) error('Tried to require ' .. identifier .. ', but no such module has been registered') else return superRequire(name) end end loaded[name] = loadingPlaceholder loadedModule = modules[name](require, loaded, register, modules) loaded[name] = loadedModule end return loadedModule end return require, loaded, register, modules end)(nil) __bundle_register("accessories/ChaosBagManager", function(require, _LOADED, __bundle_register, __bundle_modules) local TOKEN_URL = { ElderSign = "https://i.imgur.com/nEmqjmj.png", plusOne = "https://i.imgur.com/uIx8jbY.png", Zero = "https://i.imgur.com/btEtVfd.png", minusOne = "https://i.imgur.com/w3XbrCC.png", minusTwo = "https://i.imgur.com/bfTg2hb.png", minusThree = "https://i.imgur.com/yfs8gHq.png", minusFour = "https://i.imgur.com/qrgGQRD.png", minusFive = "https://i.imgur.com/3Ym1IeG.png", minusSix = "https://i.imgur.com/c9qdSzS.png", minusSeven = "https://i.imgur.com/4WRD42n.png", minusEight = "https://i.imgur.com/9t3rPTQ.png", Skull = "https://i.imgur.com/stbBxtx.png", Cultist = "https://i.imgur.com/VzhJJaH.png", Tablet = "https://i.imgur.com/1plY463.png", ElderThing = "https://i.imgur.com/ttnspKt.png", AutoFail = "https://i.imgur.com/lns4fhz.png", Frost = "http://cloud-3.steamusercontent.com/ugc/1858293462583104677/195F93C063A8881B805CE2FD4767A9718B27B6AE/" } local TOKEN_NAMES = { -- first row "plusOne", "Zero", "minusOne", "minusTwo", "minusThree", "minusFour", -- second row "minusFive", "minusSix", "minusSeven", "minusEight", "Frost", -- third row "ElderSign", "Skull", "Cultist", "Tablet", "ElderThing", "AutoFail" } local BUTTON_TOOLTIP = { -- first row "+1", "0", "-1", "-2", "-3", "-4", -- second row "-5", "-6", "-7", "-8", "Frost", -- third row "Elder Sign", "Skull", "Cultist", "Tablet", "Elder Thing", "Auto-fail" } local BUTTON_POSITION = { -- first row -1.90, -1.14, -0.38, 0.38, 1.14, 1.90, -- second row -1.90, -1.14, -0.38, 0.38, 1.90, -- third row -1.90, -1.14, -0.38, 0.38, 1.14, 1.90 } -- common button parameters local buttonParameters = {} buttonParameters.function_owner = self buttonParameters.color = { 0, 0, 0, 0 } buttonParameters.width = 300 buttonParameters.height = 300 local UPDATING = false local tokenArranger local name local tokens = {} function onLoad() -- create buttons for tokens for i = 1, #BUTTON_POSITION do local funcName = "buttonClick" .. i self.setVar(funcName, function(_, _, isRightClick) buttonClick(i, isRightClick) end) buttonParameters.click_function = funcName buttonParameters.tooltip = BUTTON_TOOLTIP[i] buttonParameters.position = { x = BUTTON_POSITION[i], y = 0, z = 0 } if i < 7 then buttonParameters.position.z = -0.778 elseif i > 11 then buttonParameters.position.z = 0.755 end self.createButton(buttonParameters) end self.addContextMenuItem("More Information", function() printToAll("------------------------------", "White") printToAll("Chaos Bag Manager by Chr1Z", "Orange") end) tokenArranger = getObjectFromGUID("022907") end -- get chaos bag from scripting zone and description function getChaosBag() local chaosbag = nil local chaosbag_zone = getObjectFromGUID("83ef06") -- error handling: scripting zone not found if chaosbag_zone == nil then printToAll("Zone for chaos bag detection couldn't be found.", "Red") return nil end for _, v in ipairs(chaosbag_zone.getObjects()) do if v.getDescription() == "Chaos Bag" then chaosbag = getObjectFromGUID(v.getGUID()) break end end -- error handling: chaos bag not found if chaosbag == nil then printToAll("Chaos bag couldn't be found.", "Red") end return chaosbag end -- click function for buttons function buttonClick(index, isRightClick) chaosbag = getChaosBag() -- error handling: chaos bag not found if chaosbag == nil then return end name = BUTTON_TOOLTIP[index] tokens = {} for _, v in ipairs(chaosbag.getObjects()) do if v.name == name then table.insert(tokens, v.guid) end end token = TOKEN_NAMES[index] if isRightClick then -- error handling: no matching token found if #tokens == 0 then printToAll("No " .. name .. " tokens in the chaos bag.", "Yellow") return end -- remove token chaosbag.takeObject({ guid = tokens[1], position = self.getPosition(), smooth = false, callback_function = removeCallback }) else -- spawn token (only 8 frost tokens allowed) if token == "Frost" and #tokens == 8 then printToAll("The maximum of 8 Frost tokens is already in the bag.", "Yellow") return end local obj = spawnObject({ type = 'Custom_Tile', position = chaosbag.getPosition() + Vector(0, 1, 0), rotation = { x = 0, y = 260, z = 0 }, callback_function = spawnCallback }) obj.setCustomObject({ type = 2, image = TOKEN_URL[token], thickness = 0.1 }) end updateTokenArranger() end function removeCallback(obj) printToAll("Removing " .. name .. " token (in bag: " .. #tokens - 1 .. ")", "White") obj.destruct() end function spawnCallback(obj) obj.scale { 0.81, 1, 0.81 } obj.setName(name) printToAll("Adding " .. name .. " token (in bag: " .. #tokens + 1 .. ")", "White") end function updateTokenArranger() if tokenArranger and not UPDATING then UPDATING = true Wait.time(function() UPDATING = false tokenArranger.call("layout") end, 1.5) end end end) __bundle_register("__root", function(require, _LOADED, __bundle_register, __bundle_modules) require("accessories/ChaosBagManager") end) return __bundle_require("__root")