-- 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("__root", function(require, _LOADED, __bundle_register, __bundle_modules)
require("util/TokenRemover")
end)
__bundle_register("util/TokenRemover", function(require, _LOADED, __bundle_register, __bundle_modules)
local zone = nil
local tokenChecker = require("core/token/TokenChecker")

-- general code
function onSave()
  return JSON.encode(zone and zone.getGUID() or nil)
end

function onLoad(savedData)
  if savedData ~= "" and savedData ~= nil then
    zone = getObjectFromGUID(JSON.decode(savedData))
  end
  setMenu(zone == nil)
end

-- context menu functions
function enable()
  local scale = self.getScale()
  zone = spawnObject({
    type = "ScriptingTrigger",
    position = self.getPosition() + Vector(0, 2.5 + 0.11, 0),
    rotation = self.getRotation(),
    scale = { scale.x * 2, 5, scale.z * 2 }
  })
  setMenu(false)
end

function disable()
  if zone ~= nil then zone.destruct() end
  setMenu(true)
end

-- core functions
function setMenu(isEnabled)
  self.clearContextMenu()
  if isEnabled then
    self.addContextMenuItem("Enable", enable)
  else
    self.addContextMenuItem("Disable", disable)
  end
end

function onObjectEnterScriptingZone(entering, object)
  if zone ~= entering then return end
  if object == self or object.type == "Deck" or object.type == "Card" then return end
  if tokenChecker.isChaosToken(object) then return end
  object.destruct()
end

function onPickUp()
  disable()
end
end)
__bundle_register("core/token/TokenChecker", function(require, _LOADED, __bundle_register, __bundle_modules)
do
  local CHAOS_TOKEN_NAMES = {
    ["Elder Sign"] = true,
    ["+1"] = true,
    ["0"] = true,
    ["-1"] = true,
    ["-2"] = true,
    ["-3"] = true,
    ["-4"] = true,
    ["-5"] = true,
    ["-6"] = true,
    ["-7"] = true,
    ["-8"] = true,
    ["Skull"] = true,
    ["Cultist"] = true,
    ["Tablet"] = true,
    ["Elder Thing"] = true,
    ["Auto-fail"] = true,
    ["Bless"] = true,
    ["Curse"] = true,
    ["Frost"] = true
  }

  local TokenChecker = {}

  -- returns true if the passed object is a chaos token (by name)
  TokenChecker.isChaosToken = function(obj)
    if CHAOS_TOKEN_NAMES[obj.getName()] then
      return true
    else
      return false
    end
  end

  return TokenChecker
end
end)
return __bundle_require("__root")