Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "SaveName": "Flip 7 (Scripted with Skip Tokens)",
- "EpochTime": 1748330424,
- "Date": "5/27/2025 3:20:24 AM",
- "VersionNumber": "v13.3",
- "GameMode": "Flip 7",
- "GameType": "Game",
- "GameComplexity": "Low Complexity",
- "PlayingTime": [
- 0,
- 10
- ],
- "PlayerCounts": [
- 0,
- 8
- ],
- "Tags": [
- "Board Games",
- "Korean",
- "English",
- "한국어",
- "KR",
- "한글"
- ],
- "Gravity": 0.5,
- "PlayArea": 0.5,
- "Table": "Table_None",
- "Sky": "Sky_Museum",
- "Note": "",
- "TabStates": {
- "0": {
- "title": "Rules",
- "body": "",
- "color": "Grey",
- "visibleColor": {
- "r": 0.5,
- "g": 0.5,
- "b": 0.5
- },
- "id": 0
- },
- "1": {
- "title": "White",
- "body": "",
- "color": "White",
- "visibleColor": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "id": 1
- },
- "2": {
- "title": "Brown",
- "body": "",
- "color": "Brown",
- "visibleColor": {
- "r": 0.443,
- "g": 0.231,
- "b": 0.09
- },
- "id": 2
- },
- "3": {
- "title": "Red",
- "body": "",
- "color": "Red",
- "visibleColor": {
- "r": 0.856,
- "g": 0.1,
- "b": 0.094
- },
- "id": 3
- },
- "4": {
- "title": "Orange",
- "body": "",
- "color": "Orange",
- "visibleColor": {
- "r": 0.956,
- "g": 0.392,
- "b": 0.113
- },
- "id": 4
- },
- "5": {
- "title": "Yellow",
- "body": "",
- "color": "Yellow",
- "visibleColor": {
- "r": 0.905,
- "g": 0.898,
- "b": 0.172
- },
- "id": 5
- },
- "6": {
- "title": "Green",
- "body": "",
- "color": "Green",
- "visibleColor": {
- "r": 0.192,
- "g": 0.701,
- "b": 0.168
- },
- "id": 6
- },
- "7": {
- "title": "Blue",
- "body": "",
- "color": "Blue",
- "visibleColor": {
- "r": 0.118,
- "g": 0.53,
- "b": 1.0
- },
- "id": 7
- },
- "8": {
- "title": "Teal",
- "body": "",
- "color": "Teal",
- "visibleColor": {
- "r": 0.129,
- "g": 0.694,
- "b": 0.607
- },
- "id": 8
- },
- "9": {
- "title": "Purple",
- "body": "",
- "color": "Purple",
- "visibleColor": {
- "r": 0.627,
- "g": 0.125,
- "b": 0.941
- },
- "id": 9
- },
- "10": {
- "title": "Pink",
- "body": "",
- "color": "Pink",
- "visibleColor": {
- "r": 0.96,
- "g": 0.439,
- "b": 0.807
- },
- "id": 10
- },
- "11": {
- "title": "Black",
- "body": "",
- "color": "Black",
- "visibleColor": {
- "r": 0.25,
- "g": 0.25,
- "b": 0.25
- },
- "id": 11
- }
- },
- "Grid": {
- "Type": 0,
- "Lines": false,
- "Color": {
- "r": 0.0,
- "g": 0.0,
- "b": 0.0
- },
- "Opacity": 0.75,
- "ThickLines": false,
- "Snapping": false,
- "Offset": false,
- "BothSnapping": false,
- "xSize": 2.0,
- "ySize": 2.0,
- "PosOffset": {
- "x": 0.0,
- "y": 1.0,
- "z": 0.0
- }
- },
- "Lighting": {
- "LightIntensity": 0.54,
- "LightColor": {
- "r": 1.0,
- "g": 0.9804,
- "b": 0.8902
- },
- "AmbientIntensity": 1.3,
- "AmbientType": 0,
- "AmbientSkyColor": {
- "r": 0.5,
- "g": 0.5,
- "b": 0.5
- },
- "AmbientEquatorColor": {
- "r": 0.5,
- "g": 0.5,
- "b": 0.5
- },
- "AmbientGroundColor": {
- "r": 0.5,
- "g": 0.5,
- "b": 0.5
- },
- "ReflectionIntensity": 1.0,
- "LutIndex": 0,
- "LutContribution": 1.0
- },
- "Hands": {
- "Enable": true,
- "DisableUnused": false,
- "Hiding": 0
- },
- "ComponentTags": {
- "labels": [
- {
- "displayed": "Turn Skipper",
- "normalized": "turn_skipper"
- },
- {
- "displayed": "button",
- "normalized": "button"
- },
- {
- "displayed": "score",
- "normalized": "score"
- },
- {
- "displayed": "special",
- "normalized": "special"
- }
- ]
- },
- "Turns": {
- "Enable": false,
- "Type": 1,
- "TurnOrder": [
- "Pink",
- "Red",
- "Orange"
- ],
- "Reverse": false,
- "SkipEmpty": false,
- "DisableInteractions": false,
- "PassTurns": true,
- "TurnColor": ""
- },
- "DecalPallet": [],
- "LuaScript": "function onLoad()\r\n StartBtn = getObjectFromGUID(\"5324c0\")\r\n HitBtn = getObjectFromGUID(\"e7358b\")\r\n StayBtn = getObjectFromGUID(\"83c6d4\")\r\n\r\n Scale = StartBtn.getScale()\r\n Bound = StartBtn.getBoundsNormalized()\r\n\r\n StartBtn.createButton({\r\n click_function = \"startgame\",\r\n function_owner = self,\r\n label = \"New Round\",\r\n position = {0/Scale.x,0.5,0/Scale.z},\r\n rotation = {0,180,0},\r\n scale = {0.4/Scale.x,1,0.4/Scale.z},\r\n width = 1200*Bound.size.x,\r\n height = 800*Bound.size.z,\r\n color = \"White\",\r\n font_color = \"Black\",\r\n font_size = 700*Bound.size.z\r\n })\r\n\r\n HitBtn.createButton({\r\n click_function = \"hit\",\r\n function_owner = self,\r\n label = \"Hit\",\r\n position = {0/Scale.x,0.5,0/Scale.z},\r\n rotation = {0,180,0},\r\n scale = {0.8/Scale.x,1,0.8/Scale.z},\r\n width = 700*Bound.size.x,\r\n height = 700*Bound.size.z,\r\n color = {0.6,0.85,0.6},\r\n font_color = \"Black\",\r\n font_size = 900*Bound.size.z\r\n })\r\n\r\n StayBtn.createButton({\r\n click_function = \"stay\",\r\n function_owner = self,\r\n label = \"Stay\",\r\n position = {0/Scale.x,0.5,0/Scale.z},\r\n rotation = {0,180,0},\r\n scale = {0.8/Scale.x,1,0.8/Scale.z},\r\n width = 700*Bound.size.x,\r\n height = 700*Bound.size.z,\r\n color = {0.8,0.8,0.8},\r\n font_color = \"Black\",\r\n font_size = 900*Bound.size.z\r\n })\r\n for i,v in ipairs(getObjects()) do\r\n if v.hasTag(\"score\") then\r\n v.createButton({\r\n click_function = \"bust\",\r\n function_owner = self,\r\n label = \"Bust\",\r\n position = {10/Scale.x,0,0.8/Scale.z},\r\n rotation = {0,0,0},\r\n scale = {1.8/Scale.x,1,0.8/Scale.z},\r\n width = 700*Bound.size.x,\r\n height = 700*Bound.size.z,\r\n color = {0.8,0.6,0.6},\r\n font_color = \"Black\",\r\n font_size = 900*Bound.size.z\r\n })\r\n end\r\n end\r\n\r\n local deck2 = scan2()\r\n deck2.shuffle()\r\nend\r\n\r\nfunction bust(o,c,a)\r\n posCount = 0.1\r\n\r\n -- 플레이어 기준 위치 및 회전\r\n local handTransform = Player[c].getHandTransform()\r\n\r\n -- 회전 각도 (플레이어 기준 정방향)\r\n local angleY = math.rad(handTransform.rotation.y)\r\n local forward = Vector(math.sin(angleY), 0, math.cos(angleY))\r\n local center = handTransform.position + forward * 14\r\n\r\n local spacingX = 3\r\n local offsetZ_up = 2\r\n local offsetZ_down = -2\r\n\r\n-- 회전 보조 함수 (회전 반대로 적용)\r\nlocal function rotateOffset(x, z)\r\n local rx = math.cos(-angleY) * x - math.sin(-angleY) * z\r\n local rz = math.sin(-angleY) * x + math.cos(-angleY) * z\r\n return Vector(rx, 0, rz)\r\n end\r\n for i = -1, 1 do\r\n local localOffset = rotateOffset(spacingX * i, offsetZ_up)\r\n local origin = center + localOffset\r\n local hitList = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n \r\n for _, v in ipairs(hitList) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.setPosition({2.06, 1.49+posCount, 1.07})\r\n v.hit_object.setRotation({0,180,0})\r\n posCount = posCount + 0.1\r\n end\r\n end\r\n end\r\n for i = -2, 1 do\r\n local x = spacingX * i + spacingX / 2\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = center + localOffset\r\n local hitList2 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n for _, v in ipairs(hitList2) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.setPosition({2.06, 1.49+posCount, 1.07})\r\n v.hit_object.setRotation({0,180,0})\r\n posCount = posCount + 0.1\r\n end\r\n end\r\n end\r\n for i = -2, 2 do -- 5개 칸 (i = -2, -1, 0, 1, 2)\r\n local x = spacingX * i -- x 값 조정: 좌우 간격 유지\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = handTransform.position + forward * 9 + localOffset\r\n local hitList3 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n \r\n for k, v in ipairs(hitList3) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.setPosition({2.06, 1.49+posCount, 1.07})\r\n v.hit_object.setRotation({0,180,0})\r\n posCount = posCount + 0.1\r\n end\r\n end\r\n end\r\nend\r\n\r\nfunction startgame()\r\n local deck2 = scan2()\r\n local posCount = 0.1\r\n for i,v in ipairs(getObjects()) do\r\n if v ~= deck2 and (v.type==\"Deck\" or v.type==\"Card\") then\r\n v.setPosition({2.06, 1.49+posCount, 1.07})\r\n v.setRotation({0,180,0})\r\n posCount = posCount + 0.1\r\n end\r\n end\r\n\r\n if deck2 == nil or (deck2.getQuantity()<=#getSeatedPlayers()) then\r\n return\r\n end\r\n\r\n deck2.shuffle()\r\n\r\n for i, v in ipairs(getSeatedPlayers()) do\r\n Wait.time(function() \r\n -- 플레이어 기준 위치 및 회전\r\n local handTransform = Player[v].getHandTransform()\r\n\r\n -- 회전 각도 (플레이어 기준 정방향)\r\n local angleY = math.rad(handTransform.rotation.y)\r\n local forward = Vector(math.sin(angleY), 0, math.cos(angleY))\r\n local center = handTransform.position + forward * 14\r\n \r\n local spacingX = 3\r\n local offsetZ_up = 2\r\n local offsetZ_down = -2\r\n \r\n -- 회전 보조 함수 (회전 반대로 적용)\r\n local function rotateOffset(x, z)\r\n local rx = math.cos(-angleY) * x - math.sin(-angleY) * z\r\n local rz = math.sin(-angleY) * x + math.cos(-angleY) * z\r\n return Vector(rx, 0, rz)\r\n end\r\n \r\n \r\n local localOffset = rotateOffset(spacingX * -1, offsetZ_up)\r\n local origin = center + localOffset\r\n emptyPos = origin + vector(0, -3.3, 0)\r\n \r\n local x = spacingX * -2 -- x 값 조정: 좌우 간격 유지\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = handTransform.position + forward * 9 + localOffset\r\n emptyPos2 = origin + vector(0, -3.3, 0)\r\n local drawcard = deck2.takeObject()\r\n if drawcard.hasTag(\"special\") then\r\n drawcard.setPositionSmooth(emptyPos2,false,false)\r\n drawcard.setRotation(Vector(0, handTransform.rotation.y+180, 0))\r\n else\r\n drawcard.setPositionSmooth(emptyPos,false,false)\r\n drawcard.setRotation(Vector(0, handTransform.rotation.y+180, 0))\r\n end\r\n end, 1)\r\n end\r\n\r\nend\r\n\r\nfunction stay(o,c,a)\r\n -- 플레이어 기준 위치 및 회전\r\n local handTransform = Player[c].getHandTransform()\r\n\r\n -- 회전 각도 (플레이어 기준 정방향)\r\n local angleY = math.rad(handTransform.rotation.y)\r\n local forward = Vector(math.sin(angleY), 0, math.cos(angleY))\r\n local center = handTransform.position + forward * 14\r\n\r\n local spacingX = 3\r\n local offsetZ_up = 2\r\n local offsetZ_down = -2\r\n\r\n-- 회전 보조 함수 (회전 반대로 적용)\r\nlocal function rotateOffset(x, z)\r\n local rx = math.cos(-angleY) * x - math.sin(-angleY) * z\r\n local rz = math.sin(-angleY) * x + math.cos(-angleY) * z\r\n return Vector(rx, 0, rz)\r\n end\r\n for i = -1, 1 do\r\n local localOffset = rotateOffset(spacingX * i, offsetZ_up)\r\n local origin = center + localOffset\r\n local hitList = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n \r\n for _, v in ipairs(hitList) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.flip()\r\n end\r\n end\r\n end\r\n for i = -2, 1 do\r\n local x = spacingX * i + spacingX / 2\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = center + localOffset\r\n local hitList2 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n for _, v in ipairs(hitList2) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.flip()\r\n end\r\n end\r\n end\r\n for i = -2, 2 do -- 5개 칸 (i = -2, -1, 0, 1, 2)\r\n local x = spacingX * i -- x 값 조정: 좌우 간격 유지\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = handTransform.position + forward * 9 + localOffset\r\n local hitList3 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n \r\n for _, v in ipairs(hitList3) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n v.hit_object.flip()\r\n end\r\n end\r\n end\r\nend\r\n\r\nfunction wait(time)\r\n local start = os.time()\r\n repeat\r\n coroutine.yield(0)\r\n until os.time() > start + time\r\n end\r\n\r\nfunction hit(o,c,a)\r\n Pcolor=c\r\n startLuaCoroutine(Global, \"hit2\")\r\nend\r\n\r\nfunction hit2()\r\n\r\n local count = 0\r\n\r\n -- 플레이어 기준 위치 및 회전\r\n local handTransform = Player[Pcolor].getHandTransform()\r\n\r\n -- 회전 각도 (플레이어 기준 정방향)\r\n local angleY = math.rad(handTransform.rotation.y)\r\n local forward = Vector(math.sin(angleY), 0, math.cos(angleY))\r\n local center = handTransform.position + forward * 14\r\n\r\n local spacingX = 3\r\n local offsetZ_up = 2\r\n local offsetZ_down = -2\r\n\r\n-- 회전 보조 함수 (회전 반대로 적용)\r\nlocal function rotateOffset(x, z)\r\n local rx = math.cos(-angleY) * x - math.sin(-angleY) * z\r\n local rz = math.sin(-angleY) * x + math.cos(-angleY) * z\r\n return Vector(rx, 0, rz)\r\nend\r\n\r\n\r\nlocal emptyIndex = nil\r\nlocal filled = false\r\n\r\n-- 위쪽 3칸 (1 ~ 3)\r\nfor i = -1, 1 do\r\n local localOffset = rotateOffset(spacingX * i, offsetZ_up)\r\n local origin = center + localOffset\r\n local hitList = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n filled = false\r\n for _, v in ipairs(hitList) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n filled = true\r\n break\r\n end\r\n end\r\n\r\n if not filled then\r\n emptyIndex = (i + 2) -- i = -1 → 1번칸, 0 → 2번칸, 1 → 3번칸\r\n emptyPos = origin + vector(0, -3.3, 0)\r\n break\r\n end\r\nend\r\n\r\n-- 위쪽 3칸이 차면 아래쪽 첫 번째 칸에서 드로우 시작\r\nif not emptyIndex then\r\n for i = -2, 1 do\r\n local x = spacingX * i + spacingX / 2\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = center + localOffset\r\n local hitList2 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n filled = false\r\n for _, v in ipairs(hitList2) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n filled = true\r\n break\r\n end \r\n end\r\n\r\n -- 비어있는 칸을 찾으면 emptyIndex를 설정\r\n if not filled then\r\n emptyIndex = (i + 5) -- i = -2 → 3번 + 1 = 4, -1 → 5, 0 → 6, 1 → 7\r\n emptyPos = origin + vector(0, -3.3, 0)\r\n break\r\n end\r\n end\r\nend\r\n\r\nfor i = -2, 2 do -- 5개 칸 (i = -2, -1, 0, 1, 2)\r\n local x = spacingX * i -- x 값 조정: 좌우 간격 유지\r\n local localOffset = rotateOffset(x, offsetZ_down)\r\n local origin = handTransform.position + forward * 9 + localOffset\r\n local hitList3 = Physics.cast({\r\n origin = origin + vector(0, -3, 0),\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n filled2 = false\r\n for _, v in ipairs(hitList3) do \r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n filled2 = true\r\n break\r\n end\r\n end\r\n\r\n if not filled2 then\r\n emptyIndex2 = (i + 2) -- i = -1 → 1번칸, 0 → 2번칸, 1 → 3번칸\r\n emptyPos2 = origin + vector(0, -3.3, 0)\r\n break\r\n end\r\nend\r\n local drawcard = scan()\r\n if isempty then\r\n return\r\n end\r\n if drawcard.hasTag(\"special\") then\r\n drawcard.setPositionSmooth(emptyPos2,false,false)\r\n drawcard.setRotation(Vector(0, handTransform.rotation.y+180, 0))\r\n else\r\n drawcard.setPositionSmooth(emptyPos,false,false)\r\n drawcard.setRotation(Vector(0, handTransform.rotation.y+180, 0))\r\n end\r\n\r\n isDeck = false\r\n local hitcheck = Physics.cast({\r\n origin = {-1.60, 1.83, 1.13},\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n\r\n for _, v in ipairs(hitcheck) do \r\n if v.hit_object.type == \"Deck\" then\r\n isDeck = true\r\n end\r\n end\r\n if isDeck == false then\r\n local hitcheck2 = Physics.cast({\r\n origin = {2.06, 1.49, 1.07},\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 3,\r\n debug = false,\r\n })\r\n \r\n for _, v in ipairs(hitcheck2) do \r\n if v.hit_object.type == \"Deck\" then\r\n v.hit_object.setPositionSmooth({-1.60, 2.3, 1.13}, false, true)\r\n v.hit_object.setRotation({0, 180, 180})\r\n wait(0.5)\r\n v.hit_object.shuffle()\r\n end\r\n end\r\n end\r\nreturn 1\r\nend\r\nfunction scan()\r\n isempty = true\r\n deckscan = Physics.cast({\r\n origin = {-2,2,1},\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 1,\r\n debug = false,\r\n })\r\n\r\n for _,v in ipairs(deckscan) do\r\n if v.hit_object.type == \"Deck\" then\r\n isempty = false\r\n\r\n return v.hit_object.takeObject()\r\n elseif v.hit_object.type == \"Card\" then\r\n isempty = false\r\n\r\n return v.hit_object\r\n end\r\n end\r\nend\r\n\r\nfunction scan2()\r\n deckscan = Physics.cast({\r\n origin = {-2,2,1},\r\n direction = {0, -1, 0},\r\n type = 3,\r\n size = {1, 1, 1},\r\n orientation = {0, 0, 0},\r\n max_distance = 1,\r\n debug = false,\r\n })\r\n\r\n for _,v in ipairs(deckscan) do\r\n if v.hit_object.type == \"Deck\" or v.hit_object.type == \"Card\" then\r\n return v.hit_object\r\n end\r\n end\r\nend",
- "LuaScriptState": "",
- "XmlUI": "<!-- Xml UI. See documentation: https://api.tabletopsimulator.com/ui/introUI/ -->",
- "VectorLines": [
- {
- "points3": [
- {
- "x": 0.6898774,
- "y": 1.49142885,
- "z": 2.99238443
- },
- {
- "x": 3.42858171,
- "y": 1.48761082,
- "z": 2.992385
- },
- {
- "x": 3.42858171,
- "y": 1.486495,
- "z": -0.796269655
- },
- {
- "x": 0.68987745,
- "y": 1.490313,
- "z": -0.796269655
- }
- ],
- "color": {
- "r": 0.7019608,
- "g": 0.7019608,
- "b": 0.7019608
- },
- "thickness": 0.1,
- "loop": true
- }
- ],
- "SnapPoints": [
- {
- "Position": {
- "x": 2.05851674,
- "y": 1.47803164,
- "z": 1.07008147
- },
- "Rotation": {
- "x": 0.0168715287,
- "y": 179.999985,
- "z": 0.07987651
- }
- },
- {
- "Position": {
- "x": -1.59988832,
- "y": 1.483486,
- "z": 1.13147771
- },
- "Rotation": {
- "x": 0.01687685,
- "y": 180.001236,
- "z": 180.0799
- }
- },
- {
- "Position": {
- "x": -16.3499813,
- "y": 1.50593054,
- "z": 2.99999523
- },
- "Rotation": {
- "x": 359.920135,
- "y": 269.999878,
- "z": 0.0168706756
- }
- },
- {
- "Position": {
- "x": -16.3499565,
- "y": 1.50354064,
- "z": -9.567931E-06
- },
- "Rotation": {
- "x": 359.920135,
- "y": 270.0,
- "z": 0.0168737434
- }
- },
- {
- "Position": {
- "x": -16.3499813,
- "y": 1.50260437,
- "z": -3.00000477
- },
- "Rotation": {
- "x": 359.920135,
- "y": 269.9999,
- "z": 0.0168708619
- }
- },
- {
- "Position": {
- "x": -23.4928818,
- "y": 1.50821781,
- "z": -15.007617
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999939,
- "z": 0.06840967
- }
- },
- {
- "Position": {
- "x": -21.3715668,
- "y": 1.50593019,
- "z": -17.1289349
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999969,
- "z": 0.0684111
- }
- },
- {
- "Position": {
- "x": -19.2502518,
- "y": 1.50257158,
- "z": -19.2502575
- },
- "Rotation": {
- "x": 359.955444,
- "y": 225.000046,
- "z": 0.0684109256
- }
- },
- {
- "Position": {
- "x": -17.1289349,
- "y": 1.498039,
- "z": -21.3715782
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999985,
- "z": 0.06841008
- }
- },
- {
- "Position": {
- "x": -15.007618,
- "y": 1.49579716,
- "z": -23.492897
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999924,
- "z": 0.0684105456
- }
- },
- {
- "Position": {
- "x": -12.532752,
- "y": 1.49334669,
- "z": -18.896698
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999985,
- "z": 0.06841158
- }
- },
- {
- "Position": {
- "x": -14.6540632,
- "y": 1.49665344,
- "z": -16.775383
- },
- "Rotation": {
- "x": 359.955444,
- "y": 225.000046,
- "z": 0.06841137
- }
- },
- {
- "Position": {
- "x": -16.7753811,
- "y": 1.49935842,
- "z": -14.65406
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999939,
- "z": 0.0684109256
- }
- },
- {
- "Position": {
- "x": -18.8967018,
- "y": 1.50315034,
- "z": -12.5327425
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.9999,
- "z": 0.0684109256
- }
- },
- {
- "Position": {
- "x": -15.007617,
- "y": 1.49971366,
- "z": -10.7649727
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999939,
- "z": 0.06841143
- }
- },
- {
- "Position": {
- "x": -12.8862963,
- "y": 1.49657893,
- "z": -12.8862953
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999939,
- "z": 0.06841143
- }
- },
- {
- "Position": {
- "x": -10.76498,
- "y": 1.49257445,
- "z": -15.0076122
- },
- "Rotation": {
- "x": 359.955444,
- "y": 224.999969,
- "z": 0.06841094
- }
- },
- {
- "Position": {
- "x": -5.9999814,
- "y": 1.48258483,
- "z": -25.3500061
- },
- "Rotation": {
- "x": 0.0168710034,
- "y": 180.000015,
- "z": 0.07987677
- }
- },
- {
- "Position": {
- "x": -2.99998975,
- "y": 1.47882521,
- "z": -25.3500023
- },
- "Rotation": {
- "x": 0.01687063,
- "y": 179.999985,
- "z": 0.07987657
- }
- },
- {
- "Position": {
- "x": 1.89743987E-05,
- "y": 1.47339022,
- "z": -25.3500042
- },
- "Rotation": {
- "x": 0.0168715287,
- "y": 180.000046,
- "z": 0.07987732
- }
- },
- {
- "Position": {
- "x": 3.00001955,
- "y": 1.47035646,
- "z": -25.3500023
- },
- "Rotation": {
- "x": 0.0168708283,
- "y": 180.0,
- "z": 0.07987678
- }
- },
- {
- "Position": {
- "x": 6.00002,
- "y": 1.46540391,
- "z": -25.3500023
- },
- "Rotation": {
- "x": 0.0168713536,
- "y": 180.000015,
- "z": 0.0798782259
- }
- },
- {
- "Position": {
- "x": 4.50002,
- "y": 1.4695493,
- "z": -20.3500061
- },
- "Rotation": {
- "x": 0.0168714486,
- "y": 180.000061,
- "z": 0.07987803
- }
- },
- {
- "Position": {
- "x": 1.50000274,
- "y": 1.47269762,
- "z": -20.3500023
- },
- "Rotation": {
- "x": 0.0168724041,
- "y": 180.0,
- "z": 0.07987791
- }
- },
- {
- "Position": {
- "x": -1.499981,
- "y": 1.47810018,
- "z": -20.3500042
- },
- "Rotation": {
- "x": 0.0168712642,
- "y": 180.000046,
- "z": 0.07987748
- }
- },
- {
- "Position": {
- "x": -4.499981,
- "y": 1.48224151,
- "z": -20.350008
- },
- "Rotation": {
- "x": 0.0168719925,
- "y": 180.000031,
- "z": 0.0798771456
- }
- },
- {
- "Position": {
- "x": -2.99998879,
- "y": 1.48029864,
- "z": -16.3500023
- },
- "Rotation": {
- "x": 0.0168722738,
- "y": 179.999969,
- "z": 0.07987784
- }
- },
- {
- "Position": {
- "x": 1.92909756E-05,
- "y": 1.47653723,
- "z": -16.3500023
- },
- "Rotation": {
- "x": 0.0168713853,
- "y": 180.000031,
- "z": 0.07987759
- }
- },
- {
- "Position": {
- "x": 3.00001264,
- "y": 1.47251439,
- "z": -16.3500023
- },
- "Rotation": {
- "x": 0.0168702267,
- "y": 180.0,
- "z": 0.0798755363
- }
- },
- {
- "Position": {
- "x": 10.7650042,
- "y": 1.46246207,
- "z": -15.00762
- },
- "Rotation": {
- "x": 0.0684116855,
- "y": 135.000015,
- "z": 0.0445511527
- }
- },
- {
- "Position": {
- "x": 12.8863211,
- "y": 1.45989418,
- "z": -12.8862991
- },
- "Rotation": {
- "x": 0.06841175,
- "y": 135.000015,
- "z": 0.04455115
- }
- },
- {
- "Position": {
- "x": 15.0076389,
- "y": 1.45743239,
- "z": -10.7649765
- },
- "Rotation": {
- "x": 0.06841233,
- "y": 135.0,
- "z": 0.0445519723
- }
- },
- {
- "Position": {
- "x": 12.5327663,
- "y": 1.45918715,
- "z": -18.89671
- },
- "Rotation": {
- "x": 0.0684120059,
- "y": 135.0,
- "z": 0.0445521176
- }
- },
- {
- "Position": {
- "x": 14.6540842,
- "y": 1.45676017,
- "z": -16.7753868
- },
- "Rotation": {
- "x": 0.06841156,
- "y": 135.000046,
- "z": 0.04455093
- }
- },
- {
- "Position": {
- "x": 16.7753963,
- "y": 1.45412946,
- "z": -14.6540661
- },
- "Rotation": {
- "x": 0.06841067,
- "y": 135.000031,
- "z": 0.0445517153
- }
- },
- {
- "Position": {
- "x": 18.896719,
- "y": 1.45171666,
- "z": -12.5327435
- },
- "Rotation": {
- "x": 0.0684115,
- "y": 135.000031,
- "z": 0.0445514061
- }
- },
- {
- "Position": {
- "x": 15.0076332,
- "y": 1.45401824,
- "z": -23.492897
- },
- "Rotation": {
- "x": 0.06841248,
- "y": 134.999969,
- "z": 0.0445522368
- }
- },
- {
- "Position": {
- "x": 17.128952,
- "y": 1.45312858,
- "z": -21.37158
- },
- "Rotation": {
- "x": 0.0684116855,
- "y": 135.0,
- "z": 0.04455163
- }
- },
- {
- "Position": {
- "x": 19.2502689,
- "y": 1.44908381,
- "z": -19.2502613
- },
- "Rotation": {
- "x": 0.0684118,
- "y": 135.000076,
- "z": 0.044552505
- }
- },
- {
- "Position": {
- "x": 21.3715858,
- "y": 1.44676924,
- "z": -17.1289368
- },
- "Rotation": {
- "x": 0.06841226,
- "y": 135.000076,
- "z": 0.0445516929
- }
- },
- {
- "Position": {
- "x": 23.4929028,
- "y": 1.44573855,
- "z": -15.0076141
- },
- "Rotation": {
- "x": 0.06841258,
- "y": 134.999954,
- "z": 0.0445514
- }
- }
- ],
- "ObjectStates": [
- {
- "GUID": "53bea0",
- "Name": "HandTrigger",
- "Transform": {
- "posX": 0.0,
- "posY": 5.0,
- "posZ": -32.35,
- "rotX": 0.0,
- "rotY": 0.0,
- "rotZ": 0.0,
- "scaleX": 11.8350019,
- "scaleY": 7.002465,
- "scaleZ": 4.04115963
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.856,
- "g": 0.09999997,
- "b": 0.09399996,
- "a": 0.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": false,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "FogColor": "Red",
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "afc863",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": -12.6,
- "posY": -9.0,
- "posZ": -12.6,
- "rotX": 6.536436E-07,
- "rotY": -2.39176334E-05,
- "rotZ": -3.84849864E-06,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 2,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c8edca",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": -12.6,
- "posY": -9.0,
- "posZ": 12.6,
- "rotX": 6.536436E-07,
- "rotY": 90.0,
- "rotZ": -3.84849864E-06,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 2,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "393bf7",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 12.6,
- "posY": -9.0,
- "posZ": 12.6,
- "rotX": 6.536436E-07,
- "rotY": 180.0,
- "rotZ": -3.84849864E-06,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 2,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "12c65e",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 12.6,
- "posY": -9.0,
- "posZ": -12.6,
- "rotX": 6.536436E-07,
- "rotY": 270.0,
- "rotZ": -3.84849864E-06,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 2,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "bd69bd",
- "Name": "Chinese_Checkers_Piece",
- "Transform": {
- "posX": 31.760004,
- "posY": -0.259998322,
- "posZ": -34.72,
- "rotX": 0.00190076465,
- "rotY": 180.0,
- "rotZ": 0.000379891542,
- "scaleX": 1.6499995,
- "scaleY": 1.6499995,
- "scaleZ": 1.6499995
- },
- "Nickname": "Flex Table Control",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": false,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "MaterialIndex": 1,
- "LuaScript": "tableHeightOffset = -9\n\nfunction onSave()\n saved_data = JSON.encode({tid=tableImageData, cd=checkData})\n --saved_data = \"\"\n return saved_data\nend\n\nfunction onload(saved_data)\n --Loads the tracking for if the game has started yet\n if saved_data ~= \"\" then\n local loaded_data = JSON.decode(saved_data)\n tableImageData = loaded_data.tid\n checkData = loaded_data.cd\n else\n tableImageData = {}\n checkData = {move=false, scale=false}\n end\n\n --Disables interactable status of objects with GUID in list\n for _, guid in ipairs(ref_noninteractable) do\n local obj = getObjectFromGUID(guid)\n if obj then obj.interactable = false end\n end\n\n --Establish references to table parts\n obj_leg1 = getObjectFromGUID(\"afc863\")\n obj_leg2 = getObjectFromGUID(\"c8edca\")\n obj_leg3 = getObjectFromGUID(\"393bf7\")\n obj_leg4 = getObjectFromGUID(\"12c65e\")\n obj_surface = getObjectFromGUID(\"4ee1f2\")\n obj_side_top = getObjectFromGUID(\"35b95f\")\n obj_side_bot = getObjectFromGUID(\"f938a2\")\n obj_side_lef = getObjectFromGUID(\"9f95fd\")\n obj_side_rig = getObjectFromGUID(\"5af8f2\")\n\n controlActive = false\n createOpenCloseButton()\nend\n\n\n\n--Activation/deactivation of control panel\n\n\n\n--Activated by clicking on\nfunction click_toggleControl(_, color)\n if permissionCheck(color) then\n if not controlActive then\n --Activate control panel\n controlActive = true\n self.clearButtons()\n createOpenCloseButton()\n createSurfaceInput()\n createSurfaceButtons()\n createScaleInput()\n createScaleButtons()\n else\n --Deactivate control panel\n controlActive = false\n self.clearButtons()\n self.clearInputs()\n createOpenCloseButton()\n\n end\n end\nend\n\n\n\n\n--Table surface control\n\n\n\n--Changes table surface\nfunction click_applySurface(_, color)\n if permissionCheck(color) then\n updateSurface()\n broadcastToAll(\"New Table Image Applied\", {0.2,0.9,0.2})\n end\nend\n\n--Saves table surface\nfunction click_saveSurface(_, color)\n if permissionCheck(color) then\n local nickname = self.getInputs()[1].value\n local url = self.getInputs()[2].value\n if nickname == \"\" then\n --No nickname\n broadcastToAll(\"Please supply a nickname for this save.\", {0.9,0.2,0.2})\n else\n --Nickname exists\n\n if findInImageDataIndex(url, nickname) == nil then\n --Save doesn't exist already\n table.insert(tableImageData, {url=url, name=nickname})\n broadcastToAll(\"Image URL saved to memory.\", {0.2,0.9,0.2})\n --Refresh buttons\n self.clearButtons()\n createOpenCloseButton()\n createSurfaceButtons()\n createScaleButtons()\n else\n --Save exists already\n broadcastToAll(\"Memory already contains a save with this Name or URL. Delete it first.\", {0.9,0.2,0.2})\n end\n end\n end\nend\n\n--Loads table surface\nfunction click_loadMemory(_, color, index)\n if permissionCheck(color) then\n self.editInput({index=0, value=tableImageData[index].name})\n self.editInput({index=1, value=tableImageData[index].url})\n updateSurface()\n broadcastToAll(\"Table Image Loaded\", {0.2,0.9,0.2})\n end\nend\n\n--Deletes table surface\nfunction click_deleteMemory(_, color, index)\n if permissionCheck(color) then\n table.remove(tableImageData, index)\n self.clearButtons()\n createOpenCloseButton()\n createSurfaceButtons()\n createScaleButtons()\n broadcastToAll(\"Element Removed from Memory\", {0.2,0.9,0.2})\n end\nend\n\n--Updates surface from the values in the input field\nfunction updateSurface()\n local customInfo = obj_surface.getCustomObject()\n customInfo.diffuse = self.getInputs()[2].value\n obj_surface.setCustomObject(customInfo)\n obj_surface = obj_surface.reload()\nend\n\n\n\n--Table Scale control\n\n\n\n--Applies Scale to table pieces\nfunction click_applyScale(_, color)\n if permissionCheck(color) then\n local newWidth = tonumber(self.getInputs()[3].value)\n local newDepth = tonumber(self.getInputs()[4].value)\n if type(newWidth) ~= \"number\" then\n broadcastToAll(\"Invalid Width\", {0.9,0.2,0.2})\n return\n elseif type(newDepth) ~= \"number\" then\n broadcastToAll(\"Invalid Depth\", {0.9,0.2,0.2})\n return\n elseif newWidth<0.1 or newDepth<0.1 then\n broadcastToAll(\"Scale cannot go below 0.1\", {0.9,0.2,0.2})\n return\n elseif newWidth>12 or newDepth>12 then\n broadcastToAll(\"Scale should not go over 12 (world size limitation)\", {0.9,0.2,0.2})\n return\n else\n changeTableScale(math.abs(newWidth), math.abs(newDepth))\n broadcastToAll(\"Scale applied.\", {0.2,0.9,0.2})\n end\n end\nend\n\n--Checks/unchecks move box for hands\nfunction click_checkMove(_, color)\n if permissionCheck(color) then\n local find_func = function(o) return o.click_function==\"click_checkMove\" end\n if checkData.move == true then\n checkData.move = false\n local buttonEntry = findButton(self, find_func)\n self.editButton({index=buttonEntry.index, label=\"\"})\n else\n checkData.move = true\n local buttonEntry = findButton(self, find_func)\n self.editButton({index=buttonEntry.index, label=string.char(10008)})\n end\n end\nend\n\n--Checks/unchecks scale box for hands\n--This button was disabled for technical reasons\n--[[\nfunction click_checkScale(_, color)\n if permissionCheck(color) then\n local find_func = function(o) return o.click_function==\"click_checkScale\" end\n if checkData.scale == true then\n checkData.scale = false\n local buttonEntry = findButton(self, find_func)\n self.editButton({index=buttonEntry.index, label=\"\"})\n else\n checkData.scale = true\n local buttonEntry = findButton(self, find_func)\n self.editButton({index=buttonEntry.index, label=string.char(10008)})\n end\n end\nend\n]]\n\n--Alters scale of elements and moves them\nfunction changeTableScale(width, depth)\n --Scaling factors used to translate scale to position offset\n local width2pos = (width-1) * 18\n local depth2pos = (depth-1) * 18\n\n --Hand zone movement\n if checkData.move == true then\n for _, pc in ipairs(ref_playerColor) do\n if Player[pc].getHandCount() > 0 then\n moveHandZone(Player[pc], width2pos, depth2pos)\n end\n end\n end\n --Hand zone scaling\n --The button to enable this was disabled for technical reasons\n if checkData.scale == true then\n for _, pc in ipairs(ref_playerColor) do\n if Player[pc].getHandCount() > 0 then\n scaleHandZone(Player[pc], width, depth)\n end\n end\n end\n\n --Resizing table elements\n obj_side_top.setScale({width, 1, 1})\n obj_side_bot.setScale({width, 1, 1})\n obj_side_lef.setScale({depth, 1, 1})\n obj_side_rig.setScale({depth, 1, 1})\n obj_surface.setScale({width, 1, depth})\n\n --Moving table elements to accomodate new scale\n obj_side_lef.setPosition({-width2pos,tableHeightOffset,0})\n obj_side_rig.setPosition({ width2pos,tableHeightOffset,0})\n obj_side_top.setPosition({0,tableHeightOffset, depth2pos})\n obj_side_bot.setPosition({0,tableHeightOffset,-depth2pos})\n obj_leg1.setPosition({-width2pos,tableHeightOffset,-depth2pos})\n obj_leg2.setPosition({-width2pos,tableHeightOffset, depth2pos})\n obj_leg3.setPosition({ width2pos,tableHeightOffset, depth2pos})\n obj_leg4.setPosition({ width2pos,tableHeightOffset,-depth2pos})\n self.setPosition(obj_leg4.positionToWorld({-22.12, 8.74,-19.16}))\n --Only enabled when changing tableHeightOffset\n --obj_surface.setPosition({0,tableHeightOffset,0})\nend\n\n--Move hand zone, p=player reference, facts are scaling factors\nfunction moveHandZone(p, width2pos, depth2pos)\n local widthX = obj_side_rig.getPosition().x\n local depthZ = obj_side_top.getPosition().z\n for i=1, p.getHandCount() do\n local handT = p.getHandTransform()\n local pos = handT.position\n local y = handT.rotation.y\n\n if y<45 or y>320 or y>135 and y<225 then\n if pos.z > 0 then\n pos.z = pos.z + depth2pos - depthZ\n else\n pos.z = pos.z - depth2pos + depthZ\n end\n else\n if pos.x > 0 then\n pos.x = pos.x + width2pos - widthX\n else\n pos.x = pos.x - width2pos + widthX\n end\n end\n\n --Only enabled when changing tableHeightOffset\n --pos.y = tableHeightOffset + 14\n\n handT.position = pos\n p.setHandTransform(handT, i)\n end\nend\n\n\n---Scales hand zones, p=player reference, facts are scaling factors\nfunction scaleHandZone(p, width, depth)\n local widthFact = width / obj_side_top.getScale().x\n local depthFact = depth / obj_side_lef.getScale().x\n for i=1, p.getHandCount() do\n local handT = p.getHandTransform()\n local scale = handT.scale\n local y = handT.rotation.y\n if y<45 or y>320 or y>135 and y<225 then\n scale.x = scale.x * widthFact\n else\n scale.x = scale.x * depthFact\n end\n handT.scale = scale\n p.setHandTransform(handT, i)\n end\nend\n\n\n\n--Information gathering\n\n\n\n--Checks if a color is promoted or host\nfunction permissionCheck(color)\n if Player[color].host==true or Player[color].promoted==true then\n return true\n else\n return false\n end\nend\n\n--Locates a string saved within memory file\nfunction findInImageDataIndex(...)\n for _, str in ipairs({...}) do\n for i, v in ipairs(tableImageData) do\n if v.url == str or v.name == str then\n return i\n end\n end\n end\n return nil\nend\n\n--Round number (num) to the Nth decimal (dec)\nfunction round(num, dec)\n local mult = 10^(dec or 0)\n return math.floor(num * mult + 0.5) / mult\nend\n\n--Locates a button with a helper function\nfunction findButton(obj, func)\n if func==nil then error(\"No func supplied to findButton\") end\n for _, v in ipairs(obj.getButtons()) do\n if func(v) then\n return v\n end\n end\n return nil\nend\n\n\n\n--Creation of buttons/inputs\n\n\n\nfunction createOpenCloseButton()\n local tooltip = \"Open Table Control Panel\"\n if controlActive then\n tooltip = \"Close Table Control Panel\"\n end\n self.createButton({\n click_function=\"click_toggleControl\", function_owner=self,\n position={0,0,0}, rotation={-45,0,0}, height=400, width=400,\n color={1,1,1,0}, tooltip=tooltip\n })\nend\n\nfunction createSurfaceInput()\n local currentURL = obj_surface.getCustomObject().diffuse\n local nickname = \"\"\n if findInImageDataIndex(currentURL) ~= nil then\n nickname = tableImageData[findInImageDataIndex(currentURL)].name\n end\n self.createInput({\n label=\"Nickname\", input_function=\"none\", function_owner=self,\n alignment=3, position={0,0,2}, height=224, width=4000,\n font_size=200, tooltip=\"Enter nickname for table image (only used for save)\",\n value=nickname\n })\n self.createInput({\n label=\"URL\", input_function=\"none\", function_owner=self,\n alignment=3, position={0,0,3}, height=224, width=4000,\n font_size=200, tooltip=\"Enter URL for tabletop image\",\n value=currentURL\n })\nend\n\nfunction createSurfaceButtons()\n --Label\n self.createButton({\n label=\"Tabletop Surface Image\", click_function=\"none\",\n position={0,0,1}, height=0, width=0, font_size=300, font_color={1,1,1}\n })\n --Functional\n self.createButton({\n label=\"Apply Image\\nTo Table\", click_function=\"click_applySurface\",\n function_owner=self, tooltip=\"Apply URL as table image\",\n position={2,0,4}, height=440, width=1400, font_size=200,\n })\n self.createButton({\n label=\"Save Image\\nTo Memory\", click_function=\"click_saveSurface\",\n function_owner=self, tooltip=\"Record URL into memory (requires nickname)\",\n position={-2,0,4}, height=440, width=1400, font_size=200,\n })\n --Label\n self.createButton({\n label=\"Load From Memory\", click_function=\"none\",\n position={0,0,5.5}, height=0, width=0, font_size=300, font_color={1,1,1}\n })\n --Saves, created dynamically from memory file\n for i, memoryEntry in ipairs(tableImageData) do\n --Load\n local funcName = i..\"loadMemory\"\n local func = function(x,y) click_loadMemory(x,y,i) end\n self.setVar(funcName, func)\n self.createButton({\n label=memoryEntry.name, click_function=funcName,\n function_owner=self, tooltip=memoryEntry.url, font_size=200,\n position={-0.6,0,6.5+0.5*(i-1)}, height=240, width=3300,\n })\n --Delete\n local funcName = i..\"deleteMemory\"\n local func = function(x,y) click_deleteMemory(x,y,i) end\n self.setVar(funcName, func)\n self.createButton({\n label=\"DELETE\", click_function=funcName,\n function_owner=self, tooltip=\"\",\n position={3.6,0,6.5+0.5*(i-1)}, height=240, width=600,\n font_size=160, font_color={1,0,0}, color={0.8,0.8,0.8}\n })\n end\nend\n\nfunction createScaleInput()\n self.createInput({\n label=string.char(8644), input_function=\"none\", function_owner=self,\n alignment=3, position={-8.5,0,2}, height=224, width=400,\n font_size=200, tooltip=\"Table Width\",\n value=round(obj_side_top.getScale().x, 1)\n })\n self.createInput({\n label=string.char(8645), input_function=\"none\", function_owner=self,\n alignment=3, position={-7.5,0,2}, height=224, width=400,\n font_size=200, tooltip=\"Table Depth\",\n value=round(obj_side_lef.getScale().x, 1)\n })\nend\n\nfunction createScaleButtons()\n --Labels\n self.createButton({\n label=\"Table Scale\", click_function=\"none\",\n position={-8,0,1}, height=0, width=0, font_size=300, font_color={1,1,1}\n })\n self.createButton({\n label=string.char(8644)..\" \"..string.char(8645),\n click_function=\"none\",\n position={-8,0,2}, height=0, width=0, font_size=300, font_color={1,1,1}\n })\n self.createButton({\n label=\"Move Hands:\", click_function=\"none\",\n position={-8.3,0,3}, height=0, width=0, font_size=200, font_color={1,1,1}\n })\n --Disabled due to me removing the feature for technical reasons\n --[[\n self.createButton({\n label=\"Scale Hands:\", click_function=\"none\",\n position={-8.3,0,4}, height=0, width=0, font_size=200, font_color={1,1,1}\n })\n ]]\n --Checkboxes\n local label = \"\"\n if checkData.move == true then label = string.char(10008) end\n self.createButton({\n label=label, click_function=\"click_checkMove\",\n function_owner=self, tooltip=\"Check to move hands when table is rescaled\",\n position={-6.8,0,3}, height=224, width=224, font_size=200,\n })\n --[[\n local label = \"\"\n if checkData.scale == true then label = string.char(10008) end\n self.createButton({\n label=label, click_function=\"click_checkScale\",\n function_owner=self, tooltip=\"Check to scale the width of hands when table is rescaled\",\n position={-6.8,0,4}, height=224, width=224, font_size=200,\n })\n ]]\n --Apply button\n self.createButton({\n label=\"Apply Scale\", click_function=\"click_applyScale\",\n function_owner=self, tooltip=\"Apply width/depth to table\",\n position={-8,0,4}, height=440, width=1400, font_size=200,\n })\nend\n\n\n\n\n\n--Data tables\n\n\n\n\nref_noninteractable = {\n \"afc863\",\"c8edca\",\"393bf7\",\"12c65e\",\"f938a2\",\"9f95fd\",\"35b95f\",\n \"5af8f2\",\"4ee1f2\",\"bd69bd\"\n}\n\nref_playerColor = {\n \"White\", \"Brown\", \"Red\", \"Orange\", \"Yellow\",\n \"Green\", \"Teal\", \"Blue\", \"Purple\", \"Pink\", \"Black\"\n}\n\n--Dummy function, absorbs unwanted triggers\nfunction none() end",
- "LuaScriptState": "{\"cd\":{\"move\":true,\"scale\":false},\"tid\":[{\"name\":\"Felt - Green\",\"url\":\"https://i.imgur.com/eHXDjyy.jpg\"},{\"name\":\"Felt - Red\",\"url\":\"https://i.imgur.com/DbPelDi.jpg\"},{\"name\":\"Felt - Grey\",\"url\":\"https://i.imgur.com/N0O6aqj.jpg\"}]}",
- "XmlUI": ""
- },
- {
- "GUID": "f938a2",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 0.0,
- "posY": -9.0,
- "posZ": -12.6,
- "rotX": -1.01777751E-13,
- "rotY": 0.0,
- "rotZ": 0.0,
- "scaleX": 1.7,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 1,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "9f95fd",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": -12.6,
- "posY": -9.0,
- "posZ": 0.0,
- "rotX": 0.0,
- "rotY": 90.0,
- "rotZ": 0.0,
- "scaleX": 1.7,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 1,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "35b95f",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 0.0,
- "posY": -9.0,
- "posZ": 12.6,
- "rotX": -1.01777751E-13,
- "rotY": 180.0,
- "rotZ": 0.0,
- "scaleX": 1.7,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 1,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "5af8f2",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 12.6,
- "posY": -9.0,
- "posZ": 0.0,
- "rotX": 0.0,
- "rotY": 270.0,
- "rotZ": 0.0,
- "scaleX": 1.7,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 1,
- "TypeIndex": 4,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "32d75c",
- "Name": "Custom_Tile",
- "Transform": {
- "posX": 0.00489711575,
- "posY": 1.472919,
- "posZ": -29.1501,
- "rotX": 0.0168698411,
- "rotY": 179.999878,
- "rotZ": 0.0798768252,
- "scaleX": 1.3598398,
- "scaleY": 1.0,
- "scaleZ": 1.3598398
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.8710801,
- "g": 0.8710801,
- "b": 0.8710801
- },
- "Tags": [
- "score"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomImage": {
- "ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966601919/D818D6B21F64EE6702A21323E2C0F1AAC91BFFDB/",
- "ImageSecondaryURL": "",
- "ImageScalar": 1.0,
- "WidthScale": 0.0,
- "CustomTile": {
- "Type": 3,
- "Thickness": 0.1,
- "Stackable": false,
- "Stretch": true
- }
- },
- "LuaScript": " \n \n \n \nfunction onload(saved_data)\n sheetLocked = self.script_state.sheetLocked or false\n local inverseScale = {x=math.floor(100/self.getScale().x)/100, y=math.floor(100/self.getScale().z)/100}\n scale = self.script_state.scale or inverseScale\n flip = self.script_state.flip or \"False\"\n fields = self.script_state.fields or {}\n checks = self.script_state.checks or {}\n decals = self.script_state.decals or {}\n height = self.script_state.height or 0.5\n locks = self.script_state.locks or {fields=false, checks=false, decals=false}\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n lookupSelectionButtonIndices = {}\n lastFieldLockedMessage = 0\n buttonIndex = 0\n inputIndex = 0\n dirtyUpdateWait = nil\n if saved_data ~= \"\" then\n local loadedData = JSON.decode(saved_data)\n sheetLocked = loadedData.sheetLocked or false\n flip = loadedData.flip or \"False\"\n height = loadedData.height or 0.5\n fields = loadedData.fields or {}\n checks = loadedData.checks or {}\n decals = loadedData.decals or {}\n scale = loadedData.scale or inverseScale\n locks = loadedData.locks or {fields=false, checks=false, decals=false}\n end\n if (not getCommited()) then\n self.addContextMenuItem(\"Edit Layout\", showEditPanel)\n self.addContextMenuItem(\"Commit Layout\", showCommitPanel)\n nudgeDistance = self.script_state.nudgeDistance or 0.1\n page = 1\n editingSheet = false\n selectedId = 0\n selectedArrayId = 1\n selectedType = \"\"\n selectedMax = 5\n creating = false\n else\n makeContextMenuItems()\n end\n createAll()\nend\n\nfunction makeContextMenuItems()\n self.clearContextMenu()\n if (not sheetLocked) then\n local getLocked = function(element)\n if (locks[element]) then return \"◆ Lock\" else return \"◇ Lock\" end\n end\n local allLocked = \"Lock\"\n if (locks.fields and locks.checks and locks.decals) then allLocked = \"Unlock\" end\n if (#fields > 0 and #checks > 0 and #decals > 0) then\n self.addContextMenuItem(allLocked..\" everything\", toggleAllLocks)\n end\n for k, v in pairs(fields) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"fields\")..\" texts\", toggleLockFields)\n break\n end\n end\n for k, v in pairs(checks) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"checks\")..\" checkboxes\", toggleLockChecks)\n break\n end\n end\n for k, v in pairs(decals) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"decals\")..\" images\", toggleLockDecals)\n break\n end\n end\n end\nend\n\nfunction toggleAllLocks(ply, pos, obj)\n if (locks.fields and locks.checks and locks.decals) then\n locks.fields = false\n locks.checks = false\n locks.decals = false\n broadcastToColor(\"Unlocked everything\", ply)\n else\n locks.fields = true\n locks.checks = true\n locks.decals = true\n broadcastToColor(\"Locked everything\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockFields(ply, pos, obj)\n if (locks.fields) then\n locks.fields = false\n broadcastToColor(\"Unlocked texts\", ply)\n else\n locks.fields = true\n broadcastToColor(\"Locked texts\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockChecks(ply, pos, obj)\n if (locks.checks) then\n locks.checks = false\n broadcastToColor(\"Unlocked checkboxes\", ply)\n else\n locks.checks = true\n broadcastToColor(\"Locked checkboxes\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockDecals(ply, pos, obj)\n if (locks.decals) then\n locks.decals = false\n broadcastToColor(\"Unlocked images\", ply)\n else\n locks.decals = true\n broadcastToColor(\"Locked images\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction updateSave()\n local data_to_save = {scale=scale, height=height, fields=fields, checks=checks, decals=decals, flip=flip, sheetLocked=sheetLocked, locks=locks}\n if (not getCommited()) then\n data_to_save.nudgeDistance=nudgeDistance\n else\n data_to_save.nudgeDistance=nil\n end\n saved_data = JSON.encode(data_to_save)\n self.script_state = saved_data\nend\n\nfunction null() end\n\nfunction refresh()\n if (not creating) then\n self.clearInputs()\n self.clearButtons()\n inputIndex = 0\n buttonIndex = 0\n if (editingSheet) then\n createSelectionHighlight() \n end\n createAll()\n end\nend\n\nfunction createAll()\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n startLuaCoroutine(self, \"createAllCoroutine\") \nend\n\nfunction createAllCoroutine()\n if (not getCommited()) then\n UI.setAttribute(getPanelId(\"Loading\"), \"active\", \"True\")\n end\n coroutine.yield(0)\n creating = true\n for fieldID, field in pairs(fields) do\n lookupFieldIndices[fieldID] = {\n inputs={},\n colTotals={},\n rowTotals={},\n counterButtons={},\n selectionButtons={}\n }\n local posx = field.pos.x\n local posy = field.pos.y\n local func = \"edit\"\n if (field.vsum == \"True\" or field.hsum == \"True\") then\n func = 'MarumEditableRecalculateSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n edit(obj, ply, input_value, selected)\n obj.call(\"recalculateSums\",fID)\n end\n else\n local iIndex = inputIndex\n if (field.locked == \"True\" or sheetLocked or locks.fields) then\n func = 'MarumEditableRevert_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n local iID = iIndex\n local sel = selected\n obj.call(\"revertField\",{fID, ply, iID, sel})\n end\n end\n end\n\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n local posMulx = 1\n local flipped = 1\n if (flip == \"True\") then\n rotation.y = 180\n flipped = -1\n end\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (field.locked == \"True\" or sheetLocked or locks.fields) and upright\n local unlockedRotation = {x=rotation.x, y=rotation.y, z=rotation.z}\n if (editingSheet or shouldFlip) then\n rotation.z = 180\n posMulx = -posMulx\n fieldScale.x = -fieldScale.x\n end\n local vsum = 0\n local hsums = {}\n local fontSize = field.font\n fontSize = math.min(field.size.y - 24, fontSize)\n local color = getFieldTextColor(fieldID)\n for x=1, field.array.x do\n vsum = 0\n for y=1, field.array.y do\n local arrayID = x+(y-1)*field.array.x\n local pos = getFieldPosition(fieldID, x, y)\n self.createInput({\n value = field.value[arrayID],\n tooltip=getFieldTooltip(fieldID, arrayID),\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos, \n width = field.size.x, \n height = field.size.y, \n rotation=rotation,\n font_size = fontSize, \n scale=fieldScale,\n font_color=color,\n color = field.fieldColor,\n tab = 2\n })\n if (field.counter == \"True\") then\n local counterButtonWidth = fontSize*0.75\n _G['MarumEditableCounterIncrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"increaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"counter\", id=fieldID}\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=1})\n self.createButton({\n click_function = 'MarumEditableCounterIncrease_'..fieldID..'_'..arrayID,\n tooltip=\"↑ Increase ↑\",\n function_owner = self,\n label=\"[b]+[/b]\",\n position={x=pos.x+(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n rotation=unlockedRotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n\n _G['MarumEditableCounterDecrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"decreaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=-1})\n self.createButton({\n click_function = 'MarumEditableCounterDecrease_'..fieldID..'_'..arrayID,\n tooltip=\"↓ Decrease ↓\",\n function_owner = self,\n label=\"[b]-[/b]\",\n position={x=pos.x-(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n unlockedRotation=rotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n end\n inputIndex = inputIndex+1\n lookupInputIndexToInfo[inputIndex] = {type=\"field\", id=fieldID, arrayID=arrayID}\n table.insert(lookupFieldIndices[fieldID].inputs, {index=inputIndex, arrayID=arrayID, x=x, y=y})\n if (field.vsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n if (field.hsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n if (hsums[x] == nil) then\n hsums[x] = tonumber(field.value[arrayID])\n else\n hsums[x] = hsums[x] + tonumber(field.value[arrayID])\n end\n end\n end\n\n if (x == 1 and field.hsum == \"True\") then\n local pos = getFieldPosition(fieldID, field.array.x + 1, y)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]-[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].rowTotals, {index=inputIndex, y=y})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n if (field.vsum == \"True\") then\n local pos = getFieldPosition(fieldID, x, field.array.y+1)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]\"..vsum..\"[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].colTotals, {index=inputIndex, x=x})\n end\n end\n\n if (field.hsum == \"True\") then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 10\n )\n end\n end\n\n createDecals()\n for decalID, decal in pairs(decals) do\n lookupDecalIndices[decalID] = {\n inputs={},\n selectionButtons={}\n }\n local rotationAdd = 180\n local posMulx = 1\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n if (decal.locked != \"True\" and not sheetLocked and not locks.decals and not editingSheet) then\n local func = 'MarumEditableSetURL_'..decalID\n _G[func] = function(obj, ply, alt)\n obj.call(\"showImageURLPanel\",{decalID, ply})\n end\n local tooltip = getDecalTooltip(decalID)\n self.createButton({\n value = decal.url,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n position = pos, \n width = 490, \n height = 490, \n rotation={x=0,y=0,z=0},\n font_size = 10,\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=decal.scale.y*scale.y},\n font_color= {r=0, g=0, b=0, a=0},\n color = {r=0, g=0, b=0, a=0},\n })\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"decal\", id=decalID}\n table.insert(lookupDecalIndices[decalID].inputs, {index=buttonIndex})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n for checkID, check in pairs(checks) do\n lookupCheckIndices[checkID] = {\n buttons={},\n selectionButtons={}\n }\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (check.locked == \"True\" or sheetLocked or locks.checks) and upright\n if (editingSheet or shouldFlip) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n for x=1, check.array.x do\n for y=1, check.array.y do\n local arrayID = x+(y-1)*check.array.x\n local func = \"MarumEditableClickCheckbox_\"..checkID..\"_\"..arrayID\n if (check.locked == \"True\" or sheetLocked or locks.checks) then\n func = \"null\"\n end\n local rotationY = 0\n local posMul = 1\n if (flip == \"True\") then\n rotationY = 180\n posMul = -posMul\n end\n local pos = getCheckPosition(checkID, x, y)\n local bindex = buttonIndex\n _G['MarumEditableClickCheckbox_'..checkID..'_'..arrayID] = function(obj, ply, alt)\n local fID = checkID\n local aID = arrayID\n local bi = bindex\n obj.call(\"clickcheck\",{fID, aID, alt, bi, ply})\n end\n\n local tooltip = getCheckTooltip(checkID)\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"check\", id=checkID, arrayID=arrayID}\n table.insert(lookupCheckIndices[checkID].buttons, {index=buttonIndex, x=x, y=y, arrayID=arrayID})\n self.createButton({\n label = label,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n alignment = 3,\n position = pos, \n width = 250, \n height = 250, \n rotation={x=0,y=rotationY,z=rotationZ},\n font_size = check.font,\n scale={x=checkScale.x, y=checkScale.y, z=checkScale.z},\n font_color=alphaCorrectedColor,\n color = check.checkColor,\n tab = 0\n })\n\n if (buttonIndex%10==0) then coroutine.yield(0) end\n end\n end\n end\n if (not getCommited() and editingSheet) then\n createSelectionButtons()\n end\n creating = false\n return 1\nend\n\nfunction revertField(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=fields[fieldID].value[v.arrayID]})\n end\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is locked\", ply, {r=1,g=0.5,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction recalculateSums(fieldID)\n local field = fields[fieldID]\n if (field.vsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].colTotals) do\n local vsum = 0\n for y=1, field.array.y do\n local arrayID = v.x+(y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..vsum..\"[/u]\"})\n end\n end\n if (field.hsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].rowTotals) do\n local hsum = 0\n for x=1, field.array.x do\n local arrayID = x+(v.y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n hsum = hsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..hsum..\"[/u]\"})\n end\n end\nend\nfunction revertFieldSum(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is reserved for the total sum\", ply, {r=1,g=1,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction createDecals()\n local decalParameters = {}\n for decalID, decal in pairs(decals) do\n local rotationAdd = 180\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n table.insert(decalParameters, {\n url=decal.url,\n name=\"Image #\"..decalID,\n position={x=-pos.x, y=pos.y, z=pos.z},\n rotation={x=90, y=rotationAdd+decal.rotation, z=0},\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=1}\n })\n end\n self.setDecals(decalParameters)\nend\n\nfunction getFieldPosition(fieldID, x, y)\n local field = fields[fieldID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(field.pos.x+(x-1)*field.distance.x) * scale.x * mul,y=height+0.002,z=(field.pos.y+(y-1)*field.distance.y) * scale.y * mul}\nend\nfunction getFieldTooltip(fieldID, arrayID)\n local field = fields[fieldID]\n local tooltip = \"\"\n if (not field.locked) then\n if (field.tooltip == nil or field.tooltip:find(\"name\")) then\n tooltip = field.name or \"\"\n elseif (field.tooltip:find(\"content\")) then\n tooltip = field.value[arrayID]\n end\n end\n return tooltip\nend\n\nfunction getCheckPosition(checkID, x, y) \n local check = checks[checkID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(check.pos.x+(x-1)*check.distance.x) * mul*scale.x,y=height+0.002,z=(check.pos.y+(y-1)*check.distance.y) * mul*scale.y}\nend\n\nfunction getDecalPosition(decalID)\n local decal = decals[decalID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=decal.pos.x*mul*scale.x, y=height+0.005, z=decal.pos.y*mul*scale.y}\nend\nfunction getDecalTooltip(decalID)\n local decal = decals[decalID]\n local tooltip = \"\"\n if (decal.tooltip == nil) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"name\")) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"hint\")) then\n tooltip = \"Click to change image\"\n end\n return tooltip\nend\n\nfunction increaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])+1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction decreaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])-1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction scheduleUpdate()\n if (dirtyUpdateWait != nil) then\n Wait.stop(dirtyUpdateWait)\n end\n dirtyUpdateWait = Wait.time(\n function()\n for k, v in pairs(self.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n self.editInput({index=k-1, tooltip=v.value})\n end\n end\n end\n end\n end\n end, 1\n )\nend\n\nfunction edit(obj, ply, value, selected)\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n if (v.value != field.value[lookupInputIndexToInfo[k].arrayID]) then\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n scheduleUpdate()\n end\n end\n if (field.role != nil) then\n if (field.role:find(\"name\")) then\n self.setName(value)\n elseif (field.role:find(\"description\")) then\n self.setDescription(value)\n end\n end\n updateSave()\n break\n end\n end\n end\n end\nend\n\nfunction editUrl(obj, ply, value, selected)\n local shouldRefresh = false\n local shouldUpdateSave = false\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"decal\") then\n if (v.value != decals[lookupInputIndexToInfo[k].id].url) then\n decals[lookupInputIndexToInfo[k].id].url = v.value\n shouldRefresh = true\n shouldUpdateSave = true\n updateSave()\n createDecals()\n break\n end\n end\n end\n end\nend\n\nfunction clickcheck(args)\n local checkID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local alt_click = args[3]\n local buttonIndex = args[4]\n local ply = args[5]\n local check = checks[checkID]\n local value = tonumber(check.value[arrayID])\n if (value == nil) then value = 1 end\n if (alt_click) then\n if (value > 0) then\n check.value[arrayID] = 0\n else\n check.value[arrayID] = 1\n end\n else\n if (value == 1) then\n check.value[arrayID] = 2\n else\n if (value == 2) then\n check.value[arrayID] = 1\n elseif (check.fillFromDisabled == \"True\") then\n check.value[arrayID] = 2\n else\n broadcastToColor(\"This checkbox is disabled. You can enable/disable checkboxes with Right click.\", ply)\n end\n end\n end\n\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n self.editButton({index=buttonIndex, label=label, font_color=alphaCorrectedColor})\n updateSave()\nend\n\nfunction getFieldTextColor(fieldID)\n local field = fields[fieldID]\n local textAlpha = field.textColor.a\n if (tonumber(field.fieldColor.a) > 0) then\n textAlpha = tonumber(field.textColor.a)/tonumber(field.fieldColor.a)\n else\n textAlpha = tonumber(field.textColor.a)*100\n end\n return {r=field.textColor.r,g=field.textColor.g,b=field.textColor.b,a=textAlpha}\nend\n\nfunction getCheckTooltip(checkID)\n local check=checks[checkID]\n local tooltip = \"\"\n if (not check.locked) then\n if (check.tooltip == nil or check.tooltip:find(\"name\")) then\n tooltip = check.name\n elseif (check.tooltip:find(\"hint\")) then\n tooltip = \"Left click to toggle, Right click to enable/disable\"\n end\n end\n return tooltip\nend\n\nfunction getCheckLabelAndColor(checkID, arrayID)\n local check = checks[checkID]\n local label = check.characters.empty\n if (check.value[arrayID] == 0) then\n label = check.characters.disabled\n elseif (check.value[arrayID] == 2) then\n label = check.characters.filled\n end\n\n local color = nil\n if (check.separateColors == \"True\") then\n if (check.value[arrayID] == 0) then\n color = check.textColorDisabled or check.textColor\n elseif (check.value[arrayID] == 1) then\n color = check.textColorOff or check.textColor\n elseif (check.value[arrayID] == 2) then\n color = check.textColorOn or check.textColor\n else\n color = check.textColorOff or check.textColor\n end\n else\n color = check.textColorOn or check.textColor\n end\n\n local alpha = 1\n local checkAlpha = math.max(1/255, check.checkColor.a)\n if (tonumber(check.checkColor.a) > 0) then\n alpha = tonumber(color.a)/tonumber(checkAlpha)\n else\n alpha = tonumber(color.a)*100\n end \n return label, color, {r=color.r, g=color.g, b=color.b, a=color.a*alpha}\nend\n\nfunction split (inputstr, sep)\n if sep == nil then\n sep = \"%s\"\n end\n local t={}\n for str in string.gmatch(inputstr, \"([^\"..sep..\"]+)\") do\n table.insert(t, str)\n end\n return t\nend\n\nfunction onRotate(spin, flip, player_color, old_spin, old_flip)\n updateLockedFieldOrientation(flip < 90)\nend\nfunction onDrop(ply)\n updateLockedFieldOrientation(self.getTransformUp().y >= 0)\nend\n\nfunction updateLockedFieldOrientation(upright)\n for k, v in pairs(fields) do\n if (v.locked == \"True\" or sheetLocked or locks.fields or v.vsum == \"True\") then\n local field = v\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n if (flip == \"True\") then\n rotation.y = 180\n end\n if (upright) then\n rotation.z = 180\n fieldScale.x = -scale.x\n end\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n for arrayID, inp in pairs(lookupFieldIndices[k].inputs) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].colTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].rowTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n end\n for k, v in pairs(checks) do\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n local check=v\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n if (upright) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n local rotationY = 0\n if (flip == \"True\") then\n rotationY = 180\n end\n for arrayID, inp in pairs(lookupCheckIndices[k].buttons) do\n self.editButton({index=inp.index-1, rotation={x=0,y=rotationY,z=rotationZ}, scale=checkScale})\n end\n end\n end\nend\n\nfunction showImageURLPanel(args)\n local decalID = args[1]\n local ply = args[2]\n Player[ply].showInputDialog(\"Set image URL\",\n function (text, player_color)\n decals[decalID].url = text\n createDecals()\n updateSave()\n end\n )\nend\n\nfunction updateFieldNameContentAndTooltip(fieldID)\n local field = fields[fieldID]\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=field.value[v.arrayID], tooltip=getFieldTooltip(fieldID, v.arrayID)})\n end\n local name = \"T\"..fieldID\n local tooltip = \"Select \"..(field.name or name)\n for k, v in pairs(lookupFieldIndices[fieldID].selectionButtons) do\n self.editButton({index=v.index-1, tooltip = tooltip})\n end\nend\n\nfunction getCommited()\n return true\nend\n\n--",
- "LuaScriptState": "{\"checks\":[],\"decals\":[],\"fields\":[{\"align\":3,\"array\":{\"x\":1,\"y\":1},\"counter\":\"False\",\"distance\":{\"x\":1,\"y\":1},\"fieldColor\":{\"a\":0,\"b\":1,\"g\":1,\"r\":1},\"font\":\"5000\",\"locked\":false,\"name\":\"\",\"pos\":{\"x\":0,\"y\":0},\"role\":\"Normal Field\",\"size\":{\"x\":\"2000\",\"y\":\"1000\"},\"textColor\":{\"a\":1,\"b\":0,\"g\":0,\"r\":0},\"tooltip\":\"name\",\"value\":[\"000\"]}],\"flip\":\"False\",\"height\":\"0.1\",\"locks\":{\"checks\":false,\"decals\":false,\"fields\":false},\"nudgeDistance\":0.1,\"scale\":{\"x\":\"0.6\",\"y\":\"0.6\"},\"sheetLocked\":false}",
- "XmlUI": ""
- },
- {
- "GUID": "5308f5",
- "Name": "HandTrigger",
- "Transform": {
- "posX": -24.2,
- "posY": 5.541681,
- "posZ": -24.2,
- "rotX": 0.0,
- "rotY": 45.0000038,
- "rotZ": 0.0,
- "scaleX": 11.8350019,
- "scaleY": 7.002465,
- "scaleZ": 4.04115963
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.96,
- "g": 0.438999981,
- "b": 0.807,
- "a": 0.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": false,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "FogColor": "Pink",
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6d8290",
- "Name": "Custom_Tile",
- "Transform": {
- "posX": -22.2894535,
- "posY": 1.50604737,
- "posZ": -22.194912,
- "rotX": 359.955444,
- "rotY": 225.000381,
- "rotZ": 0.068411,
- "scaleX": 1.3598398,
- "scaleY": 1.0,
- "scaleZ": 1.3598398
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.8710801,
- "g": 0.8710801,
- "b": 0.8710801
- },
- "Tags": [
- "score"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomImage": {
- "ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966601919/D818D6B21F64EE6702A21323E2C0F1AAC91BFFDB/",
- "ImageSecondaryURL": "",
- "ImageScalar": 1.0,
- "WidthScale": 0.0,
- "CustomTile": {
- "Type": 3,
- "Thickness": 0.1,
- "Stackable": false,
- "Stretch": true
- }
- },
- "LuaScript": " \n \n \n \nfunction onload(saved_data)\n sheetLocked = self.script_state.sheetLocked or false\n local inverseScale = {x=math.floor(100/self.getScale().x)/100, y=math.floor(100/self.getScale().z)/100}\n scale = self.script_state.scale or inverseScale\n flip = self.script_state.flip or \"False\"\n fields = self.script_state.fields or {}\n checks = self.script_state.checks or {}\n decals = self.script_state.decals or {}\n height = self.script_state.height or 0.5\n locks = self.script_state.locks or {fields=false, checks=false, decals=false}\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n lookupSelectionButtonIndices = {}\n lastFieldLockedMessage = 0\n buttonIndex = 0\n inputIndex = 0\n dirtyUpdateWait = nil\n if saved_data ~= \"\" then\n local loadedData = JSON.decode(saved_data)\n sheetLocked = loadedData.sheetLocked or false\n flip = loadedData.flip or \"False\"\n height = loadedData.height or 0.5\n fields = loadedData.fields or {}\n checks = loadedData.checks or {}\n decals = loadedData.decals or {}\n scale = loadedData.scale or inverseScale\n locks = loadedData.locks or {fields=false, checks=false, decals=false}\n end\n if (not getCommited()) then\n self.addContextMenuItem(\"Edit Layout\", showEditPanel)\n self.addContextMenuItem(\"Commit Layout\", showCommitPanel)\n nudgeDistance = self.script_state.nudgeDistance or 0.1\n page = 1\n editingSheet = false\n selectedId = 0\n selectedArrayId = 1\n selectedType = \"\"\n selectedMax = 5\n creating = false\n else\n makeContextMenuItems()\n end\n createAll()\nend\n\nfunction makeContextMenuItems()\n self.clearContextMenu()\n if (not sheetLocked) then\n local getLocked = function(element)\n if (locks[element]) then return \"◆ Lock\" else return \"◇ Lock\" end\n end\n local allLocked = \"Lock\"\n if (locks.fields and locks.checks and locks.decals) then allLocked = \"Unlock\" end\n if (#fields > 0 and #checks > 0 and #decals > 0) then\n self.addContextMenuItem(allLocked..\" everything\", toggleAllLocks)\n end\n for k, v in pairs(fields) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"fields\")..\" texts\", toggleLockFields)\n break\n end\n end\n for k, v in pairs(checks) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"checks\")..\" checkboxes\", toggleLockChecks)\n break\n end\n end\n for k, v in pairs(decals) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"decals\")..\" images\", toggleLockDecals)\n break\n end\n end\n end\nend\n\nfunction toggleAllLocks(ply, pos, obj)\n if (locks.fields and locks.checks and locks.decals) then\n locks.fields = false\n locks.checks = false\n locks.decals = false\n broadcastToColor(\"Unlocked everything\", ply)\n else\n locks.fields = true\n locks.checks = true\n locks.decals = true\n broadcastToColor(\"Locked everything\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockFields(ply, pos, obj)\n if (locks.fields) then\n locks.fields = false\n broadcastToColor(\"Unlocked texts\", ply)\n else\n locks.fields = true\n broadcastToColor(\"Locked texts\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockChecks(ply, pos, obj)\n if (locks.checks) then\n locks.checks = false\n broadcastToColor(\"Unlocked checkboxes\", ply)\n else\n locks.checks = true\n broadcastToColor(\"Locked checkboxes\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockDecals(ply, pos, obj)\n if (locks.decals) then\n locks.decals = false\n broadcastToColor(\"Unlocked images\", ply)\n else\n locks.decals = true\n broadcastToColor(\"Locked images\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction updateSave()\n local data_to_save = {scale=scale, height=height, fields=fields, checks=checks, decals=decals, flip=flip, sheetLocked=sheetLocked, locks=locks}\n if (not getCommited()) then\n data_to_save.nudgeDistance=nudgeDistance\n else\n data_to_save.nudgeDistance=nil\n end\n saved_data = JSON.encode(data_to_save)\n self.script_state = saved_data\nend\n\nfunction null() end\n\nfunction refresh()\n if (not creating) then\n self.clearInputs()\n self.clearButtons()\n inputIndex = 0\n buttonIndex = 0\n if (editingSheet) then\n createSelectionHighlight() \n end\n createAll()\n end\nend\n\nfunction createAll()\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n startLuaCoroutine(self, \"createAllCoroutine\") \nend\n\nfunction createAllCoroutine()\n if (not getCommited()) then\n UI.setAttribute(getPanelId(\"Loading\"), \"active\", \"True\")\n end\n coroutine.yield(0)\n creating = true\n for fieldID, field in pairs(fields) do\n lookupFieldIndices[fieldID] = {\n inputs={},\n colTotals={},\n rowTotals={},\n counterButtons={},\n selectionButtons={}\n }\n local posx = field.pos.x\n local posy = field.pos.y\n local func = \"edit\"\n if (field.vsum == \"True\" or field.hsum == \"True\") then\n func = 'MarumEditableRecalculateSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n edit(obj, ply, input_value, selected)\n obj.call(\"recalculateSums\",fID)\n end\n else\n local iIndex = inputIndex\n if (field.locked == \"True\" or sheetLocked or locks.fields) then\n func = 'MarumEditableRevert_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n local iID = iIndex\n local sel = selected\n obj.call(\"revertField\",{fID, ply, iID, sel})\n end\n end\n end\n\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n local posMulx = 1\n local flipped = 1\n if (flip == \"True\") then\n rotation.y = 180\n flipped = -1\n end\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (field.locked == \"True\" or sheetLocked or locks.fields) and upright\n local unlockedRotation = {x=rotation.x, y=rotation.y, z=rotation.z}\n if (editingSheet or shouldFlip) then\n rotation.z = 180\n posMulx = -posMulx\n fieldScale.x = -fieldScale.x\n end\n local vsum = 0\n local hsums = {}\n local fontSize = field.font\n fontSize = math.min(field.size.y - 24, fontSize)\n local color = getFieldTextColor(fieldID)\n for x=1, field.array.x do\n vsum = 0\n for y=1, field.array.y do\n local arrayID = x+(y-1)*field.array.x\n local pos = getFieldPosition(fieldID, x, y)\n self.createInput({\n value = field.value[arrayID],\n tooltip=getFieldTooltip(fieldID, arrayID),\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos, \n width = field.size.x, \n height = field.size.y, \n rotation=rotation,\n font_size = fontSize, \n scale=fieldScale,\n font_color=color,\n color = field.fieldColor,\n tab = 2\n })\n if (field.counter == \"True\") then\n local counterButtonWidth = fontSize*0.75\n _G['MarumEditableCounterIncrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"increaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"counter\", id=fieldID}\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=1})\n self.createButton({\n click_function = 'MarumEditableCounterIncrease_'..fieldID..'_'..arrayID,\n tooltip=\"↑ Increase ↑\",\n function_owner = self,\n label=\"[b]+[/b]\",\n position={x=pos.x+(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n rotation=unlockedRotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n\n _G['MarumEditableCounterDecrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"decreaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=-1})\n self.createButton({\n click_function = 'MarumEditableCounterDecrease_'..fieldID..'_'..arrayID,\n tooltip=\"↓ Decrease ↓\",\n function_owner = self,\n label=\"[b]-[/b]\",\n position={x=pos.x-(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n unlockedRotation=rotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n end\n inputIndex = inputIndex+1\n lookupInputIndexToInfo[inputIndex] = {type=\"field\", id=fieldID, arrayID=arrayID}\n table.insert(lookupFieldIndices[fieldID].inputs, {index=inputIndex, arrayID=arrayID, x=x, y=y})\n if (field.vsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n if (field.hsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n if (hsums[x] == nil) then\n hsums[x] = tonumber(field.value[arrayID])\n else\n hsums[x] = hsums[x] + tonumber(field.value[arrayID])\n end\n end\n end\n\n if (x == 1 and field.hsum == \"True\") then\n local pos = getFieldPosition(fieldID, field.array.x + 1, y)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]-[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].rowTotals, {index=inputIndex, y=y})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n if (field.vsum == \"True\") then\n local pos = getFieldPosition(fieldID, x, field.array.y+1)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]\"..vsum..\"[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].colTotals, {index=inputIndex, x=x})\n end\n end\n\n if (field.hsum == \"True\") then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 10\n )\n end\n end\n\n createDecals()\n for decalID, decal in pairs(decals) do\n lookupDecalIndices[decalID] = {\n inputs={},\n selectionButtons={}\n }\n local rotationAdd = 180\n local posMulx = 1\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n if (decal.locked != \"True\" and not sheetLocked and not locks.decals and not editingSheet) then\n local func = 'MarumEditableSetURL_'..decalID\n _G[func] = function(obj, ply, alt)\n obj.call(\"showImageURLPanel\",{decalID, ply})\n end\n local tooltip = getDecalTooltip(decalID)\n self.createButton({\n value = decal.url,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n position = pos, \n width = 490, \n height = 490, \n rotation={x=0,y=0,z=0},\n font_size = 10,\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=decal.scale.y*scale.y},\n font_color= {r=0, g=0, b=0, a=0},\n color = {r=0, g=0, b=0, a=0},\n })\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"decal\", id=decalID}\n table.insert(lookupDecalIndices[decalID].inputs, {index=buttonIndex})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n for checkID, check in pairs(checks) do\n lookupCheckIndices[checkID] = {\n buttons={},\n selectionButtons={}\n }\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (check.locked == \"True\" or sheetLocked or locks.checks) and upright\n if (editingSheet or shouldFlip) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n for x=1, check.array.x do\n for y=1, check.array.y do\n local arrayID = x+(y-1)*check.array.x\n local func = \"MarumEditableClickCheckbox_\"..checkID..\"_\"..arrayID\n if (check.locked == \"True\" or sheetLocked or locks.checks) then\n func = \"null\"\n end\n local rotationY = 0\n local posMul = 1\n if (flip == \"True\") then\n rotationY = 180\n posMul = -posMul\n end\n local pos = getCheckPosition(checkID, x, y)\n local bindex = buttonIndex\n _G['MarumEditableClickCheckbox_'..checkID..'_'..arrayID] = function(obj, ply, alt)\n local fID = checkID\n local aID = arrayID\n local bi = bindex\n obj.call(\"clickcheck\",{fID, aID, alt, bi, ply})\n end\n\n local tooltip = getCheckTooltip(checkID)\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"check\", id=checkID, arrayID=arrayID}\n table.insert(lookupCheckIndices[checkID].buttons, {index=buttonIndex, x=x, y=y, arrayID=arrayID})\n self.createButton({\n label = label,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n alignment = 3,\n position = pos, \n width = 250, \n height = 250, \n rotation={x=0,y=rotationY,z=rotationZ},\n font_size = check.font,\n scale={x=checkScale.x, y=checkScale.y, z=checkScale.z},\n font_color=alphaCorrectedColor,\n color = check.checkColor,\n tab = 0\n })\n\n if (buttonIndex%10==0) then coroutine.yield(0) end\n end\n end\n end\n if (not getCommited() and editingSheet) then\n createSelectionButtons()\n end\n creating = false\n return 1\nend\n\nfunction revertField(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=fields[fieldID].value[v.arrayID]})\n end\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is locked\", ply, {r=1,g=0.5,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction recalculateSums(fieldID)\n local field = fields[fieldID]\n if (field.vsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].colTotals) do\n local vsum = 0\n for y=1, field.array.y do\n local arrayID = v.x+(y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..vsum..\"[/u]\"})\n end\n end\n if (field.hsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].rowTotals) do\n local hsum = 0\n for x=1, field.array.x do\n local arrayID = x+(v.y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n hsum = hsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..hsum..\"[/u]\"})\n end\n end\nend\nfunction revertFieldSum(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is reserved for the total sum\", ply, {r=1,g=1,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction createDecals()\n local decalParameters = {}\n for decalID, decal in pairs(decals) do\n local rotationAdd = 180\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n table.insert(decalParameters, {\n url=decal.url,\n name=\"Image #\"..decalID,\n position={x=-pos.x, y=pos.y, z=pos.z},\n rotation={x=90, y=rotationAdd+decal.rotation, z=0},\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=1}\n })\n end\n self.setDecals(decalParameters)\nend\n\nfunction getFieldPosition(fieldID, x, y)\n local field = fields[fieldID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(field.pos.x+(x-1)*field.distance.x) * scale.x * mul,y=height+0.002,z=(field.pos.y+(y-1)*field.distance.y) * scale.y * mul}\nend\nfunction getFieldTooltip(fieldID, arrayID)\n local field = fields[fieldID]\n local tooltip = \"\"\n if (not field.locked) then\n if (field.tooltip == nil or field.tooltip:find(\"name\")) then\n tooltip = field.name or \"\"\n elseif (field.tooltip:find(\"content\")) then\n tooltip = field.value[arrayID]\n end\n end\n return tooltip\nend\n\nfunction getCheckPosition(checkID, x, y) \n local check = checks[checkID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(check.pos.x+(x-1)*check.distance.x) * mul*scale.x,y=height+0.002,z=(check.pos.y+(y-1)*check.distance.y) * mul*scale.y}\nend\n\nfunction getDecalPosition(decalID)\n local decal = decals[decalID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=decal.pos.x*mul*scale.x, y=height+0.005, z=decal.pos.y*mul*scale.y}\nend\nfunction getDecalTooltip(decalID)\n local decal = decals[decalID]\n local tooltip = \"\"\n if (decal.tooltip == nil) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"name\")) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"hint\")) then\n tooltip = \"Click to change image\"\n end\n return tooltip\nend\n\nfunction increaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])+1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction decreaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])-1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction scheduleUpdate()\n if (dirtyUpdateWait != nil) then\n Wait.stop(dirtyUpdateWait)\n end\n dirtyUpdateWait = Wait.time(\n function()\n for k, v in pairs(self.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n self.editInput({index=k-1, tooltip=v.value})\n end\n end\n end\n end\n end\n end, 1\n )\nend\n\nfunction edit(obj, ply, value, selected)\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n if (v.value != field.value[lookupInputIndexToInfo[k].arrayID]) then\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n scheduleUpdate()\n end\n end\n if (field.role != nil) then\n if (field.role:find(\"name\")) then\n self.setName(value)\n elseif (field.role:find(\"description\")) then\n self.setDescription(value)\n end\n end\n updateSave()\n break\n end\n end\n end\n end\nend\n\nfunction editUrl(obj, ply, value, selected)\n local shouldRefresh = false\n local shouldUpdateSave = false\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"decal\") then\n if (v.value != decals[lookupInputIndexToInfo[k].id].url) then\n decals[lookupInputIndexToInfo[k].id].url = v.value\n shouldRefresh = true\n shouldUpdateSave = true\n updateSave()\n createDecals()\n break\n end\n end\n end\n end\nend\n\nfunction clickcheck(args)\n local checkID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local alt_click = args[3]\n local buttonIndex = args[4]\n local ply = args[5]\n local check = checks[checkID]\n local value = tonumber(check.value[arrayID])\n if (value == nil) then value = 1 end\n if (alt_click) then\n if (value > 0) then\n check.value[arrayID] = 0\n else\n check.value[arrayID] = 1\n end\n else\n if (value == 1) then\n check.value[arrayID] = 2\n else\n if (value == 2) then\n check.value[arrayID] = 1\n elseif (check.fillFromDisabled == \"True\") then\n check.value[arrayID] = 2\n else\n broadcastToColor(\"This checkbox is disabled. You can enable/disable checkboxes with Right click.\", ply)\n end\n end\n end\n\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n self.editButton({index=buttonIndex, label=label, font_color=alphaCorrectedColor})\n updateSave()\nend\n\nfunction getFieldTextColor(fieldID)\n local field = fields[fieldID]\n local textAlpha = field.textColor.a\n if (tonumber(field.fieldColor.a) > 0) then\n textAlpha = tonumber(field.textColor.a)/tonumber(field.fieldColor.a)\n else\n textAlpha = tonumber(field.textColor.a)*100\n end\n return {r=field.textColor.r,g=field.textColor.g,b=field.textColor.b,a=textAlpha}\nend\n\nfunction getCheckTooltip(checkID)\n local check=checks[checkID]\n local tooltip = \"\"\n if (not check.locked) then\n if (check.tooltip == nil or check.tooltip:find(\"name\")) then\n tooltip = check.name\n elseif (check.tooltip:find(\"hint\")) then\n tooltip = \"Left click to toggle, Right click to enable/disable\"\n end\n end\n return tooltip\nend\n\nfunction getCheckLabelAndColor(checkID, arrayID)\n local check = checks[checkID]\n local label = check.characters.empty\n if (check.value[arrayID] == 0) then\n label = check.characters.disabled\n elseif (check.value[arrayID] == 2) then\n label = check.characters.filled\n end\n\n local color = nil\n if (check.separateColors == \"True\") then\n if (check.value[arrayID] == 0) then\n color = check.textColorDisabled or check.textColor\n elseif (check.value[arrayID] == 1) then\n color = check.textColorOff or check.textColor\n elseif (check.value[arrayID] == 2) then\n color = check.textColorOn or check.textColor\n else\n color = check.textColorOff or check.textColor\n end\n else\n color = check.textColorOn or check.textColor\n end\n\n local alpha = 1\n local checkAlpha = math.max(1/255, check.checkColor.a)\n if (tonumber(check.checkColor.a) > 0) then\n alpha = tonumber(color.a)/tonumber(checkAlpha)\n else\n alpha = tonumber(color.a)*100\n end \n return label, color, {r=color.r, g=color.g, b=color.b, a=color.a*alpha}\nend\n\nfunction split (inputstr, sep)\n if sep == nil then\n sep = \"%s\"\n end\n local t={}\n for str in string.gmatch(inputstr, \"([^\"..sep..\"]+)\") do\n table.insert(t, str)\n end\n return t\nend\n\nfunction onRotate(spin, flip, player_color, old_spin, old_flip)\n updateLockedFieldOrientation(flip < 90)\nend\nfunction onDrop(ply)\n updateLockedFieldOrientation(self.getTransformUp().y >= 0)\nend\n\nfunction updateLockedFieldOrientation(upright)\n for k, v in pairs(fields) do\n if (v.locked == \"True\" or sheetLocked or locks.fields or v.vsum == \"True\") then\n local field = v\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n if (flip == \"True\") then\n rotation.y = 180\n end\n if (upright) then\n rotation.z = 180\n fieldScale.x = -scale.x\n end\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n for arrayID, inp in pairs(lookupFieldIndices[k].inputs) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].colTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].rowTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n end\n for k, v in pairs(checks) do\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n local check=v\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n if (upright) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n local rotationY = 0\n if (flip == \"True\") then\n rotationY = 180\n end\n for arrayID, inp in pairs(lookupCheckIndices[k].buttons) do\n self.editButton({index=inp.index-1, rotation={x=0,y=rotationY,z=rotationZ}, scale=checkScale})\n end\n end\n end\nend\n\nfunction showImageURLPanel(args)\n local decalID = args[1]\n local ply = args[2]\n Player[ply].showInputDialog(\"Set image URL\",\n function (text, player_color)\n decals[decalID].url = text\n createDecals()\n updateSave()\n end\n )\nend\n\nfunction updateFieldNameContentAndTooltip(fieldID)\n local field = fields[fieldID]\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=field.value[v.arrayID], tooltip=getFieldTooltip(fieldID, v.arrayID)})\n end\n local name = \"T\"..fieldID\n local tooltip = \"Select \"..(field.name or name)\n for k, v in pairs(lookupFieldIndices[fieldID].selectionButtons) do\n self.editButton({index=v.index-1, tooltip = tooltip})\n end\nend\n\nfunction getCommited()\n return true\nend\n\n--",
- "LuaScriptState": "{\"checks\":[],\"decals\":[],\"fields\":[{\"align\":3,\"array\":{\"x\":1,\"y\":1},\"counter\":\"False\",\"distance\":{\"x\":1,\"y\":1},\"fieldColor\":{\"a\":0,\"b\":1,\"g\":1,\"r\":1},\"font\":\"5000\",\"locked\":false,\"name\":\"\",\"pos\":{\"x\":0,\"y\":0},\"role\":\"Normal Field\",\"size\":{\"x\":\"2000\",\"y\":\"1000\"},\"textColor\":{\"a\":1,\"b\":0,\"g\":0,\"r\":0},\"tooltip\":\"name\",\"value\":[\"000\"]}],\"flip\":\"False\",\"height\":\"0.1\",\"locks\":{\"checks\":false,\"decals\":false,\"fields\":false},\"nudgeDistance\":0.1,\"scale\":{\"x\":\"0.6\",\"y\":\"0.6\"},\"sheetLocked\":false}",
- "XmlUI": ""
- },
- {
- "GUID": "f729fd",
- "Name": "HandTrigger",
- "Transform": {
- "posX": 24.2,
- "posY": 6.031695,
- "posZ": -24.2,
- "rotX": 0.0,
- "rotY": 315.0,
- "rotZ": 0.0,
- "scaleX": 11.8350019,
- "scaleY": 7.002465,
- "scaleZ": 4.04115963
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.9559999,
- "g": 0.39199996,
- "b": 0.112999953,
- "a": 0.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": false,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "FogColor": "Orange",
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c312e6",
- "Name": "Custom_Tile",
- "Transform": {
- "posX": 22.3711262,
- "posY": 1.44377816,
- "posZ": -22.22284,
- "rotX": 0.06841265,
- "rotY": 135.000427,
- "rotZ": 0.0445531346,
- "scaleX": 1.3598398,
- "scaleY": 1.0,
- "scaleZ": 1.3598398
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.8710801,
- "g": 0.8710801,
- "b": 0.8710801
- },
- "Tags": [
- "score"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomImage": {
- "ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966601919/D818D6B21F64EE6702A21323E2C0F1AAC91BFFDB/",
- "ImageSecondaryURL": "",
- "ImageScalar": 1.0,
- "WidthScale": 0.0,
- "CustomTile": {
- "Type": 3,
- "Thickness": 0.1,
- "Stackable": false,
- "Stretch": true
- }
- },
- "LuaScript": " \n \n \n \nfunction onload(saved_data)\n sheetLocked = self.script_state.sheetLocked or false\n local inverseScale = {x=math.floor(100/self.getScale().x)/100, y=math.floor(100/self.getScale().z)/100}\n scale = self.script_state.scale or inverseScale\n flip = self.script_state.flip or \"False\"\n fields = self.script_state.fields or {}\n checks = self.script_state.checks or {}\n decals = self.script_state.decals or {}\n height = self.script_state.height or 0.5\n locks = self.script_state.locks or {fields=false, checks=false, decals=false}\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n lookupSelectionButtonIndices = {}\n lastFieldLockedMessage = 0\n buttonIndex = 0\n inputIndex = 0\n dirtyUpdateWait = nil\n if saved_data ~= \"\" then\n local loadedData = JSON.decode(saved_data)\n sheetLocked = loadedData.sheetLocked or false\n flip = loadedData.flip or \"False\"\n height = loadedData.height or 0.5\n fields = loadedData.fields or {}\n checks = loadedData.checks or {}\n decals = loadedData.decals or {}\n scale = loadedData.scale or inverseScale\n locks = loadedData.locks or {fields=false, checks=false, decals=false}\n end\n if (not getCommited()) then\n self.addContextMenuItem(\"Edit Layout\", showEditPanel)\n self.addContextMenuItem(\"Commit Layout\", showCommitPanel)\n nudgeDistance = self.script_state.nudgeDistance or 0.1\n page = 1\n editingSheet = false\n selectedId = 0\n selectedArrayId = 1\n selectedType = \"\"\n selectedMax = 5\n creating = false\n else\n makeContextMenuItems()\n end\n createAll()\nend\n\nfunction makeContextMenuItems()\n self.clearContextMenu()\n if (not sheetLocked) then\n local getLocked = function(element)\n if (locks[element]) then return \"◆ Lock\" else return \"◇ Lock\" end\n end\n local allLocked = \"Lock\"\n if (locks.fields and locks.checks and locks.decals) then allLocked = \"Unlock\" end\n if (#fields > 0 and #checks > 0 and #decals > 0) then\n self.addContextMenuItem(allLocked..\" everything\", toggleAllLocks)\n end\n for k, v in pairs(fields) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"fields\")..\" texts\", toggleLockFields)\n break\n end\n end\n for k, v in pairs(checks) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"checks\")..\" checkboxes\", toggleLockChecks)\n break\n end\n end\n for k, v in pairs(decals) do\n if (v.locked != \"True\") then\n self.addContextMenuItem(getLocked(\"decals\")..\" images\", toggleLockDecals)\n break\n end\n end\n end\nend\n\nfunction toggleAllLocks(ply, pos, obj)\n if (locks.fields and locks.checks and locks.decals) then\n locks.fields = false\n locks.checks = false\n locks.decals = false\n broadcastToColor(\"Unlocked everything\", ply)\n else\n locks.fields = true\n locks.checks = true\n locks.decals = true\n broadcastToColor(\"Locked everything\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockFields(ply, pos, obj)\n if (locks.fields) then\n locks.fields = false\n broadcastToColor(\"Unlocked texts\", ply)\n else\n locks.fields = true\n broadcastToColor(\"Locked texts\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockChecks(ply, pos, obj)\n if (locks.checks) then\n locks.checks = false\n broadcastToColor(\"Unlocked checkboxes\", ply)\n else\n locks.checks = true\n broadcastToColor(\"Locked checkboxes\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction toggleLockDecals(ply, pos, obj)\n if (locks.decals) then\n locks.decals = false\n broadcastToColor(\"Unlocked images\", ply)\n else\n locks.decals = true\n broadcastToColor(\"Locked images\", ply)\n end\n updateSave()\n makeContextMenuItems()\n refresh()\nend\n\nfunction updateSave()\n local data_to_save = {scale=scale, height=height, fields=fields, checks=checks, decals=decals, flip=flip, sheetLocked=sheetLocked, locks=locks}\n if (not getCommited()) then\n data_to_save.nudgeDistance=nudgeDistance\n else\n data_to_save.nudgeDistance=nil\n end\n saved_data = JSON.encode(data_to_save)\n self.script_state = saved_data\nend\n\nfunction null() end\n\nfunction refresh()\n if (not creating) then\n self.clearInputs()\n self.clearButtons()\n inputIndex = 0\n buttonIndex = 0\n if (editingSheet) then\n createSelectionHighlight() \n end\n createAll()\n end\nend\n\nfunction createAll()\n lookupInputIndexToInfo = {}\n lookupButtonIndexToInfo = {}\n lookupFieldIndices = {}\n lookupCheckIndices = {}\n lookupDecalIndices = {}\n startLuaCoroutine(self, \"createAllCoroutine\") \nend\n\nfunction createAllCoroutine()\n if (not getCommited()) then\n UI.setAttribute(getPanelId(\"Loading\"), \"active\", \"True\")\n end\n coroutine.yield(0)\n creating = true\n for fieldID, field in pairs(fields) do\n lookupFieldIndices[fieldID] = {\n inputs={},\n colTotals={},\n rowTotals={},\n counterButtons={},\n selectionButtons={}\n }\n local posx = field.pos.x\n local posy = field.pos.y\n local func = \"edit\"\n if (field.vsum == \"True\" or field.hsum == \"True\") then\n func = 'MarumEditableRecalculateSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n edit(obj, ply, input_value, selected)\n obj.call(\"recalculateSums\",fID)\n end\n else\n local iIndex = inputIndex\n if (field.locked == \"True\" or sheetLocked or locks.fields) then\n func = 'MarumEditableRevert_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n local fID = fieldID\n local iID = iIndex\n local sel = selected\n obj.call(\"revertField\",{fID, ply, iID, sel})\n end\n end\n end\n\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n local posMulx = 1\n local flipped = 1\n if (flip == \"True\") then\n rotation.y = 180\n flipped = -1\n end\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (field.locked == \"True\" or sheetLocked or locks.fields) and upright\n local unlockedRotation = {x=rotation.x, y=rotation.y, z=rotation.z}\n if (editingSheet or shouldFlip) then\n rotation.z = 180\n posMulx = -posMulx\n fieldScale.x = -fieldScale.x\n end\n local vsum = 0\n local hsums = {}\n local fontSize = field.font\n fontSize = math.min(field.size.y - 24, fontSize)\n local color = getFieldTextColor(fieldID)\n for x=1, field.array.x do\n vsum = 0\n for y=1, field.array.y do\n local arrayID = x+(y-1)*field.array.x\n local pos = getFieldPosition(fieldID, x, y)\n self.createInput({\n value = field.value[arrayID],\n tooltip=getFieldTooltip(fieldID, arrayID),\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos, \n width = field.size.x, \n height = field.size.y, \n rotation=rotation,\n font_size = fontSize, \n scale=fieldScale,\n font_color=color,\n color = field.fieldColor,\n tab = 2\n })\n if (field.counter == \"True\") then\n local counterButtonWidth = fontSize*0.75\n _G['MarumEditableCounterIncrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"increaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"counter\", id=fieldID}\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=1})\n self.createButton({\n click_function = 'MarumEditableCounterIncrease_'..fieldID..'_'..arrayID,\n tooltip=\"↑ Increase ↑\",\n function_owner = self,\n label=\"[b]+[/b]\",\n position={x=pos.x+(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n rotation=unlockedRotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n\n _G['MarumEditableCounterDecrease_'..fieldID..'_'..arrayID] = function(obj, ply, alt)\n local fID = fieldID\n local aID = arrayID\n obj.call(\"decreaseCounter\",{fID, aID, ply})\n end\n buttonIndex = buttonIndex+1\n table.insert(lookupFieldIndices[fieldID].counterButtons, {index=buttonIndex, x=x, y=y, side=-1})\n self.createButton({\n click_function = 'MarumEditableCounterDecrease_'..fieldID..'_'..arrayID,\n tooltip=\"↓ Decrease ↓\",\n function_owner = self,\n label=\"[b]-[/b]\",\n position={x=pos.x-(field.size.x + counterButtonWidth) / 1000 * fieldScale.x * posMulx * flipped, y=pos.y, z=pos.z},\n unlockedRotation=rotation,\n scale=fieldScale,\n width=counterButtonWidth,\n height=counterButtonWidth,\n font_size=fontSize/2,\n font_color= color,\n color = field.fieldColor,\n })\n end\n inputIndex = inputIndex+1\n lookupInputIndexToInfo[inputIndex] = {type=\"field\", id=fieldID, arrayID=arrayID}\n table.insert(lookupFieldIndices[fieldID].inputs, {index=inputIndex, arrayID=arrayID, x=x, y=y})\n if (field.vsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n if (field.hsum == \"True\") then\n if (tonumber(field.value[arrayID])) then\n if (hsums[x] == nil) then\n hsums[x] = tonumber(field.value[arrayID])\n else\n hsums[x] = hsums[x] + tonumber(field.value[arrayID])\n end\n end\n end\n\n if (x == 1 and field.hsum == \"True\") then\n local pos = getFieldPosition(fieldID, field.array.x + 1, y)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]-[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].rowTotals, {index=inputIndex, y=y})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n if (field.vsum == \"True\") then\n local pos = getFieldPosition(fieldID, x, field.array.y+1)\n local func = 'MarumEditableRevertSum_'..fieldID\n _G[func] = function(obj, ply, input_value, selected)\n obj.call(\"revertFieldSum\",{fieldID, ply, iIndex, selected})\n end\n self.createInput({\n value = \"[u]\"..vsum..\"[/u]\",\n tooltip=\"[Sum]\",\n input_function = func,\n function_owner = self, \n alignment = field.align,\n position = pos,\n width = field.size.x,\n height = field.size.y,\n rotation={x=unlockedRotation.x, y=unlockedRotation.y, z=unlockedRotation.z+180},\n font_size = fontSize, \n scale={x=-scale.x,y=1,z=scale.y},\n font_color= color,\n color = field.fieldColor,\n tab = 0\n })\n inputIndex = inputIndex+1\n table.insert(lookupFieldIndices[fieldID].colTotals, {index=inputIndex, x=x})\n end\n end\n\n if (field.hsum == \"True\") then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 10\n )\n end\n end\n\n createDecals()\n for decalID, decal in pairs(decals) do\n lookupDecalIndices[decalID] = {\n inputs={},\n selectionButtons={}\n }\n local rotationAdd = 180\n local posMulx = 1\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n if (decal.locked != \"True\" and not sheetLocked and not locks.decals and not editingSheet) then\n local func = 'MarumEditableSetURL_'..decalID\n _G[func] = function(obj, ply, alt)\n obj.call(\"showImageURLPanel\",{decalID, ply})\n end\n local tooltip = getDecalTooltip(decalID)\n self.createButton({\n value = decal.url,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n position = pos, \n width = 490, \n height = 490, \n rotation={x=0,y=0,z=0},\n font_size = 10,\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=decal.scale.y*scale.y},\n font_color= {r=0, g=0, b=0, a=0},\n color = {r=0, g=0, b=0, a=0},\n })\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"decal\", id=decalID}\n table.insert(lookupDecalIndices[decalID].inputs, {index=buttonIndex})\n end\n\n if (inputIndex%10==0) then coroutine.yield(0) end\n end\n\n for checkID, check in pairs(checks) do\n lookupCheckIndices[checkID] = {\n buttons={},\n selectionButtons={}\n }\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n local upright = self.getTransformUp().y > 0\n local shouldFlip = (check.locked == \"True\" or sheetLocked or locks.checks) and upright\n if (editingSheet or shouldFlip) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n for x=1, check.array.x do\n for y=1, check.array.y do\n local arrayID = x+(y-1)*check.array.x\n local func = \"MarumEditableClickCheckbox_\"..checkID..\"_\"..arrayID\n if (check.locked == \"True\" or sheetLocked or locks.checks) then\n func = \"null\"\n end\n local rotationY = 0\n local posMul = 1\n if (flip == \"True\") then\n rotationY = 180\n posMul = -posMul\n end\n local pos = getCheckPosition(checkID, x, y)\n local bindex = buttonIndex\n _G['MarumEditableClickCheckbox_'..checkID..'_'..arrayID] = function(obj, ply, alt)\n local fID = checkID\n local aID = arrayID\n local bi = bindex\n obj.call(\"clickcheck\",{fID, aID, alt, bi, ply})\n end\n\n local tooltip = getCheckTooltip(checkID)\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n buttonIndex = buttonIndex+1\n lookupButtonIndexToInfo[buttonIndex] = {type=\"check\", id=checkID, arrayID=arrayID}\n table.insert(lookupCheckIndices[checkID].buttons, {index=buttonIndex, x=x, y=y, arrayID=arrayID})\n self.createButton({\n label = label,\n tooltip=tooltip,\n click_function = func,\n function_owner = self, \n alignment = 3,\n position = pos, \n width = 250, \n height = 250, \n rotation={x=0,y=rotationY,z=rotationZ},\n font_size = check.font,\n scale={x=checkScale.x, y=checkScale.y, z=checkScale.z},\n font_color=alphaCorrectedColor,\n color = check.checkColor,\n tab = 0\n })\n\n if (buttonIndex%10==0) then coroutine.yield(0) end\n end\n end\n end\n if (not getCommited() and editingSheet) then\n createSelectionButtons()\n end\n creating = false\n return 1\nend\n\nfunction revertField(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=fields[fieldID].value[v.arrayID]})\n end\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is locked\", ply, {r=1,g=0.5,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction recalculateSums(fieldID)\n local field = fields[fieldID]\n if (field.vsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].colTotals) do\n local vsum = 0\n for y=1, field.array.y do\n local arrayID = v.x+(y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n vsum = vsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..vsum..\"[/u]\"})\n end\n end\n if (field.hsum) then\n for k, v in pairs(lookupFieldIndices[fieldID].rowTotals) do\n local hsum = 0\n for x=1, field.array.x do\n local arrayID = x+(v.y-1)*field.array.x\n if (tonumber(field.value[arrayID])) then\n hsum = hsum + tonumber(field.value[arrayID])\n end\n end\n self.editInput({index=v.index-1, value=\"[u]\"..hsum..\"[/u]\"})\n end\n end\nend\nfunction revertFieldSum(args)\n local fieldID = args[1]\n local ply = args[2]\n local index = args[3]\n local selected = args[4]\n if (not selected) then\n Wait.frames(\n function()\n recalculateSums(fieldID)\n end,\n 1\n )\n else\n if (lastFieldLockedMessage != fieldID) then\n broadcastToColor(\"This text is reserved for the total sum\", ply, {r=1,g=1,b=0})\n lastFieldLockedMessage = fieldID\n end\n end\nend\n\nfunction createDecals()\n local decalParameters = {}\n for decalID, decal in pairs(decals) do\n local rotationAdd = 180\n if (flip == \"True\") then\n rotationAdd = 0\n end\n local pos = getDecalPosition(decalID)\n table.insert(decalParameters, {\n url=decal.url,\n name=\"Image #\"..decalID,\n position={x=-pos.x, y=pos.y, z=pos.z},\n rotation={x=90, y=rotationAdd+decal.rotation, z=0},\n scale={x=decal.scale.x*scale.x, y=decal.scale.y*scale.y, z=1}\n })\n end\n self.setDecals(decalParameters)\nend\n\nfunction getFieldPosition(fieldID, x, y)\n local field = fields[fieldID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(field.pos.x+(x-1)*field.distance.x) * scale.x * mul,y=height+0.002,z=(field.pos.y+(y-1)*field.distance.y) * scale.y * mul}\nend\nfunction getFieldTooltip(fieldID, arrayID)\n local field = fields[fieldID]\n local tooltip = \"\"\n if (not field.locked) then\n if (field.tooltip == nil or field.tooltip:find(\"name\")) then\n tooltip = field.name or \"\"\n elseif (field.tooltip:find(\"content\")) then\n tooltip = field.value[arrayID]\n end\n end\n return tooltip\nend\n\nfunction getCheckPosition(checkID, x, y) \n local check = checks[checkID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=(check.pos.x+(x-1)*check.distance.x) * mul*scale.x,y=height+0.002,z=(check.pos.y+(y-1)*check.distance.y) * mul*scale.y}\nend\n\nfunction getDecalPosition(decalID)\n local decal = decals[decalID]\n local mul = 1\n if (flip == \"True\") then mul = -1 end\n return {x=decal.pos.x*mul*scale.x, y=height+0.005, z=decal.pos.y*mul*scale.y}\nend\nfunction getDecalTooltip(decalID)\n local decal = decals[decalID]\n local tooltip = \"\"\n if (decal.tooltip == nil) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"name\")) then\n tooltip = decal.name or \"\"\n elseif (decal.tooltip:find(\"hint\")) then\n tooltip = \"Click to change image\"\n end\n return tooltip\nend\n\nfunction increaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])+1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction decreaseCounter(args)\n local fieldID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local ply = args[3]\n local field = fields[fieldID]\n if (field.value[arrayID] == nil or field.value[arrayID] == \"\") then\n field.value[arrayID] = 0\n end\n if (tonumber(field.value[arrayID])) then\n field.value[arrayID] = tonumber(field.value[arrayID])-1\n updateFieldNameContentAndTooltip(fieldID)\n if (field.vsum == \"True\") then\n recalculateSums(fieldID)\n end\n updateSave()\n else\n broadcastToColor(\"Field does not contain a valid number\", ply)\n end\nend\n\nfunction scheduleUpdate()\n if (dirtyUpdateWait != nil) then\n Wait.stop(dirtyUpdateWait)\n end\n dirtyUpdateWait = Wait.time(\n function()\n for k, v in pairs(self.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n self.editInput({index=k-1, tooltip=v.value})\n end\n end\n end\n end\n end\n end, 1\n )\nend\n\nfunction edit(obj, ply, value, selected)\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"field\") then\n local field = fields[lookupInputIndexToInfo[k].id]\n if (v.value != field.value[lookupInputIndexToInfo[k].arrayID]) then\n field.value[lookupInputIndexToInfo[k].arrayID] = v.value\n if (field.tooltip != nil) then\n if (field.tooltip:find(\"content\")) then\n scheduleUpdate()\n end\n end\n if (field.role != nil) then\n if (field.role:find(\"name\")) then\n self.setName(value)\n elseif (field.role:find(\"description\")) then\n self.setDescription(value)\n end\n end\n updateSave()\n break\n end\n end\n end\n end\nend\n\nfunction editUrl(obj, ply, value, selected)\n local shouldRefresh = false\n local shouldUpdateSave = false\n for k, v in pairs(obj.getInputs()) do\n if (lookupInputIndexToInfo[k] != nil) then\n if (lookupInputIndexToInfo[k].type==\"decal\") then\n if (v.value != decals[lookupInputIndexToInfo[k].id].url) then\n decals[lookupInputIndexToInfo[k].id].url = v.value\n shouldRefresh = true\n shouldUpdateSave = true\n updateSave()\n createDecals()\n break\n end\n end\n end\n end\nend\n\nfunction clickcheck(args)\n local checkID = tonumber(args[1])\n local arrayID = tonumber(args[2])\n local alt_click = args[3]\n local buttonIndex = args[4]\n local ply = args[5]\n local check = checks[checkID]\n local value = tonumber(check.value[arrayID])\n if (value == nil) then value = 1 end\n if (alt_click) then\n if (value > 0) then\n check.value[arrayID] = 0\n else\n check.value[arrayID] = 1\n end\n else\n if (value == 1) then\n check.value[arrayID] = 2\n else\n if (value == 2) then\n check.value[arrayID] = 1\n elseif (check.fillFromDisabled == \"True\") then\n check.value[arrayID] = 2\n else\n broadcastToColor(\"This checkbox is disabled. You can enable/disable checkboxes with Right click.\", ply)\n end\n end\n end\n\n local label, color, alphaCorrectedColor = getCheckLabelAndColor(checkID, arrayID)\n self.editButton({index=buttonIndex, label=label, font_color=alphaCorrectedColor})\n updateSave()\nend\n\nfunction getFieldTextColor(fieldID)\n local field = fields[fieldID]\n local textAlpha = field.textColor.a\n if (tonumber(field.fieldColor.a) > 0) then\n textAlpha = tonumber(field.textColor.a)/tonumber(field.fieldColor.a)\n else\n textAlpha = tonumber(field.textColor.a)*100\n end\n return {r=field.textColor.r,g=field.textColor.g,b=field.textColor.b,a=textAlpha}\nend\n\nfunction getCheckTooltip(checkID)\n local check=checks[checkID]\n local tooltip = \"\"\n if (not check.locked) then\n if (check.tooltip == nil or check.tooltip:find(\"name\")) then\n tooltip = check.name\n elseif (check.tooltip:find(\"hint\")) then\n tooltip = \"Left click to toggle, Right click to enable/disable\"\n end\n end\n return tooltip\nend\n\nfunction getCheckLabelAndColor(checkID, arrayID)\n local check = checks[checkID]\n local label = check.characters.empty\n if (check.value[arrayID] == 0) then\n label = check.characters.disabled\n elseif (check.value[arrayID] == 2) then\n label = check.characters.filled\n end\n\n local color = nil\n if (check.separateColors == \"True\") then\n if (check.value[arrayID] == 0) then\n color = check.textColorDisabled or check.textColor\n elseif (check.value[arrayID] == 1) then\n color = check.textColorOff or check.textColor\n elseif (check.value[arrayID] == 2) then\n color = check.textColorOn or check.textColor\n else\n color = check.textColorOff or check.textColor\n end\n else\n color = check.textColorOn or check.textColor\n end\n\n local alpha = 1\n local checkAlpha = math.max(1/255, check.checkColor.a)\n if (tonumber(check.checkColor.a) > 0) then\n alpha = tonumber(color.a)/tonumber(checkAlpha)\n else\n alpha = tonumber(color.a)*100\n end \n return label, color, {r=color.r, g=color.g, b=color.b, a=color.a*alpha}\nend\n\nfunction split (inputstr, sep)\n if sep == nil then\n sep = \"%s\"\n end\n local t={}\n for str in string.gmatch(inputstr, \"([^\"..sep..\"]+)\") do\n table.insert(t, str)\n end\n return t\nend\n\nfunction onRotate(spin, flip, player_color, old_spin, old_flip)\n updateLockedFieldOrientation(flip < 90)\nend\nfunction onDrop(ply)\n updateLockedFieldOrientation(self.getTransformUp().y >= 0)\nend\n\nfunction updateLockedFieldOrientation(upright)\n for k, v in pairs(fields) do\n if (v.locked == \"True\" or sheetLocked or locks.fields or v.vsum == \"True\") then\n local field = v\n local fieldScale = {x=scale.x,y=1,z=scale.y}\n local rotation = {x=0,y=0,z=0}\n if (flip == \"True\") then\n rotation.y = 180\n end\n if (upright) then\n rotation.z = 180\n fieldScale.x = -scale.x\n end\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n for arrayID, inp in pairs(lookupFieldIndices[k].inputs) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].colTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n for arrayID, inp in pairs(lookupFieldIndices[k].rowTotals) do\n self.editInput({index=inp.index-1, rotation=rotation, scale=fieldScale})\n end\n end\n end\n for k, v in pairs(checks) do\n if (v.locked == \"True\" or sheetLocked or locks.fields) then\n local check=v\n local rotationZ = 0\n local checkScale = {x=scale.x * check.size.x,y=1,z=scale.y * check.size.y}\n if (upright) then\n checkScale.x = -checkScale.x\n rotationZ = 180\n end\n local rotationY = 0\n if (flip == \"True\") then\n rotationY = 180\n end\n for arrayID, inp in pairs(lookupCheckIndices[k].buttons) do\n self.editButton({index=inp.index-1, rotation={x=0,y=rotationY,z=rotationZ}, scale=checkScale})\n end\n end\n end\nend\n\nfunction showImageURLPanel(args)\n local decalID = args[1]\n local ply = args[2]\n Player[ply].showInputDialog(\"Set image URL\",\n function (text, player_color)\n decals[decalID].url = text\n createDecals()\n updateSave()\n end\n )\nend\n\nfunction updateFieldNameContentAndTooltip(fieldID)\n local field = fields[fieldID]\n for k, v in pairs(lookupFieldIndices[fieldID].inputs) do\n self.editInput({index=v.index-1, value=field.value[v.arrayID], tooltip=getFieldTooltip(fieldID, v.arrayID)})\n end\n local name = \"T\"..fieldID\n local tooltip = \"Select \"..(field.name or name)\n for k, v in pairs(lookupFieldIndices[fieldID].selectionButtons) do\n self.editButton({index=v.index-1, tooltip = tooltip})\n end\nend\n\nfunction getCommited()\n return true\nend\n\n--",
- "LuaScriptState": "{\"checks\":[],\"decals\":[],\"fields\":[{\"align\":3,\"array\":{\"x\":1,\"y\":1},\"counter\":\"False\",\"distance\":{\"x\":1,\"y\":1},\"fieldColor\":{\"a\":0,\"b\":1,\"g\":1,\"r\":1},\"font\":\"5000\",\"locked\":false,\"name\":\"\",\"pos\":{\"x\":0,\"y\":0},\"role\":\"Normal Field\",\"size\":{\"x\":\"2000\",\"y\":\"1000\"},\"textColor\":{\"a\":1,\"b\":0,\"g\":0,\"r\":0},\"tooltip\":\"name\",\"value\":[\"000\"]}],\"flip\":\"False\",\"height\":\"0.1\",\"locks\":{\"checks\":false,\"decals\":false,\"fields\":false},\"nudgeDistance\":0.1,\"scale\":{\"x\":\"0.6\",\"y\":\"0.6\"},\"sheetLocked\":false}",
- "XmlUI": ""
- },
- {
- "GUID": "5324c0",
- "Name": "BlockSquare",
- "Transform": {
- "posX": 0.191267684,
- "posY": 1.60165358,
- "posZ": 4.483543,
- "rotX": 359.983124,
- "rotY": 1.03897582E-06,
- "rotZ": 359.920135,
- "scaleX": 3.65834117,
- "scaleY": 0.238181144,
- "scaleZ": 1.72883391
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.0941168,
- "g": 0.0941168,
- "b": 0.0941168,
- "a": 0.0
- },
- "Tags": [
- "button"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": "<Panel\r\n\t\tid = \"panel1\"\r\n\t\tactive = \"false\"\r\n color=\"Grey\"\r\n\t\ttextColor = \"White\"\r\n\t\tposition = \"0 0 -2000\"\r\n\t\twidth = \"200\"\r\n\t\theight = \"150\"\r\n\t\tscale = \"0.5 1 1\"\r\n\t\toffsetXY = \"-700 1500\"\r\n allowDragging=\"true\"\r\n returnToOriginalPositionWhenReleased=\"false\"\r\n restrictDraggingToParentBounds=\"false\"\r\n>\r\n\t<Text\r\n\ttext = \"Drag\"\r\n\tfontSize = \"70\"\r\n\t></Text>\r\n\t<Button\r\n\tonClick = \"Apply\"\r\n\ttext = \"Apply\"\r\n\tfontSize = \"70\"\r\n\tcolor = \"#1e81b0\"\r\n\toffsetXY = \"900 0\"\r\n\t>\r\n\t</Button>\r\n<VerticalScrollView\r\nid = \"scroll1\"\r\nrotation = \"0 0 0\"\r\nposition = \"0 0 0\"\r\n \theight=\"3000\"\r\n \twidth=\"2000\"\r\n\toffsetXY = \"0 -1600\"\r\n\r\n>\r\n<InputField\r\n \ttext = \"Enter text...\" \r\n\tlineType=\"MultiLineNewline\"\r\n \theight=\"60000\"\r\n \twidth=\"4000\"\r\n \ttextColor=\"#a4d9fa\"\r\n \toffsetXY = \"0 0\"\r\n \tcolor=\"#1f1f1f\"\r\n\t fontSize = \"50\"\r\n \tid=\"input1\"\r\n\tonValueChanged = \"typing\"\r\n\tonEndEdit = \"typing\"\r\n />\r\n</VerticalScrollView>\r\n</Panel>"
- },
- {
- "GUID": "e7358b",
- "Name": "BlockSquare",
- "Transform": {
- "posX": 0.2139073,
- "posY": 1.59961283,
- "posZ": -2.33972168,
- "rotX": 359.983124,
- "rotY": -7.842265E-05,
- "rotZ": 359.920135,
- "scaleX": 3.65834117,
- "scaleY": 0.238181144,
- "scaleZ": 1.72883391
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0,
- "a": 0.0
- },
- "Tags": [
- "button"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": "<Panel\r\n\t\tid = \"panel1\"\r\n\t\tactive = \"false\"\r\n color=\"Grey\"\r\n\t\ttextColor = \"White\"\r\n\t\tposition = \"0 0 -2000\"\r\n\t\twidth = \"200\"\r\n\t\theight = \"150\"\r\n\t\tscale = \"0.5 1 1\"\r\n\t\toffsetXY = \"-700 1500\"\r\n allowDragging=\"true\"\r\n returnToOriginalPositionWhenReleased=\"false\"\r\n restrictDraggingToParentBounds=\"false\"\r\n>\r\n\t<Text\r\n\ttext = \"Drag\"\r\n\tfontSize = \"70\"\r\n\t></Text>\r\n\t<Button\r\n\tonClick = \"Apply\"\r\n\ttext = \"Apply\"\r\n\tfontSize = \"70\"\r\n\tcolor = \"#1e81b0\"\r\n\toffsetXY = \"900 0\"\r\n\t>\r\n\t</Button>\r\n<VerticalScrollView\r\nid = \"scroll1\"\r\nrotation = \"0 0 0\"\r\nposition = \"0 0 0\"\r\n \theight=\"3000\"\r\n \twidth=\"2000\"\r\n\toffsetXY = \"0 -1600\"\r\n\r\n>\r\n<InputField\r\n \ttext = \"Enter text...\" \r\n\tlineType=\"MultiLineNewline\"\r\n \theight=\"60000\"\r\n \twidth=\"4000\"\r\n \ttextColor=\"#a4d9fa\"\r\n \toffsetXY = \"0 0\"\r\n \tcolor=\"#1f1f1f\"\r\n\t fontSize = \"50\"\r\n \tid=\"input1\"\r\n\tonValueChanged = \"typing\"\r\n\tonEndEdit = \"typing\"\r\n />\r\n</VerticalScrollView>\r\n</Panel>"
- },
- {
- "GUID": "4ee1f2",
- "Name": "Custom_Model",
- "Transform": {
- "posX": 0.0,
- "posY": -9.0,
- "posZ": 0.0,
- "rotX": 359.983124,
- "rotY": -0.00189453643,
- "rotZ": 359.920135,
- "scaleX": 1.7,
- "scaleY": 1.0,
- "scaleZ": 1.7
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": true,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomMesh": {
- "MeshURL": "https://steamusercontent-a.akamaihd.net/ugc/879750610978796176/4A5A65543B98BCFBF57E910D06EC984208223D38/",
- "DiffuseURL": "https://steamusercontent-a.akamaihd.net/ugc/1743429622315576281/8D870B026F4998686F8DA9EE2DA9A179BB59651A/",
- "NormalURL": "",
- "ColliderURL": "",
- "Convex": true,
- "MaterialIndex": 1,
- "TypeIndex": 4,
- "CustomShader": {
- "SpecularColor": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "SpecularIntensity": 0.0,
- "SpecularSharpness": 2.0,
- "FresnelStrength": 0.0
- },
- "CastShadows": true
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "606554",
- "Name": "Custom_PDF",
- "Transform": {
- "posX": 0.0587705821,
- "posY": 1.48513031,
- "posZ": 12.5740957,
- "rotX": 0.0168895833,
- "rotY": 179.986969,
- "rotZ": 0.0798732638,
- "scaleX": 2.53836465,
- "scaleY": 1.0,
- "scaleZ": 2.53836465
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomPDF": {
- "PDFUrl": "https://steamusercontent-a.akamaihd.net/ugc/35572915122173628/9C79912077C2F0DE6A50655BFDC32DC37BA3DBC6/",
- "PDFPassword": "",
- "PDFPage": 0,
- "PDFPageOffset": 0
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "83c6d4",
- "Name": "BlockSquare",
- "Transform": {
- "posX": 0.165829986,
- "posY": 1.59891319,
- "posZ": -4.94306374,
- "rotX": 359.983124,
- "rotY": 1.96602268E-05,
- "rotZ": 359.920135,
- "scaleX": 3.65834117,
- "scaleY": 0.238181144,
- "scaleZ": 1.72883391
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0,
- "a": 0.0
- },
- "Tags": [
- "button"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": "<Panel\r\n\t\tid = \"panel1\"\r\n\t\tactive = \"false\"\r\n color=\"Grey\"\r\n\t\ttextColor = \"White\"\r\n\t\tposition = \"0 0 -2000\"\r\n\t\twidth = \"200\"\r\n\t\theight = \"150\"\r\n\t\tscale = \"0.5 1 1\"\r\n\t\toffsetXY = \"-700 1500\"\r\n allowDragging=\"true\"\r\n returnToOriginalPositionWhenReleased=\"false\"\r\n restrictDraggingToParentBounds=\"false\"\r\n>\r\n\t<Text\r\n\ttext = \"Drag\"\r\n\tfontSize = \"70\"\r\n\t></Text>\r\n\t<Button\r\n\tonClick = \"Apply\"\r\n\ttext = \"Apply\"\r\n\tfontSize = \"70\"\r\n\tcolor = \"#1e81b0\"\r\n\toffsetXY = \"900 0\"\r\n\t>\r\n\t</Button>\r\n<VerticalScrollView\r\nid = \"scroll1\"\r\nrotation = \"0 0 0\"\r\nposition = \"0 0 0\"\r\n \theight=\"3000\"\r\n \twidth=\"2000\"\r\n\toffsetXY = \"0 -1600\"\r\n\r\n>\r\n<InputField\r\n \ttext = \"Enter text...\" \r\n\tlineType=\"MultiLineNewline\"\r\n \theight=\"60000\"\r\n \twidth=\"4000\"\r\n \ttextColor=\"#a4d9fa\"\r\n \toffsetXY = \"0 0\"\r\n \tcolor=\"#1f1f1f\"\r\n\t fontSize = \"50\"\r\n \tid=\"input1\"\r\n\tonValueChanged = \"typing\"\r\n\tonEndEdit = \"typing\"\r\n />\r\n</VerticalScrollView>\r\n</Panel>"
- },
- {
- "GUID": "9729c7",
- "Name": "Custom_Token",
- "Transform": {
- "posX": 0.135458559,
- "posY": 1.58989608,
- "posZ": 29.1220932,
- "rotX": 0.07988401,
- "rotY": 90.0144043,
- "rotZ": 359.983124,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "Turns Controller [999999](see description)[-]",
- "Description": "Adds Game Keys to let you end, pass, and set turns, as well as easily change turns settings. \n\nAlso lets you ping the player who's turn it is",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomImage": {
- "ImageURL": "https://steamusercontent-a.akamaihd.net/ugc/1011566237275865520/6C8ACBB072B0E065B88990623C72E7DD96536EEB/",
- "ImageSecondaryURL": "",
- "ImageScalar": 1.0,
- "WidthScale": 0.0,
- "CustomToken": {
- "Thickness": 0.2,
- "MergeDistancePixels": 20.444437,
- "StandUp": false,
- "Stackable": false
- }
- },
- "LuaScript": "pingingDistance = 7\r\n\r\nfunction onLoad(save_state)\r\n addHotkey(\"Enable/disable turns\", toggleEnableTurns, false)\r\n addHotkey(\"End my turn\", endMyTurn, false)\r\n addHotkey(\"Force the next turn\", forceEndTurn, false)\r\n addHotkey(\"Go back to previous turn\", goBackOneTurn, false)\r\n addHotkey(\"Give yourself the turn\", setToMyTurn, false)\r\n addHotkey(\"Tell player to end their turn\", messagEndTheirTurn, false)\r\n addHotkey(\"Ping player who's turn it is\", pingPlayer, false)\r\n --addHotkey(\"[ccffcc]\\\"Custom turn orders\\\"[-] on/off\", toggleCustomTurnOrders, false)\r\n addHotkey(\"[ccffcc]\\\"Reverse turn orders\\\"[-] on/off\", toggleReverseTurnOrder, false)\r\n addHotkey(\"[ccffcc]\\\"Skip empty hands\\\"[-] on/off\", toggleSkipEmptyHands, false)\r\n addHotkey(\"[ccffcc]\\\"Turn passing\\\"[-] on/off\", toggleTurnPassing, false)\r\n addHotkey(\"[ccffcc]\\\"Interactions for empty hands\\\"[-] on/off\", toggleInteractionsEmptyHands, false)\r\nend\r\n\r\nfunction null() end\r\n\r\nfunction toggleEnableTurns(colorPressingTheKey)\r\n if Turns.enable == true then\r\n Turns.enable = false\r\n broadcastToColor(\"Turns disabled\", colorPressingTheKey, \"Red\")\r\n else\r\n Turns.enable = true\r\n broadcastToColor(\"Turns enabled\", colorPressingTheKey, \"Red\")\r\n end\r\nend\r\n\r\nfunction endMyTurn(colorPressingTheKey)\r\n if Turns.enable == true then\r\n -- print(Turns.turn_color..\" \"..colorPressingTheKey)\r\n local turnColor = Turns.turn_color\r\n if turnColor == colorPressingTheKey then\r\n Turns.turn_color = Turns.getNextTurnColor()\r\n else\r\n broadcastToColor(\"It's \"..getColorCode(turnColor, true)..turnColor ..\"'s[-] turn right now, not yours!\", colorPressingTheKey, \"Red\")\r\n end\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction forceEndTurn(colorPressingTheKey)\r\n if Turns.enable == true then\r\n -- print(Turns.turn_color..\" \"..colorPressingTheKey)\r\n local turnColor = Turns.turn_color\r\n if Player[colorPressingTheKey].admin == true then\r\n broadcastToColor(\"Your turn was ended by \"..getColorCode(colorPressingTheKey, true)..colorPressingTheKey..\"[-]!\", turnColor, \"Red\")\r\n Turns.turn_color = Turns.getNextTurnColor()\r\n else\r\n broadcastToColor(\"You cannot end \"..getColorCode(turnColor, true)..turnColor..\"'s[-] turn because you are neither the host nor a promoted player.\", colorPressingTheKey, \"Red\")\r\n end\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction goBackOneTurn(colorPressingTheKey)\r\n if Turns.enable == true then\r\n -- print(Turns.turn_color..\" \"..colorPressingTheKey)\r\n local turnColor = Turns.turn_color\r\n if Player[colorPressingTheKey].admin == true then\r\n --broadcastToColor(\"Your turn was ended by \"..getColorCode(colorPressingTheKey, true)..colorPressingTheKey..\"[-]!\", turnColor, \"Red\")\r\n Turns.turn_color = Turns.getPreviousTurnColor()\r\n else\r\n broadcastToColor(\"You cannot set the turn to the previous turn because you are neither the host nor a promoted player.\", colorPressingTheKey, \"Red\")\r\n end\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction setToMyTurn(colorPressingTheKey)\r\n if Turns.enable == true then\r\n if Turns.turn_color ~= colorPressingTheKey then\r\n Turns.turn_color = colorPressingTheKey\r\n -- print(Turns.turn_color..\" \"..colorPressingTheKey)\r\n else\r\n broadcastToColor(\"It's already your turn!\", colorPressingTheKey, \"Red\")\r\n end\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction pingPlayer(colorPressingTheKey)\r\n if Turns.enable == true then\r\n local turnColor = Turns.turn_color\r\n local handTrans = Player[turnColor].getHandTransform(1)\r\n local handPos = handTrans.position + handTrans.forward:scale(pingingDistance)\r\n Player[turnColor].pingTable(handPos)\r\n if turnColor == colorPressingTheKey then\r\n broadcastToColor(\"It's your turn to play, \"..getColorCode(turnColor, true)..turnColor..\"[-]! (And why are you pinging yourself?)\", turnColor, \"Red\")\r\n else\r\n broadcastToColor(\"It's your turn to play, \"..getColorCode(turnColor, true)..turnColor..\"[-]! (pinged by \".. getColorCode(colorPressingTheKey,true) ..colorPressingTheKey..\"[-])\", turnColor, \"Red\")\r\n end\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction messagEndTheirTurn(colorPressingTheKey)\r\n if Turns.enable == true then\r\n local turnColor = Turns.turn_color\r\n broadcastToColor(\"Don't forget to end your turn! \"..getColorCode(turnColor, true)..\"[-]! (reminder sent by \".. getColorCode(colorPressingTheKey,true) ..colorPressingTheKey..\"[-])\", turnColor, \"Red\")\r\n else\r\n broadcastToColor(\"Turns are currently disabled. Enable them first.\", colorPressingTheKey,\"Red\")\r\n end\r\nend\r\n\r\nfunction toggleReverseTurnOrder(colorPressingTheKey)\r\n if Turns.reverse_order == true then\r\n Turns.reverse_order = false\r\n broadcastToAll(\"Turn order un-reversed [999999](going in the normal order again)\", \"Red\")\r\n else\r\n Turns.reverse_order = true\r\n broadcastToAll(\"Turn order reversed\", \"Red\")\r\n end\r\nend\r\nfunction toggleSkipEmptyHands(colorPressingTheKey)\r\n if Turns.skip_empty_hands == true then\r\n Turns.skip_empty_hands = false\r\n broadcastToAll(\"\\\"Skip empty hands' turns\\\" deactivated\", \"Red\")\r\n else\r\n Turns.skip_empty_hands = true\r\n broadcastToAll(\"\\\"Skip empty hands' turns\\\" activated\", \"Red\")\r\n end\r\nend\r\nfunction toggleInteractionsEmptyHands(colorPressingTheKey)\r\n if Turns.disable_interactations == true then\r\n Turns.disable_interactations = false\r\n broadcastToAll(\"\\\"Disabled interactions for empty hands\\\" deactivated\", \"Red\")\r\n else\r\n Turns.disable_interactations = true\r\n broadcastToAll(\"\\\"Disabled interactions for empty hands\\\" activated\", \"Red\")\r\n end\r\nend\r\nfunction toggleTurnPassing(colorPressingTheKey)\r\n if Turns.pass_turns == true then\r\n Turns.pass_turns = false\r\n broadcastToAll(\"Players can no longer pass the turn to who they want\", \"Red\")\r\n else\r\n Turns.pass_turns = true\r\n broadcastToAll(\"Players can now pass the turn to who they want\", \"Red\")\r\n end\r\nend\r\n\r\nfunction getColorCode(colorPressingTheKey, withQuotes)\r\n local colorCode = \"\"\r\n if colorPressingTheKey == \"White\" then\r\n colorCode = \"FFFFFF\"\r\n elseif colorPressingTheKey == \"Brown\" then\r\n colorCode = \"703A16\"\r\n elseif colorPressingTheKey == \"Red\" then\r\n colorCode = \"DA1917\"\r\n elseif colorPressingTheKey == \"Orange\" then\r\n colorCode = \"F3631C\"\r\n elseif colorPressingTheKey == \"Yellow\" then\r\n colorCode = \"E6E42B\"\r\n elseif colorPressingTheKey == \"Green\" then\r\n colorCode = \"30B22A\"\r\n elseif colorPressingTheKey == \"Teal\" then\r\n colorCode = \"20B09A\"\r\n elseif colorPressingTheKey == \"Blue\" then\r\n colorCode = \"1E87FF\"\r\n elseif colorPressingTheKey == \"Purple\" then\r\n colorCode = \"9F1FEF\"\r\n elseif colorPressingTheKey == \"Pink\" then\r\n colorCode = \"F46FCD\"\r\n end\r\n if withQuotes == true then\r\n return \"[\"..colorCode..\"]\"\r\n else\r\n return colorCode\r\n end\r\nend\r\n",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "f8fb23",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 19.6331921,
- "posY": 1.5738883,
- "posZ": -17.83006,
- "rotX": 0.07987163,
- "rotY": 89.99525,
- "rotZ": 359.983124,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "Turn Skipper",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.9559999,
- "g": 0.391999573,
- "b": 0.112999581
- },
- "Tags": [
- "Turn Skipper"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/2261436542784592358/E61413D9348C25E4C24761F4093EEC5792323592/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 0,
- "TypeIndex": 0,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "local turnSkipPlayer\r\nlocal colorLocked\r\n\r\nfunction onLoad(saved_state)\r\n saved_state = JSON.decode(saved_state)\r\n if saved_state == \"\" then\r\n turnSkipPlayer = nil\r\n self.setColorTint({0.5, 0.5, 0.5})\r\n colorLocked = false\r\n else\r\n assignColor(saved_state[\"turnSkipPlayer\"])\r\n colorLocked = saved_state[\"turnSkipPlayer\"]\r\n end\r\n self.addContextMenuItem(\"Reset All\", unskipAll)\r\n self.addContextMenuItem(\"Toggle Color Lock\", toggleColorLock)\r\n self.addContextMenuItem(\"Spawn For Players\", spawnForEachSeatedPlayer)\r\nend\r\n\r\nfunction onSave()\r\n local state_to_save = {\r\n turnSkipPlayer = turnSkipPlayer,\r\n colorLocked = colorLocked,\r\n }\r\n return JSON.encode(state_to_save)\r\nend\r\n\r\n-- Set turnSkipPlayer color to track\r\nfunction onPickUp(color)\r\n if not colorLocked then\r\n assignColor(color)\r\n end\r\nend\r\n\r\nfunction onObjectEnterZone(zone, object)\r\n\r\n if not colorLocked and zone.type == \"Hand\" and object == self then\r\n\r\n assignColor(zone.getValue())\r\n end\r\nend\r\n\r\n\r\n-- If it's turnSkipPlayer's turn and the token is flipped, skip their turn\r\nfunction onPlayerTurn(player)\r\n\tif player == nil then return end\r\n if turnSkipPlayer == player.color and getIfAllSkipped() then\r\n broadcastToAll(\"All turns have been skipped!\")\r\n elseif turnSkipPlayer == player.color and self.is_face_down then\r\n broadcastToAll(\"Skipping \" .. player.steam_name .. \"'s turn.\", player.color)\r\n Wait.frames(skipTurn, 2)\r\n end\r\nend\r\n\r\nfunction skipTurn()\r\n Turns.turn_color = Turns.getNextTurnColor()\r\nend\r\n\r\nfunction unskipAll(player, position, object)\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if object.is_face_down then\r\n object.flip()\r\n end\r\n end\r\nend\r\n\r\nfunction getIfAllSkipped()\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if not object.is_face_down then\r\n return false\r\n end\r\n end\r\n return true\r\nend\r\n\r\nfunction toggleColorLock(player, position, object)\r\n colorLocked = not colorLocked\r\n local str\r\n if colorLocked then str = \"Color locked!\" else str = \"Color unlocked!\" end\r\n broadcastToColor(str, player, turnSkipPlayer)\r\nend\r\n\r\nfunction spawnForEachSeatedPlayer(pl, pos, obj)\r\n for i, player in ipairs(getSeatedPlayers()) do\r\n if Player[player].getHandCount() > 0 then\r\n local transform = Player[player].getHandTransform()\r\n transform[\"position\"] = transform[\"position\"] + 5 * transform[\"forward\"]\r\n transform[\"position\"][\"y\"] = 3\r\n local new_object = spawnObject({type = \"Custom_Assetbundle\",\r\n position = transform[\"position\"],\r\n rotation = transform[\"rotation\"]})\r\n new_object.script_code = self.script_code\r\n new_object.script_state = JSON.encode({turnSkipPlayer = player, colorLocked = true})\r\n new_object.addTag(\"Turn Skipper\")\r\n new_object.setName(\"Turn Skipper\")\r\n new_object.setCustomObject(self.getCustomObject())\r\n new_object.reload()\r\n self.destruct()\r\n end\r\n end\r\nend\r\n\r\nfunction initOnSpawn(player, lock_state)\r\n self.script_state = {\r\n turnSkipPlayer = player,\r\n colorLocked = lock_state,\r\n }\r\nend\r\n\r\nfunction assignColor(color)\r\n if color ~= nil then\r\n self.setColorTint(color)\r\n turnSkipPlayer = color\r\n end\r\nend",
- "LuaScriptState": "{\"colorLocked\":\"Orange\",\"turnSkipPlayer\":\"Orange\"}",
- "XmlUI": ""
- },
- {
- "GUID": "6f53e4",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": 1.68310988,
- "posY": 1.597051,
- "posZ": -24.15161,
- "rotX": 0.0168729778,
- "rotY": 180.000656,
- "rotZ": 0.07987669,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "Turn Skipper",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.856,
- "g": 0.09999966,
- "b": 0.09399965
- },
- "Tags": [
- "Turn Skipper"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/2261436542784592358/E61413D9348C25E4C24761F4093EEC5792323592/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 0,
- "TypeIndex": 0,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "local turnSkipPlayer\r\nlocal colorLocked\r\n\r\nfunction onLoad(saved_state)\r\n saved_state = JSON.decode(saved_state)\r\n if saved_state == \"\" then\r\n turnSkipPlayer = nil\r\n self.setColorTint({0.5, 0.5, 0.5})\r\n colorLocked = false\r\n else\r\n assignColor(saved_state[\"turnSkipPlayer\"])\r\n colorLocked = saved_state[\"turnSkipPlayer\"]\r\n end\r\n self.addContextMenuItem(\"Reset All\", unskipAll)\r\n self.addContextMenuItem(\"Toggle Color Lock\", toggleColorLock)\r\n self.addContextMenuItem(\"Spawn For Players\", spawnForEachSeatedPlayer)\r\nend\r\n\r\nfunction onSave()\r\n local state_to_save = {\r\n turnSkipPlayer = turnSkipPlayer,\r\n colorLocked = colorLocked,\r\n }\r\n return JSON.encode(state_to_save)\r\nend\r\n\r\n-- Set turnSkipPlayer color to track\r\nfunction onPickUp(color)\r\n if not colorLocked then\r\n assignColor(color)\r\n end\r\nend\r\n\r\nfunction onObjectEnterZone(zone, object)\r\n\r\n if not colorLocked and zone.type == \"Hand\" and object == self then\r\n\r\n assignColor(zone.getValue())\r\n end\r\nend\r\n\r\n\r\n-- If it's turnSkipPlayer's turn and the token is flipped, skip their turn\r\nfunction onPlayerTurn(player)\r\n\tif player == nil then return end\r\n if turnSkipPlayer == player.color and getIfAllSkipped() then\r\n broadcastToAll(\"All turns have been skipped!\")\r\n elseif turnSkipPlayer == player.color and self.is_face_down then\r\n broadcastToAll(\"Skipping \" .. player.steam_name .. \"'s turn.\", player.color)\r\n Wait.frames(skipTurn, 2)\r\n end\r\nend\r\n\r\nfunction skipTurn()\r\n Turns.turn_color = Turns.getNextTurnColor()\r\nend\r\n\r\nfunction unskipAll(player, position, object)\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if object.is_face_down then\r\n object.flip()\r\n end\r\n end\r\nend\r\n\r\nfunction getIfAllSkipped()\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if not object.is_face_down then\r\n return false\r\n end\r\n end\r\n return true\r\nend\r\n\r\nfunction toggleColorLock(player, position, object)\r\n colorLocked = not colorLocked\r\n local str\r\n if colorLocked then str = \"Color locked!\" else str = \"Color unlocked!\" end\r\n broadcastToColor(str, player, turnSkipPlayer)\r\nend\r\n\r\nfunction spawnForEachSeatedPlayer(pl, pos, obj)\r\n for i, player in ipairs(getSeatedPlayers()) do\r\n if Player[player].getHandCount() > 0 then\r\n local transform = Player[player].getHandTransform()\r\n transform[\"position\"] = transform[\"position\"] + 5 * transform[\"forward\"]\r\n transform[\"position\"][\"y\"] = 3\r\n local new_object = spawnObject({type = \"Custom_Assetbundle\",\r\n position = transform[\"position\"],\r\n rotation = transform[\"rotation\"]})\r\n new_object.script_code = self.script_code\r\n new_object.script_state = JSON.encode({turnSkipPlayer = player, colorLocked = true})\r\n new_object.addTag(\"Turn Skipper\")\r\n new_object.setName(\"Turn Skipper\")\r\n new_object.setCustomObject(self.getCustomObject())\r\n new_object.reload()\r\n self.destruct()\r\n end\r\n end\r\nend\r\n\r\nfunction initOnSpawn(player, lock_state)\r\n self.script_state = {\r\n turnSkipPlayer = player,\r\n colorLocked = lock_state,\r\n }\r\nend\r\n\r\nfunction assignColor(color)\r\n if color ~= nil then\r\n self.setColorTint(color)\r\n turnSkipPlayer = color\r\n end\r\nend",
- "LuaScriptState": "{\"colorLocked\":\"Red\",\"turnSkipPlayer\":\"Red\"}",
- "XmlUI": ""
- },
- {
- "GUID": "777ee5",
- "Name": "Custom_Assetbundle",
- "Transform": {
- "posX": -19.2397747,
- "posY": 1.62766,
- "posZ": -19.2604046,
- "rotX": 359.920135,
- "rotY": 270.0006,
- "rotZ": 0.0168698467,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "Turn Skipper",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.96,
- "g": 0.438999683,
- "b": 0.807
- },
- "Tags": [
- "Turn Skipper"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "CustomAssetbundle": {
- "AssetbundleURL": "https://steamusercontent-a.akamaihd.net/ugc/2261436542784592358/E61413D9348C25E4C24761F4093EEC5792323592/",
- "AssetbundleSecondaryURL": "",
- "MaterialIndex": 0,
- "TypeIndex": 0,
- "LoopingEffectIndex": 0
- },
- "LuaScript": "local turnSkipPlayer\r\nlocal colorLocked\r\n\r\nfunction onLoad(saved_state)\r\n saved_state = JSON.decode(saved_state)\r\n if saved_state == \"\" then\r\n turnSkipPlayer = nil\r\n self.setColorTint({0.5, 0.5, 0.5})\r\n colorLocked = false\r\n else\r\n assignColor(saved_state[\"turnSkipPlayer\"])\r\n colorLocked = saved_state[\"turnSkipPlayer\"]\r\n end\r\n self.addContextMenuItem(\"Reset All\", unskipAll)\r\n self.addContextMenuItem(\"Toggle Color Lock\", toggleColorLock)\r\n self.addContextMenuItem(\"Spawn For Players\", spawnForEachSeatedPlayer)\r\nend\r\n\r\nfunction onSave()\r\n local state_to_save = {\r\n turnSkipPlayer = turnSkipPlayer,\r\n colorLocked = colorLocked,\r\n }\r\n return JSON.encode(state_to_save)\r\nend\r\n\r\n-- Set turnSkipPlayer color to track\r\nfunction onPickUp(color)\r\n if not colorLocked then\r\n assignColor(color)\r\n end\r\nend\r\n\r\nfunction onObjectEnterZone(zone, object)\r\n\r\n if not colorLocked and zone.type == \"Hand\" and object == self then\r\n\r\n assignColor(zone.getValue())\r\n end\r\nend\r\n\r\n\r\n-- If it's turnSkipPlayer's turn and the token is flipped, skip their turn\r\nfunction onPlayerTurn(player)\r\n\tif player == nil then return end\r\n if turnSkipPlayer == player.color and getIfAllSkipped() then\r\n broadcastToAll(\"All turns have been skipped!\")\r\n elseif turnSkipPlayer == player.color and self.is_face_down then\r\n broadcastToAll(\"Skipping \" .. player.steam_name .. \"'s turn.\", player.color)\r\n Wait.frames(skipTurn, 2)\r\n end\r\nend\r\n\r\nfunction skipTurn()\r\n Turns.turn_color = Turns.getNextTurnColor()\r\nend\r\n\r\nfunction unskipAll(player, position, object)\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if object.is_face_down then\r\n object.flip()\r\n end\r\n end\r\nend\r\n\r\nfunction getIfAllSkipped()\r\n for i, object in ipairs(getObjectsWithTag(\"Turn Skipper\")) do\r\n if not object.is_face_down then\r\n return false\r\n end\r\n end\r\n return true\r\nend\r\n\r\nfunction toggleColorLock(player, position, object)\r\n colorLocked = not colorLocked\r\n local str\r\n if colorLocked then str = \"Color locked!\" else str = \"Color unlocked!\" end\r\n broadcastToColor(str, player, turnSkipPlayer)\r\nend\r\n\r\nfunction spawnForEachSeatedPlayer(pl, pos, obj)\r\n for i, player in ipairs(getSeatedPlayers()) do\r\n if Player[player].getHandCount() > 0 then\r\n local transform = Player[player].getHandTransform()\r\n transform[\"position\"] = transform[\"position\"] + 5 * transform[\"forward\"]\r\n transform[\"position\"][\"y\"] = 3\r\n local new_object = spawnObject({type = \"Custom_Assetbundle\",\r\n position = transform[\"position\"],\r\n rotation = transform[\"rotation\"]})\r\n new_object.script_code = self.script_code\r\n new_object.script_state = JSON.encode({turnSkipPlayer = player, colorLocked = true})\r\n new_object.addTag(\"Turn Skipper\")\r\n new_object.setName(\"Turn Skipper\")\r\n new_object.setCustomObject(self.getCustomObject())\r\n new_object.reload()\r\n self.destruct()\r\n end\r\n end\r\nend\r\n\r\nfunction initOnSpawn(player, lock_state)\r\n self.script_state = {\r\n turnSkipPlayer = player,\r\n colorLocked = lock_state,\r\n }\r\nend\r\n\r\nfunction assignColor(color)\r\n if color ~= nil then\r\n self.setColorTint(color)\r\n turnSkipPlayer = color\r\n end\r\nend",
- "LuaScriptState": "{\"colorLocked\":\"Pink\",\"turnSkipPlayer\":\"Pink\"}",
- "XmlUI": ""
- },
- {
- "GUID": "cbb111",
- "Name": "ScriptingTrigger",
- "Transform": {
- "posX": -0.652498,
- "posY": 4.034133,
- "posZ": -21.4761066,
- "rotX": 0.0,
- "rotY": -2.59777335E-06,
- "rotZ": 0.0,
- "scaleX": 13.3037119,
- "scaleY": 5.1,
- "scaleZ": 12.0716686
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0,
- "a": 0.509803951
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "local scoreZoneGuid = 'cbb111' -- the guid of your zone\r\nsave_data = {\r\n scoreTextGuid = '' -- will be initialized in the 'onLoad' function\r\n}\r\n\r\n--#region : Event listeners\r\nfunction onLoad(save_state) -- called when loading a save or when creating the object this script is placed in\r\n if(save_state == '' or save_state == nil or save_state == 'null') then\r\n -- no save data found\r\n else\r\n save_data = JSON.decode(save_state)\r\n end\r\n if(save_data.scoreTextGuid == nil or save_data.scoreTextGuid == '') then\r\n spawnText() -- Initializes the text object\r\n end\r\nend\r\n\r\nfunction onSave() -- called on each (auto)save action\r\n local json_data = JSON.encode(settings)\r\n\r\n if(false) then -- set to true & save to clear save data\r\n json_data = \"\"\r\n end\r\n return json_data\r\nend\r\nfunction onDestroy() -- called when the object this script is placed in is destroyed\r\n -- Delete the text object\r\n local textObject = getObjectFromGUID(save_data.scoreTextGuid)\r\n if(textObject ~= nil) then\r\n destroyObject(textObject)\r\n end\r\nend\r\n\r\nfunction onObjectEnterScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually appear in the zone\r\nend\r\nfunction onObjectLeaveScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually disappear from the zone\r\nend\r\n--#endregion : Event listeners\r\n\r\nfunction spawnText()\r\n local text = spawnObject({\r\n type = '3DText',\r\n rotation = {90.00, 0.00, 0.00}, -- TODO: Change rotation as needed\r\n position = {0.00, 1.61, -10.95} -- TODO: Change this to a better location\r\n })\r\n text.setValue('0') -- Set a default text value\r\n text.TextTool.setFontSize(100) -- TODO: Check if this is the right size\r\n text.TextTool.setFontColor({0.856, 0.1, 0.094})\r\n save_data.scoreTextGuid = text.getGUID() -- Save the guid so we know how to reference it\r\nend\r\n\r\nfunction updateScore()\r\n local scoreValue = getScore()\r\n local scoreText = getObjectFromGUID(save_data.scoreTextGuid)\r\n scoreText.setValue(''..scoreValue) -- Convert the number to a string and passes it to the text object\r\nend\r\n\r\nfunction getScore()\r\n local score = 0\r\n local zone = getObjectFromGUID(scoreZoneGuid)\r\n local objects = zone.getObjects() -- get objects already in the zone\r\n for key,object in ipairs(objects) do -- key = 1|2|3|etc, object = actual TTS object\r\n local description = object.getDescription() -- get the description\r\n local number = tonumber(description) -- convert it to a number\r\n if(number ~= nil) then -- check if you actually get a number (tonumber returns nil if it isn't)\r\n score = score + number\r\n end\r\n end\r\n return score\r\nend",
- "LuaScriptState": "null",
- "XmlUI": ""
- },
- {
- "GUID": "5ff2ab",
- "Name": "3DText",
- "Transform": {
- "posX": 0.999989,
- "posY": 1.00000846,
- "posZ": 1.00000381,
- "rotX": 90.0,
- "rotY": 0.0,
- "rotZ": 0.0,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "Text": {
- "Text": "The score of objects in the zone is 0",
- "colorstate": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "fontSize": 40
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "0909a2",
- "Name": "Deck",
- "Transform": {
- "posX": -1.62008286,
- "posY": 1.957552,
- "posZ": 1.13116431,
- "rotX": 0.016834924,
- "rotY": 180.0314,
- "rotZ": 180.07991,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": false,
- "SidewaysCard": false,
- "DeckIDs": [
- 311,
- 314,
- 307,
- 309,
- 306,
- 308,
- 315,
- 311,
- 309,
- 320,
- 311,
- 307,
- 319,
- 310,
- 306,
- 310,
- 302,
- 303,
- 313,
- 308,
- 307,
- 300,
- 321,
- 309,
- 307,
- 311,
- 303,
- 320,
- 319,
- 309,
- 307,
- 302,
- 306,
- 306,
- 320,
- 305,
- 305,
- 308,
- 311,
- 310,
- 310,
- 311,
- 321,
- 304,
- 307,
- 306,
- 310,
- 310,
- 304,
- 308,
- 321,
- 318,
- 309,
- 309,
- 304,
- 310,
- 307,
- 311,
- 309,
- 316,
- 307,
- 305,
- 305,
- 311,
- 311,
- 301,
- 311,
- 308,
- 309,
- 301,
- 306,
- 310,
- 308,
- 319,
- 317,
- 304,
- 302,
- 310,
- 308,
- 308,
- 309,
- 305,
- 311,
- 306,
- 311,
- 310,
- 308,
- 309,
- 310,
- 305,
- 303,
- 303,
- 304,
- 312
- ],
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": "",
- "ContainedObjects": [
- {
- "GUID": "8fad77",
- "Name": "Card",
- "Transform": {
- "posX": -18.8967037,
- "posY": 1.51774919,
- "posZ": -12.5327415,
- "rotX": 359.9556,
- "rotY": 224.999969,
- "rotZ": 0.06735838,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "1f603b",
- "Name": "Card",
- "Transform": {
- "posX": -1.60016119,
- "posY": 2.432621,
- "posZ": 1.13145959,
- "rotX": 0.0101249292,
- "rotY": 180.000229,
- "rotZ": 180.165588,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "2",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 314,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "9ce94d",
- "Name": "Card",
- "Transform": {
- "posX": 18.8967,
- "posY": 1.50932586,
- "posZ": -12.5327387,
- "rotX": 0.0547294,
- "rotY": 135.0,
- "rotZ": 0.035640575,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "a88ffd",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200928,
- "posY": 3.005011,
- "posZ": 6.30789948,
- "rotX": 0.016694054,
- "rotY": 179.976059,
- "rotZ": 0.0825016946,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "ab011b",
- "Name": "Card",
- "Transform": {
- "posX": 3.000019,
- "posY": 2.505434,
- "posZ": -16.3500042,
- "rotX": 0.0168722011,
- "rotY": 180.0,
- "rotZ": 0.0798771456,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8f207a",
- "Name": "Card",
- "Transform": {
- "posX": -10.7205172,
- "posY": 2.05084872,
- "posZ": 6.329519,
- "rotX": 0.01685517,
- "rotY": 179.966309,
- "rotZ": 0.08065325,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "d9d1e8",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201052,
- "posY": 3.18100142,
- "posZ": 6.307909,
- "rotX": 0.0167042818,
- "rotY": 179.975891,
- "rotZ": 0.0825113,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "4",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 315,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8025a5",
- "Name": "Card",
- "Transform": {
- "posX": -1.98134744,
- "posY": 3.3518343,
- "posZ": 4.68168068,
- "rotX": 0.0445508,
- "rotY": 270.000183,
- "rotZ": 180.241257,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "0f14c9",
- "Name": "Card",
- "Transform": {
- "posX": -1.59988642,
- "posY": 2.42840362,
- "posZ": 1.13147736,
- "rotX": -0.000161289165,
- "rotY": 180.000366,
- "rotZ": 177.72821,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "5b1e8f",
- "Name": "Card",
- "Transform": {
- "posX": -1.59990859,
- "posY": 2.43901157,
- "posZ": 1.13148725,
- "rotX": 0.0168730132,
- "rotY": 179.999954,
- "rotZ": 180.0799,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Second Chance",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 320,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "e072d2",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201538,
- "posY": 2.870458,
- "posZ": 6.30790758,
- "rotX": 0.0166980717,
- "rotY": 179.9762,
- "rotZ": 0.08250205,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c4a1b3",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200994,
- "posY": 2.90335417,
- "posZ": 6.30790138,
- "rotX": 0.0166919343,
- "rotY": 179.976135,
- "rotZ": 0.08249552,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4363a6",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201309,
- "posY": 2.959968,
- "posZ": 6.307906,
- "rotX": 0.0167024173,
- "rotY": 179.97612,
- "rotZ": 0.08250531,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Freeze",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 319,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "2eef80",
- "Name": "Card",
- "Transform": {
- "posX": -24.553339,
- "posY": 1.63255692,
- "posZ": 6.86511,
- "rotX": 0.0168821421,
- "rotY": 179.993149,
- "rotZ": 0.07987535,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "826e2b",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196112,
- "posY": 2.59792542,
- "posZ": 6.32963037,
- "rotX": 0.0166904517,
- "rotY": 179.97644,
- "rotZ": 0.08250435,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4cb336",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200718,
- "posY": 3.12620521,
- "posZ": 6.307904,
- "rotX": 0.016692007,
- "rotY": 179.975922,
- "rotZ": 0.0824994743,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "848687",
- "Name": "Card",
- "Transform": {
- "posX": -1.59989047,
- "posY": 2.40982985,
- "posZ": 1.13147438,
- "rotX": 0.0171483643,
- "rotY": 179.999832,
- "rotZ": 180.0706,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "3",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 302,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c5b4be",
- "Name": "Card",
- "Transform": {
- "posX": -10.7195692,
- "posY": 2.69666481,
- "posZ": 6.329625,
- "rotX": 0.0166909341,
- "rotY": 179.976349,
- "rotZ": 0.08250208,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "4",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 303,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "48a7f7",
- "Name": "Card",
- "Transform": {
- "posX": 15.007638,
- "posY": 1.46727407,
- "posZ": -23.4929,
- "rotX": 0.06841156,
- "rotY": 134.999832,
- "rotZ": 0.044550322,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "x2 Multiplier",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 313,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "ae3973",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201605,
- "posY": 2.892389,
- "posZ": 6.30790949,
- "rotX": 0.0166940615,
- "rotY": 179.976166,
- "rotZ": 0.08249786,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4e40e5",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201777,
- "posY": 2.8022716,
- "posZ": 6.30791855,
- "rotX": 0.0166876689,
- "rotY": 179.976273,
- "rotZ": 0.08250379,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6c7484",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200413,
- "posY": 3.07080269,
- "posZ": 6.30789566,
- "rotX": 0.0166915338,
- "rotY": 179.976,
- "rotZ": 0.0824997053,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "1",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 300,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "f6dfbe",
- "Name": "Card",
- "Transform": {
- "posX": -21.3715382,
- "posY": 1.51986444,
- "posZ": -17.1289444,
- "rotX": 359.955444,
- "rotY": 225.0,
- "rotZ": 0.0684106648,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Flip Three",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 321,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8c46d7",
- "Name": "Card",
- "Transform": {
- "posX": -4.49999,
- "posY": 2.514712,
- "posZ": -20.3500137,
- "rotX": 0.0168713611,
- "rotY": 180.000031,
- "rotZ": 0.07987714,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "e96eb7",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200708,
- "posY": 3.26809072,
- "posZ": 6.30790329,
- "rotX": 0.0166961625,
- "rotY": 179.975815,
- "rotZ": 0.0825073943,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "116ce7",
- "Name": "Card",
- "Transform": {
- "posX": -10.7202072,
- "posY": 2.755408,
- "posZ": 6.307923,
- "rotX": 0.0166858323,
- "rotY": 179.976318,
- "rotZ": 0.082504414,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "d428e4",
- "Name": "Card",
- "Transform": {
- "posX": 12.5327625,
- "posY": 1.47207153,
- "posZ": -18.8967075,
- "rotX": 0.06848029,
- "rotY": 134.999954,
- "rotZ": 0.0441951379,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "4",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 303,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "546360",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200956,
- "posY": 3.015976,
- "posZ": 6.307901,
- "rotX": 0.016701499,
- "rotY": 179.976044,
- "rotZ": 0.08250593,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Second Chance",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 320,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "9db9db",
- "Name": "Card",
- "Transform": {
- "posX": -1.59987545,
- "posY": 2.390492,
- "posZ": 1.13147223,
- "rotX": 0.0161876678,
- "rotY": 179.999878,
- "rotZ": 180.074066,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Freeze",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 319,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "353ff8",
- "Name": "Card",
- "Transform": {
- "posX": -10.720067,
- "posY": 3.15583754,
- "posZ": 6.307904,
- "rotX": 0.0166923329,
- "rotY": 179.975891,
- "rotZ": 0.082486935,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6d611e",
- "Name": "Card",
- "Transform": {
- "posX": -10.7195883,
- "posY": 2.70794129,
- "posZ": 6.329634,
- "rotX": 0.0166859943,
- "rotY": 179.976364,
- "rotZ": 0.08250356,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c23666",
- "Name": "Card",
- "Transform": {
- "posX": 12.5327387,
- "posY": 1.51486063,
- "posZ": -18.8967,
- "rotX": 0.0540597,
- "rotY": 135.0,
- "rotZ": 0.0311557781,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "3",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 302,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8e1e0b",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201023,
- "posY": 2.91431952,
- "posZ": 6.30790234,
- "rotX": 0.01669104,
- "rotY": 179.976135,
- "rotZ": 0.08249625,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "ebaab2",
- "Name": "Card",
- "Transform": {
- "posX": -10.7195921,
- "posY": 2.71890664,
- "posZ": 6.329635,
- "rotX": 0.0166851189,
- "rotY": 179.976349,
- "rotZ": 0.08250538,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4362d7",
- "Name": "Card",
- "Transform": {
- "posX": -1.5998863,
- "posY": 2.5901978,
- "posZ": 1.13147724,
- "rotX": 359.259949,
- "rotY": 180.075592,
- "rotZ": 174.972748,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Second Chance",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 320,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "755ba7",
- "Name": "Card",
- "Transform": {
- "posX": -18.8967,
- "posY": 1.55562019,
- "posZ": -12.53274,
- "rotX": 359.967743,
- "rotY": 224.999969,
- "rotZ": 0.050541874,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "7601c6",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201872,
- "posY": 2.75777316,
- "posZ": 6.307914,
- "rotX": 0.01669054,
- "rotY": 179.976288,
- "rotZ": 0.08249966,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "78f323",
- "Name": "Card",
- "Transform": {
- "posX": -10.7205372,
- "posY": 2.04894257,
- "posZ": 6.32952547,
- "rotX": 0.0168538522,
- "rotY": 179.966309,
- "rotZ": 0.08064202,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6bee83",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201281,
- "posY": 2.94900322,
- "posZ": 6.30790472,
- "rotX": 0.0166943464,
- "rotY": 179.976135,
- "rotZ": 0.08249881,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c63691",
- "Name": "Card",
- "Transform": {
- "posX": -14.6540585,
- "posY": 1.54991889,
- "posZ": -16.7753811,
- "rotX": 359.9669,
- "rotY": 224.999969,
- "rotZ": 0.0515832938,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "442690",
- "Name": "Card",
- "Transform": {
- "posX": -12.8862915,
- "posY": 1.54886889,
- "posZ": -12.8862934,
- "rotX": 359.966736,
- "rotY": 224.999969,
- "rotZ": 0.0517791,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "edf71a",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201624,
- "posY": 2.78830361,
- "posZ": 6.30791044,
- "rotX": 0.0166914668,
- "rotY": 179.976257,
- "rotZ": 0.08249424,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6beb42",
- "Name": "Card",
- "Transform": {
- "posX": -1.59988379,
- "posY": 2.41982079,
- "posZ": 1.13146126,
- "rotX": 0.0109974807,
- "rotY": 179.999878,
- "rotZ": 180.075684,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Flip Three",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 321,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c2bf14",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196608,
- "posY": 2.53388476,
- "posZ": 6.32964039,
- "rotX": 0.0166884586,
- "rotY": 179.976517,
- "rotZ": 0.08249867,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "5",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 304,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "45d5c9",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200384,
- "posY": 3.05983782,
- "posZ": 6.307894,
- "rotX": 0.0166916754,
- "rotY": 179.976013,
- "rotZ": 0.08249792,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "5bbea9",
- "Name": "Card",
- "Transform": {
- "posX": -10.720521,
- "posY": 2.03453469,
- "posZ": 6.32951927,
- "rotX": 0.0168553609,
- "rotY": 179.966309,
- "rotZ": 0.08065469,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "7a6c0d",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201014,
- "posY": 3.170037,
- "posZ": 6.307908,
- "rotX": 0.0166956354,
- "rotY": 179.975891,
- "rotZ": 0.08250296,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "e70778",
- "Name": "Card",
- "Transform": {
- "posX": -10.72021,
- "posY": 2.76637363,
- "posZ": 6.307924,
- "rotX": 0.01668517,
- "rotY": 179.9763,
- "rotZ": 0.0825052261,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6b671b",
- "Name": "Card",
- "Transform": {
- "posX": 0.49352318,
- "posY": 3.34598923,
- "posZ": -3.45004463,
- "rotX": 0.04455088,
- "rotY": 270.000183,
- "rotZ": 180.241257,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "5",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 304,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "5e6ccd",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196321,
- "posY": 2.622134,
- "posZ": 6.32963848,
- "rotX": 0.01668659,
- "rotY": 179.97644,
- "rotZ": 0.08250229,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "a303a8",
- "Name": "Card",
- "Transform": {
- "posX": 17.12896,
- "posY": 1.46494138,
- "posZ": -21.3715839,
- "rotX": 0.0684115,
- "rotY": 134.9999,
- "rotZ": 0.0445513353,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Flip Three",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 321,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "43cd6b",
- "Name": "Card",
- "Transform": {
- "posX": -1.59901643,
- "posY": 2.43921,
- "posZ": 1.13153934,
- "rotX": 0.1497693,
- "rotY": 180.52681,
- "rotZ": 180.268768,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 318,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "739405",
- "Name": "Card",
- "Transform": {
- "posX": 16.77538,
- "posY": 1.51113784,
- "posZ": -14.6540594,
- "rotX": 0.0541539229,
- "rotY": 135.0,
- "rotZ": 0.03182369,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "f6ff9c",
- "Name": "Card",
- "Transform": {
- "posX": -10.7203054,
- "posY": 2.28075528,
- "posZ": 6.3296566,
- "rotX": 0.0167956837,
- "rotY": 179.966248,
- "rotZ": 0.0813636258,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "854ac7",
- "Name": "Card",
- "Transform": {
- "posX": -25.3466187,
- "posY": 1.53257322,
- "posZ": 7.210358,
- "rotX": 0.0168821421,
- "rotY": 179.993088,
- "rotZ": 0.07987536,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "5",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 304,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "1e90e8",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201567,
- "posY": 2.88142323,
- "posZ": 6.307908,
- "rotX": 0.0166994371,
- "rotY": 179.976181,
- "rotZ": 0.08250223,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "20f8fd",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201376,
- "posY": 3.093309,
- "posZ": 6.30791235,
- "rotX": 0.0167023782,
- "rotY": 179.975952,
- "rotZ": 0.0825075358,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4a4f76",
- "Name": "Card",
- "Transform": {
- "posX": -10.719636,
- "posY": 2.63309932,
- "posZ": 6.32964,
- "rotX": 0.0166858062,
- "rotY": 179.97644,
- "rotZ": 0.08250346,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "19eb6a",
- "Name": "Card",
- "Transform": {
- "posX": -10.7203093,
- "posY": 2.291721,
- "posZ": 6.32965755,
- "rotX": 0.01676292,
- "rotY": 179.978714,
- "rotZ": 0.08154822,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "285f00",
- "Name": "Card",
- "Transform": {
- "posX": -21.3715668,
- "posY": 1.56100011,
- "posZ": -17.1289349,
- "rotX": 359.964355,
- "rotY": 224.999954,
- "rotZ": 0.0547284,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 316,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "19d57a",
- "Name": "Card",
- "Transform": {
- "posX": -14.6540451,
- "posY": 1.51058972,
- "posZ": -16.7753887,
- "rotX": 359.955566,
- "rotY": 225.000137,
- "rotZ": 0.0676227659,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 307,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "d88a12",
- "Name": "Card",
- "Transform": {
- "posX": -10.6554985,
- "posY": 1.78331029,
- "posZ": 6.354537,
- "rotX": 0.016913509,
- "rotY": 179.968262,
- "rotZ": 0.0798883438,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "a4b639",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200422,
- "posY": 3.23582888,
- "posZ": 6.307902,
- "rotX": 0.0166921988,
- "rotY": 179.97583,
- "rotZ": 0.08250146,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "d756fe",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200346,
- "posY": 3.04887223,
- "posZ": 6.30789328,
- "rotX": 0.0166912191,
- "rotY": 179.976013,
- "rotZ": 0.08249964,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "125971",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200985,
- "posY": 3.159072,
- "posZ": 6.30790663,
- "rotX": 0.0166959781,
- "rotY": 179.975891,
- "rotZ": 0.0825014859,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6cf55c",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196407,
- "posY": 2.535919,
- "posZ": 6.329633,
- "rotX": 0.0166353937,
- "rotY": 179.9765,
- "rotZ": 0.0829789862,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "2",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 301,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6cdd75",
- "Name": "Card",
- "Transform": {
- "posX": -2.99998951,
- "posY": 2.51379871,
- "posZ": -16.3500042,
- "rotX": 0.0168724284,
- "rotY": 180.0,
- "rotZ": 0.07987788,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "859eb7",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201357,
- "posY": 2.87087774,
- "posZ": 6.30790758,
- "rotX": 0.0166912619,
- "rotY": 179.9762,
- "rotZ": 0.08249639,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "165b8f",
- "Name": "Card",
- "Transform": {
- "posX": -1.599382,
- "posY": 2.3933847,
- "posZ": 1.13148749,
- "rotX": 0.01584696,
- "rotY": 180.000473,
- "rotZ": 182.456863,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "b10e42",
- "Name": "Card",
- "Transform": {
- "posX": 14.6540813,
- "posY": 1.469745,
- "posZ": -16.7753849,
- "rotX": 0.06841199,
- "rotY": 135.000015,
- "rotZ": 0.044552587,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "2",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 301,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "3a2d03",
- "Name": "Card",
- "Transform": {
- "posX": -10.6556244,
- "posY": 1.71184075,
- "posZ": 6.354563,
- "rotX": 0.016915163,
- "rotY": 179.968277,
- "rotZ": 0.07986872,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "911aa1",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200737,
- "posY": 2.99286437,
- "posZ": 6.30789948,
- "rotX": 0.0166918337,
- "rotY": 179.976074,
- "rotZ": 0.08249691,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "439037",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201061,
- "posY": 2.92528462,
- "posZ": 6.307904,
- "rotX": 0.0166912563,
- "rotY": 179.976135,
- "rotZ": 0.08249609,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "6d0a8a",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201414,
- "posY": 3.10427427,
- "posZ": 6.307913,
- "rotX": 0.016704265,
- "rotY": 179.975967,
- "rotZ": 0.08250868,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "Freeze",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 319,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "9466d9",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196293,
- "posY": 2.61116862,
- "posZ": 6.32963753,
- "rotX": 0.016687138,
- "rotY": 179.976456,
- "rotZ": 0.08250066,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "8",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "Tags": [
- "special"
- ],
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 317,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "e10c31",
- "Name": "Card",
- "Transform": {
- "posX": -10.720067,
- "posY": 2.970934,
- "posZ": 6.30789757,
- "rotX": 0.0166914985,
- "rotY": 179.9761,
- "rotZ": 0.08249675,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "5",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 304,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "769659",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200317,
- "posY": 3.20293283,
- "posZ": 6.307899,
- "rotX": 0.0166923162,
- "rotY": 179.975861,
- "rotZ": 0.08250121,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "3",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 302,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "0048e6",
- "Name": "Card",
- "Transform": {
- "posX": 15.0076122,
- "posY": 1.514018,
- "posZ": -10.7649717,
- "rotX": 0.05408226,
- "rotY": 135.0,
- "rotZ": 0.031309776,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "98cf63",
- "Name": "Card",
- "Transform": {
- "posX": -1.59862876,
- "posY": 2.34472728,
- "posZ": 1.13149989,
- "rotX": 0.0150373857,
- "rotY": 179.999084,
- "rotZ": 182.460068,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "4eb22b",
- "Name": "Card",
- "Transform": {
- "posX": 1.50001633,
- "posY": 2.50634742,
- "posZ": -20.3500023,
- "rotX": 0.016871566,
- "rotY": 180.000046,
- "rotZ": 0.0798781738,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8fdc08",
- "Name": "Card",
- "Transform": {
- "posX": -1.599382,
- "posY": 2.36427617,
- "posZ": 1.13148749,
- "rotX": 0.0152467852,
- "rotY": 180.000488,
- "rotZ": 182.457352,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "63dde3",
- "Name": "Card",
- "Transform": {
- "posX": 2.2612865,
- "posY": 3.34467,
- "posZ": 0.439040184,
- "rotX": 0.0445479639,
- "rotY": 180.000183,
- "rotZ": 180.241257,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "253f02",
- "Name": "Card",
- "Transform": {
- "posX": 12.8862686,
- "posY": 1.47332835,
- "posZ": -12.8862886,
- "rotX": 0.0686355159,
- "rotY": 134.999969,
- "rotZ": 0.0430633649,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "9adb6d",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200356,
- "posY": 3.21389818,
- "posZ": 6.30790043,
- "rotX": 0.0166920256,
- "rotY": 179.975861,
- "rotZ": 0.08250134,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "7",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 306,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8ed7cf",
- "Name": "Card",
- "Transform": {
- "posX": -10.7195721,
- "posY": 2.68179,
- "posZ": 6.329625,
- "rotX": 0.0166916456,
- "rotY": 179.976364,
- "rotZ": 0.08249318,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "12",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 311,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "d84185",
- "Name": "Card",
- "Transform": {
- "posX": -1.59938276,
- "posY": 2.3350668,
- "posZ": 1.13148808,
- "rotX": 0.015087096,
- "rotY": 180.000488,
- "rotZ": 182.456314,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "ffbc62",
- "Name": "Card",
- "Transform": {
- "posX": -10.7200994,
- "posY": 3.0269413,
- "posZ": 6.307902,
- "rotX": 0.0167027954,
- "rotY": 179.976044,
- "rotZ": 0.08250663,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "9",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 308,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "f4bef4",
- "Name": "Card",
- "Transform": {
- "posX": -10.720192,
- "posY": 2.74145913,
- "posZ": 6.30791426,
- "rotX": 0.016690718,
- "rotY": 179.9763,
- "rotZ": 0.08249916,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "10",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 309,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "1df149",
- "Name": "Card",
- "Transform": {
- "posX": -10.7201843,
- "posY": 2.82420278,
- "posZ": 6.307921,
- "rotX": 0.0166845173,
- "rotY": 179.976257,
- "rotZ": 0.08250674,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "11",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 310,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "5e7956",
- "Name": "Card",
- "Transform": {
- "posX": -10.7196074,
- "posY": 2.64889455,
- "posZ": 6.329635,
- "rotX": 0.0166872926,
- "rotY": 179.976425,
- "rotZ": 0.08250099,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "6",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 305,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "317dfa",
- "Name": "Card",
- "Transform": {
- "posX": 15.0076361,
- "posY": 1.47101593,
- "posZ": -10.7649765,
- "rotX": 0.06847729,
- "rotY": 134.999954,
- "rotZ": 0.0442074127,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "4",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 303,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "2e3ad8",
- "Name": "Card",
- "Transform": {
- "posX": -1.59938109,
- "posY": 2.38370728,
- "posZ": 1.13148749,
- "rotX": 0.0156655628,
- "rotY": 180.000473,
- "rotZ": 182.459885,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "4",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 303,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8be14b",
- "Name": "Card",
- "Transform": {
- "posX": 18.8967266,
- "posY": 1.46507967,
- "posZ": -12.5327454,
- "rotX": 0.06841181,
- "rotY": 134.999878,
- "rotZ": 0.04455061,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "5",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 304,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "8cdbed",
- "Name": "Card",
- "Transform": {
- "posX": 16.7754078,
- "posY": 1.46740711,
- "posZ": -14.65407,
- "rotX": 0.06846624,
- "rotY": 134.9999,
- "rotZ": 0.0442454927,
- "scaleX": 1.2007668,
- "scaleY": 1.0,
- "scaleZ": 1.2007668
- },
- "Nickname": "",
- "Description": "0",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 0.713235259,
- "g": 0.713235259,
- "b": 0.713235259
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": false,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": true,
- "Hands": true,
- "CardID": 312,
- "SidewaysCard": false,
- "CustomDeck": {
- "3": {
- "FaceURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600139/2352702DCC4E424CB9292E1F91F448CB6E6FF941/",
- "BackURL": "https://steamusercontent-a.akamaihd.net/ugc/2383055195966600864/E40954C0F83D9817BE6C9435E61DF65BFD1BACC6/",
- "NumWidth": 6,
- "NumHeight": 4,
- "BackIsHidden": true,
- "UniqueBack": false,
- "Type": 0
- }
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- }
- ]
- },
- {
- "GUID": "f1d8a1",
- "Name": "ScriptingTrigger",
- "Transform": {
- "posX": -16.4734573,
- "posY": 4.06359434,
- "posZ": -15.8063564,
- "rotX": 0.0,
- "rotY": 44.33372,
- "rotZ": 0.0,
- "scaleX": 14.2830753,
- "scaleY": 5.1,
- "scaleZ": 13.5738564
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0,
- "a": 0.509803951
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "local scoreZoneGuid = 'f1d8a1' -- the guid of your zone\r\nsave_data = {\r\n scoreTextGuid = '' -- will be initialized in the 'onLoad' function\r\n}\r\n\r\n--#region : Event listeners\r\nfunction onLoad(save_state) -- called when loading a save or when creating the object this script is placed in\r\n if(save_state == '' or save_state == nil or save_state == 'null') then\r\n -- no save data found\r\n else\r\n save_data = JSON.decode(save_state)\r\n end\r\n if(save_data.scoreTextGuid == nil or save_data.scoreTextGuid == '') then\r\n spawnText() -- Initializes the text object\r\n end\r\nend\r\n\r\nfunction onSave() -- called on each (auto)save action\r\n local json_data = JSON.encode(settings)\r\n\r\n if(false) then -- set to true & save to clear save data\r\n json_data = \"\"\r\n end\r\n return json_data\r\nend\r\nfunction onDestroy() -- called when the object this script is placed in is destroyed\r\n -- Delete the text object\r\n local textObject = getObjectFromGUID(save_data.scoreTextGuid)\r\n if(textObject ~= nil) then\r\n destroyObject(textObject)\r\n end\r\nend\r\n\r\nfunction onObjectEnterScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually appear in the zone\r\nend\r\nfunction onObjectLeaveScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually disappear from the zone\r\nend\r\n--#endregion : Event listeners\r\n\r\nfunction spawnText()\r\n local text = spawnObject({\r\n type = '3DText',\r\n rotation = {90.00, 45.33, 0.00}, -- TODO: Change rotation as needed\r\n position = {-8.68, 1.87, -7.79} -- TODO: Change this to a better location\r\n })\r\n text.setValue('0') -- Set a default text value\r\n text.TextTool.setFontSize(100) -- TODO: Check if this is the right size\r\n text.TextTool.setFontColor({0.96, 0.439, 0.807})\r\n save_data.scoreTextGuid = text.getGUID() -- Save the guid so we know how to reference it\r\nend\r\n\r\nfunction updateScore()\r\n local scoreValue = getScore()\r\n local scoreText = getObjectFromGUID(save_data.scoreTextGuid)\r\n scoreText.setValue(''..scoreValue) -- Convert the number to a string and passes it to the text object\r\nend\r\n\r\nfunction getScore()\r\n local score = 0\r\n local zone = getObjectFromGUID(scoreZoneGuid)\r\n local objects = zone.getObjects() -- get objects already in the zone\r\n for key,object in ipairs(objects) do -- key = 1|2|3|etc, object = actual TTS object\r\n local description = object.getDescription() -- get the description\r\n local number = tonumber(description) -- convert it to a number\r\n if(number ~= nil) then -- check if you actually get a number (tonumber returns nil if it isn't)\r\n score = score + number\r\n end\r\n end\r\n return score\r\nend",
- "LuaScriptState": "null",
- "XmlUI": ""
- },
- {
- "GUID": "e0971f",
- "Name": "ScriptingTrigger",
- "Transform": {
- "posX": 15.5113144,
- "posY": 4.00251055,
- "posZ": -16.5242825,
- "rotX": 0.0,
- "rotY": 314.6668,
- "rotZ": 0.0,
- "scaleX": 13.8485394,
- "scaleY": 5.1,
- "scaleZ": 13.0904713
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0,
- "a": 0.509803951
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "LuaScript": "local scoreZoneGuid = 'e0971f' -- the guid of your zone\r\nsave_data = {\r\n scoreTextGuid = '' -- will be initialized in the 'onLoad' function\r\n}\r\n\r\n--#region : Event listeners\r\nfunction onLoad(save_state) -- called when loading a save or when creating the object this script is placed in\r\n if(save_state == '' or save_state == nil or save_state == 'null') then\r\n -- no save data found\r\n else\r\n save_data = JSON.decode(save_state)\r\n end\r\n if(save_data.scoreTextGuid == nil or save_data.scoreTextGuid == '') then\r\n spawnText() -- Initializes the text object\r\n end\r\nend\r\n\r\nfunction onSave() -- called on each (auto)save action\r\n local json_data = JSON.encode(settings)\r\n\r\n if(false) then -- set to true & save to clear save data\r\n json_data = \"\"\r\n end\r\n return json_data\r\nend\r\nfunction onDestroy() -- called when the object this script is placed in is destroyed\r\n -- Delete the text object\r\n local textObject = getObjectFromGUID(save_data.scoreTextGuid)\r\n if(textObject ~= nil) then\r\n destroyObject(textObject)\r\n end\r\nend\r\n\r\nfunction onObjectEnterScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually appear in the zone\r\nend\r\nfunction onObjectLeaveScriptingZone(zone, enter_object)\r\n local zoneGuid = zone.getGUID()\r\n if(zoneGuid ~= scoreZoneGuid) then return end -- Ignore all events for zones that aren't the score zone\r\n Wait.frames(updateScore, 1) -- wait 1 frame for the object to actually disappear from the zone\r\nend\r\n--#endregion : Event listeners\r\n\r\nfunction spawnText()\r\n local text = spawnObject({\r\n type = '3DText',\r\n rotation = {90.00, 314.55, 0.00}, -- TODO: Change rotation as needed\r\n position = {9.89, 1.47, -10.01} -- TODO: Change this to a better location\r\n })\r\n text.setValue('0') -- Set a default text value\r\n text.TextTool.setFontSize(100) -- TODO: Check if this is the right size\r\n text.TextTool.setFontColor({0.956, 0.392, 0.113})\r\n save_data.scoreTextGuid = text.getGUID() -- Save the guid so we know how to reference it\r\nend\r\n\r\nfunction updateScore()\r\n local scoreValue = getScore()\r\n local scoreText = getObjectFromGUID(save_data.scoreTextGuid)\r\n scoreText.setValue(''..scoreValue) -- Convert the number to a string and passes it to the text object\r\nend\r\n\r\nfunction getScore()\r\n local score = 0\r\n local zone = getObjectFromGUID(scoreZoneGuid)\r\n local objects = zone.getObjects() -- get objects already in the zone\r\n for key,object in ipairs(objects) do -- key = 1|2|3|etc, object = actual TTS object\r\n local description = object.getDescription() -- get the description\r\n local number = tonumber(description) -- convert it to a number\r\n if(number ~= nil) then -- check if you actually get a number (tonumber returns nil if it isn't)\r\n score = score + number\r\n end\r\n end\r\n return score\r\nend",
- "LuaScriptState": "null",
- "XmlUI": ""
- },
- {
- "GUID": "46e972",
- "Name": "3DText",
- "Transform": {
- "posX": -1.335144E-05,
- "posY": 1.610007,
- "posZ": -10.9499931,
- "rotX": 90.0,
- "rotY": -1.84237389E-10,
- "rotZ": 0.0,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "Text": {
- "Text": "0",
- "colorstate": {
- "r": 0.856,
- "g": 0.1,
- "b": 0.094
- },
- "fontSize": 100
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "c17402",
- "Name": "3DText",
- "Transform": {
- "posX": -8.68003,
- "posY": 1.87000787,
- "posZ": -10.01,
- "rotX": 90.0,
- "rotY": 45.45001,
- "rotZ": 0.0,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "Text": {
- "Text": "0",
- "colorstate": {
- "r": 0.96,
- "g": 0.439,
- "b": 0.807
- },
- "fontSize": 100
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- },
- {
- "GUID": "54e10a",
- "Name": "3DText",
- "Transform": {
- "posX": 9.88999,
- "posY": 1.47000909,
- "posZ": -10.01,
- "rotX": 90.0,
- "rotY": 314.55,
- "rotZ": 0.0,
- "scaleX": 1.0,
- "scaleY": 1.0,
- "scaleZ": 1.0
- },
- "Nickname": "",
- "Description": "",
- "GMNotes": "",
- "AltLookAngle": {
- "x": 0.0,
- "y": 0.0,
- "z": 0.0
- },
- "ColorDiffuse": {
- "r": 1.0,
- "g": 1.0,
- "b": 1.0
- },
- "LayoutGroupSortIndex": 0,
- "Value": 0,
- "Locked": true,
- "Grid": true,
- "Snap": true,
- "IgnoreFoW": false,
- "MeasureMovement": false,
- "DragSelectable": true,
- "Autoraise": true,
- "Sticky": true,
- "Tooltip": true,
- "GridProjection": false,
- "HideWhenFaceDown": false,
- "Hands": false,
- "Text": {
- "Text": "0",
- "colorstate": {
- "r": 0.956,
- "g": 0.392,
- "b": 0.113
- },
- "fontSize": 100
- },
- "LuaScript": "",
- "LuaScriptState": "",
- "XmlUI": ""
- }
- ]
- }
Advertisement
Add Comment
Please, Sign In to add comment