DinnerBuffet / TTSCarcassonne

Script and data for the Tabletop Simulator mod
MIT License
46 stars 23 forks source link

Ferries Expansion #1

Closed Sigma88 closed 5 years ago

Sigma88 commented 5 years ago

I was playing a game today but I couldn't get the ferries expansion to work properly

do you know if the scripting for that expansion works correctly?

DinnerBuffet commented 5 years ago

Hi, the features associated with the ferries expansion are not implemented.

A while ago TheLimeyDragon helped me to implement the tile data for several expansions so that the tiles could be used, even if the special features did not work. The Ferries was one of those expansions.

Unfortunately, I didn't have a way to make this very clear with the current control panel design. I had decided to enable the "Tiles" button of the expansion to show that the tiles were implemented, while leaving the feature buttons disabled.

I know this isn't very clear and you're not the first person to be confused by this, but I can't think of another way to do it without quite a bit of work.

Sigma88 commented 5 years ago

thanks,

I might take a look at the code, if I can understand the language maybe I can help

(if you are ok with it)

Sigma88 commented 5 years ago

Ok, I think I have a workaround for you if you are interested.

You can link multiple cards together in a single card with multiple states

instead of having the card image look like this:

you can have 3 different cards looking like this: (this is just a proof of concept, I can make the art look better :D )

and you link them in a single card with 3 states

Then, when you go to play, you can change the state to the one you want before positioning the card

I've tried it on a single player game and it works, it also works with all the rest of the scripting (meeple positioning and point scoring)

you can use this if you want: https://i.imgur.com/CWJ4xsd.jpg

Sigma88 commented 5 years ago

I tried making the deck for now, and this is the result.

However these are not recognised by the script, I will need some time to look at how the script works to integrate that

Spoiler
{
  "SaveName": "",
  "GameMode": "",
  "Gravity": 0.5,
  "PlayArea": 0.5,
  "Date": "",
  "Table": "",
  "Sky": "",
  "Note": "",
  "Rules": "",
  "XmlUI": "",
  "LuaScript": "",
  "LuaScriptState": "",
  "ObjectStates": [
    {
      "Name": "Deck",
      "Transform": {
        "posX": -9.478983,
        "posY": 1.01347291,
        "posZ": -3.17735839,
        "rotX": 4.869676E-07,
        "rotY": 89.93875,
        "rotZ": 1.75342177E-06,
        "scaleX": 1.0,
        "scaleY": 1.0,
        "scaleZ": 1.0
      },
      "Nickname": "",
      "Description": "",
      "ColorDiffuse": {
        "r": 0.713235259,
        "g": 0.713235259,
        "b": 0.713235259
      },
      "Locked": false,
      "Grid": true,
      "Snap": true,
      "IgnoreFoW": false,
      "Autoraise": true,
      "Sticky": true,
      "Tooltip": true,
      "GridProjection": false,
      "HideWhenFaceDown": true,
      "Hands": false,
      "SidewaysCard": false,
      "DeckIDs": [
        5319,
        5320,
        5306,
        5307,
        5313,
        5317,
        5318,
        5326
      ],
      "CustomDeck": {
        "53": {
          "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
          "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
          "NumWidth": 8,
          "NumHeight": 4,
          "BackIsHidden": false,
          "UniqueBack": false
        }
      },
      "XmlUI": "",
      "LuaScript": "",
      "LuaScriptState": "",
      "ContainedObjects": [
        {
          "Name": "Card",
          "Transform": {
            "posX": -9.472829,
            "posY": 1.83359277,
            "posZ": -3.176651,
            "rotX": 3.11282444,
            "rotY": 89.94402,
            "rotZ": 0.267238826,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5319,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "924b61",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 14.5386868,
                "posY": 3.03284836,
                "posZ": 10.06075,
                "rotX": 0.0,
                "rotY": 45.0000038,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5303,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "ca93af"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 12.3731623,
                "posY": 3.13284826,
                "posZ": 12.2262764,
                "rotX": 0.0,
                "rotY": 45.0000038,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5311,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "1c03f2"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.15023,
            "posY": 1.99367034,
            "posZ": -4.83169127,
            "rotX": 321.219666,
            "rotY": 358.765961,
            "rotZ": -0.0028708505,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5320,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "5df335",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 3.07336,
                "posY": 3.0328486,
                "posZ": 17.2092285,
                "rotX": 0.0,
                "rotY": 0.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5304,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "aa9802"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -1.32321593E-05,
                "posY": 3.1328485,
                "posZ": 17.1985016,
                "rotX": 0.0,
                "rotY": 0.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5312,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "4682ee"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1242666,
            "posY": 1.34534609,
            "posZ": -3.17935634,
            "rotX": 356.9164,
            "rotY": 269.995667,
            "rotZ": 359.690918,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5306,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "c813b0",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -17.4208832,
                "posY": 3.13284826,
                "posZ": -0.163090229,
                "rotX": 0.0,
                "rotY": 270.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5314,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "deff68"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -17.4208832,
                "posY": 3.24426,
                "posZ": -3.23189354,
                "rotX": 0.0,
                "rotY": 270.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5322,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "ad037f"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -12.1377182,
            "posY": 1.03228283,
            "posZ": -2.853555,
            "rotX": 359.983063,
            "rotY": 353.293335,
            "rotZ": -0.001425356,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5307,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "9ca573",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -10.1423655,
                "posY": 3.24335027,
                "posZ": -14.6122465,
                "rotX": 0.0,
                "rotY": 225.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5323,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "c1fabd"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -12.3097649,
                "posY": 3.13284826,
                "posZ": -12.4448442,
                "rotX": 0.0,
                "rotY": 225.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5315,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "df31de"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -10.131876,
            "posY": 1.14970148,
            "posZ": -3.179006,
            "rotX": 357.5269,
            "rotY": 229.238388,
            "rotZ": 181.79541,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5313,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "ba03a4",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -10.2302008,
                "posY": 3.03284836,
                "posZ": 14.3692465,
                "rotX": 0.0,
                "rotY": 315.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5305,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "f6d4a5"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -14.5652828,
                "posY": 3.24343348,
                "posZ": 10.0341682,
                "rotX": 0.0,
                "rotY": 315.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5321,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "eb1622"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -9.498532,
            "posY": 1.54413319,
            "posZ": -3.17872119,
            "rotX": 359.670837,
            "rotY": 179.9774,
            "rotZ": 3.14902043,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5317,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "2a3ad2",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 10.2017384,
                "posY": 3.03284836,
                "posZ": -14.307972,
                "rotX": 0.0,
                "rotY": 135.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5301,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "6e234c"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 12.3672628,
                "posY": 3.13284826,
                "posZ": -12.1424456,
                "rotX": 0.0,
                "rotY": 135.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5309,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "11e62d"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1832676,
            "posY": 1.77930057,
            "posZ": -3.18102264,
            "rotX": 3.05425024,
            "rotY": 90.01666,
            "rotZ": 0.244912624,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5318,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "4eff36",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 17.3902683,
                "posY": 3.03284836,
                "posZ": -3.02387047,
                "rotX": 0.0,
                "rotY": 90.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5302,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "238d66"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 17.3902683,
                "posY": 3.13284826,
                "posZ": 0.03864491,
                "rotX": 0.0,
                "rotY": 90.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5310,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "ddd88a"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1055565,
            "posY": 1.487098,
            "posZ": -3.17844272,
            "rotX": 359.699829,
            "rotY": 180.022415,
            "rotZ": 3.220574,
            "scaleX": 1.0,
            "scaleY": 1.0,
            "scaleZ": 1.0
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5326,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "",
          "LuaScriptState": "",
          "GUID": "1594f4",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -3.17572117,
                "posY": 3.03284836,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5300,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "53dfe3"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -1.90462589,
                "posY": 3.13284826,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5308,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "419e28"
            },
            "4": {
              "Name": "Card",
              "Transform": {
                "posX": -0.6335301,
                "posY": 3.23284841,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5316,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "62ba74"
            },
            "5": {
              "Name": "Card",
              "Transform": {
                "posX": 0.6375658,
                "posY": 3.33284831,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5324,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "6abb4c"
            },
            "6": {
              "Name": "Card",
              "Transform": {
                "posX": 1.9086616,
                "posY": 3.43284845,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 1.0,
                "scaleY": 1.0,
                "scaleZ": 1.0
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5325,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "",
              "LuaScriptState": "",
              "GUID": "ee4de0"
            }
          }
        }
      ],
      "GUID": "fc5427"
    }
  ],
  "TabStates": {},
  "VersionNumber": ""
}
DinnerBuffet commented 5 years ago

That's actually a decent idea. Personally I would rather stick with picking up and dropping bridge objects and dealing with the onObjectDropped events, since it fits the tabletop theme better. However, this would undoubtedly be a much harder implementation. Using object states would greatly simplify the scripting since each state could have a separate script defining the connected quadrants for the road. Then you could just call removeTile and then addTile with the new tileData.

However one issue you would need to overcome is to find a good way to allow the user to choose which which state they want. The easiest way I can think to do this is to add a confirm button, then to allow the player to change the states at will (with the number keys) before pressing that confirm button to progress the stateMachine.. A fancier way would be to add buttons to change to each of the states.

The biggest issue that I see with using states is the potential for accidents/trolling when it comes to changing those states. As far as I know, there is no permission in TTS that can limit the ability to change states, so any player can change these states as they wish. Locking an object doesn't prevent players from changing the states. In order to prevent these accidents/trolling from making the game out of sync, you would probably need to add some special handling for onObjectDestroy() and possibly onObjectSpawn() in order to call removeTile and addTile to keep the featureMap in working order. To prevent all of this work it might make sense to create a TTS feature request to ask for them to add this permission limiting.

Regardless, unfortunately I am super busy right now, so I couldn't help much beyond basic advice or a code review. If you wanted to take on this project, though, you are welcome.

DinnerBuffet commented 5 years ago

Actually another idea might be to detect when someone changes a state, and force it back to the original state if the player is not currently allowed. Again, I don't think there's an easy way to detect when a state is changed, so you'd need to listen for the onObjectSpawn() event if I'm not mistaken.

Sigma88 commented 5 years ago

Yes I don't think this is a good long term solution, nor a very sofisticated one.

However since in the current state the only way to use the expansion would be to disable the scripts and just play manually, I think a good temporary solution would be to use this "workaround" and assume people will play "by the rules" and not trolling.

Here's the code I have been using for my tests and it seems to work more than fine :D

Spoiler
{
  "SaveName": "",
  "GameMode": "",
  "Gravity": 0.5,
  "PlayArea": 0.5,
  "Date": "",
  "Table": "",
  "Sky": "",
  "Note": "",
  "Rules": "",
  "XmlUI": "",
  "LuaScript": "",
  "LuaScriptState": "",
  "ObjectStates": [
    {
      "Name": "Deck",
      "Transform": {
        "posX": 9.54,
        "posY": 1.02580714,
        "posZ": 23.85,
        "rotX": -6.071588E-08,
        "rotY": 179.989319,
        "rotZ": 180.0,
        "scaleX": 0.5,
        "scaleY": 1.0,
        "scaleZ": 0.5
      },
      "Nickname": "",
      "Description": "",
      "ColorDiffuse": {
        "r": 0.713235259,
        "g": 0.713235259,
        "b": 0.713235259
      },
      "Locked": false,
      "Grid": true,
      "Snap": true,
      "IgnoreFoW": false,
      "Autoraise": true,
      "Sticky": true,
      "Tooltip": true,
      "GridProjection": false,
      "HideWhenFaceDown": true,
      "Hands": false,
      "SidewaysCard": false,
      "DeckIDs": [
        5319,
        5320,
        5306,
        5307,
        5313,
        5317,
        5318,
        5326
      ],
      "CustomDeck": {
        "53": {
          "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
          "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
          "NumWidth": 8,
          "NumHeight": 4,
          "BackIsHidden": false,
          "UniqueBack": false
        }
      },
      "XmlUI": "",
      "LuaScript": "",
      "LuaScriptState": "",
      "ContainedObjects": [
        {
          "Name": "Card",
          "Transform": {
            "posX": -9.472829,
            "posY": 1.83359277,
            "posZ": -3.176651,
            "rotX": 3.11282444,
            "rotY": 89.94402,
            "rotZ": 0.267238826,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5319,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "924b61",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 14.5386868,
                "posY": 3.03284836,
                "posZ": 10.06075,
                "rotX": 0.0,
                "rotY": 45.0000038,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5303,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "ca93af"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 12.3731623,
                "posY": 3.13284826,
                "posZ": 12.2262764,
                "rotX": 0.0,
                "rotY": 45.0000038,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5311,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "1c03f2"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.15023,
            "posY": 1.99367034,
            "posZ": -4.83169127,
            "rotX": 321.219666,
            "rotY": 358.765961,
            "rotZ": -0.0028708505,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5320,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "5df335",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 3.07336,
                "posY": 3.0328486,
                "posZ": 17.2092285,
                "rotX": 0.0,
                "rotY": 0.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5304,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "aa9802"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -1.32321593E-05,
                "posY": 3.1328485,
                "posZ": 17.1985016,
                "rotX": 0.0,
                "rotY": 0.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5312,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "4682ee"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1242666,
            "posY": 1.34534609,
            "posZ": -3.17935634,
            "rotX": 356.9164,
            "rotY": 269.995667,
            "rotZ": 359.690918,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5306,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "c813b0",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -17.4208832,
                "posY": 3.13284826,
                "posZ": -0.163090229,
                "rotX": 0.0,
                "rotY": 270.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5314,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "deff68"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -17.4208832,
                "posY": 3.24426,
                "posZ": -3.23189354,
                "rotX": 0.0,
                "rotY": 270.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5322,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "ad037f"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -12.1377182,
            "posY": 1.03228283,
            "posZ": -2.853555,
            "rotX": 359.983063,
            "rotY": 353.293335,
            "rotZ": -0.001425356,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5307,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "9ca573",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -10.1423655,
                "posY": 3.24335027,
                "posZ": -14.6122465,
                "rotX": 0.0,
                "rotY": 225.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5323,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "c1fabd"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -12.3097649,
                "posY": 3.13284826,
                "posZ": -12.4448442,
                "rotX": 0.0,
                "rotY": 225.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5315,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "df31de"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -10.131876,
            "posY": 1.14970148,
            "posZ": -3.179006,
            "rotX": 357.5269,
            "rotY": 229.238388,
            "rotZ": 181.79541,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5313,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6}, {7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "ba03a4",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -10.2302008,
                "posY": 3.03284836,
                "posZ": 14.3692465,
                "rotX": 0.0,
                "rotY": 315.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5305,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "f6d4a5"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -14.5652828,
                "posY": 3.24343348,
                "posZ": 10.0341682,
                "rotX": 0.0,
                "rotY": 315.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5321,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'City', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "eb1622"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -9.498532,
            "posY": 1.54413319,
            "posZ": -3.17872119,
            "rotX": 359.670837,
            "rotY": 179.9774,
            "rotZ": 3.14902043,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5317,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "2a3ad2",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 10.2017384,
                "posY": 3.03284836,
                "posZ": -14.307972,
                "rotX": 0.0,
                "rotY": 135.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5301,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "6e234c"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 12.3672628,
                "posY": 3.13284826,
                "posZ": -12.1424456,
                "rotX": 0.0,
                "rotY": 135.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5309,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "11e62d"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1832676,
            "posY": 1.77930057,
            "posZ": -3.18102264,
            "rotX": 3.05425024,
            "rotY": 90.01666,
            "rotZ": 0.244912624,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5318,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "4eff36",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": 17.3902683,
                "posY": 3.03284836,
                "posZ": -3.02387047,
                "rotX": 0.0,
                "rotY": 90.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5302,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "238d66"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": 17.3902683,
                "posY": 3.13284826,
                "posZ": 0.03864491,
                "rotX": 0.0,
                "rotY": 90.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5310,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "ddd88a"
            }
          }
        },
        {
          "Name": "Card",
          "Transform": {
            "posX": -11.1055565,
            "posY": 1.487098,
            "posZ": -3.17844272,
            "rotX": 359.699829,
            "rotY": 180.022415,
            "rotZ": 3.220574,
            "scaleX": 0.5,
            "scaleY": 1.0,
            "scaleZ": 0.5
          },
          "Nickname": "",
          "Description": "",
          "ColorDiffuse": {
            "r": 0.713235259,
            "g": 0.713235259,
            "b": 0.713235259
          },
          "Locked": false,
          "Grid": true,
          "Snap": true,
          "IgnoreFoW": false,
          "Autoraise": true,
          "Sticky": true,
          "Tooltip": true,
          "GridProjection": false,
          "HideWhenFaceDown": true,
          "Hands": true,
          "CardID": 5326,
          "SidewaysCard": false,
          "CustomDeck": {
            "53": {
              "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
              "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
              "NumWidth": 8,
              "NumHeight": 4,
              "BackIsHidden": false,
              "UniqueBack": false
            }
          },
          "XmlUI": "",
          "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
          "LuaScriptState": "",
          "GUID": "1594f4",
          "States": {
            "2": {
              "Name": "Card",
              "Transform": {
                "posX": -3.17572117,
                "posY": 3.03284836,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5300,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 3}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "53dfe3"
            },
            "3": {
              "Name": "Card",
              "Transform": {
                "posX": -1.90462589,
                "posY": 3.13284826,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5308,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{3, 4}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "419e28"
            },
            "4": {
              "Name": "Card",
              "Transform": {
                "posX": -0.6335301,
                "posY": 3.23284841,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5316,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{1, 4}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "62ba74"
            },
            "5": {
              "Name": "Card",
              "Transform": {
                "posX": 0.6375658,
                "posY": 3.33284831,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5324,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{1, 2}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "6abb4c"
            },
            "6": {
              "Name": "Card",
              "Transform": {
                "posX": 1.9086616,
                "posY": 3.43284845,
                "posZ": -17.3453884,
                "rotX": 0.0,
                "rotY": 180.0,
                "rotZ": 0.0,
                "scaleX": 0.5,
                "scaleY": 1.0,
                "scaleZ": 0.5
              },
              "Nickname": "",
              "Description": "",
              "ColorDiffuse": {
                "r": 0.713235259,
                "g": 0.713235259,
                "b": 0.713235259
              },
              "Locked": false,
              "Grid": true,
              "Snap": true,
              "IgnoreFoW": false,
              "Autoraise": true,
              "Sticky": true,
              "Tooltip": true,
              "GridProjection": false,
              "HideWhenFaceDown": true,
              "Hands": true,
              "CardID": 5325,
              "SidewaysCard": false,
              "CustomDeck": {
                "53": {
                  "FaceURL": "https://i.imgur.com/CWJ4xsd.jpg",
                  "BackURL": "https://drive.google.com/uc?export=download&id=0BzBZwl-j9sHXbTRucmllWnRCN00",
                  "NumWidth": 8,
                  "NumHeight": 4,
                  "BackIsHidden": false,
                  "UniqueBack": false
                }
              },
              "XmlUI": "",
              "LuaScript": "sides = {'Road', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{1, 3}}\nlinkedOctants = {{5, 12}, {6, 7}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",
              "LuaScriptState": "",
              "GUID": "ee4de0"
            }
          }
        }
      ],
      "GUID": "fc5427"
    }
  ],
  "TabStates": {},
  "VersionNumber": ""
}

(this is also compatible with your mod scripts, except for the initial setup)

DinnerBuffet commented 5 years ago

Don't have the time to look at it in detail but from a quick glance, it looks like you've gotten the hang of the tileData format, which is a great start!

Sigma88 commented 5 years ago

For what I did the syntax was pretty easy to understand, I'm pretty happy with the result, all I need to do is start the game then load the custom object and shuffle the tiles into the deck

Integrating it with the starting script will be a bit more complicated, I have tried looking at the code briefly but I didn't have enough time to understand what I need to do in order to make it work properly

DinnerBuffet commented 5 years ago

Hmm I was looking at the rules and thinking about this a bit more. I think the tiles actually need more work. When a player extends the road, they should be given the opportunity to change the orientation of the road. In order for the mod to know that the lake is associated with the road, they need to be linked together in specialFeatures. For example,

"LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', nil, nil}}",

The 2nd parameter for each special feature represents the linked feature numbers. By having it as nil, the special feature is essentially not linked to any specific tile feature and instead is only linked to the tile itself. This is useful for things like the Volcano, Dragon, etc. Since we want it to be associated with the road, it would need to be changed to

"LuaScript": "sides = {'Field', 'Road', 'Road', 'Road'}\nlinkedQuadrants = {{2, 4}}\nlinkedOctants = {{5, 6, 7, 12}, {8, 9}, {10, 11}}\nspecialFeatures = {{'Lake', {2, 4}, nil}}",

This only needs to be linked to the road that has the ferry, per the official rules:

364  The road must include a wooden ferry to allow movement of that ferry in this situation. Thus, if adding onto a road that ends at a lake without the wooden ferry connection, the ferry cannot be moved. (2/2013)

As for setup, it's actually rather simple:

1) You'll need to add your tiles to the Ferries expansion bag (You can delete the tiles that are already there). Make sure you save the GUID of your tile stack for the next step. Don't forget to save the game and load. 2) Replace the GUID here with the one for your new tile stack: https://github.com/DinnerBuffet/TTSCarcassonne/blob/master/scripts/global.ttslua#L254

That should be all you need to do to get the new tiles working with the setup script.

As for the rest, I can try to give some advice when you get to it. The most challenging part is going to be

If there are two ferries on the road that was just extended, the player may only move the first ferry in the road – the ferry that is closest to the tile that was just placed

Currently there is no logic in the game for finding the closest tile to anything. You might need some special traversal logic in order to do this. The game already has a tileTraversal method: https://github.com/DinnerBuffet/TTSCarcassonne/blob/master/scripts/tile_traversal.ttslua#L121

However, it is is currently coded as a breadth-first search and the code is very confusing and badly needing a refactor. I think you could skip this logic for now and maybe I can find some time to help with this but again, I am very busy for the coming weeks.

Sigma88 commented 5 years ago

I'm having some trouble with setting up the Atom stuff

I downloaded the program and the tts plugin, I linked my github account to atom

However, I don't understand how to generate the lua files for the cards (I can write them manually but I assume Atom can do it automatically)

DinnerBuffet commented 5 years ago

The cards are not currently setup for code check in. I use the following manual process to backup the card data to github:

1) Load the save file 2) In Atom, Packages->Tabletop Simulator->Get Lua Scripts (You don't need to do this if Atom was already open). Your game scripts should now show up in the project folder under Tabletop Simulator Lua 3) Right click this folder and click Show in File Manager 4) Copy any scripts that you want to backup to (git folder)->TTSCarcassonne->tile_data->(expansion folder)

The cards would be kind of a pain to setup for versioning since I would need to add #includes to all 500+ of them.

DinnerBuffet commented 5 years ago

I thought about this a bit more and figured I could at least setup the save files for versioning. That way any changes to the cards could be checked in more easily. I don't know if this is going to work well since I'm not sure if the ordering of the items in the JSON are deterministic. There's a chance a small change could make the commits into an unreadable mess. I'm going to try it out. I added the save file here: https://github.com/DinnerBuffet/TTSCarcassonne/blob/master/Carcassonne.json

Again, this would be a manual process of copying the save file from your save folder to your git folder or setting up a symlink.

Sigma88 commented 5 years ago

I wasn't able to setup atom to update the scripts in the save, but I did some progress by editing the script manually

for now I was able to setup the events where to check for lakes in the tiles

DinnerBuffet commented 5 years ago

What issue specifically are you having with the atom setup? I would start with getting Atom to work with a simple mod first to make sure it's working, then follow the steps that I put in the README for getting this mod to work.