SCED/objects/Fan-MadeAccessories.aa8b38/AttachmentHelper.d45664.json
2022-11-10 23:59:55 -08:00

458 lines
45 KiB
JSON
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.

{
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1750192233783143973/D526236AAE16BDBB98D3F30E27BAFC1D3E21F4AC/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "d45664",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScriptState": "[[],true,false]",
"LuaScript_path": "Fan-MadeAccessories.aa8b38/AttachmentHelper.d45664.ttslua",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Attachment Helper",
"Number": 0,
"Snap": true,
"States": {
"1": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1754695635919099826/3C3CBFFAADB2ACA9957C736491F470AE906CC953/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "f550dc",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Sefina Rousseau Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.6885748,
"posY": 1.71333456,
"posZ": -26.0148544,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.01688583,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
},
"2": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1754695635919071208/1AB7222850201630826BFFBA8F2BD0065E2D572F/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "2fbbca",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Diana Stanley Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.6885757,
"posY": 1.71333444,
"posZ": -26.0148582,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.0168847367,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
},
"3": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1754695635919102502/453D4426118C8A6DE2EA281184716E26CA924C84/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "31d5dd",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Gloria Goldberg Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.6885767,
"posY": 1.71333444,
"posZ": -26.0148621,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.01688558,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
},
"4": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379787654/F00A76F0DFB4B279F7A5647E1DD1BF730CFC7501/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "56aa96",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Crystallizer of Dreams Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.6885777,
"posY": 1.71333456,
"posZ": -26.0148659,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.01688493,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
},
"5": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1717542004667431170/D073271943724B10CAB5364F01E5E87D770F0FB8/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "31055d",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Ancestral Knowledge Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.6885786,
"posY": 1.71333456,
"posZ": -26.01487,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.01688525,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
},
"6": {
"AltLookAngle": {
"x": 0,
"y": 0,
"z": 0
},
"Autoraise": true,
"Bag": {
"Order": 0
},
"ColorDiffuse": {
"b": 1,
"g": 1,
"r": 1
},
"CustomMesh": {
"CastShadows": true,
"ColliderURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"Convex": true,
"DiffuseURL": "http://cloud-3.steamusercontent.com/ugc/1754695853007989004/9153BC204FC707AE564ECFAC063A11CB8C2B5D1E/",
"MaterialIndex": 1,
"MeshURL": "http://cloud-3.steamusercontent.com/ugc/1754695414379239413/0B8E68F3B7311DCF2138FB701F78D1D93FBA4CAB/",
"NormalURL": "",
"TypeIndex": 6
},
"Description": "Drop cards here to display name, cost and skill icons.\n\nSee context menu for options.",
"DragSelectable": true,
"GMNotes": "",
"GUID": "e213ed",
"Grid": true,
"GridProjection": false,
"Hands": false,
"HideWhenFaceDown": false,
"IgnoreFoW": false,
"LayoutGroupSortIndex": 0,
"Locked": false,
"LuaScript": "-- Attachment Helper\r\n-- updated by: Chr1Z\r\n-- original by: -\r\n-- description: displays cards in it with cost/skill icons\r\ninformation = {\r\n version = \"1.4\",\r\n last_updated = \"10.10.2022\"\r\n}\r\n\r\n-- save state and options to restore onLoad\r\nfunction onSave() return JSON.encode({ cardsInBag, showCost, showIcons }) end\r\n\r\n-- load variables and create context menu\r\nfunction onload(saved_data)\r\n if saved_data ~= \"\" and saved_data ~= nil then\r\n local loaded_data = JSON.decode(saved_data)\r\n cardsInBag = loaded_data[1]\r\n showCost = loaded_data[2]\r\n showIcons = loaded_data[3]\r\n else\r\n cardsInBag = {}\r\n showCost = true\r\n showIcons = true\r\n end\r\n\r\n recreateButtons()\r\n\r\n self.addContextMenuItem(\"More Information\", function()\r\n printToAll(\"------------------------------\", \"White\")\r\n printToAll(\"Attachment Helper v\" .. information[\"version\"] .. \" by Chr1Z\", \"Orange\")\r\n printToAll(\"original by: bankey\", \"White\")\r\n printToAll(\"last updated: \" .. information[\"last_updated\"], \"White\")\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle cost\", function(color)\r\n showCost = not showCost\r\n printToColor(\"Show cost of cards: \" .. tostring(showCost), color, \"White\")\r\n refresh()\r\n end)\r\n\r\n self.addContextMenuItem(\"Toggle skill icons\", function(color)\r\n showIcons = not showIcons\r\n printToColor(\"Show skill icons of cards: \" .. tostring(showIcons), color, \"White\")\r\n refresh()\r\n end)\r\nend\r\n\r\n-- called for every card that enters\r\nfunction onObjectEnterContainer(container, object)\r\n if container == self then\r\n findCard(object.getGUID(), object.getName(), object.getGMNotes())\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- removes leaving cards from the \"cardInBag\" table\r\nfunction onObjectLeaveContainer(container, object)\r\n if container == self then\r\n local guid = object.getGUID()\r\n for i, card in ipairs(cardsInBag) do\r\n if card.id == guid then table.remove(cardsInBag, i) end\r\n end\r\n recreateButtons()\r\n end\r\nend\r\n\r\n-- refreshes displayed buttons based on contained cards\r\nfunction refresh()\r\n cardsInBag = {}\r\n for _, object in ipairs(self.getObjects()) do\r\n findCard(object.guid, object.name, object.gm_notes)\r\n end\r\n recreateButtons()\r\nend\r\n\r\n-- gets cost and icons for a card\r\nfunction findCard(guid, name, GMNotes)\r\n local cost = \"\"\r\n local icons = {}\r\n local metadata = {}\r\n\r\n if name == nil or name == \"\" then name = \"unnamed\" end\r\n\r\n if showCost or showIcons then\r\n metadata = JSON.decode(GMNotes)\r\n end\r\n\r\n if showCost then\r\n if GMNotes ~= \"\" then cost = metadata.cost end\r\n if cost == nil or cost == \"\" then cost = \"\" end\r\n name = \"[\" .. cost .. \"] \" .. name\r\n end\r\n\r\n if showIcons then\r\n if GMNotes ~= \"\" then\r\n icons[1] = metadata.wildIcons\r\n icons[2] = metadata.willpowerIcons\r\n icons[3] = metadata.intellectIcons\r\n icons[4] = metadata.fightIcons\r\n icons[5] = metadata.agilityIcons\r\n end\r\n\r\n local IconTypes = { \"Wild\", \"Willpower\", \"Intellect\", \"Fight\", \"Agility\" }\r\n local found = false\r\n for i = 1, 5 do\r\n if icons[i] ~= nil and icons[i] ~= \"\" then\r\n if found == false then\r\n name = name .. \"\\n\" .. IconTypes[i] .. \": \" .. icons[i]\r\n found = true\r\n else\r\n name = name .. \" \" .. IconTypes[i] .. \": \" .. icons[i]\r\n end\r\n end\r\n end\r\n end\r\n\r\n table.insert(cardsInBag, { name = name, id = guid })\r\nend\r\n\r\n-- recreates buttons with up-to-date labels\r\nfunction recreateButtons()\r\n self.clearButtons()\r\n local verticalPosition = 1.65\r\n\r\n for _, card in ipairs(cardsInBag) do\r\n if _G['removeCard' .. card.id] == nil then\r\n _G['removeCard' .. card.id] = function()\r\n removeCard(card.id)\r\n end\r\n end\r\n\r\n self.createButton({\r\n label = card.name,\r\n click_function = \"removeCard\" .. card.id,\r\n function_owner = self,\r\n position = { 0, 0, verticalPosition },\r\n height = 200,\r\n width = 1200,\r\n font_size = string.len(card.name) \u003e 20 and 75 or 100\r\n })\r\n\r\n verticalPosition = verticalPosition - 0.5\r\n end\r\n\r\r\n self.createButton({\r\n label = countLabel,\r\n click_function = 'none',\r\n function_owner = self,\r\n position = { 0, 0, -1.35 },\r\n height = 0,\r\n width = 0,\r\n font_size = 225,\r\n font_color = { 1, 1, 1 }\r\n })\r\nend\r\n\r\n-- click-function for buttons to take a card out of the bag\r\nfunction removeCard(cardGUID)\r\n self.takeObject({\r\n guid = cardGUID,\r\n rotation = self.getRotation(),\r\n position = self.getPosition() + Vector(0, 0.25, 0),\r\n callback_function = function(obj) obj.resting = true end\r\n })\r\nend",
"LuaScriptState": "[[],true,false]",
"MaterialIndex": -1,
"MeasureMovement": false,
"MeshIndex": -1,
"Name": "Custom_Model_Bag",
"Nickname": "Astronomical Atlas Helper",
"Number": 0,
"Snap": true,
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 14.68858,
"posY": 1.71333444,
"posZ": -26.0148735,
"rotX": 359.920135,
"rotY": 270.000122,
"rotZ": 0.016885994,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
}
},
"Sticky": true,
"Tags": [
"Asset",
"scesetup_memory_object"
],
"Tooltip": true,
"Transform": {
"posX": 29.29,
"posY": 5.256,
"posZ": -19.825,
"rotX": 0,
"rotY": 270,
"rotZ": 0,
"scaleX": 0.7951615,
"scaleY": 1,
"scaleZ": 0.7951615
},
"Value": 0,
"XmlUI": ""
}