+SaveName Planet SteamEpochTimefDate4/12/2024 9:30:07 AMVersionNumberv13.2.2GameMode Planet SteamGameTypeGameGameComplexityHigh ComplexityPlayingTime0x1PlayerCounts01Tags.0 Board Games1Strategy GamesGravity?PlayArea?Table Table_NoneSky Sky_MuseumNote1[i]cameras[/i] 1 - MapBoard 2 - Market 3 - RulesTabStates1ntitleWhitebodycolorWhitevisibleColor&r?g?b?id2ntitleBrownbodycolorBrownvisibleColor&rZ?gh?b= ?id3jtitleRedbodycolorRedvisibleColor&r Zd?g?b@b?id4ptitleOrangebodycolorOrangevisibleColor&r@?g ?b`?id5ptitleYellowbodycolorYellowvisibleColor&r?gj?b?id6ntitleGreenbodycolorGreenvisibleColor&rt?gn?b ?id7ltitleBluebodycolorBluevisibleColor&r?5?g?b?id8ltitleTealbodycolorTealvisibleColor&r`?g?5?b@l?id9ptitlePurplebodycolorPurplevisibleColor&r@b?g?b?id 10ltitlePinkbodycolorPinkvisibleColor&rQ?g?b?id 11ntitleBlackbodycolorBlackvisibleColor&r?g?b?id 12titleCreditsbodyfScripted by Il-Roberto toDo prendi html color code da global verifica salvataggio dopo caricamento colorGreyvisibleColor&r?g?b?id GridTypeLinesColor&rgbOpacity?ThickLinesSnappingOffsetBothSnappingxSize@ySize@PosOffset&xy?zLightingjLightIntensity G?LightColor&r?go_?b|?AmbientIntensity?AmbientTypeAmbientSkyColor&r?g?b?AmbientEquatorColor&r?g?b?AmbientGroundColor&r?g?b?ReflectionIntensity?LutIndexLutContribution?Hands*EnableDisableUnusedHidingComponentTagslabels0.displayedIronnormalizediron1.displayedGoldnormalizedgold20displayedStonenormalizedstoneTurnsuEnableTypeTurnOrderReverseSkipEmptyDisableInteractionsPassTurnsTurnColorWhiteCameraStatesK 01Position&xx@yz;2@Rotation&x@P@yzDistanceJ@ZoomedAbsolutePosition&x x@ymF@zu62Position&x0&yzy*.@Rotation&x R@y|v@zDistance B@ZoomedAbsolutePosition&x`&y?@z@P@3Position&xpG@yz` B@Rotation&xT@y:zDistance6@ZoomedAbsolutePosition&x`pG@y`3@z`@@ 4 5 6 7 8 9DecalPalletLuaScript-- supply marker quartzSupply_GUID = "d23bfd" oreSupply_GUID = "6e95f8" waterSupply_GUID = "dd9c28" energySupply_GUID = "dd3037" quartzPriceMgmt_GUID = "8724ee" orePriceMgmt_GUID = "ed93f9" waterPriceMgmt_GUID = "84df99" energyPriceMgmt_GUID = "da6799" -- players' banks orangeBank_GUID = "e6e3db" whiteBank_GUID = "6027f3" purpleBank_GUID = "cc843e" yellowBank_GUID = "40e519" greenBank_GUID = "574659" -- players' areas white_playerarea_guid = "15d66d" yellow_playerarea_guid = "d1817a" green_playerarea_guid = "37b0fe" purple_playerarea_guid = "a59ec5" orange_playerarea_guid = "1eb5d7" -- players' HTML code orange_htmlcode = "[F4641D]" white_htmlcode = "[FFFFFF]" purple_htmlcode = "[A020F0]" yellow_htmlcode = "[E7E52C]" green_htmlcode = "[00FF00]"LuaScriptStateXmlUIRSnapPoints.05Position&x@yph?zJ15Position&x@yph?z25Position&xG8yk?zd@35Position&xG8yk?z@45Position&xG8yk?z@@55Position&xG8yk?z@-@65Position&xG8yk?z@@75Position&xG8yk?z`z{"@85Position&xG8yk?z@$@95Position&xG8yk?z '@105Position&x`D8yk?zO*@115Position&x`D8yk?zv,@125Position&x`D8yk?z@/@135Position&x`D8yk?z 0@145Position&x`D8yk?z s2@155Position&x`D8yk?zD3@165Position&x`D8yk?z4@175Position&x`D8yk?z5@185Position&x`D8yk?z &7@195Position&x`D8yk?z@ k8@205Position&x@2yk?z@ k8@215Position&x@2yk?z &7@225Position&x@2yk?z5@235Position&x@2yk?z4@245Position&x@2yk?zD3@255Position&x@2yk?z s2@265Position&x@2yk?z 0@275Position&x@2yk?z@/@285Position&x@2yk?zv,@295Position&x@2yk?zO*@305Position&x2yk?z '@315Position&x2yk?z@$@325Position&x2yk?z`z{"@335Position&x2yk?z@@345Position&x2yk?z@-@355Position&x2yk?z@@365Position&x2yk?z@375Position&x2yk?zd@385Position&x7K*yk?zd@395Position&x7K*yk?z@405Position&x7K*yk?z@@415Position&x7K*yk?z@-@425Position&x7K*yk?z@@435Position&x7K*yk?z`z{"@445Position&x7K*yk?z@$@455Position&x7K*yk?z '@465Position&x`1/*yk?zO*@475Position&x`1/*yk?zv,@485Position&x`1/*yk?z@/@495Position&x`1/*yk?z 0@505Position&x`1/*yk?z s2@515Position&x`1/*yk?zD3@525Position&x`1/*yk?z4@535Position&x`1/*yk?z5@545Position&x`1/*yk?z &7@555Position&x`1/*yk?z@ k8@565Position&x`yk?zd@575Position&x`yk?z@585Position&x`yk?z@@595Position&x`yk?z@-@605Position&x`yk?z@@615Position&x`yk?z`z{"@625Position&x`yk?z@$@635Position&x`yk?z '@645Position&x`ӯyk?zO*@655Position&x`ӯyk?zv,@665Position&x`ӯyk?z@/@675Position&x`ӯyk?z 0@685Position&x`ӯyk?z s2@695Position&x`ӯyk?zD3@705Position&x`ӯyk?z4@715Position&x`ӯyk?z5@725Position&x`ӯyk?z &7@735Position&x`ӯyk?z@ k8@745Position&x6yk?zd@755Position&x6yk?z@765Position&x6yk?z@@775Position&x6yk?z@-@785Position&x6yk?z@@795Position&x6yk?z`z{"@805Position&x6yk?z@$@815Position&x6yk?z '@825Position&x`6yk?zO*@835Position&xyk?zd@845Position&xyk?z@855Position&xyk?z@@865Position&xyk?z@-@875Position&xyk?z@@885Position&xyk?z`z{"@895Position&xyk?z@$@905Position&xyk?z '@915Position&x༵yk?zO*@925Position&x༵yk?zv,@935Position&x༵yk?z@/@945Position&x༵yk?z 0@955Position&x༵yk?z s2@965Position&x༵yk?zD3@975Position&x༵yk?z4@985Position&x༵yk?z5@995Position&x༵yk?z &7@1005Position&x`%yk?zd@1015Position&x`%yk?z@1025Position&x`%yk?z@@1035Position&x`%yk?z@-@1045Position&x`%yk?z@@1055Position&x`%yk?z`z{"@1065Position&x`%yk?z@$@1075Position&x`%yk?z '@1085Position&x%yk?zO*@1095Position&x%yk?zv,@1105Position&x%yk?z@/@1115Position&x%yk?z 0@1125Position&x%yk?z s2@1135Position&x%yk?zD3@1145Position&x`10yk?zd@1155Position&x`10yk?z@1165Position&x`10yk?z@@1175Position&x`10yk?z@-@1185Position&x`10yk?z@@1195Position&x`10yk?z`z{"@1205Position&x`10yk?z@$@1215Position&x`10yk?z '@1225Position&x .0yk?zO*@1235Position&x .0yk?zv,@1245Position&x .0yk?z@/@1255Position&x .0yk?z 0@1265Position&x .0yk?z s2@1275Position&x .0yk?zD3@128ePosition&x9@yk?z7@Rotation&x6ؾyp@z >129ePosition&x9@yk?z>@Rotation&x4yp@z@c>130ePosition&x@t9@yk?zuB@Rotation&x 0>y@p@zk?131ePosition&x9@yk?zT0@Rotation&x@оyp@z>132ePosition&xf9@yk?z$@Rotation&x U>yp@z@HT>133ePosition&xf9@yk?zX @Rotation&xOھyp@z !>134ePosition&xp9@yk?zcr Rotation&xgy@p@z>135ePosition&x-6@yk?zA@Rotation&xeRy`rf@zf@136ePosition&x7c1@yk?zA@Rotation&x/y@`f@z f@137ePosition&xq)@yk?zA@Rotation&x`q"ھy(f@zf@138ePosition&x@yk?zA@Rotation&x"˾yrf@zf@139ePosition&x@1 @yk?zA@Rotation&x>yrf@zf@140ePosition&x1 @yk?z@,E=@Rotation&x Qݾy rf@zf@141ePosition&x@yk?z ,E=@Rotation&x`ozyrf@zf@142ePosition&xq)@yk?z@,E=@Rotation&x4Xyef@zf@143ePosition&x7c1@yk?z@,E=@Rotation&xXT>yof@zf@144ePosition&x-6@yk?z`,E=@Rotation&x@Pysf@zf@145ePosition&x-6@yk?z 6@Rotation&xT0>y`sf@zf@146ePosition&x7c1@yk?z 6@Rotation&xK>y`sf@zf@147ePosition&xq)@yk?z 6@Rotation&xysf@zf@148ePosition&x`@yk?z 6@Rotation&xD˵yqf@zf@149ePosition&x1 @yk?z 6@Rotation&x@ >yrf@z f@150ePosition&x@-6@yk?z ]/@Rotation&x@$ľy pf@zf@151ePosition&x@7c1@yk?z]/@Rotation&x`ꛆ>yuf@zf@152ePosition&x@q)@yk?z]/@Rotation&x>ytf@z f@153ePosition&x@yk?z^/@Rotation&x@rt>y@rf@zf@154ePosition&x 1 @yk?z ^/@Rotation&xSy@rf@zf@155ePosition&x`z1 @yk?z@n"@Rotation&x@>ywf@zf@156ePosition&x@~@yk?zm"@Rotation&xȾytf@zf@157ePosition&xq)@yk?z n"@Rotation&x}Dоy@rf@zf@158ePosition&x7c1@yk?z n"@Rotation&x}>yrf@zf@159ePosition&x-6@yk?z@n"@Rotation&x`>y sf@zf@160ePosition&x-6@yk?zT@Rotation&x>yf@zf@161ePosition&x7c1@yk?zS@Rotation&x;>y tf@zf@162ePosition&xq)@yk?zT@Rotation&xt>ypf@z f@163ePosition&x`~@yk?z U@Rotation&x`^Ǿytf@zf@164ePosition&x1 @yk?zT@Rotation&x`?>y pf@zf@165ePosition&x`>1 @yk?z0Rotation&xɾy uf@zf@166ePosition&x@~@yk?z`0Rotation&xQ%y?f@zf@167ePosition&xq)@yk?z0Rotation&x@>yqf@zf@168ePosition&x7c1@yk?z0Rotation&xξy f@zf@169ePosition&x-6@yk?z0Rotation&x@$>yuf@zf@1705Position&x@7yk?z>@1715Position&x1yk?z=@1725Position&x'yk?z.>@1735Position&x@) yk?z@V=@ObjectStates0]GUID6fc458Name HandTriggerTransformposX@posY@posZJrotXrotYrotZscaleX.@scaleY@scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsFogColorWhiteLuaScriptLuaScriptStateXmlUI1]GUID632438Name HandTriggerTransformposX`bOposY@posZJrotXrotYrotZscaleX.@scaleY@scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1rt?gn?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsFogColorGreenLuaScriptLuaScriptStateXmlUI2^GUIDaa3bdaName HandTriggerTransformposX@ 9posY@posZJrotXrotYrotZscaleX.@scaleY@scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r ?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsFogColorOrangeLuaScriptLuaScriptStateXmlUI3^GUID62e08eName HandTriggerTransformposX̜Q@posY@posZJrotXrotYrotZscaleX.@scaleY@scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?gj?b@?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsFogColorYellowLuaScriptLuaScriptStateXmlUI4^GUID3ffc54Name HandTriggerTransformposX)B@posY@posZJrotXrotYrotZscaleX.@scaleY@scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r@b?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsFogColorPurpleLuaScriptLuaScriptStateXmlUI5.GUIDafc863NameCustom_AssetbundleTransformposXRposY#posZBrotX>rotY@WrotZ@K$оscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI6.GUIDc8edcaNameCustom_AssetbundleTransformposXRposY#posZB@rotX>rotYV@rotZ@K$оscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI7.GUID393bf7NameCustom_AssetbundleTransformposXR@posY#posZB@rotX>rotYf@rotZ@K$оscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI8.GUID12c65eNameCustom_AssetbundleTransformposXR@posY#posZBrotX>rotYp@rotZ@K$оscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978795929/723C50F43FAB3DE3DC12CB8460536E8CB34B60A3/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI9CGUIDbd69bdNameChinese_Checkers_PieceTransformposX=V@posYQposZ@\MrotXb$_?rotYf@rotZ8?scaleXef?scaleYef?scaleZef?NicknameFlex Table ControlDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexLuaScript?tableHeightOffset = -9.5 function onSave() saved_data = JSON.encode({tid=tableImageData, cd=checkData}) --saved_data = "" return saved_data end function onload(saved_data) --Loads the tracking for if the game has started yet if saved_data ~= "" then local loaded_data = JSON.decode(saved_data) tableImageData = loaded_data.tid checkData = loaded_data.cd else tableImageData = {} checkData = {move=false, scale=false} end --Disables interactable status of objects with GUID in list for _, guid in ipairs(ref_noninteractable) do local obj = getObjectFromGUID(guid) if obj then obj.interactable = false end end --Establish references to table parts obj_leg1 = getObjectFromGUID("afc863") obj_leg2 = getObjectFromGUID("c8edca") obj_leg3 = getObjectFromGUID("393bf7") obj_leg4 = getObjectFromGUID("12c65e") obj_surface = getObjectFromGUID("4ee1f2") obj_side_top = getObjectFromGUID("35b95f") obj_side_bot = getObjectFromGUID("f938a2") obj_side_lef = getObjectFromGUID("9f95fd") obj_side_rig = getObjectFromGUID("5af8f2") controlActive = false createOpenCloseButton() end --Activation/deactivation of control panel --Activated by clicking on function click_toggleControl(_, color) if permissionCheck(color) then if not controlActive then --Activate control panel controlActive = true self.clearButtons() createOpenCloseButton() createSurfaceInput() createSurfaceButtons() createScaleInput() createScaleButtons() else --Deactivate control panel controlActive = false self.clearButtons() self.clearInputs() createOpenCloseButton() end end end --Table surface control --Changes table surface function click_applySurface(_, color) if permissionCheck(color) then updateSurface() broadcastToAll("New Table Image Applied", {0.2,0.9,0.2}) end end --Saves table surface function click_saveSurface(_, color) if permissionCheck(color) then local nickname = self.getInputs()[1].value local url = self.getInputs()[2].value if nickname == "" then --No nickname broadcastToAll("Please supply a nickname for this save.", {0.9,0.2,0.2}) else --Nickname exists if findInImageDataIndex(url, nickname) == nil then --Save doesn't exist already table.insert(tableImageData, {url=url, name=nickname}) broadcastToAll("Image URL saved to memory.", {0.2,0.9,0.2}) --Refresh buttons self.clearButtons() createOpenCloseButton() createSurfaceButtons() createScaleButtons() else --Save exists already broadcastToAll("Memory already contains a save with this Name or URL. Delete it first.", {0.9,0.2,0.2}) end end end end --Loads table surface function click_loadMemory(_, color, index) if permissionCheck(color) then self.editInput({index=0, value=tableImageData[index].name}) self.editInput({index=1, value=tableImageData[index].url}) updateSurface() broadcastToAll("Table Image Loaded", {0.2,0.9,0.2}) end end --Deletes table surface function click_deleteMemory(_, color, index) if permissionCheck(color) then table.remove(tableImageData, index) self.clearButtons() createOpenCloseButton() createSurfaceButtons() createScaleButtons() broadcastToAll("Element Removed from Memory", {0.2,0.9,0.2}) end end --Updates surface from the values in the input field function updateSurface() local customInfo = obj_surface.getCustomObject() customInfo.diffuse = self.getInputs()[2].value obj_surface.setCustomObject(customInfo) obj_surface = obj_surface.reload() end --Table Scale control --Applies Scale to table pieces function click_applyScale(_, color) if permissionCheck(color) then local newWidth = tonumber(self.getInputs()[3].value) local newDepth = tonumber(self.getInputs()[4].value) if type(newWidth) ~= "number" then broadcastToAll("Invalid Width", {0.9,0.2,0.2}) return elseif type(newDepth) ~= "number" then broadcastToAll("Invalid Depth", {0.9,0.2,0.2}) return elseif newWidth<0.1 or newDepth<0.1 then broadcastToAll("Scale cannot go below 0.1", {0.9,0.2,0.2}) return elseif newWidth>12 or newDepth>12 then broadcastToAll("Scale should not go over 12 (world size limitation)", {0.9,0.2,0.2}) return else changeTableScale(math.abs(newWidth), math.abs(newDepth)) broadcastToAll("Scale applied.", {0.2,0.9,0.2}) end end end --Checks/unchecks move box for hands function click_checkMove(_, color) if permissionCheck(color) then local find_func = function(o) return o.click_function=="click_checkMove" end if checkData.move == true then checkData.move = false local buttonEntry = findButton(self, find_func) self.editButton({index=buttonEntry.index, label=""}) else checkData.move = true local buttonEntry = findButton(self, find_func) self.editButton({index=buttonEntry.index, label=string.char(10008)}) end end end --Checks/unchecks scale box for hands --This button was disabled for technical reasons --[[ function click_checkScale(_, color) if permissionCheck(color) then local find_func = function(o) return o.click_function=="click_checkScale" end if checkData.scale == true then checkData.scale = false local buttonEntry = findButton(self, find_func) self.editButton({index=buttonEntry.index, label=""}) else checkData.scale = true local buttonEntry = findButton(self, find_func) self.editButton({index=buttonEntry.index, label=string.char(10008)}) end end end ]] --Alters scale of elements and moves them function changeTableScale(width, depth) --Scaling factors used to translate scale to position offset local width2pos = (width-1) * 18 local depth2pos = (depth-1) * 18 --Hand zone movement if checkData.move == true then for _, pc in ipairs(ref_playerColor) do if Player[pc].getHandCount() > 0 then moveHandZone(Player[pc], width2pos, depth2pos) end end end --Hand zone scaling --The button to enable this was disabled for technical reasons if checkData.scale == true then for _, pc in ipairs(ref_playerColor) do if Player[pc].getHandCount() > 0 then scaleHandZone(Player[pc], width, depth) end end end --Resizing table elements obj_side_top.setScale({width, 1, 1}) obj_side_bot.setScale({width, 1, 1}) obj_side_lef.setScale({depth, 1, 1}) obj_side_rig.setScale({depth, 1, 1}) obj_surface.setScale({width, 1, depth}) --Moving table elements to accomodate new scale obj_side_lef.setPosition({-width2pos,tableHeightOffset,0}) obj_side_rig.setPosition({ width2pos,tableHeightOffset,0}) obj_side_top.setPosition({0,tableHeightOffset, depth2pos}) obj_side_bot.setPosition({0,tableHeightOffset,-depth2pos}) obj_leg1.setPosition({-width2pos,tableHeightOffset,-depth2pos}) obj_leg2.setPosition({-width2pos,tableHeightOffset, depth2pos}) obj_leg3.setPosition({ width2pos,tableHeightOffset, depth2pos}) obj_leg4.setPosition({ width2pos,tableHeightOffset,-depth2pos}) self.setPosition(obj_leg4.positionToWorld({-22.12, 8.74,-19.16})) --Only enabled when changing tableHeightOffset obj_surface.setPosition({0,tableHeightOffset,0}) end --Move hand zone, p=player reference, facts are scaling factors function moveHandZone(p, width2pos, depth2pos) local widthX = obj_side_rig.getPosition().x local depthZ = obj_side_top.getPosition().z for i=1, p.getHandCount() do local handT = p.getHandTransform() local pos = handT.position local y = handT.rotation.y if y<45 or y>320 or y>135 and y<225 then if pos.z > 0 then pos.z = pos.z + depth2pos - depthZ else pos.z = pos.z - depth2pos + depthZ end else if pos.x > 0 then pos.x = pos.x + width2pos - widthX else pos.x = pos.x - width2pos + widthX end end --Only enabled when changing tableHeightOffset --pos.y = tableHeightOffset + 14 handT.position = pos p.setHandTransform(handT, i) end end ---Scales hand zones, p=player reference, facts are scaling factors function scaleHandZone(p, width, depth) local widthFact = width / obj_side_top.getScale().x local depthFact = depth / obj_side_lef.getScale().x for i=1, p.getHandCount() do local handT = p.getHandTransform() local scale = handT.scale local y = handT.rotation.y if y<45 or y>320 or y>135 and y<225 then scale.x = scale.x * widthFact else scale.x = scale.x * depthFact end handT.scale = scale p.setHandTransform(handT, i) end end --Information gathering --Checks if a color is promoted or host function permissionCheck(color) if Player[color].host==true or Player[color].promoted==true then return true else return false end end --Locates a string saved within memory file function findInImageDataIndex(...) for _, str in ipairs({...}) do for i, v in ipairs(tableImageData) do if v.url == str or v.name == str then return i end end end return nil end --Round number (num) to the Nth decimal (dec) function round(num, dec) local mult = 10^(dec or 0) return math.floor(num * mult + 0.5) / mult end --Locates a button with a helper function function findButton(obj, func) if func==nil then error("No func supplied to findButton") end for _, v in ipairs(obj.getButtons()) do if func(v) then return v end end return nil end --Creation of buttons/inputs function createOpenCloseButton() local tooltip = "Open Table Control Panel" if controlActive then tooltip = "Close Table Control Panel" end self.createButton({ click_function="click_toggleControl", function_owner=self, position={0,0,0}, rotation={-45,0,0}, height=400, width=400, color={1,1,1,0}, tooltip=tooltip }) end function createSurfaceInput() local currentURL = obj_surface.getCustomObject().diffuse local nickname = "" if findInImageDataIndex(currentURL) ~= nil then nickname = tableImageData[findInImageDataIndex(currentURL)].name end self.createInput({ label="Nickname", input_function="none", function_owner=self, alignment=3, position={0,0,2}, height=224, width=4000, font_size=200, tooltip="Enter nickname for table image (only used for save)", value=nickname }) self.createInput({ label="URL", input_function="none", function_owner=self, alignment=3, position={0,0,3}, height=224, width=4000, font_size=200, tooltip="Enter URL for tabletop image", value=currentURL }) end function createSurfaceButtons() --Label self.createButton({ label="Tabletop Surface Image", click_function="none", position={0,0,1}, height=0, width=0, font_size=300, font_color={1,1,1} }) --Functional self.createButton({ label="Apply Image\nTo Table", click_function="click_applySurface", function_owner=self, tooltip="Apply URL as table image", position={2,0,4}, height=440, width=1400, font_size=200, }) self.createButton({ label="Save Image\nTo Memory", click_function="click_saveSurface", function_owner=self, tooltip="Record URL into memory (requires nickname)", position={-2,0,4}, height=440, width=1400, font_size=200, }) --Label self.createButton({ label="Load From Memory", click_function="none", position={0,0,5.5}, height=0, width=0, font_size=300, font_color={1,1,1} }) --Saves, created dynamically from memory file for i, memoryEntry in ipairs(tableImageData) do --Load local funcName = i.."loadMemory" local func = function(x,y) click_loadMemory(x,y,i) end self.setVar(funcName, func) self.createButton({ label=memoryEntry.name, click_function=funcName, function_owner=self, tooltip=memoryEntry.url, font_size=200, position={-0.6,0,6.5+0.5*(i-1)}, height=240, width=3300, }) --Delete local funcName = i.."deleteMemory" local func = function(x,y) click_deleteMemory(x,y,i) end self.setVar(funcName, func) self.createButton({ label="DELETE", click_function=funcName, function_owner=self, tooltip="", position={3.6,0,6.5+0.5*(i-1)}, height=240, width=600, font_size=160, font_color={1,0,0}, color={0.8,0.8,0.8} }) end end function createScaleInput() self.createInput({ label=string.char(8644), input_function="none", function_owner=self, alignment=3, position={-8.5,0,2}, height=224, width=400, font_size=200, tooltip="Table Width", value=round(obj_side_top.getScale().x, 1) }) self.createInput({ label=string.char(8645), input_function="none", function_owner=self, alignment=3, position={-7.5,0,2}, height=224, width=400, font_size=200, tooltip="Table Depth", value=round(obj_side_lef.getScale().x, 1) }) end function createScaleButtons() --Labels self.createButton({ label="Table Scale", click_function="none", position={-8,0,1}, height=0, width=0, font_size=300, font_color={1,1,1} }) self.createButton({ label=string.char(8644).." "..string.char(8645), click_function="none", position={-8,0,2}, height=0, width=0, font_size=300, font_color={1,1,1} }) self.createButton({ label="Move Hands:", click_function="none", position={-8.3,0,3}, height=0, width=0, font_size=200, font_color={1,1,1} }) --Disabled due to me removing the feature for technical reasons --[[ self.createButton({ label="Scale Hands:", click_function="none", position={-8.3,0,4}, height=0, width=0, font_size=200, font_color={1,1,1} }) ]] --Checkboxes local label = "" if checkData.move == true then label = string.char(10008) end self.createButton({ label=label, click_function="click_checkMove", function_owner=self, tooltip="Check to move hands when table is rescaled", position={-6.8,0,3}, height=224, width=224, font_size=200, }) --[[ local label = "" if checkData.scale == true then label = string.char(10008) end self.createButton({ label=label, click_function="click_checkScale", function_owner=self, tooltip="Check to scale the width of hands when table is rescaled", position={-6.8,0,4}, height=224, width=224, font_size=200, }) ]] --Apply button self.createButton({ label="Apply Scale", click_function="click_applyScale", function_owner=self, tooltip="Apply width/depth to table", position={-8,0,4}, height=440, width=1400, font_size=200, }) end --Data tables ref_noninteractable = { "afc863","c8edca","393bf7","12c65e","f938a2","9f95fd","35b95f", "5af8f2","4ee1f2","bd69bd" } ref_playerColor = { "White", "Brown", "Red", "Orange", "Yellow", "Green", "Teal", "Blue", "Purple", "Pink", "Black" } --Dummy function, absorbs unwanted triggers function none() endLuaScriptState{"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"}]}XmlUI10.GUIDf938a2NameCustom_AssetbundleTransformposXposY#posZBrotX ܥ<rotYrotZscaleX@scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI11.GUID9f95fdNameCustom_AssetbundleTransformposXRposY#posZrotXrotYV@rotZscaleX@scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI12.GUID35b95fNameCustom_AssetbundleTransformposXposY#posZB@rotX ܥ<rotYf@rotZscaleX@scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI13.GUID5af8f2NameCustom_AssetbundleTransformposXR@posY#posZrotXrotYp@rotZscaleX@scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLehttp://cloud-3.steamusercontent.com/ugc/879750610978796471/14ED0DBD593370733A0309B0950004F33EB9FACA/AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScriptLuaScriptStateXmlUI14 GUID2b1273Name Custom_TokenTransformposXSposYM?posZ4@rotX`ArotYf@rotZ@scaleX.@scaleY?scaleZ.@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847862702/BAF8B427C294AC4DB372FE1B46B39FB923A39519/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScript2function onLoad() self.interactable = false endLuaScriptStateXmlUIAttachedSnapPoints05Position&xॴ?y?z.15Position&xWQ?y?z 225Position&x?y?z঻35Position&x`Qj?y?z*45Position&x+?y?z@55Position&x/X?y?z@î65Position&x`< ?y?z@75Position&x?y?z8ePosition&x_]y?zRotation&x@&>y`v@z+9ePosition&xby?zeRotation&xO$yv@z/Y10ePosition&x@"y?zRotation&xy@v@z 11ePosition&x 5y?zRotation&x V"y v@z@RJ12ePosition&x@y?z`Rotation&x y20ePosition&x?y?zRotation&xy@v@z@B?21ePosition&xzz?y?z`wRotation&x@!M?yv@z22ePosition&x+?y?zRotation&x@0>y'\zߍ15jGUIDa4ce38Name Custom_TokenTransformposX<posY ?posZ`C@rotX>rotY Pf@rotZMTscaleX?scaleY?scaleZ?Nickname Round MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847954753/07FBD0DB91962324902479BF26E5958EF6DF76BD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI16pGUIDbb71bcName Custom_TokenTransformposXposY?posZ!F@rotX`wurotYf@rotZ1>scaleX?scaleY?scaleZ?NicknameTank Supply MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847956834/FADED5C454172C6E6AF6ED5BA9D5BCB87DB6D7DF/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI17GUID2abb12NameCustom_Model_Infinite_BagTransformposX`iposY`}?posZ8%rotX=>rotYnf@rotZ ǢscaleXTK?scaleY@(r?scaleZƙ @Nickname1 Energy TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsl0dGUID1ce8a2Name Custom_TokenTransformposX#posY?posZ`xrotXMyrotY '?rotZT>scaleX?scaleY?scaleZ?NicknameEnergyDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847978569/9BB3E54011ABAC308F717CEC1FCE2AE2652B0BAD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjects0GUIDac6a40NameCustom_Model_BagTransformposXposYposZrotX H!*=rotY"ӾrotZ e|5scaleX ~?scaleY?scaleZ@?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexNumberCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsBagOrderLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID3acc83Name Custom_TokenTransformposX=posY (GO=posZ`予>rotX;rotY -rotZ ܥ\=scaleX 8?scaleY @scaleZ`?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847978569/9BB3E54011ABAC308F717CEC1FCE2AE2652B0BAD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI18h GUID1af6c7NameCustom_Model_Infinite_BagTransformposX=c+posY?posZ@6&rotXDڤ>rotYf@rotZ'>scaleX[?scaleY ?scaleZ4@Nickname1 Water TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsk0cGUID425bf1Name Custom_TokenTransformposX1(posY?posZGrotX /?rotY5`f?rotZv@scaleX?scaleY?scaleZ?NicknameWaterDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847980670/50C2E8F8C2916FDE709DEF9870207B306487BEA2/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID799d54Name Custom_TokenTransformposXrposYz=posZ`au?rotXrotY_>rotZ ܥ,scaleX?scaleY@scaleZn?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847980670/50C2E8F8C2916FDE709DEF9870207B306487BEA2/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI19j GUIDeb46a8NameCustom_Model_Infinite_BagTransformposX`5:posY?posZE&rotXhwrotYf@rotZɼ>scaleXN@scaleY?scaleZ`@Nickname1 Quartz TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsl0dGUIDba03d8Name Custom_TokenTransformposXg7posY ^?posZnrotX vbp?rotY ?rotZEascaleX?scaleY?scaleZ?NicknameQuartzDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847980035/58683EBFFD81CF572F159864FF645EB4077478D5/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDad30eaName Custom_TokenTransformposX`cG>posYQposZu?rotX#0=rotYBҾrotZ ܥ,scaleX@O`?scaleY @scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847980035/58683EBFFD81CF572F159864FF645EB4077478D5/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI20d GUID199593NameCustom_Model_Infinite_BagTransformposX@3posY?posZI6&rotX9ÌrotYf@rotZ@>scaleXg?scaleYM?scaleZ@y@Nickname 1 Ore TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsi0aGUIDf53561Name Custom_TokenTransformposX2posYb?posZrotX`.v@rotY}v@rotZ@η?scaleX?scaleY?scaleZ?NicknameOreDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847979388/1FBF5ECB8466C5FF1868778E5AE6ACE255F26BC4/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDf16e93Name Custom_TokenTransformposXposYposZrotX !=rotY >rotZ ܥ\=scaleX@Ȱ?scaleY@@scaleZC?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847979388/1FBF5ECB8466C5FF1868778E5AE6ACE255F26BC4/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI21l GUID935105NameCustom_Model_Infinite_BagTransformposXC7posY?posZ#rotX7>rotY`f@rotZ`scaleXN@scaleY`?scaleZ`@Nickname5 Quartz TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsn0fGUID151d96Name Custom_TokenTransformposXtt9posYo?posZ rotX *p>rotY@NIv@rotZ`7JҾscaleX?scaleY?scaleZ?Nickname 5 QuartzDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847985154/49546967714AFD8A0E2503455B46E15B0403DEAF/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID3fff72Name Custom_TokenTransformposX m>posY/posZu?rotX$VrotY>rotZ e|e=scaleX@O`?scaleY@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847985154/49546967714AFD8A0E2503455B46E15B0403DEAF/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI22l GUID355032NameCustom_Model_Infinite_BagTransformposX ,posY?posZR#rotX̵rotY@f@rotZyscaleX|?scaleY ;?scaleZ;@Nickname5 Energy TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsn0fGUIDed19dcName Custom_TokenTransformposXposY n?posZXrotX XN@rotYѽ?rotZ@$@scaleX?scaleY?scaleZ?Nickname 5 EnergyDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847982548/C19D5221BD1BE607ED572FB63EF5A67FE62E18EB/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID80634bName Custom_TokenTransformposXposYposZrotX]=rotYxrotZ<;lscaleXj_?scaleY @scaleZB?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847982548/C19D5221BD1BE607ED572FB63EF5A67FE62E18EB/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI23j GUID1f76a3NameCustom_Model_Infinite_BagTransformposX@UC&posY`?posZ$#rotX 6>rotY"f@rotZscaleXk/?scaleY Ѷ?scaleZ@Nickname5 Water TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsm0eGUID520cecName Custom_TokenTransformposXY*posY?posZ`rotXԊProtY vrotZv@scaleX?scaleY?scaleZ?Nickname5 WaterDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847985622/957C7B1122142079807D67791580A86191CC485E/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDde7a94Name Custom_TokenTransformposX@M>posY ۧposZa`?rotX`HjrotYþrotZ;scaleX&?scaleY @scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847985622/957C7B1122142079807D67791580A86191CC485E/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI24g GUID211c8aNameCustom_Model_Infinite_BagTransformposX0posYz?posZ b#rotX%>rotY`Mf@rotZscaleX?scaleY`?scaleZ`'@@Nickname5 Ore MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsk0cGUID01ebbfName Custom_TokenTransformposXj3posY?posZ@$rotXf7rotYp rotZZscaleX?scaleY?scaleZ?Nickname5 OreDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847983878/D379E04D145EACAD89D4EF807DAFE15952D0E9BB/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID258b3dName Custom_TokenTransformposX*$posYposZ6?!rotXNrotYrotZe;scaleX@m?scaleY@scaleZ@ԉ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847983878/D379E04D145EACAD89D4EF807DAFE15952D0E9BB/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI25z GUIDb43b9cNameCustom_Model_Infinite_BagTransformposX\@posY?posZAArotX `a>rotYf@rotZ`nzc>scaleXU> @scaleYm?scaleZU> @NicknameWhite Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsx0pGUID2e7910Name Custom_TokenTransformposX@P@posY`?posZ {cDrotXv@rotY\|?rotZYr[scaleX?scaleY?scaleZ?NicknameWhite Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847921015/583D54B1EF9800257F32B9023A2C1C275E0CCCF1/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDb84461Name Custom_TokenTransformposXposYposZrotX@ irotYJhFrotZQt:scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847921015/583D54B1EF9800257F32B9023A2C1C275E0CCCF1/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI26z GUID9f9500NameCustom_Model_Infinite_BagTransformposXsOposY?posZ^(ArotXɞrotY@f@rotZO>scaleXU> @scaleYm?scaleZU> @NicknameGreen Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsx0pGUID4deba1Name Custom_TokenTransformposX POposY`?posZDrotX8?rotY`BGrotZ?scaleX?scaleY?scaleZ?NicknameGreen Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847935740/072E5B5BD3030CEF0D7DC69A0C2343E3D2DBE28B/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID4deba1Name Custom_TokenTransformposXposYposZrotXd`rotYUa rotZ g":scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847935740/072E5B5BD3030CEF0D7DC69A0C2343E3D2DBE28B/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI27| GUID0c898cNameCustom_Model_Infinite_BagTransformposXn:posY?posZ@:ArotXHQ>rotYf@rotZ`scaleXV> @scaleYn?scaleZ@U> @NicknameOrange Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsy0qGUIDab2badName Custom_TokenTransformposX@:posY?posZ0DrotX_rotYv@rotZ@6ascaleX?scaleY?scaleZ?NicknameOrange Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847908212/9813DE33EBA9778C27AB0C5850925C0AF3D36D0E/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDab2badName Custom_TokenTransformposXposYposZrotXH<rotY@ª>rotZ?@;scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847908212/9813DE33EBA9778C27AB0C5850925C0AF3D36D0E/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI28| GUID0e1c5eNameCustom_Model_Infinite_BagTransformposX@B@posY?posZ nArotX`rotYf@rotZrSscaleXU> @scaleYm?scaleZU> @NicknamePurple Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsy0qGUID79062aName Custom_TokenTransformposXΈB@posY?posZCrotX>?rotYO?rotZ *?scaleX?scaleY?scaleZ?NicknamePurple Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847939214/BAA005D243565B99D6ED6B26090ED4599363EB3D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID8b0d84Name Custom_TokenTransformposXposYposZrotX$ƒ<rotYEA>rotZW|h:scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847939214/BAA005D243565B99D6ED6B26090ED4599363EB3D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI29| GUIDaf0532NameCustom_Model_Infinite_BagTransformposXuQ@posY ?posZ HArotX>rotY`f@rotZ cscaleXU> @scaleYm?scaleZU> @NicknameYellow Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsy0qGUID552119Name Custom_TokenTransformposXQ@posY`?posZDrotXr:?rotYO,?rotZ ?scaleX?scaleY?scaleZ?NicknameYellow Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847953060/41A786E9FE0DF38B4FE0EDBA963F3DEC0B835CCD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDd0bcf3Name Custom_TokenTransformposXposYposZrotX i-<rotYa:>rotZ ]:scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847953060/41A786E9FE0DF38B4FE0EDBA963F3DEC0B835CCD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI30 GUID6a8bbbNameBagTransformposX5posY`|?posZH@rotX 2rotY vf@rotZ>scaleX?scaleY?scaleZ?Nickname 2 playerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gu?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexBagOrderLuaScriptLuaScriptStateXmlUIContainedObjects30GUIDd3766dNameCardTransformposX@'KposYv@posZ`wo1@rotX`hkv@rotY f@rotZsSf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUID1ff8d0NameCardTransformposX JposY8J@posZ`wo1@rotX>rotYf@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI31Q GUIDae5fdcNameBagTransformposX%posY|?posZH@rotX=rotY`vf@rotZ@+vscaleX?scaleY?scaleZ?Nickname 3 playerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gu?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexBagOrderLuaScriptLuaScriptStateXmlUIContainedObjects 0GUIDd2d90dNameCardTransformposX ƏP@posY?posZ@6I@rotXԑ>rotYf@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUID480384NameCardTransformposXIJposYo@posZ@'p*@rotXjv@rotYf@rotZ@f@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI2GUIDc57c9aNameCardTransformposX 4 @posY`@posZo-I@rotX`~v@rotYf@rotZwf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI32GUID1c0df1NameBagTransformposX@posY|?posZ@H@rotXrotYvf@rotZ@}>scaleX?scaleY?scaleZ?Nickname 4 playerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gu?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexBagOrderLuaScriptLuaScriptStateXmlUIContainedObjectsa0GUID0fbddeNameCardTransformposXKposY 0@posZ ̆@rotXHxv@rotY f@rotZ`ef@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUID5c3d15NameCardTransformposX@%HposY/J@posZ @rotXִrotYf@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI2GUIDac3149NameCardTransformposXFposY/J@posZ !@rotXsrrotYf@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUIDdfdd4aNameCardTransformposX posY@o@posZ9I@rotX 6v@rotYf@rotZ`{f@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI33GUIDfe854eNameBagTransformposX4@posY|?posZH@rotX@ٿƽrotYuf@rotZ@H(>scaleX?scaleY?scaleZ?Nickname 5 playerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gu?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexBagOrderLuaScriptLuaScriptStateXmlUIContainedObjects0GUIDdbbfacNameCardTransformposXJposY@posZ`Rm @rotXs@rotYf@rotZIf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUID858826NameCardTransformposXSIposY d?posZ@h @rotX@#>rotY f@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI2GUIDf6969bNameCardTransformposXGposY ?posZ{@rotX6rotY f@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID69b09cNameCardTransformposXsEposY?posZ @rotX T;>rotYf@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID3f7fcfNameCardTransformposX`BposY?posZ&@rotX``>rotY f@rotZf@scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789063/FB63154636E1FB1C5B74051802EF1AAB3569DC4D/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848789394/F97FAFBEFCFB136E2D5EC78107957D1CF10460F6/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI34GUID06fc44NameCardTransformposX?posY?posZ`k@rotXd>rotYf@rotZ&q>scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDuSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI35GUIDf4494cNameCardTransformposX`?posY?posZW$@rotX 3brotY@f@rotZb>scaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDtSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI36~GUID958bbeNameBagTransformposX@SposY|?posZIG@rotX뾚rotYB?rotZ >scaleX?scaleY?scaleZ?NicknameTrashDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gu?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexNumberBagOrderLuaScriptLuaScriptStateXmlUI37GUIDcd7c49Name Custom_PDFTransformposX H@posY`qh?posZ@ A@rotX`9+>rotYf@rotZtQscaleX@scaleY?scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomPDFPDFUrlfhttp://cloud-3.steamusercontent.com/ugc/1772750226848827903/F217B00C862E5BBE3F0CEA91115C042C97495DC1/PDFPasswordPDFPagePDFPageOffsetLuaScriptLuaScriptStateXmlUI38[!GUIDc9b2cfName Custom_TileTransformposX`8yQ@posYph?posZ`L<rotX^rotY`f@rotZ5scaleX~?scaleY?scaleZ > @NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r4?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLehttp://cloud-3.steamusercontent.com/ugc/929298999082023678/9E0A42944FEAD1895A84D5246199D4A93761E9B7/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness`?StackableStretchLuaScriptvalue = 0 ges = 0 xxx = 0 buttons = {} local button_value = {} button_value.index = 1 button_value.click_function = 'doNothing' button_value.function_owner = self button_value.label = value button_value.position = {0, 0.2, - 0.4} button_value.width = 500 button_value.height = 100 button_value.font_size = 120 table.insert(buttons, button_value) local button_ges = {} button_value.index = 1 button_ges.click_function = 'doNothing' button_ges.function_owner = self button_ges.label = ges button_ges.position = {0, 0.2, - 0.75} button_ges.width = 700 button_ges.height = 200 button_ges.font_size = 180 table.insert(buttons, button_ges) local button_minus = {} button_minus.click_function = 'minus' button_minus.function_owner = self button_minus.label = '-' button_minus.position = { - 0.7, 0.2, - 0.4} button_minus.width = 150 button_minus.height = 150 button_minus.font_size = 130 table.insert(buttons, button_minus) local button_plus = {} button_plus.click_function = 'plus' button_plus.function_owner = self button_plus.label = '+' button_plus.position = {0.7, 0.2, - 0.4} button_plus.width = 150 button_plus.height = 150 button_plus.font_size = 120 table.insert(buttons, button_plus) local button_reset = {} button_reset.click_function = 'reset' button_reset.function_owner = self button_reset.label = 'R' button_reset.position = {0.5, 0.2, 0.8} button_reset.width = 240 button_reset.height = 140 button_reset.font_size = 120 button_reset.tooltip = 'Resets the number you are currently trying to add.' table.insert(buttons, button_reset) local button_reset = {} button_reset.click_function = 'resetall' button_reset.function_owner = self button_reset.label = 'Reset' button_reset.tooltip = 'Resets the calculator fully.' button_reset.position = {0.8, 0.2, - 0.9} button_reset.width = 100 button_reset.height = 50 button_reset.font_size = 30 table.insert(buttons, button_reset) local button_x1 = {} button_x1.click_function = 'x1' button_x1.function_owner = self button_x1.label = '1' button_x1.position = { - 0.5, 0.2, - 0.1} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x4' button_x1.function_owner = self button_x1.label = '4' button_x1.position = { - 0.5, 0.2, 0.2} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x7' button_x1.function_owner = self button_x1.label = '7' button_x1.position = { - 0.5, 0.2, 0.5} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x10 = {} button_x10.click_function = 'x2' button_x10.function_owner = self button_x10.label = '2' button_x10.position = {0, 0.2, - 0.1} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x10 = {} button_x10.click_function = 'x5' button_x10.function_owner = self button_x10.label = '5' button_x10.position = {0, 0.2, 0.2} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x100 = {} button_x100.click_function = 'x3' button_x100.function_owner = self button_x100.label = '3' button_x100.position = {0.5, 0.2, - 0.1} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x6' button_x100.function_owner = self button_x100.label = '6' button_x100.position = {0.5, 0.2, 0.2} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x8' button_x100.function_owner = self button_x100.label = '8' button_x100.position = {0, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x9' button_x100.function_owner = self button_x100.label = '9' button_x100.position = {0.5, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x0' button_x100.function_owner = self button_x100.label = '0' button_x100.position = {0, 0.2, 0.8} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_reveal = {} button_reveal.click_function = 'reveal' button_reveal.function_owner = self button_reveal.label = 'Hide' button_reveal.position = { - 0.8, 0.2, 0.9} button_reveal.width = 160 button_reveal.height = 60 button_reveal.font_size = 60 button_reveal.color = {0.83, 0, 0, 1} button_reveal.tooltip = 'Shows/hides the calculator to other players.' table.insert(buttons, button_reveal) function doNothing() end function returned_ges(bob) return ges end function import_ges(my_ges) ges = my_ges button_ges.label = my_ges self.editButton(button_ges) end function updateges() button_ges.label = ges self.editButton(button_ges) end function updatexxx() button_xxx.label = x self.editButton(button_xxx) end function updatevalue() button_value.label = value self.editButton(button_value) end reveals = true function reveal(a, player) local tbl = getSeatedPlayers() for i, v in pairs(tbl) do if v == player then table.remove(tbl, i) end end if not reveals then reveals = true self.setInvisibleTo() self.editButton({index = 16, label = "Hide", color = {0.83, 0, 0, 1} }) else reveals = false self.setInvisibleTo(tbl) self.editButton({index = 16, label = "Show", color = {0.349, 0.874, 0.2, 1} }) end end function reset() value = 0 updatevalue() end function resetall() ges = 0 updateges() reset() end function plus() ges = ges + value updateges() reset() end function minus() ges = ges - value updateges() reset() end function x0() value = (value * 10) + 0 updatevalue() end function x1() value = (value * 10) + 1 updatevalue() end function x2() value = (value * 10) + 2 updatevalue() end function x3() value = (value * 10) + 3 updatevalue() end function x4() value = (value * 10) + 4 updatevalue() end function x5() value = (value * 10) + 5 updatevalue() end function x6() value = (value * 10) + 6 updatevalue() end function x7() value = (value * 10) + 7 updatevalue() end function x8() value = (value * 10) + 8 updatevalue() end function x9() value = (value * 10) + 9 updatevalue() end tbl_encoded = {} function onLoad(tbl_encoded) tbl_encoded = JSON.decode(tbl_encoded) if (tbl_encoded) and tbl_encoded.ges ~= nil then ges = tbl_encoded.ges value = tbl_encoded.value reveals = tbl_encoded.reveals end for _, button in ipairs(buttons) do self.createButton(button) end updatevalue() updateges() return true end function onSave() tbl_encoded = {} tbl_encoded.ges = ges tbl_encoded.value = value tbl_encoded.reveals = reveals return JSON.encode(tbl_encoded) endLuaScriptState%{"ges":100,"reveals":true,"value":0}XmlUI39[!GUIDdd3901Name Custom_TileTransformposXB@posYqh?posZ`=rotX".>rotYf@rotZ`>scaleX~?scaleY?scaleZ > @NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r4?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLehttp://cloud-3.steamusercontent.com/ugc/929298999082023678/9E0A42944FEAD1895A84D5246199D4A93761E9B7/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness`?StackableStretchLuaScriptvalue = 0 ges = 0 xxx = 0 buttons = {} local button_value = {} button_value.index = 1 button_value.click_function = 'doNothing' button_value.function_owner = self button_value.label = value button_value.position = {0, 0.2, - 0.4} button_value.width = 500 button_value.height = 100 button_value.font_size = 120 table.insert(buttons, button_value) local button_ges = {} button_value.index = 1 button_ges.click_function = 'doNothing' button_ges.function_owner = self button_ges.label = ges button_ges.position = {0, 0.2, - 0.75} button_ges.width = 700 button_ges.height = 200 button_ges.font_size = 180 table.insert(buttons, button_ges) local button_minus = {} button_minus.click_function = 'minus' button_minus.function_owner = self button_minus.label = '-' button_minus.position = { - 0.7, 0.2, - 0.4} button_minus.width = 150 button_minus.height = 150 button_minus.font_size = 130 table.insert(buttons, button_minus) local button_plus = {} button_plus.click_function = 'plus' button_plus.function_owner = self button_plus.label = '+' button_plus.position = {0.7, 0.2, - 0.4} button_plus.width = 150 button_plus.height = 150 button_plus.font_size = 120 table.insert(buttons, button_plus) local button_reset = {} button_reset.click_function = 'reset' button_reset.function_owner = self button_reset.label = 'R' button_reset.position = {0.5, 0.2, 0.8} button_reset.width = 240 button_reset.height = 140 button_reset.font_size = 120 button_reset.tooltip = 'Resets the number you are currently trying to add.' table.insert(buttons, button_reset) local button_reset = {} button_reset.click_function = 'resetall' button_reset.function_owner = self button_reset.label = 'Reset' button_reset.tooltip = 'Resets the calculator fully.' button_reset.position = {0.8, 0.2, - 0.9} button_reset.width = 100 button_reset.height = 50 button_reset.font_size = 30 table.insert(buttons, button_reset) local button_x1 = {} button_x1.click_function = 'x1' button_x1.function_owner = self button_x1.label = '1' button_x1.position = { - 0.5, 0.2, - 0.1} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x4' button_x1.function_owner = self button_x1.label = '4' button_x1.position = { - 0.5, 0.2, 0.2} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x7' button_x1.function_owner = self button_x1.label = '7' button_x1.position = { - 0.5, 0.2, 0.5} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x10 = {} button_x10.click_function = 'x2' button_x10.function_owner = self button_x10.label = '2' button_x10.position = {0, 0.2, - 0.1} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x10 = {} button_x10.click_function = 'x5' button_x10.function_owner = self button_x10.label = '5' button_x10.position = {0, 0.2, 0.2} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x100 = {} button_x100.click_function = 'x3' button_x100.function_owner = self button_x100.label = '3' button_x100.position = {0.5, 0.2, - 0.1} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x6' button_x100.function_owner = self button_x100.label = '6' button_x100.position = {0.5, 0.2, 0.2} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x8' button_x100.function_owner = self button_x100.label = '8' button_x100.position = {0, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x9' button_x100.function_owner = self button_x100.label = '9' button_x100.position = {0.5, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x0' button_x100.function_owner = self button_x100.label = '0' button_x100.position = {0, 0.2, 0.8} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_reveal = {} button_reveal.click_function = 'reveal' button_reveal.function_owner = self button_reveal.label = 'Hide' button_reveal.position = { - 0.8, 0.2, 0.9} button_reveal.width = 160 button_reveal.height = 60 button_reveal.font_size = 60 button_reveal.color = {0.83, 0, 0, 1} button_reveal.tooltip = 'Shows/hides the calculator to other players.' table.insert(buttons, button_reveal) function doNothing() end function returned_ges(bob) return ges end function import_ges(my_ges) ges = my_ges button_ges.label = my_ges self.editButton(button_ges) end function updateges() button_ges.label = ges self.editButton(button_ges) end function updatexxx() button_xxx.label = x self.editButton(button_xxx) end function updatevalue() button_value.label = value self.editButton(button_value) end reveals = true function reveal(a, player) local tbl = getSeatedPlayers() for i, v in pairs(tbl) do if v == player then table.remove(tbl, i) end end if not reveals then reveals = true self.setInvisibleTo() self.editButton({index = 16, label = "Hide", color = {0.83, 0, 0, 1} }) else reveals = false self.setInvisibleTo(tbl) self.editButton({index = 16, label = "Show", color = {0.349, 0.874, 0.2, 1} }) end end function reset() value = 0 updatevalue() end function resetall() ges = 0 updateges() reset() end function plus() ges = ges + value updateges() reset() end function minus() ges = ges - value updateges() reset() end function x0() value = (value * 10) + 0 updatevalue() end function x1() value = (value * 10) + 1 updatevalue() end function x2() value = (value * 10) + 2 updatevalue() end function x3() value = (value * 10) + 3 updatevalue() end function x4() value = (value * 10) + 4 updatevalue() end function x5() value = (value * 10) + 5 updatevalue() end function x6() value = (value * 10) + 6 updatevalue() end function x7() value = (value * 10) + 7 updatevalue() end function x8() value = (value * 10) + 8 updatevalue() end function x9() value = (value * 10) + 9 updatevalue() end tbl_encoded = {} function onLoad(tbl_encoded) tbl_encoded = JSON.decode(tbl_encoded) if (tbl_encoded) and tbl_encoded.ges ~= nil then ges = tbl_encoded.ges value = tbl_encoded.value reveals = tbl_encoded.reveals end for _, button in ipairs(buttons) do self.createButton(button) end updatevalue() updateges() return true end function onSave() tbl_encoded = {} tbl_encoded.ges = ges tbl_encoded.value = value tbl_encoded.reveals = reveals return JSON.encode(tbl_encoded) endLuaScriptState%{"ges":100,"reveals":true,"value":0}XmlUI40[!GUID5135a4Name Custom_TileTransformposX@posY`qh?posZ=rotX$ProtYf@rotZ _vscaleX~?scaleY?scaleZ > @NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r4?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLehttp://cloud-3.steamusercontent.com/ugc/929298999082023678/9E0A42944FEAD1895A84D5246199D4A93761E9B7/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness`?StackableStretchLuaScriptvalue = 0 ges = 0 xxx = 0 buttons = {} local button_value = {} button_value.index = 1 button_value.click_function = 'doNothing' button_value.function_owner = self button_value.label = value button_value.position = {0, 0.2, - 0.4} button_value.width = 500 button_value.height = 100 button_value.font_size = 120 table.insert(buttons, button_value) local button_ges = {} button_value.index = 1 button_ges.click_function = 'doNothing' button_ges.function_owner = self button_ges.label = ges button_ges.position = {0, 0.2, - 0.75} button_ges.width = 700 button_ges.height = 200 button_ges.font_size = 180 table.insert(buttons, button_ges) local button_minus = {} button_minus.click_function = 'minus' button_minus.function_owner = self button_minus.label = '-' button_minus.position = { - 0.7, 0.2, - 0.4} button_minus.width = 150 button_minus.height = 150 button_minus.font_size = 130 table.insert(buttons, button_minus) local button_plus = {} button_plus.click_function = 'plus' button_plus.function_owner = self button_plus.label = '+' button_plus.position = {0.7, 0.2, - 0.4} button_plus.width = 150 button_plus.height = 150 button_plus.font_size = 120 table.insert(buttons, button_plus) local button_reset = {} button_reset.click_function = 'reset' button_reset.function_owner = self button_reset.label = 'R' button_reset.position = {0.5, 0.2, 0.8} button_reset.width = 240 button_reset.height = 140 button_reset.font_size = 120 button_reset.tooltip = 'Resets the number you are currently trying to add.' table.insert(buttons, button_reset) local button_reset = {} button_reset.click_function = 'resetall' button_reset.function_owner = self button_reset.label = 'Reset' button_reset.tooltip = 'Resets the calculator fully.' button_reset.position = {0.8, 0.2, - 0.9} button_reset.width = 100 button_reset.height = 50 button_reset.font_size = 30 table.insert(buttons, button_reset) local button_x1 = {} button_x1.click_function = 'x1' button_x1.function_owner = self button_x1.label = '1' button_x1.position = { - 0.5, 0.2, - 0.1} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x4' button_x1.function_owner = self button_x1.label = '4' button_x1.position = { - 0.5, 0.2, 0.2} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x7' button_x1.function_owner = self button_x1.label = '7' button_x1.position = { - 0.5, 0.2, 0.5} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x10 = {} button_x10.click_function = 'x2' button_x10.function_owner = self button_x10.label = '2' button_x10.position = {0, 0.2, - 0.1} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x10 = {} button_x10.click_function = 'x5' button_x10.function_owner = self button_x10.label = '5' button_x10.position = {0, 0.2, 0.2} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x100 = {} button_x100.click_function = 'x3' button_x100.function_owner = self button_x100.label = '3' button_x100.position = {0.5, 0.2, - 0.1} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x6' button_x100.function_owner = self button_x100.label = '6' button_x100.position = {0.5, 0.2, 0.2} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x8' button_x100.function_owner = self button_x100.label = '8' button_x100.position = {0, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x9' button_x100.function_owner = self button_x100.label = '9' button_x100.position = {0.5, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x0' button_x100.function_owner = self button_x100.label = '0' button_x100.position = {0, 0.2, 0.8} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_reveal = {} button_reveal.click_function = 'reveal' button_reveal.function_owner = self button_reveal.label = 'Hide' button_reveal.position = { - 0.8, 0.2, 0.9} button_reveal.width = 160 button_reveal.height = 60 button_reveal.font_size = 60 button_reveal.color = {0.83, 0, 0, 1} button_reveal.tooltip = 'Shows/hides the calculator to other players.' table.insert(buttons, button_reveal) function doNothing() end function returned_ges(bob) return ges end function import_ges(my_ges) ges = my_ges button_ges.label = my_ges self.editButton(button_ges) end function updateges() button_ges.label = ges self.editButton(button_ges) end function updatexxx() button_xxx.label = x self.editButton(button_xxx) end function updatevalue() button_value.label = value self.editButton(button_value) end reveals = true function reveal(a, player) local tbl = getSeatedPlayers() for i, v in pairs(tbl) do if v == player then table.remove(tbl, i) end end if not reveals then reveals = true self.setInvisibleTo() self.editButton({index = 16, label = "Hide", color = {0.83, 0, 0, 1} }) else reveals = false self.setInvisibleTo(tbl) self.editButton({index = 16, label = "Show", color = {0.349, 0.874, 0.2, 1} }) end end function reset() value = 0 updatevalue() end function resetall() ges = 0 updateges() reset() end function plus() ges = ges + value updateges() reset() end function minus() ges = ges - value updateges() reset() end function x0() value = (value * 10) + 0 updatevalue() end function x1() value = (value * 10) + 1 updatevalue() end function x2() value = (value * 10) + 2 updatevalue() end function x3() value = (value * 10) + 3 updatevalue() end function x4() value = (value * 10) + 4 updatevalue() end function x5() value = (value * 10) + 5 updatevalue() end function x6() value = (value * 10) + 6 updatevalue() end function x7() value = (value * 10) + 7 updatevalue() end function x8() value = (value * 10) + 8 updatevalue() end function x9() value = (value * 10) + 9 updatevalue() end tbl_encoded = {} function onLoad(tbl_encoded) tbl_encoded = JSON.decode(tbl_encoded) if (tbl_encoded) and tbl_encoded.ges ~= nil then ges = tbl_encoded.ges value = tbl_encoded.value reveals = tbl_encoded.reveals end for _, button in ipairs(buttons) do self.createButton(button) end updatevalue() updateges() return true end function onSave() tbl_encoded = {} tbl_encoded.ges = ges tbl_encoded.value = value tbl_encoded.reveals = reveals return JSON.encode(tbl_encoded) endLuaScriptState%{"ges":100,"reveals":true,"value":0}XmlUI41[!GUID4eee8cName Custom_TileTransformposX@l:posY`qh?posZ`<rotX+>rotYf@rotZ8scaleX~?scaleY?scaleZ > @NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r ?gw?b T?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLehttp://cloud-3.steamusercontent.com/ugc/929298999082023678/9E0A42944FEAD1895A84D5246199D4A93761E9B7/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness`?StackableStretchLuaScriptvalue = 0 ges = 0 xxx = 0 buttons = {} local button_value = {} button_value.index = 1 button_value.click_function = 'doNothing' button_value.function_owner = self button_value.label = value button_value.position = {0, 0.2, - 0.4} button_value.width = 500 button_value.height = 100 button_value.font_size = 120 table.insert(buttons, button_value) local button_ges = {} button_value.index = 1 button_ges.click_function = 'doNothing' button_ges.function_owner = self button_ges.label = ges button_ges.position = {0, 0.2, - 0.75} button_ges.width = 700 button_ges.height = 200 button_ges.font_size = 180 table.insert(buttons, button_ges) local button_minus = {} button_minus.click_function = 'minus' button_minus.function_owner = self button_minus.label = '-' button_minus.position = { - 0.7, 0.2, - 0.4} button_minus.width = 150 button_minus.height = 150 button_minus.font_size = 130 table.insert(buttons, button_minus) local button_plus = {} button_plus.click_function = 'plus' button_plus.function_owner = self button_plus.label = '+' button_plus.position = {0.7, 0.2, - 0.4} button_plus.width = 150 button_plus.height = 150 button_plus.font_size = 120 table.insert(buttons, button_plus) local button_reset = {} button_reset.click_function = 'reset' button_reset.function_owner = self button_reset.label = 'R' button_reset.position = {0.5, 0.2, 0.8} button_reset.width = 240 button_reset.height = 140 button_reset.font_size = 120 button_reset.tooltip = 'Resets the number you are currently trying to add.' table.insert(buttons, button_reset) local button_reset = {} button_reset.click_function = 'resetall' button_reset.function_owner = self button_reset.label = 'Reset' button_reset.tooltip = 'Resets the calculator fully.' button_reset.position = {0.8, 0.2, - 0.9} button_reset.width = 100 button_reset.height = 50 button_reset.font_size = 30 table.insert(buttons, button_reset) local button_x1 = {} button_x1.click_function = 'x1' button_x1.function_owner = self button_x1.label = '1' button_x1.position = { - 0.5, 0.2, - 0.1} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x4' button_x1.function_owner = self button_x1.label = '4' button_x1.position = { - 0.5, 0.2, 0.2} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x7' button_x1.function_owner = self button_x1.label = '7' button_x1.position = { - 0.5, 0.2, 0.5} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x10 = {} button_x10.click_function = 'x2' button_x10.function_owner = self button_x10.label = '2' button_x10.position = {0, 0.2, - 0.1} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x10 = {} button_x10.click_function = 'x5' button_x10.function_owner = self button_x10.label = '5' button_x10.position = {0, 0.2, 0.2} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x100 = {} button_x100.click_function = 'x3' button_x100.function_owner = self button_x100.label = '3' button_x100.position = {0.5, 0.2, - 0.1} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x6' button_x100.function_owner = self button_x100.label = '6' button_x100.position = {0.5, 0.2, 0.2} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x8' button_x100.function_owner = self button_x100.label = '8' button_x100.position = {0, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x9' button_x100.function_owner = self button_x100.label = '9' button_x100.position = {0.5, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x0' button_x100.function_owner = self button_x100.label = '0' button_x100.position = {0, 0.2, 0.8} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_reveal = {} button_reveal.click_function = 'reveal' button_reveal.function_owner = self button_reveal.label = 'Hide' button_reveal.position = { - 0.8, 0.2, 0.9} button_reveal.width = 160 button_reveal.height = 60 button_reveal.font_size = 60 button_reveal.color = {0.83, 0, 0, 1} button_reveal.tooltip = 'Shows/hides the calculator to other players.' table.insert(buttons, button_reveal) function doNothing() end function returned_ges(bob) return ges end function import_ges(my_ges) ges = my_ges button_ges.label = my_ges self.editButton(button_ges) end function updateges() button_ges.label = ges self.editButton(button_ges) end function updatexxx() button_xxx.label = x self.editButton(button_xxx) end function updatevalue() button_value.label = value self.editButton(button_value) end reveals = true function reveal(a, player) local tbl = getSeatedPlayers() for i, v in pairs(tbl) do if v == player then table.remove(tbl, i) end end if not reveals then reveals = true self.setInvisibleTo() self.editButton({index = 16, label = "Hide", color = {0.83, 0, 0, 1} }) else reveals = false self.setInvisibleTo(tbl) self.editButton({index = 16, label = "Show", color = {0.349, 0.874, 0.2, 1} }) end end function reset() value = 0 updatevalue() end function resetall() ges = 0 updateges() reset() end function plus() ges = ges + value updateges() reset() end function minus() ges = ges - value updateges() reset() end function x0() value = (value * 10) + 0 updatevalue() end function x1() value = (value * 10) + 1 updatevalue() end function x2() value = (value * 10) + 2 updatevalue() end function x3() value = (value * 10) + 3 updatevalue() end function x4() value = (value * 10) + 4 updatevalue() end function x5() value = (value * 10) + 5 updatevalue() end function x6() value = (value * 10) + 6 updatevalue() end function x7() value = (value * 10) + 7 updatevalue() end function x8() value = (value * 10) + 8 updatevalue() end function x9() value = (value * 10) + 9 updatevalue() end tbl_encoded = {} function onLoad(tbl_encoded) tbl_encoded = JSON.decode(tbl_encoded) if (tbl_encoded) and tbl_encoded.ges ~= nil then ges = tbl_encoded.ges value = tbl_encoded.value reveals = tbl_encoded.reveals end for _, button in ipairs(buttons) do self.createButton(button) end updatevalue() updateges() return true end function onSave() tbl_encoded = {} tbl_encoded.ges = ges tbl_encoded.value = value tbl_encoded.reveals = reveals return JSON.encode(tbl_encoded) endLuaScriptState%{"ges":100,"reveals":true,"value":0}XmlUI42[!GUIDf0e0c1Name Custom_TileTransformposX`MqOposYqh?posZ<rotX^ >rotYf@rotZ{scaleX~?scaleY?scaleZ > @NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&rW?gn?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLehttp://cloud-3.steamusercontent.com/ugc/929298999082023678/9E0A42944FEAD1895A84D5246199D4A93761E9B7/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness`?StackableStretchLuaScriptvalue = 0 ges = 0 xxx = 0 buttons = {} local button_value = {} button_value.index = 1 button_value.click_function = 'doNothing' button_value.function_owner = self button_value.label = value button_value.position = {0, 0.2, - 0.4} button_value.width = 500 button_value.height = 100 button_value.font_size = 120 table.insert(buttons, button_value) local button_ges = {} button_value.index = 1 button_ges.click_function = 'doNothing' button_ges.function_owner = self button_ges.label = ges button_ges.position = {0, 0.2, - 0.75} button_ges.width = 700 button_ges.height = 200 button_ges.font_size = 180 table.insert(buttons, button_ges) local button_minus = {} button_minus.click_function = 'minus' button_minus.function_owner = self button_minus.label = '-' button_minus.position = { - 0.7, 0.2, - 0.4} button_minus.width = 150 button_minus.height = 150 button_minus.font_size = 130 table.insert(buttons, button_minus) local button_plus = {} button_plus.click_function = 'plus' button_plus.function_owner = self button_plus.label = '+' button_plus.position = {0.7, 0.2, - 0.4} button_plus.width = 150 button_plus.height = 150 button_plus.font_size = 120 table.insert(buttons, button_plus) local button_reset = {} button_reset.click_function = 'reset' button_reset.function_owner = self button_reset.label = 'R' button_reset.position = {0.5, 0.2, 0.8} button_reset.width = 240 button_reset.height = 140 button_reset.font_size = 120 button_reset.tooltip = 'Resets the number you are currently trying to add.' table.insert(buttons, button_reset) local button_reset = {} button_reset.click_function = 'resetall' button_reset.function_owner = self button_reset.label = 'Reset' button_reset.tooltip = 'Resets the calculator fully.' button_reset.position = {0.8, 0.2, - 0.9} button_reset.width = 100 button_reset.height = 50 button_reset.font_size = 30 table.insert(buttons, button_reset) local button_x1 = {} button_x1.click_function = 'x1' button_x1.function_owner = self button_x1.label = '1' button_x1.position = { - 0.5, 0.2, - 0.1} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x4' button_x1.function_owner = self button_x1.label = '4' button_x1.position = { - 0.5, 0.2, 0.2} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x1 = {} button_x1.click_function = 'x7' button_x1.function_owner = self button_x1.label = '7' button_x1.position = { - 0.5, 0.2, 0.5} button_x1.width = 240 button_x1.height = 140 button_x1.font_size = 120 table.insert(buttons, button_x1) local button_x10 = {} button_x10.click_function = 'x2' button_x10.function_owner = self button_x10.label = '2' button_x10.position = {0, 0.2, - 0.1} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x10 = {} button_x10.click_function = 'x5' button_x10.function_owner = self button_x10.label = '5' button_x10.position = {0, 0.2, 0.2} button_x10.width = 240 button_x10.height = 140 button_x10.font_size = 120 table.insert(buttons, button_x10) local button_x100 = {} button_x100.click_function = 'x3' button_x100.function_owner = self button_x100.label = '3' button_x100.position = {0.5, 0.2, - 0.1} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x6' button_x100.function_owner = self button_x100.label = '6' button_x100.position = {0.5, 0.2, 0.2} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x8' button_x100.function_owner = self button_x100.label = '8' button_x100.position = {0, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x9' button_x100.function_owner = self button_x100.label = '9' button_x100.position = {0.5, 0.2, 0.5} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_x100 = {} button_x100.click_function = 'x0' button_x100.function_owner = self button_x100.label = '0' button_x100.position = {0, 0.2, 0.8} button_x100.width = 240 button_x100.height = 140 button_x100.font_size = 120 table.insert(buttons, button_x100) local button_reveal = {} button_reveal.click_function = 'reveal' button_reveal.function_owner = self button_reveal.label = 'Hide' button_reveal.position = { - 0.8, 0.2, 0.9} button_reveal.width = 160 button_reveal.height = 60 button_reveal.font_size = 60 button_reveal.color = {0.83, 0, 0, 1} button_reveal.tooltip = 'Shows/hides the calculator to other players.' table.insert(buttons, button_reveal) function doNothing() end function returned_ges(bob) return ges end function import_ges(my_ges) ges = my_ges button_ges.label = my_ges self.editButton(button_ges) end function updateges() button_ges.label = ges self.editButton(button_ges) end function updatexxx() button_xxx.label = x self.editButton(button_xxx) end function updatevalue() button_value.label = value self.editButton(button_value) end reveals = true function reveal(a, player) local tbl = getSeatedPlayers() for i, v in pairs(tbl) do if v == player then table.remove(tbl, i) end end if not reveals then reveals = true self.setInvisibleTo() self.editButton({index = 16, label = "Hide", color = {0.83, 0, 0, 1} }) else reveals = false self.setInvisibleTo(tbl) self.editButton({index = 16, label = "Show", color = {0.349, 0.874, 0.2, 1} }) end end function reset() value = 0 updatevalue() end function resetall() ges = 0 updateges() reset() end function plus() ges = ges + value updateges() reset() end function minus() ges = ges - value updateges() reset() end function x0() value = (value * 10) + 0 updatevalue() end function x1() value = (value * 10) + 1 updatevalue() end function x2() value = (value * 10) + 2 updatevalue() end function x3() value = (value * 10) + 3 updatevalue() end function x4() value = (value * 10) + 4 updatevalue() end function x5() value = (value * 10) + 5 updatevalue() end function x6() value = (value * 10) + 6 updatevalue() end function x7() value = (value * 10) + 7 updatevalue() end function x8() value = (value * 10) + 8 updatevalue() end function x9() value = (value * 10) + 9 updatevalue() end tbl_encoded = {} function onLoad(tbl_encoded) tbl_encoded = JSON.decode(tbl_encoded) if (tbl_encoded) and tbl_encoded.ges ~= nil then ges = tbl_encoded.ges value = tbl_encoded.value reveals = tbl_encoded.reveals end for _, button in ipairs(buttons) do self.createButton(button) end updatevalue() updateges() return true end function onSave() tbl_encoded = {} tbl_encoded.ges = ges tbl_encoded.value = value tbl_encoded.reveals = reveals return JSON.encode(tbl_encoded) endLuaScriptState%{"ges":100,"reveals":true,"value":0}XmlUI43GUID8fab71Name3DTextTransformposX{5posY@g?posZ`.J@rotXV@rotYzurotZscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsTextYText 2 Playerscolorstate&r?g?b?fontSize@LuaScriptLuaScriptStateXmlUI44GUIDe69379Name3DTextTransformposX%posY@g?posZ`*J@rotXV@rotYzurotZscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsTextYText 3 Playerscolorstate&r?g?b?fontSize@LuaScriptLuaScriptStateXmlUI45GUID2db07eName3DTextTransformposX C@posY@g?posZ"J@rotXV@rotYzurotZscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsTextYText 4 Playerscolorstate&r?g?b?fontSize@LuaScriptLuaScriptStateXmlUI46GUIDc0bd20Name3DTextTransformposX4@posY@g?posZ` J@rotXV@rotYzurotZscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsTextYText 5 Playerscolorstate&r?g?b?fontSize@LuaScriptLuaScriptStateXmlUI47 GUID767722NameCustom_Model_Infinite_BagTransformposXp0@posY K?posZ01rotXEӉrotYf@rotZUscaleX^-@scaleYN?scaleZ^-@NicknameUnavailable TokensDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMesh{MeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsw0oGUIDb30b75Name Custom_TokenTransformposX`/@posY?posZ*0rotXK?rotY GtrotZ@gj5?scaleX?scaleY?scaleZ?NicknameUnavailable TokenDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847958862/422DD5A1314B9556D9766B6B2630BA3E6FF2006B/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUIDd9d5eeName Custom_TokenTransformposXposYposZrotXorotY j0rotZFB:scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847958862/422DD5A1314B9556D9766B6B2630BA3E6FF2006B/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI48 GUID68e633NameCustom_Model_Infinite_BagTransformposXp0@posY@?posZD)rotX`MD>rotYf@rotZ^ƀscaleX6@scaleYe?scaleZ6@NicknameNeutral Claim MarkersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMesh{MeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsz0rGUID0e7212Name Custom_TokenTransformposX91@posY@o?posZ`X(rotX`frotYr?rotZ`p"??scaleX?scaleY?scaleZ?NicknameNeutral Claim MarkerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847881795/E7E581FDB9224768352348F5D14832DDA29C2942/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsf0^GUID249f95Name Custom_TokenTransformposXposYposZrotXU<rotY >rotZr:scaleX?scaleY`@scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847881795/E7E581FDB9224768352348F5D14832DDA29C2942/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI49IGUID2f5f84Name Custom_TileTransformposX A@posY`qh?posZi@rotXrotYf@rotZ)WscaleX$@scaleY?scaleZ$@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549713513/87ECA7041182C3EA221E11366F0CA35C537AB553/ImageSecondaryURLImageScalar?WidthScaleCustomTile8TypeThickness?StackableStretchLuaScriptLuaScriptStateXmlUI50GUID275dadName3DTextTransformposX|A@posY`Xi?posZ`+@rotXV@rotYzurotZscaleX?scaleY?scaleZ?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsTextuText&Neutral Markers are Black in this modcolorstate&r?g?b?fontSize8LuaScriptLuaScriptStateXmlUI51GUIDe6e3dbNameCustom_AssetbundleTransformposX_ :posY`L?posZ`6rotXo0Z>rotY`f@rotZ*}scaleX @scaleY @scaleZ @Nickname Orange BankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r ?g]?b ?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLQhttps://drive.google.com/uc?export=download&id=1tXEzUADVcphi61pC_4gkA-a42E6LUiv5AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScript USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onSave() local data_to_save if not USE_SAVES then data_to_save = "" else data_to_save = {countValue=countValue} end saved_data = JSON.encode(data_to_save) return saved_data end function onLoad(saved_data) if saved_data ~= '""' then local loaded_data = JSON.decode(saved_data) countValue = loaded_data.countValue else countValue = 0 end result = countValue a = 0 b = 0 self.createButton({ label=tostring(countValue), click_function="none", function_owner=self, position={0, 0.1, -0.15}, height=0, width=0, font_size=500, font_color={0.85, 0.89, 0.81} }) self.createButton({ click_function="subFromCount", function_owner=self, position={-0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) self.createButton({ click_function="addToCount", function_owner=self, position={0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) end function addToCount(_, color) if color == 'Orange' then self.AssetBundle.playTriggerEffect(1) a = self.UI.getAttribute("Orange", "value") calculate() printToAll("[F3631C]" .. Player["Orange"].steam_name .. "[-] has earned $" .. self.UI.getAttribute("Orange", "value") .. ".") end end function subFromCount(_, color) if color == 'Orange' then self.AssetBundle.playTriggerEffect(0) b = self.UI.getAttribute("Orange", "value") calculate() end end function calculate() initialResult = result result = result + a - b if tonumber(result) < 0 then printToAll("[F3631C]" .. Player["Orange"].steam_name .. "[-] has paid only $" .. initialResult .. ". ($" .. math.abs(initialResult - b) .. " left to pay!)") result = 0 elseif tonumber(b) > 0 then printToAll("[F3631C]" .. Player["Orange"].steam_name .. "[-] has paid $" .. b .. ".") end countValue = result updateDisplay() a = 0 b = 0 end function updateValue(player,value,id) if value == "" then value = 0 end value = math.abs(value) self.UI.setAttribute(id, "value", value) self.UI.setAttribute(id, "text", value) end function updateDisplay() self.editButton({index=0, label=tostring(countValue)}) end function getBalance() return countValue end -- for automatic payment through carriers function buySellResource(data) if data.op == "add" then a = data.val else b = data.val end calculate() endLuaScriptState{"countValue":0}XmlUI 52GUID574659NameCustom_AssetbundleTransformposX`sOposY@L?posZ@6rotXK]rotYୀf@rotZ@>lscaleX @scaleY @scaleZ @Nickname Green BankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g`VV?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLQhttps://drive.google.com/uc?export=download&id=1tXEzUADVcphi61pC_4gkA-a42E6LUiv5AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScript USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onSave() local data_to_save if not USE_SAVES then data_to_save = "" else data_to_save = {countValue=countValue} end saved_data = JSON.encode(data_to_save) return saved_data end function onLoad(saved_data) if saved_data ~= '""' then local loaded_data = JSON.decode(saved_data) countValue = loaded_data.countValue else countValue = 0 end result = countValue a = 0 b = 0 self.createButton({ label=tostring(countValue), click_function="none", function_owner=self, position={0, 0.1, -0.15}, height=0, width=0, font_size=500, font_color={0.82, 0.80, 0.86} }) self.createButton({ click_function="subFromCount", function_owner=self, position={-0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) self.createButton({ click_function="addToCount", function_owner=self, position={0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) end function addToCount(_, color) if color == 'Green' then self.AssetBundle.playTriggerEffect(1) a = self.UI.getAttribute("Green", "value") calculate() printToAll("[30B22A]" .. Player["Green"].steam_name .. "[-] has earned $" .. self.UI.getAttribute("Green", "value") .. ".") end end function subFromCount(_, color) if color == 'Green' then self.AssetBundle.playTriggerEffect(0) b = self.UI.getAttribute("Green", "value") calculate() end end function calculate() initialResult = result result = result + a - b if tonumber(result) < 0 then printToAll("[30B22A]" .. Player["Green"].steam_name .. "[-] has paid only $" .. initialResult .. ". ($" .. math.abs(initialResult - b) .. " left to pay!)") result = 0 elseif tonumber(b) > 0 then printToAll("[30B22A]" .. Player["Green"].steam_name .. "[-] has paid $" .. b .. ".") end countValue = result updateDisplay() a = 0 b = 0 end function updateValue(player,value,id) if value == "" then value = 0 end value = math.abs(value) self.UI.setAttribute(id, "value", value) self.UI.setAttribute(id, "text", value) end function updateDisplay() self.editButton({index=0, label=tostring(countValue)}) end function getBalance() return countValue end -- for automatic payment through carriers function buySellResource(data) if data.op == "add" then a = data.val else b = data.val end calculate() endLuaScriptState{"countValue":0}XmlUI 53GUID6027f3NameCustom_AssetbundleTransformposX\`@posY`L?posZ c7rotX`NJrotY f@rotZdbscaleX @scaleY @scaleZ @Nickname White BankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLQhttps://drive.google.com/uc?export=download&id=1tXEzUADVcphi61pC_4gkA-a42E6LUiv5AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScript USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onSave() local data_to_save if not USE_SAVES then data_to_save = "" else data_to_save = {countValue=countValue} end saved_data = JSON.encode(data_to_save) return saved_data end function onLoad(saved_data) if saved_data ~= '""' then local loaded_data = JSON.decode(saved_data) countValue = loaded_data.countValue else countValue = 0 end result = countValue a = 0 b = 0 self.createButton({ label=tostring(countValue), click_function="none", function_owner=self, position={0, 0.1, -0.15}, height=0, width=0, font_size=500, font_color={1, 1, 1} }) self.createButton({ click_function="subFromCount", function_owner=self, position={-0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) self.createButton({ click_function="addToCount", function_owner=self, position={0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) end function addToCount(_, color) if color == 'White' then self.AssetBundle.playTriggerEffect(1) a = self.UI.getAttribute("White", "value") calculate() printToAll("[ffffff]" .. Player["White"].steam_name .. "[-] has earned $" .. self.UI.getAttribute("White", "value") .. ".") end end function subFromCount(_, color) if color == 'White' then self.AssetBundle.playTriggerEffect(0) b = self.UI.getAttribute("White", "value") calculate() end end function calculate() initialResult = result result = result + a - b if tonumber(result) < 0 then printToAll("[ffffff]" .. Player["White"].steam_name .. "[-] has paid only $" .. initialResult .. ". ($" .. math.abs(initialResult - b) .. " left to pay!)") result = 0 elseif tonumber(b) > 0 then printToAll("[ffffff]" .. Player["White"].steam_name .. "[-] has paid $" .. b .. ".") end countValue = result updateDisplay() a = 0 b = 0 end function updateValue(player,value,id) if value == "" then value = 0 end value = math.abs(value) self.UI.setAttribute(id, "value", value) self.UI.setAttribute(id, "text", value) end function updateDisplay() self.editButton({index=0, label=tostring(countValue)}) end function getBalance() return countValue end -- for automatic payment through carriers function buySellResource(data) if data.op == "add" then a = data.val else b = data.val end calculate() endLuaScriptState{"countValue":0}XmlUI 54GUID4ee1f2Name Custom_ModelTransformposXposY#posZrotXrotYC _rotZscaleX@scaleY?scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLehttp://cloud-3.steamusercontent.com/ugc/879750610978796176/4A5A65543B98BCFBF57E910D06EC984208223D38/DiffuseURL https://i.imgur.com/N0O6aqj.jpgNormalURLColliderURLConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScript2function onLoad() self.interactable = false endLuaScriptStateXmlUI55GUID40e519NameCustom_AssetbundleTransformposXPQ@posY`L?posZ-6rotX`+>rotỲf@rotZ~>scaleX @scaleY @scaleZ @Nickname Yellow BankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?gj?b@?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLQhttps://drive.google.com/uc?export=download&id=1tXEzUADVcphi61pC_4gkA-a42E6LUiv5AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScript USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onSave() local data_to_save if not USE_SAVES then data_to_save = "" else data_to_save = {countValue=countValue} end saved_data = JSON.encode(data_to_save) return saved_data end function onLoad(saved_data) if saved_data ~= '""' then local loaded_data = JSON.decode(saved_data) countValue = loaded_data.countValue else countValue = 0 end result = countValue a = 0 b = 0 self.createButton({ label=tostring(countValue), click_function="none", function_owner=self, position={0, 0.1, -0.15}, height=0, width=0, font_size=500, font_color={0.85, 0.89, 0.89} }) self.createButton({ click_function="subFromCount", function_owner=self, position={-0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) self.createButton({ click_function="addToCount", function_owner=self, position={0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) end function addToCount(_, color) if color == 'Yellow' then self.AssetBundle.playTriggerEffect(1) a = self.UI.getAttribute("Yellow", "value") calculate() printToAll("[ebef10]" .. Player["Yellow"].steam_name .. "[-] has earned $" .. self.UI.getAttribute("Yellow", "value") .. ".") end end function subFromCount(_, color) if color == 'Yellow' then self.AssetBundle.playTriggerEffect(0) b = self.UI.getAttribute("Yellow", "value") calculate() end end function calculate() initialResult = result result = result + a - b if tonumber(result) < 0 then printToAll("[DA1917]" .. Player["Yellow"].steam_name .. "[-] has paid only $" .. initialResult .. ". ($" .. math.abs(initialResult - b) .. " left to pay!)") result = 0 elseif tonumber(b) > 0 then printToAll("[DA1917]" .. Player["Yellow"].steam_name .. "[-] has paid $" .. b .. ".") end countValue = result updateDisplay() a = 0 b = 0 end function updateValue(player,value,id) if value == "" then value = 0 end value = math.abs(value) self.UI.setAttribute(id, "value", value) self.UI.setAttribute(id, "text", value) end function updateDisplay() self.editButton({index=0, label=tostring(countValue)}) end function getBalance() return countValue end -- for automatic payment through carriers function buySellResource(data) if data.op == "add" then a = data.val else b = data.val end calculate() endLuaScriptState{"countValue":0}XmlUI 56GUIDcc843eNameCustom_AssetbundleTransformposX{B@posY`L?posZ7rotXu>rotYЀf@rotZhscaleX @scaleY @scaleZ @Nickname Purple BankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r@b?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomAssetbundleAssetbundleURLQhttps://drive.google.com/uc?export=download&id=1tXEzUADVcphi61pC_4gkA-a42E6LUiv5AssetbundleSecondaryURLMaterialIndexTypeIndexLoopingEffectIndexLuaScript USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onSave() local data_to_save if not USE_SAVES then data_to_save = "" else data_to_save = {countValue=countValue} end saved_data = JSON.encode(data_to_save) return saved_data end function onLoad(saved_data) if saved_data ~= '""' then local loaded_data = JSON.decode(saved_data) countValue = loaded_data.countValue else countValue = 0 end result = countValue a = 0 b = 0 self.createButton({ label=tostring(countValue), click_function="none", function_owner=self, position={0, 0.1, -0.15}, height=0, width=0, font_size=500, font_color={0.81, 0.82, 1} }) self.createButton({ click_function="subFromCount", function_owner=self, position={-0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) self.createButton({ click_function="addToCount", function_owner=self, position={0.8, 0.12, 0.68}, height=200, width=360, color={0,0,0,0} }) end function addToCount(_, color) if color == 'Purple' then self.AssetBundle.playTriggerEffect(1) a = self.UI.getAttribute("Purple", "value") calculate() printToAll("[1E87FF]" .. Player["Purple"].steam_name .. "[-] has earned $" .. self.UI.getAttribute("Purple", "value") .. ".") end end function subFromCount(_, color) if color == 'Purple' then self.AssetBundle.playTriggerEffect(0) b = self.UI.getAttribute("Purple", "value") calculate() end end function calculate() initialResult = result result = result + a - b if tonumber(result) < 0 then printToAll("[1E87FF]" .. Player["Purple"].steam_name .. "[-] has paid only $" .. initialResult .. ". ($" .. math.abs(initialResult - b) .. " left to pay!)") result = 0 elseif tonumber(b) > 0 then printToAll("[1E87FF]" .. Player["Purple"].steam_name .. "[-] has paid $" .. b .. ".") end countValue = result updateDisplay() a = 0 b = 0 end function updateValue(player,value,id) if value == "" then value = 0 end value = math.abs(value) self.UI.setAttribute(id, "value", value) self.UI.setAttribute(id, "text", value) end function updateDisplay() self.editButton({index=0, label=tostring(countValue)}) end function getBalance() return countValue end -- for automatic payment through carriers function buySellResource(data) if data.op == "add" then a = data.val else b = data.val end calculate() endLuaScriptState{"countValue":0}XmlUI 57r GUID5df5b0NameCustom_Model_Infinite_BagTransformposX@v7T@posY@8?posZ$H@rotX’>rotYf@rotZf@scaleX@@@scaleY?scaleZr@NicknameTanksDescriptionoriginal versionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsj0bGUIDc51916Name Custom_TokenTransformposX@posY`@posZrotXQ?rotY`?rotZ]l?scaleX@?scaleY@?scaleZ@?NicknameTankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549937605/CE8DF64F2F6653B9C66D6E1A65886CD0610BB97D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels@-@StandUpStackableLuaScriptLuaScriptStateXmlUIChildObjectsj0bGUIDac1a63Name Custom_TokenTransformposX`=}posY$u>posZW?rotX=rotY>rotZ>scaleX?scaleY?scaleZ`?NicknameTankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549937605/CE8DF64F2F6653B9C66D6E1A65886CD0610BB97D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels@-@StandUpStackableLuaScriptLuaScriptStateXmlUI58 GUID194d46NameCustom_Model_Infinite_BagTransformposXUposY m?posZQUrotX8rotYf@rotZ@=scaleXdN@scaleY?scaleZ:@NicknameSuperchargersDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjectsC0;GUID33d731Name Custom_TokenTransformposX /gEposY?posZ@#,rotXоrotYv@rotZf@scaleX@j?scaleY?scaleZ@j?Nickname SuperchargerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142550034973/3B06F993771C3C92747D633B16093FDDF91E80AE/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFriction?DynamicFriction`ff?BouncinessFrictionCombineBounceCombineRigidbodyCMass?Drag?AngularDrag?UseGravityChildObjectsC0;GUID496d0bName Custom_TokenTransformposX샛posYAL>posZ >?rotXzFrotY9rotZhܾscaleX@?scaleY`])@scaleZ@O?Nickname SuperchargerDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142550034973/3B06F993771C3C92747D633B16093FDDF91E80AE/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFriction?DynamicFriction`ff?BouncinessFrictionCombineBounceCombineRigidbodyCMass?Drag?AngularDrag?UseGravity59 GUIDe8a842Name Custom_ModelTransformposXG8posY(?posZ@rotXurotYM@rotZ`}4>scaleX@;?scaleYK?scaleZ@;?Nickname quartz price 6DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity60GUIDd23bfdName Custom_ModelTransformposX6posY @2?posZ d@rotXΓrotY f@rotZ瑾scaleX@;?scaleYK?scaleZ@;?Nickname quartz supply 0DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScript -- supply positions local s8 = {-22.53, 1.26, 13.01} local s7 = {-22.58, 1.26, 11.75} local s6 = {-22.58, 1.26, 10.46} local s5 = {-22.58, 1.26, 9.24} local s4 = {-22.58, 1.26, 7.96} local s3 = {-22.58, 1.26, 6.75} local s2 = {-22.58, 1.26, 5.45} local s1 = {-22.58, 1.26, 4.17} local s0 = {-22.58, 1.26, 2.92} local supply_pos = { s0,s1,s2,s3,s4,s5,s6,s7,s8 } -- used for mistakes local button_plus = {} button_plus.click_function = "increase" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {2,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "decrease" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {2,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local curSupply = 0 local maxSupply = #supply_pos-1 local msgTint = {1,1,0} -- yellow local resource = " quartz " -- << space before/after local resColor = "[FFFFFF]" -- white for quartz USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) -- restore supply if save_state ~= '""' then local state = JSON.decode(save_state) curSupply = state.supply self.setPositionSmooth(supply_pos[curSupply + 1], false,false) -- 'cause table index starts at 1 end self.setName(resource .. "supply " .. curSupply) end function onSave() local state if not USE_SAVES then state = "" else state = { supply = curSupply } end return JSON.encode(state) end function increase() if curSupply ~= maxSupply then curSupply = curSupply + 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) end end function decrease() if curSupply ~= 0 then curSupply = curSupply - 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) return true else printToAll(resource .. "supply empty!!",{1,0,0}) return false end end function setSupply(amount) self.setPositionSmooth(supply_pos[amount + 1], false,false) self.setName(resource .. "supply " .. amount) printToAll("Starting" .. resColor .. resource .. "[-]supply: " .. amount,msgTint) curSupply = amount endLuaScriptState {"supply":0}XmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity61GUIDd8a648Name Custom_ModelTransformposXQ2posY(?posZ'@rotX`#6>rotYM@rotZFYscaleX@;?scaleYK?scaleZ@;?Nickname ore price 8DescriptionGMNotesAltLookAngle&xyzColorDiffuse&rZ?g@0?b` ?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity62GUID6e95f8Name Custom_ModelTransformposX`10posY@@2?posZd@rotX@v rotYf@rotZ>scaleX@;?scaleYK?scaleZ@;?Nickname ore supply 0DescriptionGMNotesAltLookAngle&xyzColorDiffuse&rZ?g@0?b` ?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScript -- supply positions local s13 = {-16.72, 1.26, 19.27} local s12 = {-16.72, 1.26, 18.10} local s11 = {-16.72, 1.26, 16.78} local s10 = {-16.72, 1.26, 15.51} local s9 = {-16.72, 1.26, 14.27} local s8 = {-16.72, 1.26, 13.01} local s7 = {-16.78, 1.26, 11.75} local s6 = {-16.78, 1.26, 10.46} local s5 = {-16.78, 1.26, 9.24} local s4 = {-16.78, 1.26, 7.96} local s3 = {-16.78, 1.26, 6.75} local s2 = {-16.78, 1.26, 5.45} local s1 = {-16.78, 1.26, 4.17} local s0 = {-16.78, 1.26, 2.92} local supply_pos = { s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13 } -- used for mistakes local button_plus = {} button_plus.click_function = "increase" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {2,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "decrease" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {2,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local curSupply = 0 local maxSupply = #supply_pos-1 local msgTint = {1,1,0} -- yellow local resource = " ore " -- << space before/after local resColor = "[713B17]" USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) -- restore supply if save_state ~= '""' then local state = JSON.decode(save_state) curSupply = state.supply self.setPositionSmooth(supply_pos[curSupply + 1], false,false) -- 'cause table index starts at 1 end self.setName(resource .. "supply " .. curSupply) end function onSave() local state if not USE_SAVES then state = "" else state = { supply = curSupply } end return JSON.encode(state) end function increase() if curSupply ~= maxSupply then curSupply = curSupply + 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) end end function decrease() if curSupply ~= 0 then curSupply = curSupply - 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) return true else printToAll(resource .. "supply empty!!",{1,0,0}) return false end end function setSupply(amount) self.setPositionSmooth(supply_pos[amount + 1], false,false) self.setName(resource .. "supply " .. amount) printToAll("Starting" .. resColor .. resource .. "[-]supply: " .. amount,msgTint) curSupply = amount endLuaScriptState {"supply":0}XmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity63GUIDdd9c28Name Custom_ModelTransformposX%posY @2?posZ d@rotX ۥ|>rotYf@rotZ o>scaleX@;?scaleYK?scaleZ@;?Nickname water supply 0DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r`4?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScript -- supply positions local s13 = {-10.84, 1.26, 19.27} local s12 = {-10.84, 1.26, 18.10} local s11 = {-10.84, 1.26, 16.78} local s10 = {-10.84, 1.26, 15.51} local s9 = {-10.84, 1.26, 14.27} local s8 = {-10.84, 1.26, 13.01} local s7 = {-10.90, 1.26, 11.75} local s6 = {-10.89, 1.26, 10.46} local s5 = {-10.89, 1.26, 9.24} local s4 = {-10.89, 1.26, 7.96} local s3 = {-10.89, 1.26, 6.75} local s2 = {-10.89, 1.26, 5.45} local s1 = {-10.89, 1.26, 4.17} local s0 = {-10.89, 1.26, 2.92} local supply_pos = { s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13 } -- used for mistakes local button_plus = {} button_plus.click_function = "increase" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {2,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "decrease" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {2,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local curSupply = 0 local maxSupply = #supply_pos-1 local msgTint = {1,1,0} -- yellow local resource = " water " -- << space before/after local resColor = "[1F88FF]" -- white for quartz USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) -- restore supply if save_state ~= '""' then local state = JSON.decode(save_state) curSupply = state.supply self.setPositionSmooth(supply_pos[curSupply + 1], false,false) -- 'cause table index starts at 1 end self.setName(resource .. "supply " .. curSupply) end function onSave() local state if not USE_SAVES then state = "" else state = { supply = curSupply } end return JSON.encode(state) end function increase() if curSupply ~= maxSupply then curSupply = curSupply + 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) end end function decrease() if curSupply ~= 0 then curSupply = curSupply - 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) return true else printToAll(resource .. "supply empty!!",{1,0,0}) return false end end function setSupply(amount) self.setPositionSmooth(supply_pos[amount + 1], false,false) self.setName(resource .. "supply " .. amount) printToAll("Starting" .. resColor .. resource .. "[-]supply: " .. amount,msgTint) curSupply = amount endLuaScriptState {"supply":0}XmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity64 GUID68590fName Custom_ModelTransformposX9K*posY @2?posZ'@rotXփ>rotY@M@rotZ@>scaleX@;?scaleYK?scaleZ@;?Nickname water price 7DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r`4?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity65>GUIDdd3037Name Custom_ModelTransformposXposY @2?posZ d@rotXu>rotY f@rotZ9p>scaleX@;?scaleYK?scaleZ@;?Nickname energy supply 0DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g@?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScript' -- supply positions local s16 = {-4.93, 1.26, 23.07} local s15 = {-4.93, 1.26, 21.78} local s14 = {-4.93, 1.26, 20.54} local s13 = {-4.93, 1.26, 19.27} local s12 = {-4.93, 1.26, 18.10} local s11 = {-4.93, 1.26, 16.78} local s10 = {-4.93, 1.26, 15.51} local s9 = {-4.93, 1.26, 14.27} local s8 = {-4.93, 1.26, 13.01} local s7 = {-4.98, 1.26, 11.75} local s6 = {-4.98, 1.26, 10.46} local s5 = {-4.98, 1.26, 9.24} local s4 = {-4.98, 1.26, 7.96} local s3 = {-4.98, 1.26, 6.75} local s2 = {-4.98, 1.26, 5.45} local s1 = {-4.98, 1.26, 4.17} local s0 = {-4.98, 1.26, 2.92} local supply_pos = { s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16 } -- used for mistakes local button_plus = {} button_plus.click_function = "increase" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {2,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "decrease" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {2,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local curSupply = 0 local maxSupply = #supply_pos-1 local msgTint = {1,1,0} -- yellow local resource = " energy " -- << space before/after local resColor = "[FF0000]" USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) -- restore supply if save_state ~= '""' then local state = JSON.decode(save_state) curSupply = state.supply self.setPositionSmooth(supply_pos[curSupply + 1], false,false) -- 'cause table index starts at 1 end self.setName(resource .. "supply " .. curSupply) end function onSave() local state if not USE_SAVES then state = "" else state = { supply = curSupply } end return JSON.encode(state) end function increase() if curSupply ~= maxSupply then curSupply = curSupply + 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) end end function decrease() if curSupply ~= 0 then curSupply = curSupply - 1 self.setPositionSmooth(supply_pos[curSupply + 1], false,false) self.setName(resource .. "supply " .. curSupply) printToAll(resColor .. resource .. "[-]supply changed to " .. curSupply,msgTint) return true else printToAll(resource .. "supply empty!!",{1,0,0}) return false end end function setSupply(amount) self.setPositionSmooth(supply_pos[amount + 1], false,false) self.setName(resource .. "supply " .. amount) printToAll("Starting" .. resColor .. resource .. "[-]supply: " .. amount,msgTint) curSupply = amount endLuaScriptState {"supply":0}XmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity66 GUIDaa2102Name Custom_ModelTransformposXposY @2?posZ'@rotXâ>rotY`WM@rotZ.scaleX@;?scaleYK?scaleZ@;?Nickname energy price 7DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g@?bLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/DiffuseURLNormalURLColliderURLfhttp://cloud-3.steamusercontent.com/ugc/2118437643115375378/38B3C30948B5DB5ECB022F9A6CD82C061387E74E/ConvexMaterialIndexTypeIndexCustomShaderSpecularColor&r?g?b?SpecularIntensitySpecularSharpness@FresnelStrengthCastShadowsLuaScriptLuaScriptStateXmlUIPhysicsMaterialrStaticFrictionDynamicFrictionBouncinessFrictionCombineBounceCombineRigidbodyCMass6?DragAngularDragUseGravity67mGUIDa34099Name Custom_TokenTransformposX9@posY@posZ0@rotXҫrotY p@rotZscaleX?scaleY?scaleZ?NicknameSupport AirshipDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549898779/AEADA30CDDDA661C22DAB4742997FC312FD39EDD/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness`?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI68^GUID003b74Name Custom_TokenTransformposXN@posYM?posZl0@rotX|:rotYf@rotZq=scaleX@scaleY?scaleZ@NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943647276/FB1D8C0AF7E0E6BB3043880210733587385A2C6A/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI69)GUIDc33f2fNameDeckTransformposX @posY?posZ rotX@u>rotY f@rotZANscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsSidewaysCardDeckIDs60123456CustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIContainedObjectsP0GUIDce6d98Name CardCustomTransformposX` FposY ?posZN4rotX f>rotY@f@rotZ SscaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUID43d726Name CardCustomTransformposXjDposY?posZrotXGtrotY@f@rotZI>scaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI2GUIDb2ad71Name CardCustomTransformposXQTIposY ?posZ`grotX`AirotY@f@rotZ@nscaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID0d8e68Name CardCustomTransformposXhEposY %?posZV,rotXƸ>rotY@f@rotZ x?scaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUIDaef3d7Name CardCustomTransformposX IposY?posZ K+rotXH>rotYf@rotZscaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI5GUID7f39a5Name CardCustomTransformposX@ulNposY ?posZ@+rotX@TrotY@f@rotZ&G|scaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI6GUIDbbd7ccName CardCustomTransformposX@JposY ?posZ3rotX`e[rotY@f@rotZ PwscaleX*?scaleY?scaleZ*?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck64.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646978/9769389A6A36D0AD34CE732E761605DA45FE7F2F/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI70)GUIDb159eeNameDeckTransformposX@posY?posZJrotXNsG>rotY f@rotZ TscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsSidewaysCardDeckIDs60123456CustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIContainedObjectsP0GUID1c2ae6Name CardCustomTransformposX`DposY?posZrotXNJV>rotY f@rotZ |qscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI1GUIDba419fName CardCustomTransformposXNFposY ?posZ6_?rotX trotY f@rotZ rscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI2GUIDb92419Name CardCustomTransformposX@LposY ?posZ!?rotX7`>rotY f@rotZ 0ZscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID04f783Name CardCustomTransformposX@dPposY ?posZX?rotXojrotY f@rotZ`G>scaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID01ae01Name CardCustomTransformposX``PposY ?posZ@ٵrotXXS>rotY f@rotZ`끾scaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI5GUIDe3ffd3Name CardCustomTransformposXNnMposY ?posZvrotX-P>rotY f@rotZ#scaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI6GUID822035Name CardCustomTransformposX@FIposY ?posZ`-"rotXrotY f@rotZscaleXd?scaleY?scaleZd?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDSidewaysCardCustomDeck65.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/BackURLfhttp://cloud-3.steamusercontent.com/ugc/2519275227943646639/E21B1B99AB9753FDFD8E74405548C3DC3A9B93D1/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI71GUID87741fNameCustom_Model_Infinite_BagTransformposXv8@posYk?posZJ$F@rotX&v>rotYf@rotZf@scaleX@@@scaleY?scaleZr@NicknameTanksDescriptionscripted versionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsMaterialIndexMeshIndexCustomMeshMeshURLfhttp://cloud-3.steamusercontent.com/ugc/1666858152071990826/9AD455F2CBAEC01B2CBCDDB8B6DC4CE48D14B545/DiffuseURLNormalURLColliderURLConvexMaterialIndexTypeIndexCastShadowsLuaScriptLuaScriptStateXmlUIContainedObjects 0 GUIDdf76bbName Custom_TokenTransformposX8@posY7@posZJ$F@rotX`>rotY@TrotZf@scaleX@?scaleY@?scaleZ@?Nickname Tank - waterDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549937605/CE8DF64F2F6653B9C66D6E1A65886CD0610BB97D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels@-@StandUpStackableLuaScript. local button_risorsa = {} button_risorsa.click_function = "changeResource" button_risorsa.function_owner = self button_risorsa.label = "water" button_risorsa.position = {0,0.8,2} button_risorsa.width = 1500 button_risorsa.height = 550 button_risorsa.color = {0,0,1} --blue button_risorsa.font_color = {1,1,1} --white button_risorsa.font_size = 450 button_risorsa.tooltip = "Click to change resource" local button_sc = {} button_sc.click_function = "toggleSupercharg" button_sc.function_owner = self button_sc.label = "" button_sc.position = {0,0.8,-2} button_sc.width = 2500 button_sc.height = 550 button_sc.color = {0,0,0,0.2} --black button_sc.font_color = {1,1,1} --white button_sc.font_size = 350 button_sc.tooltip = "Click to add/remove superCharger" local resourceIx = 3 -- 1 quartz -- 2 ore -- 3 water -- 4 energy local resParams = { {text = "quartz", bgColor = {188/255,188/255,188/255}, fColor = {0,0,0} }, {text = "ore", bgColor = {206/255,126/255,0}, fColor = {0,0,0} }, {text = "water", bgColor = {0,0,1}, fColor = {1,1,1} }, {text = "energy", bgColor = {224/255,102/255,102/255}, fColor = {1,1,1} } } local isSupercharg = false function onLoad(save_state) self.createButton(button_risorsa) --index 0 self.createButton(button_sc) --index 1 -- restore res+sc if save_state ~= "" then local state = JSON.decode(save_state) --print("state var: " .. state) -- restore resource self.editButton({index = 0,label = resParams[state.res].text, color = resParams[state.res].bgColor, font_color = resParams[state.res].fColor}) self.setName("Tank - " .. resParams[state.res].text) -- restore superCharger isSupercharg = not state.sc toggleSupercharg() end end function changeResource() if resourceIx == 4 then resourceIx = 1 else resourceIx = resourceIx + 1 end self.editButton({index = 0,label = resParams[resourceIx].text, color = resParams[resourceIx].bgColor, font_color = resParams[resourceIx].fColor}) self.setName("Tank - " .. resParams[resourceIx].text) end function toggleSupercharg() if isSupercharg then self.editButton({index = 1,label = "", color = {0,0,0,0.2}}) else self.editButton({index = 1,label = "SuperCharger", color = {180/255,95/255,6/255,1}}) end isSupercharg = not isSupercharg end function onSave() local state = { res = resourceIx, sc = isSupercharg } return JSON.encode(state) endLuaScriptState{"res":3,"sc":false}XmlUIChildObjectsj0bGUIDac1a63Name Custom_TokenTransformposX`=}posY$u>posZW?rotX=rotY>rotZ>scaleX?scaleY?scaleZ`?NicknameTankDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549937605/CE8DF64F2F6653B9C66D6E1A65886CD0610BB97D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels@-@StandUpStackableLuaScriptLuaScriptStateXmlUI72 GUIDdf76bbName Custom_TokenTransformposX>@posY9?posZ`5B@rotXĽrotYf@rotZO->scaleX@?scaleY@?scaleZ@?Nickname Tank - waterDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/2267062142549937605/CE8DF64F2F6653B9C66D6E1A65886CD0610BB97D/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels@-@StandUpStackableLuaScript local button_risorsa = {} button_risorsa.click_function = "changeResource" button_risorsa.function_owner = self button_risorsa.label = "water" button_risorsa.position = {0,0.8,2} button_risorsa.width = 1500 button_risorsa.height = 550 button_risorsa.color = {0,0,1} --blue button_risorsa.font_color = {1,1,1} --white button_risorsa.font_size = 450 button_risorsa.tooltip = "Click to change resource" local button_sc = {} button_sc.click_function = "toggleSupercharg" button_sc.function_owner = self button_sc.label = "" button_sc.position = {0,0.8,-2} button_sc.width = 2500 button_sc.height = 550 button_sc.color = {0,0,0,0.2} --black button_sc.font_color = {1,1,1} --white button_sc.font_size = 350 button_sc.tooltip = "Click to add/remove superCharger" local resourceIx = 3 -- 1 quartz -- 2 ore -- 3 water -- 4 energy local resParams = { {text = "quartz", bgColor = {188/255,188/255,188/255}, fColor = {0,0,0} }, {text = "ore", bgColor = {206/255,126/255,0}, fColor = {0,0,0} }, {text = "water", bgColor = {0,0,1}, fColor = {1,1,1} }, {text = "energy", bgColor = {224/255,102/255,102/255}, fColor = {1,1,1} } } local isSupercharg = false function onLoad(save_state) self.createButton(button_risorsa) --index 0 self.createButton(button_sc) --index 1 -- restore res+sc if save_state ~= "" then local state = JSON.decode(save_state) -- restore resource self.editButton({index = 0,label = resParams[state.res].text, color = resParams[state.res].bgColor, font_color = resParams[state.res].fColor}) self.setName("Tank - " .. resParams[state.res].text) -- restore superCharger isSupercharg = not state.sc toggleSupercharg() end end function changeResource() if resourceIx == 4 then resourceIx = 1 else resourceIx = resourceIx + 1 end self.editButton({index = 0,label = resParams[resourceIx].text, color = resParams[resourceIx].bgColor, font_color = resParams[resourceIx].fColor}) self.setName("Tank - " .. resParams[resourceIx].text) end function toggleSupercharg() if isSupercharg then self.editButton({index = 1,label = "", color = {0,0,0,0.2}}) else self.editButton({index = 1,label = "SuperCharger", color = {180/255,95/255,6/255,1}}) end isSupercharg = not isSupercharg end function onSave() local state = { res = resourceIx, sc = isSupercharg } return JSON.encode(state) endLuaScriptState{"res":3,"sc":false}XmlUI73^GUID7c30c4Name Custom_TokenTransformposX0?posYM?posZ3l:@rotXKQrotYf@rotZscaleX`?scaleY?scaleZ`?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847971725/3798B4A07B6DAF65D5F77CBC17AF86431FE92C48/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI74^GUIDb7c6b2Name Custom_TokenTransformposX@posYM?posZ<@rotXgn>rotY f@rotZ>scaleX`?scaleY?scaleZ`?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847971247/2FD9F2ED8590D0DAC5F3E95E19E25A836DD786C7/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI75^GUID70fda6Name Custom_TokenTransformposX`@posY M?posZ3l:@rotX@e˾rotYf@rotZ;ӾscaleX`?scaleY?scaleZ`?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847970717/202FA6DB6BD55DCABC0BA6E5D832D52D5885E947/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI76^GUID7778acName Custom_TokenTransformposX0?posYM?posZ<@rotX@x+rotYf@rotZ>scaleX`?scaleY?scaleZ`?NicknameDescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCustomImageImageURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226847970211/D66806F7471B2D4440F3C031AF8726256EDC4E22/ImageSecondaryURLImageScalar?WidthScaleCustomTokenKThickness?MergeDistancePixels.@StandUpStackableLuaScriptLuaScriptStateXmlUI77L GUIDaaf49dNameChecker_whiteTransformposX(5FposY@ph?posZ P6@rotX>>rotY f@rotZdŤscaleX`@scaleY`@scaleZ`@Nickname Setup supplyDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript local button_setup_2p = {} button_setup_2p.click_function = "setup_2p" button_setup_2p.function_owner = self button_setup_2p.label = "Setup supply for 2 players" button_setup_2p.position = {0,0,-3} button_setup_2p.width = 3500 button_setup_2p.height = 500 button_setup_2p.font_size = 300 local button_setup_3p = {} button_setup_3p.click_function = "setup_3p" button_setup_3p.function_owner = self button_setup_3p.label = "Setup supply for 3 players" button_setup_3p.position = {0,0,-1.5} button_setup_3p.width = 3500 button_setup_3p.height = 500 button_setup_3p.font_size = 300 local button_setup_4p = {} button_setup_4p.click_function = "setup_4p" button_setup_4p.function_owner = self button_setup_4p.label = "Setup supply for 4 players" button_setup_4p.position = {0,0,0} button_setup_4p.width = 3500 button_setup_4p.height = 500 button_setup_4p.font_size = 300 local button_setup_5p = {} button_setup_5p.click_function = "setup_5p" button_setup_5p.function_owner = self button_setup_5p.label = "Setup supply for 5 players" button_setup_5p.position = {0,0,1.5} button_setup_5p.width = 3500 button_setup_5p.height = 500 button_setup_5p.font_size = 300 function onLoad(save_state) self.createButton(button_setup_2p) self.createButton(button_setup_3p) self.createButton(button_setup_4p) self.createButton(button_setup_5p) quartzSupply = getObjectFromGUID(Global.getVar("quartzSupply_GUID")) oreSupply = getObjectFromGUID(Global.getVar("oreSupply_GUID")) waterSupply = getObjectFromGUID(Global.getVar("waterSupply_GUID")) energySupply = getObjectFromGUID(Global.getVar("energySupply_GUID")) end function setup_2p() setup(2) end function setup_3p() setup(3) end function setup_4p() setup(4) end function setup_5p() setup(5) end function setup(numPlayers) printToAll(">>> Setup supply for " .. numPlayers .. "p <<<", {0,1,0}) local qSup,oSup,wSup,eSup if numPlayers == 2 then qSup = 4 oSup = 7 wSup = 6 eSup = 10 elseif numPlayers == 3 then qSup = 5 oSup = 8 wSup = 7 eSup = 12 elseif numPlayers == 4 then qSup = 6 oSup = 9 wSup = 8 eSup = 14 else qSup = 7 oSup = 10 wSup = 10 eSup = 16 end quartzSupply.call("setSupply", qSup) oreSupply.call("setSupply", oSup) waterSupply.call("setSupply", wSup) energySupply.call("setSupply", eSup) endLuaScriptStateXmlUI78GUID95e51eNameCardTransformposX@xposY?posZ8DrotX!d>rotY-f@rotZ`_CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptState {"owned":0}XmlUIStates! 2GUIDeb088eNameCardTransformposX@xposY?posZ8DrotXV>rotY-f@rotZ scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptState {"owned":0}XmlUI3GUIDe9fd07NameCardTransformposX@xposY?posZ8DrotXd>rotY-f@rotZ`_CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptState {"owned":0}XmlUI4GUIDfa5ffbNameCardTransformposX@xposY?posZ8DrotXd>rotY-f@rotZ`_CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDgSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptState {"owned":6}XmlUI79GUID841ad8NameCardTransformposX@cl#@posY?posZCDrotX`XrotYf@rotZ,-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID986997NameCardTransformposX`#@posY?posZDrotX@wrotYf@rotZ$scaleX?scaleY?scaleZ?Nicknamewater carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID3688aaNameCardTransformposX@cl#@posY ?posZCDrotX8rotYf@rotZ)scaleX?scaleY?scaleZ?Nicknamewater carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDnSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID9bfc84NameCardTransformposX@cl#@posY?posZCDrotX`XrotYf@rotZ,-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDoSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI80GUID375515NameCardTransformposX`K0@posY?posZDrotX` xrotY@Tf@rotZscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID3cbc95NameCardTransformposX`K0@posY?posZDrotXMPirotY@Tf@rotZ@scaleX?scaleY?scaleZ?Nicknameenergy carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID6784e7NameCardTransformposX`K0@posY?posZDrotX@aprotY@Tf@rotZuscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID8da0f0NameCardTransformposX`K0@posY?posZDrotX` xrotY@Tf@rotZscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI81GUIDe5cadaNameCardTransformposX` BposY ?posZ8DrotX`P>rotYFf@rotZCmscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUIDeb088eNameCardTransformposX` BposY ?posZm_DrotX`P>rotYFf@rotZCmscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUIDe9fd07NameCardTransformposX` BposY ?posZm_DrotX`P>rotYFf@rotZCmscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID03a2d6NameCardTransformposX` BposY ?posZm_DrotX`P>rotYFf@rotZCmscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDgSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI82GUID9f3953NameCardTransformposX@posY?posZ@DrotX@Yr>rotY@Lf@rotZMyscaleX?scaleY?scaleZ?Nicknameore carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDpSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID376d63NameCardTransformposX @posY?posZ@DrotX t>rotY@Lf@rotZu~scaleX?scaleY?scaleZ?Nicknameore carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDqSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUIDc3f496NameCardTransformposX@posY?posZ@DrotX(UrotY@Lf@rotZ 5\scaleX?scaleY?scaleZ?Nicknameore carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDsSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID25e21fNameCardTransformposX@posY?posZ@DrotXYr>rotY@Lf@rotZ`?yscaleX?scaleY?scaleZ?Nicknameore carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDrSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI83GUID02bb18NameCardTransformposX`=posY ?posZ@DrotXurotY@f@rotZscaleX?scaleY?scaleZ?Nicknameore carrier lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDpSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID376d63NameCardTransformposX=posY ?posZtDrotXurotY@f@rotZ@-ey>scaleX?scaleY?scaleZ?Nicknameore carrier lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDqSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID014d77NameCardTransformposX=posY ?posZtDrotXurotY@f@rotZ-ey>scaleX?scaleY?scaleZ?Nicknameore carrier lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDrSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID1932c9NameCardTransformposX=posY ?posZtDrotXurotY@f@rotZ-ey>scaleX?scaleY?scaleZ?Nicknameore carrier lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDsSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI84GUID472e2cNameCardTransformposXr6posY ?posZ@DrotXB>rotY f@rotZ >scaleX?scaleY?scaleZ?Nicknamewater carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID986997NameCardTransformposXr6posY ?posZXDrotXB>rotY f@rotZ >scaleX?scaleY?scaleZ?Nicknamewater carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID3688aaNameCardTransformposXr6posY ?posZXDrotXB>rotY f@rotZ >scaleX?scaleY?scaleZ?Nicknamewater carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDnSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID9bfc84NameCardTransformposXr6posY ?posZXDrotXB>rotY f@rotZ >scaleX?scaleY?scaleZ?Nicknamewater carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDoSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI85GUID95a833NameCardTransformposX~/posY?posZDrotX?WrotYf@rotZ0scaleX?scaleY?scaleZ?Nicknameenery carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID3cbc95NameCardTransformposXd/posY?posZ@vDrotX`?WrotYf@rotZ0scaleX?scaleY?scaleZ?Nicknameenery carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID6784e7NameCardTransformposXd/posY?posZ@vDrotX?WrotYf@rotZ0scaleX?scaleY?scaleZ?Nicknameenery carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID8da0f0NameCardTransformposXd/posY?posZ@vDrotX?WrotYf@rotZ0scaleX?scaleY?scaleZ?Nicknameenery carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI86GUID8724eeNameChecker_whiteTransformposX 8posYk?posZ@5rotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?Nicknamequartz price mgmtDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript local button_plus = {} button_plus.click_function = "plus" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {0,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "minus" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {0,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local priceMarker_GUID = "e8a842" local priceValues = { {val = 4, pos = {-24.88, 1.26, 2.92}}, {val = 5, pos = {-24.88, 1.26, 4.17}}, {val = 6, pos = {-24.88, 1.26, 5.45}}, {val = 7, pos = {-24.88, 1.26, 6.75}}, {val = 8, pos = {-24.88, 1.26, 7.96}}, {val = 9, pos = {-24.88, 1.26, 9.24}}, {val = 10, pos = {-24.88, 1.26, 10.46}}, {val = 11, pos = {-24.88, 1.26, 11.75}}, {val = 12, pos = {-24.83, 1.26, 13.01}}, {val = 13, pos = {-24.83, 1.26, 14.27}}, {val = 14, pos = {-24.83, 1.26, 15.51}}, {val = 15, pos = {-24.83, 1.26, 16.78}}, {val = 16, pos = {-24.83, 1.26, 18.10}}, {val = 17, pos = {-24.83, 1.26, 19.27}}, {val = 18, pos = {-24.83, 1.26, 20.54}}, {val = 20, pos = {-24.83, 1.26, 21.78}}, {val = 22, pos = {-24.83, 1.26, 23.07}}, {val = 25, pos = {-24.83, 1.26, 24.42}} } USE_SAVES = true --[[ set this to false while editing your mod or treasuries will persist. set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. ]] local currPos = 3 --position, starting from 1, in priceValues table local maxPos = #priceValues local currPrice = priceValues[currPos].val local resource = " quartz " -- << space before/after local resColor = "[FFFFFF]" function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) priceMarker = getObjectFromGUID(priceMarker_GUID) -- restore save state if save_state ~= '""' then local state = JSON.decode(save_state) currPrice = state.price currPos = state.pos end priceMarker.setName(resource .. "price " .. currPrice) end function onSave() local state if not USE_SAVES then state = "" else state = { price = currPrice, pos = currPos } end return JSON.encode(state) end function plus() if currPos < maxPos then local newPos = currPos + 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. newPrice, {1,1,0}) currPrice = newPrice currPos = newPos end end function minus() if currPos > 1 then local newPos = currPos - 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. newPrice, {1,1,0}) currPrice = newPrice currPos = newPos end end function getPrice() return currPrice endLuaScriptState{"pos":3,"price":6}XmlUI87*GUIDed93f9NameChecker_whiteTransformposX`S"3posYh?posZ=rotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?Nicknameore price mgmtDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript local button_plus = {} button_plus.click_function = "plus" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {0,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "minus" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {0,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local priceMarker_GUID = "d8a648" local priceValues = { {val = 1, pos = {-18.97, 1.26, 2.92}}, {val = 2, pos = {-18.97, 1.26, 4.17}}, {val = 3, pos = {-18.97, 1.26, 5.45}}, {val = 4, pos = {-18.97, 1.26, 6.75}}, {val = 5, pos = {-18.97, 1.26, 7.96}}, {val = 6, pos = {-18.97, 1.26, 9.24}}, {val = 7, pos = {-18.97, 1.26, 10.46}}, {val = 8, pos = {-18.97, 1.26, 11.75}}, {val = 9, pos = {-18.91, 1.26, 13.01}}, {val = 10, pos = {-18.91, 1.26, 14.27}}, {val = 11, pos = {-18.91, 1.26, 15.51}}, {val = 12, pos = {-18.91, 1.26, 16.78}}, {val = 13, pos = {-18.91, 1.26, 18.10}}, {val = 14, pos = {-18.91, 1.26, 19.27}}, {val = 15, pos = {-18.91, 1.26, 20.54}}, {val = 16, pos = {-18.91, 1.26, 21.78}}, {val = 18, pos = {-18.91, 1.26, 23.07}}, {val = 20, pos = {-18.91, 1.26, 24.42}} } USE_SAVES = true --[[ set this to false while editing your mod or treasuries will persist. set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. ]] local currPos = 8 --position, starting from 1, in priceValues table local maxPos = #priceValues local currPrice = priceValues[currPos].val local resource = " ore " -- << space before/after local resColor = "[713B17]" function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) priceMarker = getObjectFromGUID(priceMarker_GUID) -- restore save state if save_state ~= '""' then local state = JSON.decode(save_state) currPrice = state.price currPos = state.pos end priceMarker.setName(resource .. "price " .. currPrice) end function onSave() local state if not USE_SAVES then state = "" else state = { price = currPrice, pos = currPos } end return JSON.encode(state) end function plus() if currPos < maxPos then local newPos = currPos + 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. priceValues[newPos].val, {1,1,0}) currPrice = newPrice currPos = newPos end end function minus() if currPos > 1 then local newPos = currPos - 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. newPrice, {1,1,0}) currPrice = newPrice currPos = newPos end end function getPrice() return currPrice endLuaScriptState{"pos":8,"price":8}XmlUI88,GUID84df99NameChecker_whiteTransformposX5l*posYh?posZ^*rotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?Nicknamewater price mgmtDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript local button_plus = {} button_plus.click_function = "plus" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {0,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "minus" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {0,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local priceMarker_GUID = "68590f" local priceValues = { {val = 1, pos = {-13.15, 1.26, 2.92}}, {val = 2, pos = {-13.15, 1.26, 4.17}}, {val = 2, pos = {-13.15, 1.26, 5.45}}, {val = 3, pos = {-13.15, 1.26, 6.75}}, {val = 4, pos = {-13.15, 1.26, 7.96}}, {val = 5, pos = {-13.15, 1.26, 9.24}}, {val = 6, pos = {-13.15, 1.26, 10.46}}, {val = 7, pos = {-13.15, 1.26, 11.75}}, {val = 7, pos = {-13.09, 1.26, 13.01}}, {val = 8, pos = {-13.09, 1.26, 14.27}}, {val = 9, pos = {-13.09, 1.26, 15.51}}, {val = 10, pos = {-13.09, 1.26, 16.78}}, {val = 11, pos = {-13.09, 1.26, 18.10}}, {val = 12, pos = {-13.11, 1.26, 19.28}}, {val = 13, pos = {-13.09, 1.26, 20.54}}, {val = 15, pos = {-13.09, 1.26, 21.78}}, {val = 18, pos = {-13.09, 1.26, 23.07}}, {val = 22, pos = {-13.09, 1.26, 24.42}} } USE_SAVES = true --[[ set this to false while editing your mod or treasuries will persist. set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. ]] local currPos = 8 --position, starting from 1, in priceValues table local maxPos = #priceValues local currPrice = priceValues[currPos].val local resource = " water " -- << space before/after local resColor = "[1F88FF]" function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) priceMarker = getObjectFromGUID(priceMarker_GUID) -- restore save state if save_state ~= '""' then local state = JSON.decode(save_state) currPrice = state.price currPos = state.pos end priceMarker.setName(resource .. "price " .. currPrice) end function onSave() local state if not USE_SAVES then state = "" else state = { price = currPrice, pos = currPos } end return JSON.encode(state) end function plus() if currPos < maxPos then local newPos = currPos + 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. priceValues[newPos].val, {1,1,0}) currPrice = newPrice currPos = newPos end end function minus() if currPos > 1 then local newPos = currPos - 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. newPrice, {1,1,0}) currPrice = newPrice currPos = newPos end end function getPrice() return currPrice endLuaScriptState{"pos":8,"price":7}XmlUI89GUIDda6799NameChecker_whiteTransformposXposYh?posZ<rotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?Nicknameenergy price mgmtDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript local button_plus = {} button_plus.click_function = "plus" button_plus.function_owner = self button_plus.label = "+" button_plus.position = {0,0,-0.8} button_plus.width = 700 button_plus.height = 300 button_plus.font_size = 400 local button_minus = {} button_minus.click_function = "minus" button_minus.function_owner = self button_minus.label = "-" button_minus.position = {0,0,0.8} button_minus.width = 700 button_minus.height = 300 button_minus.font_size = 400 local priceMarker_GUID = "aa2102" local priceValues = { {val = 1, pos = {-7.23, 1.26, 2.92}}, {val = 2, pos = {-7.23, 1.26, 4.17}}, {val = 3, pos = {-7.23, 1.26, 5.45}}, {val = 4, pos = {-7.23, 1.26, 6.75}}, {val = 5, pos = {-7.23, 1.26, 7.96}}, {val = 5, pos = {-7.23, 1.26, 9.24}}, {val = 6, pos = {-7.23, 1.26, 10.46}}, {val = 7, pos = {-7.23, 1.26, 11.75}}, {val = 8, pos = {-7.17, 1.26, 13.01}}, {val = 9, pos = {-7.17, 1.26, 14.27}}, {val = 10, pos = {-7.17, 1.26, 15.51}}, {val = 11, pos = {-7.17, 1.26, 16.78}}, {val = 12, pos = {-7.17, 1.26, 18.10}}, {val = 13, pos = {-7.16, 1.26, 19.26}}, {val = 14, pos = {-7.17, 1.26, 20.54}}, {val = 15, pos = {-7.17, 1.26, 21.78}}, {val = 17, pos = {-7.17, 1.26, 23.07}}, {val = 20, pos = {-7.17, 1.26, 24.42}} } USE_SAVES = true --[[ set this to false while editing your mod or treasuries will persist. set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. ]] local currPos = 8 --position, starting from 1, in priceValues table local maxPos = #priceValues local currPrice = priceValues[currPos].val local resource = " energy " -- << space before/after local resColor = "[FF0000]" function onLoad(save_state) self.createButton(button_plus) self.createButton(button_minus) priceMarker = getObjectFromGUID(priceMarker_GUID) -- restore save state if save_state ~= '""' then local state = JSON.decode(save_state) currPrice = state.price currPos = state.pos end priceMarker.setName(resource .. "price " .. currPrice) end function onSave() local state if not USE_SAVES then state = "" else state = { price = currPrice, pos = currPos } end return JSON.encode(state) end function plus() if currPos < maxPos then local newPos = currPos + 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. priceValues[newPos].val, {1,1,0}) currPrice = newPrice currPos = newPos end end function minus() if currPos > 1 then local newPos = currPos - 1 local newPrice = priceValues[newPos].val priceMarker.setPositionSmooth(priceValues[newPos].pos, false, false) priceMarker.setName(resource .. "price " .. newPrice) printToAll("Setting " .. resColor .. resource .. "[-] price to " .. newPrice, {1,1,0}) currPrice = newPrice currPos = newPos end end function getPrice() return currPrice endLuaScriptState{"pos":8,"price":7}XmlUI90GUIDf2c0d7NameCardTransformposX`mgRposY ?posZ S{DrotX*>rotY f@rotZ@}~scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUIDeb088eNameCardTransformposX`mgRposY ?posZ DrotX*>rotY f@rotZ@}~scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUIDe9fd07NameCardTransformposX`mgRposY ?posZ DrotX*>rotY f@rotZ@}~scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID03a2d6NameCardTransformposX`mgRposY ?posZ DrotX*>rotY f@rotZ@}~scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDgSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI91GUID8632acNameCardTransformposXPposY ?posZ{DrotX֬n>rotYf@rotZ _scaleX?scaleY?scaleZ?Nicknameore carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDpSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID376d63NameCardTransformposX|RposY ?posZધ,rotX>rotYf@rotZiscaleX?scaleY?scaleZ?Nicknameore carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDqSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID014d77NameCardTransformposX`QposY ?posZધ,rotX@iE>rotYf@rotZ.dscaleX?scaleY?scaleZ?Nicknameore carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDrSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUIDc3f496NameCardTransformposXY_PposY ?posZધ,rotX@>rotY/f@rotZ`5z>scaleX?scaleY?scaleZ?Nicknameore carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDsSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI92GUIDbfe80bNameCardTransformposXJMposY ?posZ9DrotX߅rotY f@rotZ@8jb>scaleX?scaleY?scaleZ?Nicknamewater carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID986997NameCardTransformposX nQposY?posZ,rotXz>rotY@f@rotZscaleX?scaleY?scaleZ?Nicknamewater carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID3688aaNameCardTransformposX@OposY ?posZ,rotX`JdrotY f@rotZ scaleX?scaleY?scaleZ?Nicknamewater carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDnSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID9bfc84NameCardTransformposX*MposY?posZ,rotX/rotYf@rotZ`#uscaleX?scaleY?scaleZ?Nicknamewater carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDoSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI93GUIDad4940NameCardTransformposXIposY?posZdDrotX+>rotYif@rotZ@kscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID3cbc95NameCardTransformposX`IposY?posZ KDrotX`+>rotYif@rotZ@kscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID6784e7NameCardTransformposX`IposY?posZ KDrotX+>rotYif@rotZ@kscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID8da0f0NameCardTransformposX`IposY?posZ KDrotX+>rotYif@rotZ@kscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI94GUID501b89NameCardTransformposX;@posY?posZDrotXߞ>rotY;f@rotZ[>scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUIDeb088eNameCardTransformposX;@posY?posZDrotXߞ>rotY;f@rotZ[>scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUIDe9fd07NameCardTransformposX;@posY?posZDrotXߞ>rotY;f@rotZ[>scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID03a2d6NameCardTransformposX;@posY?posZDrotXߞ>rotY;f@rotZ[>scaleX?scaleY?scaleZ?Nicknamequartz carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDgSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI95GUIDa0db96NameCardTransformposX@bwA@posY?posZ`DrotX:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDpSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID376d63NameCardTransformposX@bwA@posY?posZ`DrotX:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDqSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID014d77NameCardTransformposX@bwA@posY?posZ`DrotX@:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDrSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUIDc3f496NameCardTransformposX@bwA@posY?posZ`DrotX:>rotY>f@rotZ p>scaleX?scaleY?scaleZ?Nicknameore carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDsSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI96GUID27d64fNameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID3cbc95NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID6784e7NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID8da0f0NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI97GUID3ce3beNameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID186700NameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID3688aaNameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDnSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID9bfc84NameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDoSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI98GUID58f75aNameCardTransformposX*M@posY ?posZErotX^rotY;f@rotZ@CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDdSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID6f5b23NameCardTransformposX@'M@posY ?posZ sDrotX^rotY;f@rotZ@CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDeSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUIDb21e49NameCardTransformposX@'M@posY ?posZ sDrotX^rotY;f@rotZ@CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDfSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID05c3caNameCardTransformposX@'M@posY ?posZ sDrotX^rotY;f@rotZ@CscaleX?scaleY?scaleZ?Nicknamequartz carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDgSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI99GUIDae9836NameCardTransformposXdP@posY?posZ ErotX:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDpSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID376d63NameCardTransformposX@bwA@posY?posZ`DrotX:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDqSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID014d77NameCardTransformposX@bwA@posY?posZ`DrotX@:>rotY>f@rotZp>scaleX?scaleY?scaleZ?Nicknameore carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDrSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUIDc3f496NameCardTransformposX@bwA@posY?posZ`DrotX:>rotY>f@rotZ p>scaleX?scaleY?scaleZ?Nicknameore carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDsSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI100GUID67f3c3NameCardTransformposX:R@posY?posZErotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDlSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID186700NameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDmSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID3688aaNameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDnSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID9bfc84NameCardTransformposXD@posY ?posZDrotX@x>rotY@f@rotZ-scaleX?scaleY?scaleZ?Nicknamewater carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDoSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI101GUID06fd59NameCardTransformposXaS@posY?posZErotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv1DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDhSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUIStates 2GUID3cbc95NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv2DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDiSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI3GUID6784e7NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv3DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDjSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI4GUID8da0f0NameCardTransformposXSH@posY ?posZDrotX ӽprotYf@rotZ@ʌvscaleX?scaleY?scaleZ?Nicknameenergy carrier Lv4DescriptionGMNotesAltLookAngle&xyzColorDiffuse&r?g?b?LayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsCardIDkSidewaysCardCustomDeck61.FaceURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848797475/DF43FF6CAF4782EB4F83BCD26427EB798B123CAF/BackURLfhttp://cloud-3.steamusercontent.com/ugc/1772750226848801045/EF509A1ACF02470C12AC40311884606AD6A7ECCD/NumWidthNumHeightBackIsHiddenUniqueBackTypeLuaScriptLuaScriptStateXmlUI102 GUID88ae3aNameChecker_whiteTransformposX 0^2posYk?posZ`+A@rotXqr>rotYf@rotZ/scaleX?scaleY?scaleZ?Nickname quartz bonusDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScriptflocal resource = "quartz" local button_bonus = {} button_bonus.click_function = "getBonus" button_bonus.function_owner = self button_bonus.label = resource .. "\nbonus" button_bonus.position = {0,0,0} button_bonus.width = 1100 button_bonus.height = 900 button_bonus.font_size = 350 button_bonus.tooltip = "Click to get Bonus Resource" function onLoad(save_state) self.createButton(button_bonus) supply = getObjectFromGUID(Global.getVar(resource .. "Supply_GUID")) end --[[ function getBonus(obj, plColor, alt_click) -- get ref for resource management local playerArea_GUID = Global.getVar(string.lower(plColor .. "_" .. resource .. "_carrier_mgmt")) playerArea = getObjectFromGUID(playerArea_GUID) -- check if player has enough space on carrier if playerArea.call("hasEnoughSpace") then if supply.call("decrease") then playerArea.call("produce") end else --player doesn't have enough space printToAll(Global.getVar(string.lower(plColor .. "_htmlcode")) .. Player[plColor].steam_name .. "[-] doesn't have enough capacity on his " .. resource .. " carrier", {1,0,0}) end end ]] function getBonus(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) -- check if player has enough space on carrier if playerArea.call("hasEnoughSpace",resource) then if supply.call("decrease") then playerArea.call("produce_" .. resource) end else --player doesn't have enough space printToAll(Global.getVar(string.lower(plColor .. "_htmlcode")) .. Player[plColor].steam_name .. "[-] doesn't have enough capacity on his " .. resource .. " carrier", {1,0,0}) end endLuaScriptState{"pos":3,"price":6}XmlUI103 GUID37fcb8NameChecker_whiteTransformposX@1.posYk?posZ+@@rotX, >rotYf@rotZ{>>scaleX?scaleY?scaleZ?Nickname ore bonusDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScriptlocal resource = "ore" local button_bonus = {} button_bonus.click_function = "getBonus" button_bonus.function_owner = self button_bonus.label = resource .. "\nbonus" button_bonus.position = {0,0,0} button_bonus.width = 1100 button_bonus.height = 900 button_bonus.font_size = 350 button_bonus.tooltip = "Click to get Bonus Resource" function onLoad(save_state) self.createButton(button_bonus) supply = getObjectFromGUID(Global.getVar(resource .. "Supply_GUID")) end function getBonus(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) -- check if player has enough space on carrier if playerArea.call("hasEnoughSpace",resource) then if supply.call("decrease") then playerArea.call("produce_" .. resource) end else --player doesn't have enough space printToAll(Global.getVar(string.lower(plColor .. "_htmlcode")) .. Player[plColor].steam_name .. "[-] doesn't have enough capacity on his " .. resource .. " carrier", {1,0,0}) end endLuaScriptState{"pos":3,"price":6}XmlUI104GUIDddde67NameChecker_whiteTransformposX`?I(posYk?posZ@x@@rotXݐT>rotYf@rotZ`ӋscaleX?scaleY?scaleZ?Nickname water bonusDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScriptlocal resource = "water" local button_bonus = {} button_bonus.click_function = "getBonus" button_bonus.function_owner = self button_bonus.label = resource .. "\nbonus" button_bonus.position = {0,0,0} button_bonus.width = 1100 button_bonus.height = 900 button_bonus.font_size = 350 button_bonus.tooltip = "Click to get Bonus Resource" function onLoad(save_state) self.createButton(button_bonus) supply = getObjectFromGUID(Global.getVar(resource .. "Supply_GUID")) end function getBonus(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) -- check if player has enough space on carrier if playerArea.call("hasEnoughSpace",resource) then if supply.call("decrease") then playerArea.call("produce_" .. resource) end else --player doesn't have enough space printToAll(Global.getVar(string.lower(plColor .. "_htmlcode")) .. Player[plColor].steam_name .. "[-] doesn't have enough capacity on his " .. resource .. " carrier", {1,0,0}) end endLuaScriptState{"pos":3,"price":6}XmlUI105GUID71991fNameChecker_whiteTransformposX!posYk?posZ`$A@rotXdrotY@f@rotZHKоscaleX?scaleY?scaleZ?Nickname energy bonusDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScriptlocal resource = "energy" local button_bonus = {} button_bonus.click_function = "getBonus" button_bonus.function_owner = self button_bonus.label = resource .. "\nbonus" button_bonus.position = {0,0,0} button_bonus.width = 1100 button_bonus.height = 900 button_bonus.font_size = 350 button_bonus.tooltip = "Click to get Bonus Resource" function onLoad(save_state) self.createButton(button_bonus) supply = getObjectFromGUID(Global.getVar(resource .. "Supply_GUID")) end function getBonus(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) -- check if player has enough space on carrier if playerArea.call("hasEnoughSpace",resource) then if supply.call("decrease") then playerArea.call("produce_" .. resource) end else --player doesn't have enough space printToAll(Global.getVar(string.lower(plColor .. "_htmlcode")) .. Player[plColor].steam_name .. "[-] doesn't have enough capacity on his " .. resource .. " carrier", {1,0,0}) end endLuaScriptState{"pos":3,"price":6}XmlUI106B&GUID15d66dNameChecker_whiteTransformposX@posY ph?posZ5GrotX艾rotY`f@rotZ⸠scaleX23@scaleY23@scaleZ23@NicknameWhite player areaDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript2#-- change these variables after cloning object -- START local playerBank = "whiteBank_GUID" local plColor = "White" local plColorHtmlCode -- << see onLoad() -- L1 carriers GUID for White player local carrier_GUIDs = { quartz ="95e51e" , ore = "9f3953" , water = "841ad8", energy = "375515" } -- END local msgTint = {213/255,166/255,189/255} local resources = {"quartz", "ore", "water", "energy"} local XoffSets = {-4.5,-1.5,1.5,4.5} local levels = {quartz = 1, ore = 1, water = 1, energy = 1} -- <<-- starting levels local capacities = { quartz = {2,4,6,10}, ore = {3,6,9,14}, water = {5,7,9,12}, energy = {5,8,10,12} } local currentOwned = { quartz = 0, ore = 0, water = 0, energy = 0 } local capLiv_labels_ix = { quartz = 1, ore = 5, water = 9, energy = 13 } -- index for changing CapLiv labels when upgrading carriers local owned_labels_ix = { quartz = 3, ore = 7, water = 11, energy = 15 } -- index for changing owned labels when producing resources local supplies_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker local prices_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) -- button starts at index 0 for i,v in pairs(resources) do -- produce btn local btn_prod = {} btn_prod.click_function = "produce_" .. v btn_prod.function_owner = self btn_prod.label = "Produce" btn_prod.position = {XoffSets[i],0,-3.4} btn_prod.width = 700 btn_prod.height = 300 btn_prod.font_size = 150 btn_prod.tooltip = "Right click to decrease" self.createButton(btn_prod) -- capacity/Level btn local btn_CL = {} btn_CL.click_function = "doNothing" btn_CL.function_owner = self btn_CL.label = "C L" btn_CL.position = {XoffSets[i],0,-2.8} btn_CL.width = 0 btn_CL.height = 0 btn_CL.font_size = 300 btn_CL.font_color = Color.White self.createButton(btn_CL) -- upgrade btn local btn_upg = {} btn_upg.click_function = "upgrade_" .. v btn_upg.function_owner = self btn_upg.label = "Upgrade" btn_upg.position = {XoffSets[i],0,-1} btn_upg.width = 700 btn_upg.height = 300 btn_upg.font_size = 150 self.createButton(btn_upg) -- owned resource btn local btn_owned = {} btn_owned.click_function = "doNothing" btn_owned.function_owner = self btn_owned.label = "0" btn_owned.position = {XoffSets[i],0,0} btn_owned.width = 0 btn_owned.height = 0 btn_owned.font_size = 400 btn_owned.font_color = {1,1,1} self.createButton(btn_owned) -- get ref to supply & price markers supplies_markers[v] = getObjectFromGUID(Global.getVar(v .. "Supply_GUID")) prices_markers[v] = getObjectFromGUID(Global.getVar(v .. "PriceMgmt_GUID")) end bank = getObjectFromGUID(Global.getVar(playerBank)) carrierLx = getObjectFromGUID(carrierL1_GUID) plColorHtmlCode = Global.getVar(string.lower(plColor .. "_htmlcode")) -- restore if saved session if save_state ~= '""' then local state = JSON.decode(save_state) levels = state.lvs currentOwned = state.cOwn carrier_GUIDs = state.carrsGuids end -- setting CapLiv & owned labels for i,v in pairs(resources) do -- I need to know only level to set capacity local cLvl = levels[v] -- current Level -- CapLiv label self.editButton({index=capLiv_labels_ix[v],label = "C" .. capacities[v][cLvl] .. " Liv" .. levels[v]}) -- owned Label self.editButton({index = owned_labels_ix[v],label = currentOwned[v]}) end end function onSave() local state if not USE_SAVES then state = "" else state = { lvs = levels, cOwn = currentOwned, carrsGuids = carrier_GUIDs } end return JSON.encode(state) end function upgrade_quartz() upgrade("quartz") end function upgrade_ore() upgrade("ore") end function upgrade_water() upgrade("water") end function upgrade_energy() upgrade("energy") end function produce_quartz(obj, plClkColor,alt_clk) produce("quartz",alt_clk) end function produce_ore(obj, plClkColor,alt_clk) produce("ore",alt_clk) end function produce_water(obj, plClkColor,alt_clk) produce("water",alt_clk) end function produce_energy(obj, plClkColor,alt_clk) produce("energy",alt_clk) end function sell(resource) local amount = currentOwned[resource] if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) local currPrice = prices_markers[resource].call("getPrice") -- increment player's bank bank.call("buySellResource", {op = "add",val = currPrice}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] sells 1" .. resource .. "at " .. currPrice .. "$", msgTint) supplies_markers[resource].call("increase") -- save for next use currentOwned[resource] = amount end end function buy(resource) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level -- if I have enough money to pay local currPrice = prices_markers[resource].call("getPrice") if bank.call("getBalance") >= currPrice then -- if I have capacity in my carrier. I only need current level to get capacity linked if amount ~= capacities[resource][cLvl] then local success = supplies_markers[resource].call("decrease") if success then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] buys 1 " .. resource, msgTint) bank.call("buySellResource", {op = "sub",val = currPrice}) end else printToAll("Max capacity! You can't buy.", {1,0,0}) end else printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] doesn't have enough money to buy 1 " .. resource,{1,0,0} ) end -- save for next use currentOwned[resource] = amount end function upgrade(resource) local lv = levels[resource] if lv == 4 then printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] Max Level reached with " .. resource .. " carrier", {1,0,0}) else local nextLv = lv + 1 local cap = capacities[resource][nextLv] local carrierCard = getObjectFromGUID(carrier_GUIDs[resource]) carrier_GUIDs[resource] = carrierCard.setState(nextLv).guid self.editButton({index=capLiv_labels_ix[resource],label = "C" .. cap .. " Liv" .. nextLv}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] upgrades " .. resource .. " carrier to Lv" .. nextLv, msgTint) -- save for using in other fn levels[resource] = nextLv end end function produce(resource,undo) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level if undo then -- used for mistakes if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] loses 1" .. resource, msgTint) end else if amount < capacities[resource][cLvl] then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] produces 1" .. resource, msgTint) else printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] reaches max capacity on his " .. resource .. " carrier", {1,0,0}) end end -- save for next use currentOwned[resource] = amount end function hasEnoughSpace(resource) local cLvl = levels[resource] -- current Level return currentOwned[resource] < capacities[resource][cLvl] end function doNothing() endLuaScriptState{"carrsGuids":{"energy":"375515","ore":"9f3953","quartz":"95e51e","water":"841ad8"},"cOwn":{"energy":0,"ore":0,"quartz":0,"water":0},"lvs":{"energy":1,"ore":1,"quartz":1,"water":1}}XmlUI107GUID1ca235NameChecker_whiteTransformposX@|6posYh?posZrotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?NicknameBuy/Sell quartzDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript-local resource = "quartz" local button_sell = {} button_sell.click_function = "sell" button_sell.function_owner = self button_sell.label = "Sell" button_sell.position = {0,0,-0.8} button_sell.width = 700 button_sell.height = 300 button_sell.font_size = 200 button_sell.tooltip = "Click to sell " .. resource local button_buy = {} button_buy.click_function = "buy" button_buy.function_owner = self button_buy.label = "Buy" button_buy.position = {0,0,0.8} button_buy.width = 700 button_buy.height = 300 button_buy.font_size = 200 button_buy.tooltip = "Click to buy " .. resource function onLoad(save_state) self.createButton(button_sell) self.createButton(button_buy) priceMarker = getObjectFromGUID(Global.getVar(resource .. "_PriceMgmt_GUID")) end function sell(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("sell",resource) end function buy(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("buy",resource) endLuaScriptState{"pos":3,"price":6}XmlUI108GUIDdcf323NameChecker_whiteTransformposX0posYh?posZrotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?Nickname Buy/Sell oreDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript*local resource = "ore" local button_sell = {} button_sell.click_function = "sell" button_sell.function_owner = self button_sell.label = "Sell" button_sell.position = {0,0,-0.8} button_sell.width = 700 button_sell.height = 300 button_sell.font_size = 200 button_sell.tooltip = "Click to sell " .. resource local button_buy = {} button_buy.click_function = "buy" button_buy.function_owner = self button_buy.label = "Buy" button_buy.position = {0,0,0.8} button_buy.width = 700 button_buy.height = 300 button_buy.font_size = 200 button_buy.tooltip = "Click to buy " .. resource function onLoad(save_state) self.createButton(button_sell) self.createButton(button_buy) priceMarker = getObjectFromGUID(Global.getVar(resource .. "_PriceMgmt_GUID")) end function sell(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("sell",resource) end function buy(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("buy",resource) endLuaScriptState{"pos":3,"price":6}XmlUI109GUIDcf8d11NameChecker_whiteTransformposX`[%posYh?posZvrotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?NicknameBuy/Sell waterDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript,local resource = "water" local button_sell = {} button_sell.click_function = "sell" button_sell.function_owner = self button_sell.label = "Sell" button_sell.position = {0,0,-0.8} button_sell.width = 700 button_sell.height = 300 button_sell.font_size = 200 button_sell.tooltip = "Click to sell " .. resource local button_buy = {} button_buy.click_function = "buy" button_buy.function_owner = self button_buy.label = "Buy" button_buy.position = {0,0,0.8} button_buy.width = 700 button_buy.height = 300 button_buy.font_size = 200 button_buy.tooltip = "Click to buy " .. resource function onLoad(save_state) self.createButton(button_sell) self.createButton(button_buy) priceMarker = getObjectFromGUID(Global.getVar(resource .. "_PriceMgmt_GUID")) end function sell(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("sell",resource) end function buy(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("buy",resource) endLuaScriptState{"pos":3,"price":6}XmlUI110GUID9e1fd7NameChecker_whiteTransformposX IposYh?posZrotXrotYf@rotZ 5s>scaleX?scaleY?scaleZ?NicknameBuy/Sell energyDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript-local resource = "energy" local button_sell = {} button_sell.click_function = "sell" button_sell.function_owner = self button_sell.label = "Sell" button_sell.position = {0,0,-0.8} button_sell.width = 700 button_sell.height = 300 button_sell.font_size = 200 button_sell.tooltip = "Click to sell " .. resource local button_buy = {} button_buy.click_function = "buy" button_buy.function_owner = self button_buy.label = "Buy" button_buy.position = {0,0,0.8} button_buy.width = 700 button_buy.height = 300 button_buy.font_size = 200 button_buy.tooltip = "Click to buy " .. resource function onLoad(save_state) self.createButton(button_sell) self.createButton(button_buy) priceMarker = getObjectFromGUID(Global.getVar(resource .. "_PriceMgmt_GUID")) end function sell(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("sell",resource) end function buy(obj, plColor, alt_click) -- get ref for players' area local playerArea_GUID = Global.getVar(string.lower(plColor .. "_playerarea_guid")) local playerArea = getObjectFromGUID(playerArea_GUID) playerArea.call("buy",resource) endLuaScriptState{"pos":3,"price":6}XmlUI111B&GUID37b0feNameChecker_whiteTransformposXNOposYph?posZYFrotX`ۧi>rotY@f@rotZ`scaleX23@scaleY23@scaleZ23@NicknameGreen player areaDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript2#-- change these variables after cloning object -- START local playerBank = "greenBank_GUID" local plColor = "Green" local plColorHtmlCode -- << see onLoad() -- L1 carriers GUID for Green player local carrier_GUIDs = { quartz ="f2c0d7" , ore = "8632ac" , water = "bfe80b", energy = "ad4940" } -- END local msgTint = {213/255,166/255,189/255} local resources = {"quartz", "ore", "water", "energy"} local XoffSets = {-4.5,-1.5,1.5,4.5} local levels = {quartz = 1, ore = 1, water = 1, energy = 1} -- <<-- starting levels local capacities = { quartz = {2,4,6,10}, ore = {3,6,9,14}, water = {5,7,9,12}, energy = {5,8,10,12} } local currentOwned = { quartz = 0, ore = 0, water = 0, energy = 0 } local capLiv_labels_ix = { quartz = 1, ore = 5, water = 9, energy = 13 } -- index for changing CapLiv labels when upgrading carriers local owned_labels_ix = { quartz = 3, ore = 7, water = 11, energy = 15 } -- index for changing owned labels when producing resources local supplies_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker local prices_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) -- button starts at index 0 for i,v in pairs(resources) do -- produce btn local btn_prod = {} btn_prod.click_function = "produce_" .. v btn_prod.function_owner = self btn_prod.label = "Produce" btn_prod.position = {XoffSets[i],0,-3.4} btn_prod.width = 700 btn_prod.height = 300 btn_prod.font_size = 150 btn_prod.tooltip = "Right click to decrease" self.createButton(btn_prod) -- capacity/Level btn local btn_CL = {} btn_CL.click_function = "doNothing" btn_CL.function_owner = self btn_CL.label = "C L" btn_CL.position = {XoffSets[i],0,-2.8} btn_CL.width = 0 btn_CL.height = 0 btn_CL.font_size = 300 btn_CL.font_color = Color.White self.createButton(btn_CL) -- upgrade btn local btn_upg = {} btn_upg.click_function = "upgrade_" .. v btn_upg.function_owner = self btn_upg.label = "Upgrade" btn_upg.position = {XoffSets[i],0,-1} btn_upg.width = 700 btn_upg.height = 300 btn_upg.font_size = 150 self.createButton(btn_upg) -- owned resource btn local btn_owned = {} btn_owned.click_function = "doNothing" btn_owned.function_owner = self btn_owned.label = "0" btn_owned.position = {XoffSets[i],0,0} btn_owned.width = 0 btn_owned.height = 0 btn_owned.font_size = 400 btn_owned.font_color = {1,1,1} self.createButton(btn_owned) -- get ref to supply & price markers supplies_markers[v] = getObjectFromGUID(Global.getVar(v .. "Supply_GUID")) prices_markers[v] = getObjectFromGUID(Global.getVar(v .. "PriceMgmt_GUID")) end bank = getObjectFromGUID(Global.getVar(playerBank)) carrierLx = getObjectFromGUID(carrierL1_GUID) plColorHtmlCode = Global.getVar(string.lower(plColor .. "_htmlcode")) -- restore if saved session if save_state ~= '""' then local state = JSON.decode(save_state) levels = state.lvs currentOwned = state.cOwn carrier_GUIDs = state.carrsGuids end -- setting CapLiv & owned labels for i,v in pairs(resources) do -- I need to know only level to set capacity local cLvl = levels[v] -- current Level -- CapLiv label self.editButton({index=capLiv_labels_ix[v],label = "C" .. capacities[v][cLvl] .. " Liv" .. levels[v]}) -- owned Label self.editButton({index = owned_labels_ix[v],label = currentOwned[v]}) end end function onSave() local state if not USE_SAVES then state = "" else state = { lvs = levels, cOwn = currentOwned, carrsGuids = carrier_GUIDs } end return JSON.encode(state) end function upgrade_quartz() upgrade("quartz") end function upgrade_ore() upgrade("ore") end function upgrade_water() upgrade("water") end function upgrade_energy() upgrade("energy") end function produce_quartz(obj, plClkColor,alt_clk) produce("quartz",alt_clk) end function produce_ore(obj, plClkColor,alt_clk) produce("ore",alt_clk) end function produce_water(obj, plClkColor,alt_clk) produce("water",alt_clk) end function produce_energy(obj, plClkColor,alt_clk) produce("energy",alt_clk) end function sell(resource) local amount = currentOwned[resource] if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) local currPrice = prices_markers[resource].call("getPrice") -- increment player's bank bank.call("buySellResource", {op = "add",val = currPrice}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] sells 1" .. resource .. "at " .. currPrice .. "$", msgTint) supplies_markers[resource].call("increase") -- save for next use currentOwned[resource] = amount end end function buy(resource) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level -- if I have enough money to pay local currPrice = prices_markers[resource].call("getPrice") if bank.call("getBalance") >= currPrice then -- if I have capacity in my carrier. I only need current level to get capacity linked if amount ~= capacities[resource][cLvl] then local success = supplies_markers[resource].call("decrease") if success then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] buys 1 " .. resource, msgTint) bank.call("buySellResource", {op = "sub",val = currPrice}) end else printToAll("Max capacity! You can't buy.", {1,0,0}) end else printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] doesn't have enough money to buy 1 " .. resource,{1,0,0} ) end -- save for next use currentOwned[resource] = amount end function upgrade(resource) local lv = levels[resource] if lv == 4 then printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] Max Level reached with " .. resource .. " carrier", {1,0,0}) else local nextLv = lv + 1 local cap = capacities[resource][nextLv] local carrierCard = getObjectFromGUID(carrier_GUIDs[resource]) carrier_GUIDs[resource] = carrierCard.setState(nextLv).guid self.editButton({index=capLiv_labels_ix[resource],label = "C" .. cap .. " Liv" .. nextLv}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] upgrades " .. resource .. " carrier to Lv" .. nextLv, msgTint) -- save for using in other fn levels[resource] = nextLv end end function produce(resource,undo) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level if undo then -- used for mistakes if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] loses 1" .. resource, msgTint) end else if amount < capacities[resource][cLvl] then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] produces 1" .. resource, msgTint) else printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] reaches max capacity on his " .. resource .. " carrier", {1,0,0}) end end -- save for next use currentOwned[resource] = amount end function hasEnoughSpace(resource) local cLvl = levels[resource] -- current Level return currentOwned[resource] < capacities[resource][cLvl] end function doNothing() endLuaScriptState{"carrsGuids":{"energy":"ad4940","ore":"8632ac","quartz":"f2c0d7","water":"bfe80b"},"cOwn":{"energy":0,"ore":0,"quartz":0,"water":0},"lvs":{"energy":1,"ore":1,"quartz":1,"water":1}}XmlUI112F&GUID1eb5d7NameChecker_whiteTransformposXV:posYph?posZGrotX艾rotY`f@rotZ⸠scaleX23@scaleY23@scaleZ23@NicknameOrange player areaDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript5#-- change these variables after cloning object -- START local playerBank = "orangeBank_GUID" local plColor = "Orange" local plColorHtmlCode -- << see onLoad() -- L1 carriers GUID for Orange player local carrier_GUIDs = { quartz ="e5cada" , ore = "02bb18" , water = "472e2c", energy = "95a833" } -- END local msgTint = {213/255,166/255,189/255} local resources = {"quartz", "ore", "water", "energy"} local XoffSets = {-4.5,-1.5,1.5,4.5} local levels = {quartz = 1, ore = 1, water = 1, energy = 1} -- <<-- starting levels local capacities = { quartz = {2,4,6,10}, ore = {3,6,9,14}, water = {5,7,9,12}, energy = {5,8,10,12} } local currentOwned = { quartz = 0, ore = 0, water = 0, energy = 0 } local capLiv_labels_ix = { quartz = 1, ore = 5, water = 9, energy = 13 } -- index for changing CapLiv labels when upgrading carriers local owned_labels_ix = { quartz = 3, ore = 7, water = 11, energy = 15 } -- index for changing owned labels when producing resources local supplies_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker local prices_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) -- button starts at index 0 for i,v in pairs(resources) do -- produce btn local btn_prod = {} btn_prod.click_function = "produce_" .. v btn_prod.function_owner = self btn_prod.label = "Produce" btn_prod.position = {XoffSets[i],0,-3.4} btn_prod.width = 700 btn_prod.height = 300 btn_prod.font_size = 150 btn_prod.tooltip = "Right click to decrease" self.createButton(btn_prod) -- capacity/Level btn local btn_CL = {} btn_CL.click_function = "doNothing" btn_CL.function_owner = self btn_CL.label = "C L" btn_CL.position = {XoffSets[i],0,-2.8} btn_CL.width = 0 btn_CL.height = 0 btn_CL.font_size = 300 btn_CL.font_color = Color.White self.createButton(btn_CL) -- upgrade btn local btn_upg = {} btn_upg.click_function = "upgrade_" .. v btn_upg.function_owner = self btn_upg.label = "Upgrade" btn_upg.position = {XoffSets[i],0,-1} btn_upg.width = 700 btn_upg.height = 300 btn_upg.font_size = 150 self.createButton(btn_upg) -- owned resource btn local btn_owned = {} btn_owned.click_function = "doNothing" btn_owned.function_owner = self btn_owned.label = "0" btn_owned.position = {XoffSets[i],0,0} btn_owned.width = 0 btn_owned.height = 0 btn_owned.font_size = 400 btn_owned.font_color = {1,1,1} self.createButton(btn_owned) -- get ref to supply & price markers supplies_markers[v] = getObjectFromGUID(Global.getVar(v .. "Supply_GUID")) prices_markers[v] = getObjectFromGUID(Global.getVar(v .. "PriceMgmt_GUID")) end bank = getObjectFromGUID(Global.getVar(playerBank)) carrierLx = getObjectFromGUID(carrierL1_GUID) plColorHtmlCode = Global.getVar(string.lower(plColor .. "_htmlcode")) -- restore if saved session if save_state ~= '""' then local state = JSON.decode(save_state) levels = state.lvs currentOwned = state.cOwn carrier_GUIDs = state.carrsGuids end -- setting CapLiv & owned labels for i,v in pairs(resources) do -- I need to know only level to set capacity local cLvl = levels[v] -- current Level -- CapLiv label self.editButton({index=capLiv_labels_ix[v],label = "C" .. capacities[v][cLvl] .. " Liv" .. levels[v]}) -- owned Label self.editButton({index = owned_labels_ix[v],label = currentOwned[v]}) end end function onSave() local state if not USE_SAVES then state = "" else state = { lvs = levels, cOwn = currentOwned, carrsGuids = carrier_GUIDs } end return JSON.encode(state) end function upgrade_quartz() upgrade("quartz") end function upgrade_ore() upgrade("ore") end function upgrade_water() upgrade("water") end function upgrade_energy() upgrade("energy") end function produce_quartz(obj, plClkColor,alt_clk) produce("quartz",alt_clk) end function produce_ore(obj, plClkColor,alt_clk) produce("ore",alt_clk) end function produce_water(obj, plClkColor,alt_clk) produce("water",alt_clk) end function produce_energy(obj, plClkColor,alt_clk) produce("energy",alt_clk) end function sell(resource) local amount = currentOwned[resource] if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) local currPrice = prices_markers[resource].call("getPrice") -- increment player's bank bank.call("buySellResource", {op = "add",val = currPrice}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] sells 1" .. resource .. "at " .. currPrice .. "$", msgTint) supplies_markers[resource].call("increase") -- save for next use currentOwned[resource] = amount end end function buy(resource) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level -- if I have enough money to pay local currPrice = prices_markers[resource].call("getPrice") if bank.call("getBalance") >= currPrice then -- if I have capacity in my carrier. I only need current level to get capacity linked if amount ~= capacities[resource][cLvl] then local success = supplies_markers[resource].call("decrease") if success then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] buys 1 " .. resource, msgTint) bank.call("buySellResource", {op = "sub",val = currPrice}) end else printToAll("Max capacity! You can't buy.", {1,0,0}) end else printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] doesn't have enough money to buy 1 " .. resource,{1,0,0} ) end -- save for next use currentOwned[resource] = amount end function upgrade(resource) local lv = levels[resource] if lv == 4 then printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] Max Level reached with " .. resource .. " carrier", {1,0,0}) else local nextLv = lv + 1 local cap = capacities[resource][nextLv] local carrierCard = getObjectFromGUID(carrier_GUIDs[resource]) carrier_GUIDs[resource] = carrierCard.setState(nextLv).guid self.editButton({index=capLiv_labels_ix[resource],label = "C" .. cap .. " Liv" .. nextLv}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] upgrades " .. resource .. " carrier to Lv" .. nextLv, msgTint) -- save for using in other fn levels[resource] = nextLv end end function produce(resource,undo) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level if undo then -- used for mistakes if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] loses 1" .. resource, msgTint) end else if amount < capacities[resource][cLvl] then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] produces 1" .. resource, msgTint) else printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] reaches max capacity on his " .. resource .. " carrier", {1,0,0}) end end -- save for next use currentOwned[resource] = amount end function hasEnoughSpace(resource) local cLvl = levels[resource] -- current Level return currentOwned[resource] < capacities[resource][cLvl] end function doNothing() endLuaScriptState{"carrsGuids":{"energy":"95a833","ore":"02bb18","quartz":"e5cada","water":"472e2c"},"cOwn":{"energy":0,"ore":0,"quartz":0,"water":0},"lvs":{"energy":1,"ore":1,"quartz":1,"water":1}}XmlUI113E&GUIDa59ec5NameChecker_whiteTransformposX@}B@posYph?posZWGrotX艾rotY`f@rotZ⸠scaleX23@scaleY23@scaleZ23@NicknamePurple player areaDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript4#-- change these variables after cloning object -- START local playerBank = "purpleBank_GUID" local plColor = "Purple" local plColorHtmlCode -- << see onLoad() -- L1 carriers GUID for White player local carrier_GUIDs = { quartz ="501b89" , ore = "a0db96" , water = "3ce3be", energy = "27d64f" } -- END local msgTint = {213/255,166/255,189/255} local resources = {"quartz", "ore", "water", "energy"} local XoffSets = {-4.5,-1.5,1.5,4.5} local levels = {quartz = 1, ore = 1, water = 1, energy = 1} -- <<-- starting levels local capacities = { quartz = {2,4,6,10}, ore = {3,6,9,14}, water = {5,7,9,12}, energy = {5,8,10,12} } local currentOwned = { quartz = 0, ore = 0, water = 0, energy = 0 } local capLiv_labels_ix = { quartz = 1, ore = 5, water = 9, energy = 13 } -- index for changing CapLiv labels when upgrading carriers local owned_labels_ix = { quartz = 3, ore = 7, water = 11, energy = 15 } -- index for changing owned labels when producing resources local supplies_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker local prices_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) -- button starts at index 0 for i,v in pairs(resources) do -- produce btn local btn_prod = {} btn_prod.click_function = "produce_" .. v btn_prod.function_owner = self btn_prod.label = "Produce" btn_prod.position = {XoffSets[i],0,-3.4} btn_prod.width = 700 btn_prod.height = 300 btn_prod.font_size = 150 btn_prod.tooltip = "Right click to decrease" self.createButton(btn_prod) -- capacity/Level btn local btn_CL = {} btn_CL.click_function = "doNothing" btn_CL.function_owner = self btn_CL.label = "C L" btn_CL.position = {XoffSets[i],0,-2.8} btn_CL.width = 0 btn_CL.height = 0 btn_CL.font_size = 300 btn_CL.font_color = Color.White self.createButton(btn_CL) -- upgrade btn local btn_upg = {} btn_upg.click_function = "upgrade_" .. v btn_upg.function_owner = self btn_upg.label = "Upgrade" btn_upg.position = {XoffSets[i],0,-1} btn_upg.width = 700 btn_upg.height = 300 btn_upg.font_size = 150 self.createButton(btn_upg) -- owned resource btn local btn_owned = {} btn_owned.click_function = "doNothing" btn_owned.function_owner = self btn_owned.label = "0" btn_owned.position = {XoffSets[i],0,0} btn_owned.width = 0 btn_owned.height = 0 btn_owned.font_size = 400 btn_owned.font_color = {1,1,1} self.createButton(btn_owned) -- get ref to supply & price markers supplies_markers[v] = getObjectFromGUID(Global.getVar(v .. "Supply_GUID")) prices_markers[v] = getObjectFromGUID(Global.getVar(v .. "PriceMgmt_GUID")) end bank = getObjectFromGUID(Global.getVar(playerBank)) carrierLx = getObjectFromGUID(carrierL1_GUID) plColorHtmlCode = Global.getVar(string.lower(plColor .. "_htmlcode")) -- restore if saved session if save_state ~= '""' then local state = JSON.decode(save_state) levels = state.lvs currentOwned = state.cOwn carrier_GUIDs = state.carrsGuids end -- setting CapLiv & owned labels for i,v in pairs(resources) do -- I need to know only level to set capacity local cLvl = levels[v] -- current Level -- CapLiv label self.editButton({index=capLiv_labels_ix[v],label = "C" .. capacities[v][cLvl] .. " Liv" .. levels[v]}) -- owned Label self.editButton({index = owned_labels_ix[v],label = currentOwned[v]}) end end function onSave() local state if not USE_SAVES then state = "" else state = { lvs = levels, cOwn = currentOwned, carrsGuids = carrier_GUIDs } end return JSON.encode(state) end function upgrade_quartz() upgrade("quartz") end function upgrade_ore() upgrade("ore") end function upgrade_water() upgrade("water") end function upgrade_energy() upgrade("energy") end function produce_quartz(obj, plClkColor,alt_clk) produce("quartz",alt_clk) end function produce_ore(obj, plClkColor,alt_clk) produce("ore",alt_clk) end function produce_water(obj, plClkColor,alt_clk) produce("water",alt_clk) end function produce_energy(obj, plClkColor,alt_clk) produce("energy",alt_clk) end function sell(resource) local amount = currentOwned[resource] if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) local currPrice = prices_markers[resource].call("getPrice") -- increment player's bank bank.call("buySellResource", {op = "add",val = currPrice}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] sells 1" .. resource .. "at " .. currPrice .. "$", msgTint) supplies_markers[resource].call("increase") -- save for next use currentOwned[resource] = amount end end function buy(resource) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level -- if I have enough money to pay local currPrice = prices_markers[resource].call("getPrice") if bank.call("getBalance") >= currPrice then -- if I have capacity in my carrier. I only need current level to get capacity linked if amount ~= capacities[resource][cLvl] then local success = supplies_markers[resource].call("decrease") if success then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] buys 1 " .. resource, msgTint) bank.call("buySellResource", {op = "sub",val = currPrice}) end else printToAll("Max capacity! You can't buy.", {1,0,0}) end else printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] doesn't have enough money to buy 1 " .. resource,{1,0,0} ) end -- save for next use currentOwned[resource] = amount end function upgrade(resource) local lv = levels[resource] if lv == 4 then printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] Max Level reached with " .. resource .. " carrier", {1,0,0}) else local nextLv = lv + 1 local cap = capacities[resource][nextLv] local carrierCard = getObjectFromGUID(carrier_GUIDs[resource]) carrier_GUIDs[resource] = carrierCard.setState(nextLv).guid self.editButton({index=capLiv_labels_ix[resource],label = "C" .. cap .. " Liv" .. nextLv}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] upgrades " .. resource .. " carrier to Lv" .. nextLv, msgTint) -- save for using in other fn levels[resource] = nextLv end end function produce(resource,undo) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level if undo then -- used for mistakes if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] loses 1" .. resource, msgTint) end else if amount < capacities[resource][cLvl] then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] produces 1" .. resource, msgTint) else printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] reaches max capacity on his " .. resource .. " carrier", {1,0,0}) end end -- save for next use currentOwned[resource] = amount end function hasEnoughSpace(resource) local cLvl = levels[resource] -- current Level return currentOwned[resource] < capacities[resource][cLvl] end function doNothing() endLuaScriptState{"carrsGuids":{"energy":"27d64f","ore":"a0db96","quartz":"501b89","water":"3ce3be"},"cOwn":{"energy":0,"ore":0,"quartz":0,"water":0},"lvs":{"energy":1,"ore":1,"quartz":1,"water":1}}XmlUI114F&GUIDd1817aNameChecker_whiteTransformposX $4Q@posYph?posZ[GrotX艾rotY`f@rotZ⸠scaleX23@scaleY23@scaleZ23@NicknameYellow player areaDescriptionGMNotesAltLookAngle&xyzColorDiffuse1r?g?b?aLayoutGroupSortIndexValueLockedGridSnapIgnoreFoWMeasureMovementDragSelectableAutoraiseStickyTooltipGridProjectionHideWhenFaceDownHandsLuaScript5#-- change these variables after cloning object -- START local playerBank = "yellowBank_GUID" local plColor = "Yellow" local plColorHtmlCode -- << see onLoad() -- L1 carriers GUID for Yellow player local carrier_GUIDs = { quartz ="58f75a" , ore = "ae9836" , water = "67f3c3", energy = "06fd59" } -- END local msgTint = {213/255,166/255,189/255} local resources = {"quartz", "ore", "water", "energy"} local XoffSets = {-4.5,-1.5,1.5,4.5} local levels = {quartz = 1, ore = 1, water = 1, energy = 1} -- <<-- starting levels local capacities = { quartz = {2,4,6,10}, ore = {3,6,9,14}, water = {5,7,9,12}, energy = {5,8,10,12} } local currentOwned = { quartz = 0, ore = 0, water = 0, energy = 0 } local capLiv_labels_ix = { quartz = 1, ore = 5, water = 9, energy = 13 } -- index for changing CapLiv labels when upgrading carriers local owned_labels_ix = { quartz = 3, ore = 7, water = 11, energy = 15 } -- index for changing owned labels when producing resources local supplies_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker local prices_markers = { quartz = 0, ore = 0, water = 0, energy = 0} -- store ref object for marker USE_SAVES = true --set this to false while editing your mod or treasuries will persist. --set this to true, copy in the script, use "save and play" from the modding menu, and then actually save your mod to enable saves (TTS is dumb). --WARNING: If you intend on modifying any gameOptions, turn use_saves to false first. function onLoad(save_state) -- button starts at index 0 for i,v in pairs(resources) do -- produce btn local btn_prod = {} btn_prod.click_function = "produce_" .. v btn_prod.function_owner = self btn_prod.label = "Produce" btn_prod.position = {XoffSets[i],0,-3.4} btn_prod.width = 700 btn_prod.height = 300 btn_prod.font_size = 150 btn_prod.tooltip = "Right click to decrease" self.createButton(btn_prod) -- capacity/Level btn local btn_CL = {} btn_CL.click_function = "doNothing" btn_CL.function_owner = self btn_CL.label = "C L" btn_CL.position = {XoffSets[i],0,-2.8} btn_CL.width = 0 btn_CL.height = 0 btn_CL.font_size = 300 btn_CL.font_color = Color.White self.createButton(btn_CL) -- upgrade btn local btn_upg = {} btn_upg.click_function = "upgrade_" .. v btn_upg.function_owner = self btn_upg.label = "Upgrade" btn_upg.position = {XoffSets[i],0,-1} btn_upg.width = 700 btn_upg.height = 300 btn_upg.font_size = 150 self.createButton(btn_upg) -- owned resource btn local btn_owned = {} btn_owned.click_function = "doNothing" btn_owned.function_owner = self btn_owned.label = "0" btn_owned.position = {XoffSets[i],0,0} btn_owned.width = 0 btn_owned.height = 0 btn_owned.font_size = 400 btn_owned.font_color = {1,1,1} self.createButton(btn_owned) -- get ref to supply & price markers supplies_markers[v] = getObjectFromGUID(Global.getVar(v .. "Supply_GUID")) prices_markers[v] = getObjectFromGUID(Global.getVar(v .. "PriceMgmt_GUID")) end bank = getObjectFromGUID(Global.getVar(playerBank)) carrierLx = getObjectFromGUID(carrierL1_GUID) plColorHtmlCode = Global.getVar(string.lower(plColor .. "_htmlcode")) -- restore if saved session if save_state ~= '""' then local state = JSON.decode(save_state) levels = state.lvs currentOwned = state.cOwn carrier_GUIDs = state.carrsGuids end -- setting CapLiv & owned labels for i,v in pairs(resources) do -- I need to know only level to set capacity local cLvl = levels[v] -- current Level -- CapLiv label self.editButton({index=capLiv_labels_ix[v],label = "C" .. capacities[v][cLvl] .. " Liv" .. levels[v]}) -- owned Label self.editButton({index = owned_labels_ix[v],label = currentOwned[v]}) end end function onSave() local state if not USE_SAVES then state = "" else state = { lvs = levels, cOwn = currentOwned, carrsGuids = carrier_GUIDs } end return JSON.encode(state) end function upgrade_quartz() upgrade("quartz") end function upgrade_ore() upgrade("ore") end function upgrade_water() upgrade("water") end function upgrade_energy() upgrade("energy") end function produce_quartz(obj, plClkColor,alt_clk) produce("quartz",alt_clk) end function produce_ore(obj, plClkColor,alt_clk) produce("ore",alt_clk) end function produce_water(obj, plClkColor,alt_clk) produce("water",alt_clk) end function produce_energy(obj, plClkColor,alt_clk) produce("energy",alt_clk) end function sell(resource) local amount = currentOwned[resource] if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) local currPrice = prices_markers[resource].call("getPrice") -- increment player's bank bank.call("buySellResource", {op = "add",val = currPrice}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] sells 1" .. resource .. "at " .. currPrice .. "$", msgTint) supplies_markers[resource].call("increase") -- save for next use currentOwned[resource] = amount end end function buy(resource) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level -- if I have enough money to pay local currPrice = prices_markers[resource].call("getPrice") if bank.call("getBalance") >= currPrice then -- if I have capacity in my carrier. I only need current level to get capacity linked if amount ~= capacities[resource][cLvl] then local success = supplies_markers[resource].call("decrease") if success then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] buys 1 " .. resource, msgTint) bank.call("buySellResource", {op = "sub",val = currPrice}) end else printToAll("Max capacity! You can't buy.", {1,0,0}) end else printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] doesn't have enough money to buy 1 " .. resource,{1,0,0} ) end -- save for next use currentOwned[resource] = amount end function upgrade(resource) local lv = levels[resource] if lv == 4 then printToAll(plColorHtmlCode .. Player[plColor].steam_name .."[-] Max Level reached with " .. resource .. " carrier", {1,0,0}) else local nextLv = lv + 1 local cap = capacities[resource][nextLv] local carrierCard = getObjectFromGUID(carrier_GUIDs[resource]) carrier_GUIDs[resource] = carrierCard.setState(nextLv).guid self.editButton({index=capLiv_labels_ix[resource],label = "C" .. cap .. " Liv" .. nextLv}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] upgrades " .. resource .. " carrier to Lv" .. nextLv, msgTint) -- save for using in other fn levels[resource] = nextLv end end function produce(resource,undo) local amount = currentOwned[resource] local cLvl = levels[resource] -- current Level if undo then -- used for mistakes if amount > 0 then amount = amount - 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] loses 1" .. resource, msgTint) end else if amount < capacities[resource][cLvl] then amount = amount + 1 self.editButton({index = owned_labels_ix[resource],label = amount}) printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] produces 1" .. resource, msgTint) else printToAll(plColorHtmlCode .. Player[plColor].steam_name .. "[-] reaches max capacity on his " .. resource .. " carrier", {1,0,0}) end end -- save for next use currentOwned[resource] = amount end function hasEnoughSpace(resource) local cLvl = levels[resource] -- current Level return currentOwned[resource] < capacities[resource][cLvl] end function doNothing() endLuaScriptState{"carrsGuids":{"energy":"06fd59","ore":"ae9836","quartz":"58f75a","water":"67f3c3"},"cOwn":{"energy":0,"ore":0,"quartz":0,"water":0},"lvs":{"energy":1,"ore":1,"quartz":1,"water":1}}XmlUI