{
  "firstLayout": "начало",
  "gdVersion": {
    "build": 257,
    "major": 5,
    "minor": 6,
    "revision": 0
  },
  "properties": {
    "adaptGameResolutionAtRuntime": true,
    "antialiasingMode": "MSAA",
    "antialisingEnabledOnMobile": false,
    "folderProject": false,
    "orientation": "landscape",
    "packageName": "com.example.gamename",
    "pixelsRounding": true,
    "projectUuid": "85696852-e846-4e6e-b308-39776f19115a",
    "scaleMode": "nearest",
    "sizeOnStartupMode": "adaptWidth",
    "templateSlug": "",
    "version": "1.0.0",
    "name": "visit cool boy - создание 2",
    "description": "",
    "author": "",
    "windowWidth": 1280,
    "windowHeight": 720,
    "latestCompilationDirectory": "",
    "maxFPS": 60,
    "minFPS": 20,
    "verticalSync": false,
    "platformSpecificAssets": {},
    "loadingScreen": {
      "backgroundColor": 0,
      "backgroundFadeInDuration": 0.2,
      "backgroundImageResourceName": "",
      "gdevelopLogoStyle": "light",
      "logoAndProgressFadeInDuration": 0.2,
      "logoAndProgressLogoFadeInDelay": 0,
      "minDuration": 1.5,
      "progressBarColor": 16777215,
      "progressBarHeight": 20,
      "progressBarMaxWidth": 200,
      "progressBarMinWidth": 40,
      "progressBarWidthPercent": 30,
      "showGDevelopSplash": true,
      "showProgressBar": true
    },
    "watermark": {
      "placement": "bottom-left",
      "showWatermark": true
    },
    "authorIds": [],
    "authorUsernames": [],
    "categories": [],
    "playableDevices": [
      "mobile",
      "mobile"
    ],
    "extensionProperties": [],
    "platforms": [
      {
        "name": "GDevelop JS platform"
      }
    ],
    "currentPlatform": "GDevelop JS platform"
  },
  "resources": {
    "resources": [
      {
        "file": "assets/NewSprite.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite.png\"}",
        "name": "NewSprite",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит.png\"}",
        "name": "стоит",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит2.png\"}",
        "name": "стоит2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит3.png\"}",
        "name": "стоит3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит4.png\"}",
        "name": "стоит4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит5.png\"}",
        "name": "стоит5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite4.png\"}",
        "name": "NewSprite4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite5.png\"}",
        "name": "NewSprite5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite6.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite6.png\"}",
        "name": "NewSprite6",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite7.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite7.png\"}",
        "name": "NewSprite7",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite8.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite8.png\"}",
        "name": "NewSprite8",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewTiledSprite.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"pskl\":{}}",
        "name": "NewTiledSprite",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewTiledSprite2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"pskl\":{}}",
        "name": "NewTiledSprite2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite9.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite9",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/бег.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/бег.png\"}",
        "name": "бег",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/бег2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/бег2.png\"}",
        "name": "бег2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite10.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite10.png\"}",
        "name": "NewSprite10",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite11.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite11.png\"}",
        "name": "NewSprite11",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite12.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite12",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite13.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite13",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/бег3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "бег3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/бег4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "бег4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewTiledSprite3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"pskl\":{}}",
        "name": "NewTiledSprite3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite14.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite14.png\"}",
        "name": "NewSprite14",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite15.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite15.png\"}",
        "name": "NewSprite15",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite16.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite16",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite17.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite17",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite18.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite18",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite19.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite19",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite20.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite20",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite21.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite21",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite22.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite22",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite23.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite23",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite24.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite24",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/3 hp.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "3 hp",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/3 hp2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "3 hp2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite25.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/NewSprite25.png\"}",
        "name": "NewSprite25",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite26.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite26",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит6.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит6",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит7.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит7",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит8.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит8",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит9.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит9",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит10.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит10",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умирает от лавы",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умирает от лавы2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы3.png\"}",
        "name": "умирает от лавы3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы4.png\"}",
        "name": "умирает от лавы4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы5.png\"}",
        "name": "умирает от лавы5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы6.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы6.png\"}",
        "name": "умирает от лавы6",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы7.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы7.png\"}",
        "name": "умирает от лавы7",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы8.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы8.png\"}",
        "name": "умирает от лавы8",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы9.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы9.png\"}",
        "name": "умирает от лавы9",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы10.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы10.png\"}",
        "name": "умирает от лавы10",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы11.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы11.png\"}",
        "name": "умирает от лавы11",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы12.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы12.png\"}",
        "name": "умирает от лавы12",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы13.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы13.png\"}",
        "name": "умирает от лавы13",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы14.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/умирает от лавы14.png\"}",
        "name": "умирает от лавы14",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умирает от лавы15.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умирает от лавы15",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит11.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "стоит11",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite27.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite27",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite28.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite28",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер6.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер6",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/умер7.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "умер7",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/перезарядка.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "перезарядка",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/перезарядка2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "перезарядка2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/перезарядка3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "перезарядка3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/перезарядка4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "перезарядка4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/перезарядка5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "перезарядка5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/стоит12.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/стоит12.png\"}",
        "name": "стоит12",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вбежит.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "вбежит",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вбежит2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/вбежит2.png\"}",
        "name": "вбежит2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вбежит3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "вбежит3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/встоит.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "встоит",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вумер.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/вумер.png\"}",
        "name": "вумер",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вумер2.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/вумер2.png\"}",
        "name": "вумер2",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вумер3.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/вумер3.png\"}",
        "name": "вумер3",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вумер4.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\",\"localFilePath\":\"assets/вумер4.png\"}",
        "name": "вумер4",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/вумер5.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "вумер5",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite29.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite29",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite30.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite30",
        "smoothed": false,
        "userAdded": false
      },
      {
        "file": "assets/NewSprite31.png",
        "kind": "image",
        "metadata": "{\"extension\":\".png\"}",
        "name": "NewSprite31",
        "smoothed": false,
        "userAdded": false
      }
    ]
  },
  "objects": [],
  "objectsFolderStructure": {
    "folderName": "__ROOT"
  },
  "objectsGroups": [],
  "variables": [],
  "layouts": [
    {
      "b": 255,
      "disableInputWhenNotFocused": true,
      "mangledName": "_1085_1072_1095_1072_1083_1086",
      "name": "начало",
      "r": 247,
      "standardSortMethod": true,
      "stopSoundsOnStartup": true,
      "title": "",
      "v": 249,
      "uiSettings": {
        "grid": false,
        "gridType": "rectangular",
        "gridWidth": 32,
        "gridHeight": 32,
        "gridDepth": 32,
        "gridOffsetX": 0,
        "gridOffsetY": 0,
        "gridOffsetZ": 0,
        "gridColor": 10401023,
        "gridAlpha": 0.8,
        "snap": false,
        "zoomFactor": 0.546875,
        "windowMask": false,
        "selectedLayer": "",
        "gameEditorMode": "instances-editor"
      },
      "objectsGroups": [],
      "variables": [],
      "instances": [
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 371,
          "keepRatio": true,
          "layer": "",
          "name": "игрок",
          "persistentUuid": "60d8270f-8fef-43d3-86f6-c2f5f1371c58",
          "width": 376,
          "x": 439,
          "y": 181,
          "zOrder": 1,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 212,
          "keepRatio": true,
          "layer": "",
          "name": "бетон",
          "persistentUuid": "5e84b979-7af2-46d4-9b18-11c5db8bd6a9",
          "width": 905,
          "x": 190,
          "y": 495,
          "zOrder": 2,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 51,
          "keepRatio": true,
          "layer": "",
          "name": "NewText",
          "persistentUuid": "9184213f-9c9a-4612-9478-0ec8e754fa41",
          "width": 357,
          "x": 459,
          "y": 568,
          "zOrder": 3,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 766,
          "keepRatio": true,
          "layer": "",
          "name": "NewSprite",
          "persistentUuid": "c450c8e9-cb29-4e30-bb9d-5e6cf02c11f0",
          "width": 1313,
          "x": -11,
          "y": -29,
          "zOrder": -20,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        }
      ],
      "objects": [
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "игрок",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "пупупу",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 9
                          },
                          {
                            "x": 49,
                            "y": 9
                          },
                          {
                            "x": 49,
                            "y": 58
                          },
                          {
                            "x": 14,
                            "y": 58
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "бетон",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewTiledSprite2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 32,
                            "y": 0
                          },
                          {
                            "x": 32,
                            "y": 32
                          },
                          {
                            "x": 0,
                            "y": 32
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "assetStoreId": "",
          "bold": true,
          "italic": false,
          "name": "NewText",
          "smoothed": true,
          "type": "TextObject::Text",
          "underlined": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "string": "НАЧАТЬ ИГРУ",
          "font": "",
          "textAlignment": "left",
          "characterSize": 50,
          "color": {
            "b": 0,
            "g": 0,
            "r": 0
          },
          "content": {
            "bold": true,
            "isOutlineEnabled": false,
            "isShadowEnabled": false,
            "italic": false,
            "outlineColor": "255;255;255",
            "outlineThickness": 2,
            "shadowAngle": 90,
            "shadowBlurRadius": 2,
            "shadowColor": "0;0;0",
            "shadowDistance": 4,
            "shadowOpacity": 127,
            "smoothed": true,
            "underlined": false,
            "text": "НАЧАТЬ ИГРУ",
            "font": "",
            "textAlignment": "left",
            "verticalTextAlignment": "top",
            "characterSize": 50,
            "lineHeight": 0,
            "color": "0;0;0"
          }
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite9",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "objectsFolderStructure": {
        "folderName": "__ROOT",
        "children": [
          {
            "objectName": "игрок"
          },
          {
            "objectName": "бетон"
          },
          {
            "objectName": "NewText"
          },
          {
            "objectName": "NewSprite"
          }
        ]
      },
      "events": [
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "IsCursorOnObject"
              },
              "parameters": [
                "бетон",
                "",
                "",
                ""
              ]
            },
            {
              "type": {
                "value": "MouseButtonFromTextPressed"
              },
              "parameters": [
                "",
                "\"Left\""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "Scene"
              },
              "parameters": [
                "",
                "\"анимка для начала\"",
                ""
              ]
            }
          ]
        }
      ],
      "layers": [
        {
          "ambientLightColorB": 200,
          "ambientLightColorG": 200,
          "ambientLightColorR": 200,
          "camera2DPlaneMaxDrawingDistance": 5000,
          "camera3DFarPlaneDistance": 10000,
          "camera3DFieldOfView": 45,
          "camera3DNearPlaneDistance": 3,
          "cameraType": "",
          "followBaseLayerCamera": false,
          "isLightingLayer": false,
          "isLocked": false,
          "name": "",
          "renderingType": "",
          "visibility": true,
          "cameras": [
            {
              "defaultSize": true,
              "defaultViewport": true,
              "height": 0,
              "viewportBottom": 1,
              "viewportLeft": 0,
              "viewportRight": 1,
              "viewportTop": 0,
              "width": 0
            }
          ],
          "effects": [
            {
              "effectType": "Scene3D::HemisphereLight",
              "name": "3D Ambient Hemisphere Light",
              "doubleParameters": {
                "elevation": 40,
                "intensity": 0.33,
                "rotation": 300
              },
              "stringParameters": {
                "groundColor": "127;127;127",
                "skyColor": "255;255;255",
                "top": "Z+"
              },
              "booleanParameters": {}
            },
            {
              "effectType": "Scene3D::DirectionalLight",
              "name": "3D Sun Light",
              "doubleParameters": {
                "distanceFromCamera": 1500,
                "elevation": 40,
                "frustumSize": 4000,
                "intensity": 0.75,
                "minimumShadowBias": 0,
                "rotation": 300
              },
              "stringParameters": {
                "color": "255;255;255",
                "shadowQuality": "medium",
                "top": "Z+"
              },
              "booleanParameters": {
                "isCastingShadow": true
              }
            }
          ]
        }
      ],
      "behaviorsSharedData": [
        {
          "name": "Animation",
          "type": "AnimatableCapability::AnimatableBehavior"
        },
        {
          "name": "Effect",
          "type": "EffectCapability::EffectBehavior"
        },
        {
          "name": "Flippable",
          "type": "FlippableCapability::FlippableBehavior"
        },
        {
          "name": "Opacity",
          "type": "OpacityCapability::OpacityBehavior"
        },
        {
          "name": "Resizable",
          "type": "ResizableCapability::ResizableBehavior"
        },
        {
          "name": "Scale",
          "type": "ScalableCapability::ScalableBehavior"
        },
        {
          "name": "Text",
          "type": "TextContainerCapability::TextContainerBehavior"
        }
      ]
    },
    {
      "b": 255,
      "disableInputWhenNotFocused": true,
      "mangledName": "_1072_1085_1080_1084_1082_1072_32_1076_1083_1103_32_1085_1072_1095_1072_1083_1072",
      "name": "анимка для начала",
      "r": 247,
      "standardSortMethod": true,
      "stopSoundsOnStartup": true,
      "title": "",
      "v": 249,
      "uiSettings": {
        "grid": false,
        "gridType": "rectangular",
        "gridWidth": 32,
        "gridHeight": 32,
        "gridDepth": 32,
        "gridOffsetX": 0,
        "gridOffsetY": 0,
        "gridOffsetZ": 0,
        "gridColor": 10401023,
        "gridAlpha": 0.8,
        "snap": false,
        "zoomFactor": 0.546875,
        "windowMask": false,
        "selectedLayer": "",
        "gameEditorMode": "instances-editor"
      },
      "objectsGroups": [],
      "variables": [],
      "instances": [],
      "objects": [
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite2",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewTiledSprite2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 32,
                            "y": 0
                          },
                          {
                            "x": 32,
                            "y": 32
                          },
                          {
                            "x": 0,
                            "y": 32
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": false,
          "assetStoreId": "",
          "name": "NewSprite3",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite3",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.01,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite12",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0.5,
                        "y": 0.5
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 23,
                            "y": 23.5
                          },
                          {
                            "x": 41,
                            "y": 21
                          },
                          {
                            "x": 37,
                            "y": 32
                          },
                          {
                            "x": 22.5,
                            "y": 35
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite13",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0.5,
                        "y": 0.5
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 23,
                            "y": 23.5
                          },
                          {
                            "x": 41,
                            "y": 21
                          },
                          {
                            "x": 37,
                            "y": 32
                          },
                          {
                            "x": 22.5,
                            "y": 35
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "assetStoreId": "",
          "bold": false,
          "italic": false,
          "name": "NewText",
          "smoothed": true,
          "type": "TextObject::Text",
          "underlined": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "string": "ой-ой-ой я щас улечууу",
          "font": "",
          "textAlignment": "left",
          "characterSize": 20,
          "color": {
            "b": 0,
            "g": 0,
            "r": 0
          },
          "content": {
            "bold": false,
            "isOutlineEnabled": false,
            "isShadowEnabled": false,
            "italic": false,
            "outlineColor": "255;255;255",
            "outlineThickness": 2,
            "shadowAngle": 90,
            "shadowBlurRadius": 2,
            "shadowColor": "0;0;0",
            "shadowDistance": 4,
            "shadowOpacity": 127,
            "smoothed": true,
            "underlined": false,
            "text": "ой-ой-ой я щас улечууу",
            "font": "",
            "textAlignment": "left",
            "verticalTextAlignment": "top",
            "characterSize": 20,
            "lineHeight": 0,
            "color": "0;0;0"
          }
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite4",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite4",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.01,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite30",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite31",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "objectsFolderStructure": {
        "folderName": "__ROOT",
        "children": [
          {
            "objectName": "NewSprite"
          },
          {
            "objectName": "NewSprite3"
          },
          {
            "objectName": "NewText"
          },
          {
            "objectName": "NewSprite4"
          },
          {
            "objectName": "NewSprite2"
          }
        ]
      },
      "events": [],
      "layers": [
        {
          "ambientLightColorB": 200,
          "ambientLightColorG": 200,
          "ambientLightColorR": 200,
          "camera2DPlaneMaxDrawingDistance": 5000,
          "camera3DFarPlaneDistance": 10000,
          "camera3DFieldOfView": 45,
          "camera3DNearPlaneDistance": 3,
          "cameraType": "",
          "followBaseLayerCamera": false,
          "isLightingLayer": false,
          "isLocked": false,
          "name": "",
          "renderingType": "",
          "visibility": true,
          "cameras": [
            {
              "defaultSize": true,
              "defaultViewport": true,
              "height": 0,
              "viewportBottom": 1,
              "viewportLeft": 0,
              "viewportRight": 1,
              "viewportTop": 0,
              "width": 0
            }
          ],
          "effects": [
            {
              "effectType": "Scene3D::HemisphereLight",
              "name": "3D Ambient Hemisphere Light",
              "doubleParameters": {
                "elevation": 40,
                "intensity": 0.33,
                "rotation": 300
              },
              "stringParameters": {
                "groundColor": "127;127;127",
                "skyColor": "255;255;255",
                "top": "Z+"
              },
              "booleanParameters": {}
            },
            {
              "effectType": "Scene3D::DirectionalLight",
              "name": "3D Sun Light",
              "doubleParameters": {
                "distanceFromCamera": 1500,
                "elevation": 40,
                "frustumSize": 4000,
                "intensity": 0.75,
                "minimumShadowBias": 0,
                "rotation": 300
              },
              "stringParameters": {
                "color": "255;255;255",
                "shadowQuality": "medium",
                "top": "Z+"
              },
              "booleanParameters": {
                "isCastingShadow": true
              }
            }
          ]
        }
      ],
      "behaviorsSharedData": [
        {
          "name": "Animation",
          "type": "AnimatableCapability::AnimatableBehavior"
        },
        {
          "name": "Effect",
          "type": "EffectCapability::EffectBehavior"
        },
        {
          "name": "Flippable",
          "type": "FlippableCapability::FlippableBehavior"
        },
        {
          "name": "Opacity",
          "type": "OpacityCapability::OpacityBehavior"
        },
        {
          "name": "Resizable",
          "type": "ResizableCapability::ResizableBehavior"
        },
        {
          "name": "Scale",
          "type": "ScalableCapability::ScalableBehavior"
        },
        {
          "name": "Text",
          "type": "TextContainerCapability::TextContainerBehavior"
        }
      ]
    },
    {
      "b": 255,
      "disableInputWhenNotFocused": true,
      "mangledName": "_49",
      "name": "1",
      "r": 247,
      "standardSortMethod": true,
      "stopSoundsOnStartup": true,
      "title": "",
      "v": 249,
      "uiSettings": {
        "grid": false,
        "gridType": "rectangular",
        "gridWidth": 32,
        "gridHeight": 32,
        "gridDepth": 32,
        "gridOffsetX": 0,
        "gridOffsetY": 0,
        "gridOffsetZ": 0,
        "gridColor": 10401023,
        "gridAlpha": 0.8,
        "snap": false,
        "zoomFactor": 0.4950840073748892,
        "windowMask": false,
        "selectedLayer": "",
        "gameEditorMode": "instances-editor"
      },
      "objectsGroups": [],
      "variables": [],
      "instances": [
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 144,
          "keepRatio": true,
          "layer": "",
          "name": "игрок",
          "persistentUuid": "aca85dd7-68e6-485b-aa05-5e78b22be821",
          "width": 150,
          "x": 570,
          "y": 244,
          "zOrder": 1,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 32,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "d1e2d6eb-a8d5-4e45-ae92-944159053c9e",
          "width": 348,
          "x": 456,
          "y": 453,
          "zOrder": 2,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 198,
          "keepRatio": true,
          "layer": "",
          "name": "жизни",
          "persistentUuid": "3cda4ab6-71c9-4dd5-8595-603a0f233a9e",
          "width": 192,
          "x": 373,
          "y": 192,
          "zOrder": 3,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 64,
          "keepRatio": true,
          "layer": "",
          "name": "NewSprite",
          "persistentUuid": "7e10017c-c3ef-41d8-8ba9-fc1a48de8368",
          "width": 6777,
          "x": -2438,
          "y": 858,
          "zOrder": 4,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": false,
          "height": 0,
          "keepRatio": true,
          "layer": "",
          "name": "враг",
          "persistentUuid": "f14021a4-305f-400f-983d-54a4ec8afe77",
          "width": 0,
          "x": -606,
          "y": 198,
          "zOrder": 6,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": false,
          "height": 0,
          "keepRatio": true,
          "layer": "",
          "name": "враг",
          "persistentUuid": "cfc7a055-b25e-41cc-b0df-133631aadad4",
          "width": 0,
          "x": -658,
          "y": -136,
          "zOrder": 7,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": false,
          "height": 0,
          "keepRatio": true,
          "layer": "",
          "name": "враг",
          "persistentUuid": "5d2689d5-0b3b-43a4-aa0a-8a27acf3371c",
          "width": 0,
          "x": -607,
          "y": -4,
          "zOrder": 8,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 32,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "45889abf-54d9-4de4-855f-462f3452e82b",
          "width": 433,
          "x": 899,
          "y": 591,
          "zOrder": 9,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 32,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "b266ca64-980d-4b1f-9f87-bdfc986e4faa",
          "width": 448,
          "x": 1442,
          "y": 524,
          "zOrder": 10,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 294,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "c16bcc45-5df4-4779-8e79-cdd0a476716c",
          "width": 441,
          "x": 1943,
          "y": 368,
          "zOrder": 11,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 288,
          "keepRatio": true,
          "layer": "",
          "name": "портал",
          "persistentUuid": "75909360-a9f8-48c7-a307-b6a888833a12",
          "width": 147,
          "x": 2168,
          "y": 72,
          "zOrder": 12,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": false,
          "height": 0,
          "keepRatio": true,
          "layer": "",
          "name": "NewText",
          "persistentUuid": "79f7cc1c-6d97-446c-94ef-07513d9fe315",
          "width": 0,
          "x": 670,
          "y": 336,
          "zOrder": 400000000,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        }
      ],
      "objects": [
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "игрок",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [
            {
              "name": "HP_игрок",
              "type": "number",
              "value": 3
            }
          ],
          "effects": [],
          "behaviors": [
            {
              "name": "AdvancedJump",
              "type": "AdvancedJump::AdvancedJump",
              "PlatformerBehavior": "PlatformerObject",
              "CoyoteTimeFrameDuration": 0.25,
              "CanCoyoteJump": false,
              "WasInTheAir": false,
              "AirJumpCountMaximum": 2,
              "AreFloorJumpCountedAsAirJump": true,
              "AirJumpCount": 0,
              "WasJumpKeyReleased": false
            },
            {
              "name": "FireBullet",
              "type": "FireBullet::FireBullet",
              "FireCooldown": 0.1,
              "HasJustFired": false,
              "RotateBullet": false,
              "FiringArc": 10,
              "BulletQuantity": 1,
              "AngleVariance": 3,
              "BulletSpeedVariance": 1,
              "AmmoQuantity": 0,
              "ShotsPerReload": 0,
              "ReloadDuration": 7,
              "MaxAmmo": 25,
              "ShotsBeforeNextReload": 0,
              "TotalShotsFired": 0,
              "TotalBulletsCreated": 0,
              "StartingAmmo": 10,
              "TotalReloadsCompleted": 0,
              "UnlimitedAmmo": false,
              "ReloadInProgress": false,
              "HeatIncreasePerShot": 0,
              "HeatLevel": 0,
              "AutomaticReloading": false,
              "OverheatDuration": 0,
              "LinearCoolingRate": 0.1,
              "ExponentialCoolingRate": 0.3,
              "BulletLayer": "",
              "RandomizedAngle": 0
            },
            {
              "name": "PlatformerConfigurationStack",
              "type": "AdvancedJump::PlatformerConfigurationStack",
              "PlatformerCharacter": "PlatformerObject"
            },
            {
              "name": "PlatformerObject",
              "type": "PlatformBehavior::PlatformerObjectBehavior",
              "acceleration": 1500,
              "canGoDownFromJumpthru": true,
              "canGrabPlatforms": false,
              "canGrabWithoutMoving": true,
              "deceleration": 1500,
              "gravity": 1000,
              "ignoreDefaultControls": false,
              "jumpSpeed": 600,
              "jumpSustainTime": 0.2,
              "ladderClimbingSpeed": 150,
              "maxFallingSpeed": 700,
              "maxSpeed": 250,
              "slopeMaxAngle": 60,
              "useLegacyTrajectory": false,
              "useRepeatedJump": false,
              "xGrabTolerance": 10,
              "yGrabOffset": 0
            },
            {
              "name": "SmoothCamera",
              "type": "SmoothCamera::SmoothCamera",
              "LeftwardSpeed": 0.9,
              "RightwardSpeed": 0.9,
              "UpwardSpeed": 0.9,
              "DownwardSpeed": 0.9,
              "FollowOnX": true,
              "FollowOnY": true,
              "FollowFreeAreaLeft": 0,
              "FollowFreeAreaRight": 0,
              "FollowFreeAreaTop": 0,
              "FollowFreeAreaBottom": 0,
              "CameraOffsetX": 0,
              "CameraOffsetY": 0,
              "CameraDelay": 0,
              "ForecastTime": 0,
              "ForecastHistoryDuration": 0,
              "LogLeftwardSpeed": 2.0247e-320,
              "LogRightwardSpeed": 2.0247e-320,
              "LogDownwardSpeed": 2.0247e-320,
              "LogUpwardSpeed": 2.0247e-320,
              "DelayedCenterX": 2.0247e-320,
              "DelayedCenterY": 2.0247e-320,
              "ForecastHistoryMeanX": 2.0247e-320,
              "ForecastHistoryMeanY": 2.0247e-320,
              "ForecastHistoryVarianceX": 2.0247e-320,
              "ForecastHistoryCovariance": 2.0247e-320,
              "ForecastHistoryLinearA": 2.0247e-320,
              "ForecastHistoryLinearB": 2.0247e-320,
              "ForecastedX": 2.0247e-320,
              "ForecastedY": 2.0247e-320,
              "ProjectedNewestX": 2.0247e-320,
              "ProjectedNewestY": 2.0247e-320,
              "ProjectedOldestX": 2.0247e-320,
              "ProjectedOldestY": 2.0247e-320,
              "ForecastHistoryVarianceY": 2.0247e-320,
              "Index": 2.0247e-320,
              "CameraDelayCatchUpSpeed": 0,
              "CameraExtraDelay": 2.0247e-320,
              "WaitingSpeedXMax": 2.0247e-320,
              "WaitingSpeedYMax": 2.0247e-320,
              "WaitingEnd": 2.0247e-320,
              "CameraDelayCatchUpDuration": 2.0247e-320,
              "LeftwardSpeedMax": 9000,
              "RightwardSpeedMax": 9000,
              "UpwardSpeedMax": 9000,
              "DownwardSpeedMax": 9000,
              "OldX": 9000.000000007454,
              "OldY": 9000.000000007454,
              "IsCalledManually": false
            },
            {
              "name": "SmoothPlatformerCamera",
              "type": "SmoothCamera::SmoothPlatformerCamera",
              "PlatformerCharacter": "PlatformerObject",
              "SmoothCamera": "SmoothCamera",
              "JumpOriginY": 1.7803205197259924e-308,
              "AirFollowFreeAreaTop": 0,
              "AirFollowFreeAreaBottom": 0,
              "FloorFollowFreeAreaTop": 0,
              "FloorFollowFreeAreaBottom": 0,
              "AirUpwardSpeed": 0.95,
              "AirDownwardSpeed": 0.95,
              "FloorUpwardSpeed": 0.9,
              "FloorDownwardSpeed": 0.9,
              "AirUpwardSpeedMax": 9000,
              "AirDownwardSpeedMax": 9000,
              "FloorUpwardSpeedMax": 9000,
              "FloorDownwardSpeedMax": 9000
            },
            {
              "name": "Tween",
              "type": "Tween::TweenBehavior"
            }
          ],
          "animations": [
            {
              "name": "бег",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стоит",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.7,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "прыжок",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.05,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умерает",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит9",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умирает от лавы",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы9",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы12",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы13",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы14",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "падение",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.05,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стреляет в право",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стреляет в лево",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "перезарядка",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 14,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 7
                          },
                          {
                            "x": 49,
                            "y": 56
                          },
                          {
                            "x": 14,
                            "y": 56
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "assetStoreId": "",
          "height": 32,
          "name": "земля",
          "texture": "NewTiledSprite2",
          "type": "TiledSpriteObject::TiledSprite",
          "width": 32,
          "variables": [],
          "effects": [],
          "behaviors": [
            {
              "name": "Platform",
              "type": "PlatformBehavior::PlatformBehavior",
              "canBeGrabbed": true,
              "platformType": "NormalPlatform",
              "yGrabOffset": 0
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "жизни",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "3 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "3 hp",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "3 hp2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "2 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "1 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite14",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite15",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умер",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.7,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.01,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite23",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite24",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "пуля",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite2",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite28",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 3
                          },
                          {
                            "x": 14,
                            "y": 3
                          },
                          {
                            "x": 14,
                            "y": 11
                          },
                          {
                            "x": 0,
                            "y": 11
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "враг",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [
            {
              "name": "HP_враг",
              "type": "number",
              "value": 1
            }
          ],
          "effects": [],
          "behaviors": [
            {
              "name": "Pathfinding",
              "type": "PathfindingBehavior::PathfindingBehavior",
              "acceleration": 400,
              "allowDiagonals": true,
              "angleOffset": 0,
              "angularMaxSpeed": 180,
              "cellHeight": 20,
              "cellWidth": 20,
              "extraBorder": 0,
              "gridOffsetX": 0,
              "gridOffsetY": 0,
              "maxSpeed": 200,
              "rotateObject": false,
              "smoothingMaxCellGap": 1
            }
          ],
          "animations": [
            {
              "name": "вбежит",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вбежит3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вбежит2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "вумер",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "портал",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite2",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite29",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 15,
                            "y": 19
                          },
                          {
                            "x": 49,
                            "y": 19
                          },
                          {
                            "x": 49,
                            "y": 45
                          },
                          {
                            "x": 15,
                            "y": 45
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "assetStoreId": "",
          "bold": false,
          "italic": false,
          "name": "NewText",
          "smoothed": true,
          "type": "TextObject::Text",
          "underlined": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "string": "C+LEFT/RIGHT+UP=стрелять",
          "font": "",
          "textAlignment": "left",
          "characterSize": 20,
          "color": {
            "b": 0,
            "g": 0,
            "r": 0
          },
          "content": {
            "bold": false,
            "isOutlineEnabled": false,
            "isShadowEnabled": false,
            "italic": false,
            "outlineColor": "255;255;255",
            "outlineThickness": 2,
            "shadowAngle": 90,
            "shadowBlurRadius": 2,
            "shadowColor": "0;0;0",
            "shadowDistance": 4,
            "shadowOpacity": 127,
            "smoothed": true,
            "underlined": false,
            "text": "C+LEFT/RIGHT+UP=стрелять",
            "font": "",
            "textAlignment": "left",
            "verticalTextAlignment": "top",
            "characterSize": 20,
            "lineHeight": 0,
            "color": "0;0;0"
          }
        }
      ],
      "objectsFolderStructure": {
        "folderName": "__ROOT",
        "children": [
          {
            "objectName": "игрок"
          },
          {
            "objectName": "враг"
          },
          {
            "objectName": "пуля"
          },
          {
            "objectName": "жизни"
          },
          {
            "objectName": "земля"
          },
          {
            "objectName": "портал"
          },
          {
            "objectName": "NewSprite"
          },
          {
            "objectName": "NewText"
          }
        ]
      },
      "events": [
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IsOnFloor"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            },
            {
              "type": {
                "inverted": true,
                "value": "AnimatableCapability::AnimatableBehavior::Name"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в право\""
              ]
            },
            {
              "type": {
                "inverted": true,
                "value": "AnimatableCapability::AnimatableBehavior::Name"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в лево\""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"бег\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "inverted": true,
                "value": "PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стоит\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::IsJumping"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"прыжок\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [],
          "actions": [
            {
              "type": {
                "value": "PutAroundObject"
              },
              "parameters": [
                "жизни",
                "игрок",
                "600",
                "210"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "2"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"2 hp\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "1"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"1 hp\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "0"
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "PlatformBehavior::IgnoreDefaultControls"
              },
              "parameters": [
                "игрок",
                "PlatformerObject",
                "yes"
              ]
            },
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"умер\""
              ]
            },
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"умерает\""
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "5"
              ]
            },
            {
              "type": {
                "value": "Scene"
              },
              "parameters": [
                "",
                "\"1\"",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::IsFalling"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"падение\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "NewSprite",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "PushScene"
              },
              "parameters": [
                "",
                "\"1\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"v\""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "FireBullet::FireBullet::ReloadAmmo"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"c\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Right\""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в право\""
              ]
            },
            {
              "type": {
                "value": "FireBullet::FireBullet::Fire"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                "игрок.X()",
                "игрок.Y()",
                "пуля",
                "0",
                "600",
                ""
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IgnoreDefaultControls"
              },
              "parameters": [
                "игрок",
                "PlatformerObject",
                "yes"
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "2"
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IgnoreDefaultControls"
              },
              "parameters": [
                "игрок",
                "PlatformerObject",
                "no"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"c\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Left\""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в лево\""
              ]
            },
            {
              "type": {
                "value": "FireBullet::FireBullet::Fire"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                "игрок.X()",
                "игрок.Y()",
                "пуля",
                "180",
                "600",
                ""
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IgnoreDefaultControls"
              },
              "parameters": [
                "игрок",
                "PlatformerObject",
                "yes"
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "2"
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IgnoreDefaultControls"
              },
              "parameters": [
                "игрок",
                "PlatformerObject",
                "no"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [],
          "actions": [
            {
              "type": {
                "value": "PathfindingBehavior::SetDestination"
              },
              "parameters": [
                "враг",
                "Pathfinding",
                "=",
                "игрок.X()",
                "игрок.Y()"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "пуля",
                "враг",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetNumberObjectVariable"
              },
              "parameters": [
                "враг",
                "HP_враг",
                "-",
                "1"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "враг",
                "HP_враг",
                "=",
                "0"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "враг",
                "Animation",
                "=",
                "\"вумер\""
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "1"
              ]
            },
            {
              "type": {
                "value": "Delete"
              },
              "parameters": [
                "враг",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "враг",
                "",
                "",
                ""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetNumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "-",
                "1"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "<=",
                "0"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"умерает\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "портал",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "PushScene"
              },
              "parameters": [
                "",
                "\"2\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "SceneJustBegins"
              },
              "parameters": [
                ""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetCameraCenterX"
              },
              "parameters": [
                "",
                "=",
                "портал.X()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterY"
              },
              "parameters": [
                "",
                "=",
                "портал.Y()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "3"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterX"
              },
              "parameters": [
                "",
                "=",
                "игрок.X()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterY"
              },
              "parameters": [
                "",
                "=",
                "игрок.Y()",
                "",
                "0"
              ]
            }
          ]
        }
      ],
      "layers": [
        {
          "ambientLightColorB": 200,
          "ambientLightColorG": 200,
          "ambientLightColorR": 200,
          "camera2DPlaneMaxDrawingDistance": 5000,
          "camera3DFarPlaneDistance": 10000,
          "camera3DFieldOfView": 45,
          "camera3DNearPlaneDistance": 3,
          "cameraType": "",
          "followBaseLayerCamera": false,
          "isLightingLayer": false,
          "isLocked": false,
          "name": "",
          "renderingType": "",
          "visibility": true,
          "cameras": [
            {
              "defaultSize": true,
              "defaultViewport": true,
              "height": 0,
              "viewportBottom": 1,
              "viewportLeft": 0,
              "viewportRight": 1,
              "viewportTop": 0,
              "width": 0
            }
          ],
          "effects": [
            {
              "effectType": "Scene3D::HemisphereLight",
              "name": "3D Ambient Hemisphere Light",
              "doubleParameters": {
                "elevation": 40,
                "intensity": 0.33,
                "rotation": 300
              },
              "stringParameters": {
                "groundColor": "127;127;127",
                "skyColor": "255;255;255",
                "top": "Z+"
              },
              "booleanParameters": {}
            },
            {
              "effectType": "Scene3D::DirectionalLight",
              "name": "3D Sun Light",
              "doubleParameters": {
                "distanceFromCamera": 1500,
                "elevation": 40,
                "frustumSize": 4000,
                "intensity": 0.75,
                "minimumShadowBias": 0,
                "rotation": 300
              },
              "stringParameters": {
                "color": "255;255;255",
                "shadowQuality": "medium",
                "top": "Z+"
              },
              "booleanParameters": {
                "isCastingShadow": true
              }
            }
          ]
        }
      ],
      "behaviorsSharedData": [
        {
          "name": "AdvancedJump",
          "type": "AdvancedJump::AdvancedJump"
        },
        {
          "name": "Animation",
          "type": "AnimatableCapability::AnimatableBehavior"
        },
        {
          "name": "Effect",
          "type": "EffectCapability::EffectBehavior"
        },
        {
          "name": "FireBullet",
          "type": "FireBullet::FireBullet"
        },
        {
          "name": "Flippable",
          "type": "FlippableCapability::FlippableBehavior"
        },
        {
          "name": "Opacity",
          "type": "OpacityCapability::OpacityBehavior"
        },
        {
          "name": "Pathfinding",
          "type": "PathfindingBehavior::PathfindingBehavior"
        },
        {
          "name": "Platform",
          "type": "PlatformBehavior::PlatformBehavior"
        },
        {
          "name": "PlatformerConfigurationStack",
          "type": "AdvancedJump::PlatformerConfigurationStack"
        },
        {
          "name": "PlatformerObject",
          "type": "PlatformBehavior::PlatformerObjectBehavior"
        },
        {
          "name": "Resizable",
          "type": "ResizableCapability::ResizableBehavior"
        },
        {
          "name": "Scale",
          "type": "ScalableCapability::ScalableBehavior"
        },
        {
          "name": "SmoothCamera",
          "type": "SmoothCamera::SmoothCamera"
        },
        {
          "name": "SmoothPlatformerCamera",
          "type": "SmoothCamera::SmoothPlatformerCamera"
        },
        {
          "name": "Text",
          "type": "TextContainerCapability::TextContainerBehavior"
        },
        {
          "name": "Tween",
          "type": "Tween::TweenBehavior"
        }
      ]
    },
    {
      "b": 255,
      "disableInputWhenNotFocused": true,
      "mangledName": "_50",
      "name": "2",
      "r": 247,
      "standardSortMethod": true,
      "stopSoundsOnStartup": true,
      "title": "",
      "v": 249,
      "uiSettings": {
        "grid": false,
        "gridType": "rectangular",
        "gridWidth": 32,
        "gridHeight": 32,
        "gridDepth": 32,
        "gridOffsetX": 0,
        "gridOffsetY": 0,
        "gridOffsetZ": 0,
        "gridColor": 10401023,
        "gridAlpha": 0.8,
        "snap": false,
        "zoomFactor": 0.35534345588169886,
        "windowMask": false,
        "selectedLayer": "",
        "gameEditorMode": "instances-editor"
      },
      "objectsGroups": [],
      "variables": [],
      "instances": [
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 144,
          "keepRatio": true,
          "layer": "",
          "name": "игрок",
          "persistentUuid": "aca85dd7-68e6-485b-aa05-5e78b22be821",
          "width": 150,
          "x": 544,
          "y": 280,
          "zOrder": 1,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 32,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "d1e2d6eb-a8d5-4e45-ae92-944159053c9e",
          "width": 348,
          "x": 456,
          "y": 453,
          "zOrder": 2,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 198,
          "keepRatio": true,
          "layer": "",
          "name": "жизни",
          "persistentUuid": "3cda4ab6-71c9-4dd5-8595-603a0f233a9e",
          "width": 192,
          "x": 373,
          "y": 192,
          "zOrder": 3,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 64,
          "keepRatio": true,
          "layer": "",
          "name": "NewSprite",
          "persistentUuid": "7e10017c-c3ef-41d8-8ba9-fc1a48de8368",
          "width": 6777,
          "x": -2438,
          "y": 858,
          "zOrder": 4,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 89,
          "customSize": true,
          "depth": 2,
          "height": 119,
          "keepRatio": true,
          "layer": "",
          "name": "портал",
          "persistentUuid": "ccbd17fc-0103-453e-8c29-2eadcdf220f1",
          "width": 119,
          "x": 763,
          "y": -565,
          "zOrder": 5,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 146,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "0705cafb-3e9c-453d-9a83-8f2a3a4ae87b",
          "width": 32,
          "x": 922,
          "y": 245,
          "zOrder": 6,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 171,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "7037af22-1acb-482f-9b59-32b2fb2d7d10",
          "width": 32,
          "x": 1053,
          "y": 48,
          "zOrder": 7,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 167,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "4d590019-7b9d-4f7e-a08c-cf58038661be",
          "width": 32,
          "x": 1216,
          "y": -80,
          "zOrder": 8,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        },
        {
          "angle": 0,
          "customSize": true,
          "depth": 1,
          "height": 166,
          "keepRatio": true,
          "layer": "",
          "name": "земля",
          "persistentUuid": "b5e2c1fd-bcb0-41a7-bece-69b2170f4e1f",
          "width": 32,
          "x": 988,
          "y": -367,
          "zOrder": 9,
          "numberProperties": [],
          "stringProperties": [],
          "initialVariables": []
        }
      ],
      "objects": [
        {
          "adaptCollisionMaskAutomatically": false,
          "assetStoreId": "",
          "name": "игрок",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [
            {
              "name": "HP_игрок",
              "type": "number",
              "value": 3
            }
          ],
          "effects": [],
          "behaviors": [
            {
              "name": "AdvancedJump",
              "type": "AdvancedJump::AdvancedJump",
              "PlatformerBehavior": "PlatformerObject",
              "CoyoteTimeFrameDuration": 0.25,
              "CanCoyoteJump": false,
              "WasInTheAir": false,
              "AirJumpCountMaximum": 2,
              "AreFloorJumpCountedAsAirJump": true,
              "AirJumpCount": 0,
              "WasJumpKeyReleased": false
            },
            {
              "name": "FireBullet",
              "type": "FireBullet::FireBullet",
              "FireCooldown": 0.1,
              "HasJustFired": false,
              "RotateBullet": false,
              "FiringArc": 10,
              "BulletQuantity": 1,
              "AngleVariance": 3,
              "BulletSpeedVariance": 1,
              "AmmoQuantity": 0,
              "ShotsPerReload": 0,
              "ReloadDuration": 7,
              "MaxAmmo": 25,
              "ShotsBeforeNextReload": 0,
              "TotalShotsFired": 0,
              "TotalBulletsCreated": 0,
              "StartingAmmo": 10,
              "TotalReloadsCompleted": 0,
              "UnlimitedAmmo": false,
              "ReloadInProgress": false,
              "HeatIncreasePerShot": 0,
              "HeatLevel": 0,
              "AutomaticReloading": false,
              "OverheatDuration": 0,
              "LinearCoolingRate": 0.1,
              "ExponentialCoolingRate": 0.3,
              "BulletLayer": "",
              "RandomizedAngle": 0
            },
            {
              "name": "PlatformerConfigurationStack",
              "type": "AdvancedJump::PlatformerConfigurationStack",
              "PlatformerCharacter": "PlatformerObject"
            },
            {
              "name": "PlatformerObject",
              "type": "PlatformBehavior::PlatformerObjectBehavior",
              "acceleration": 1500,
              "canGoDownFromJumpthru": true,
              "canGrabPlatforms": false,
              "canGrabWithoutMoving": true,
              "deceleration": 1500,
              "gravity": 1000,
              "ignoreDefaultControls": false,
              "jumpSpeed": 600,
              "jumpSustainTime": 0.2,
              "ladderClimbingSpeed": 150,
              "maxFallingSpeed": 700,
              "maxSpeed": 250,
              "slopeMaxAngle": 60,
              "useLegacyTrajectory": false,
              "useRepeatedJump": false,
              "xGrabTolerance": 10,
              "yGrabOffset": 0
            },
            {
              "name": "SmoothCamera",
              "type": "SmoothCamera::SmoothCamera",
              "LeftwardSpeed": 0.9,
              "RightwardSpeed": 0.9,
              "UpwardSpeed": 0.9,
              "DownwardSpeed": 0.9,
              "FollowOnX": true,
              "FollowOnY": true,
              "FollowFreeAreaLeft": 0,
              "FollowFreeAreaRight": 0,
              "FollowFreeAreaTop": 0,
              "FollowFreeAreaBottom": 0,
              "CameraOffsetX": 0,
              "CameraOffsetY": 0,
              "CameraDelay": 0,
              "ForecastTime": 0,
              "ForecastHistoryDuration": 0,
              "LogLeftwardSpeed": 2.0247e-320,
              "LogRightwardSpeed": 2.0247e-320,
              "LogDownwardSpeed": 2.0247e-320,
              "LogUpwardSpeed": 2.0247e-320,
              "DelayedCenterX": 2.0247e-320,
              "DelayedCenterY": 2.0247e-320,
              "ForecastHistoryMeanX": 2.0247e-320,
              "ForecastHistoryMeanY": 2.0247e-320,
              "ForecastHistoryVarianceX": 2.0247e-320,
              "ForecastHistoryCovariance": 2.0247e-320,
              "ForecastHistoryLinearA": 2.0247e-320,
              "ForecastHistoryLinearB": 2.0247e-320,
              "ForecastedX": 2.0247e-320,
              "ForecastedY": 2.0247e-320,
              "ProjectedNewestX": 2.0247e-320,
              "ProjectedNewestY": 2.0247e-320,
              "ProjectedOldestX": 2.0247e-320,
              "ProjectedOldestY": 2.0247e-320,
              "ForecastHistoryVarianceY": 2.0247e-320,
              "Index": 2.0247e-320,
              "CameraDelayCatchUpSpeed": 0,
              "CameraExtraDelay": 2.0247e-320,
              "WaitingSpeedXMax": 2.0247e-320,
              "WaitingSpeedYMax": 2.0247e-320,
              "WaitingEnd": 2.0247e-320,
              "CameraDelayCatchUpDuration": 2.0247e-320,
              "LeftwardSpeedMax": 9000,
              "RightwardSpeedMax": 9000,
              "UpwardSpeedMax": 9000,
              "DownwardSpeedMax": 9000,
              "OldX": 9000.000000007454,
              "OldY": 9000.000000007454,
              "IsCalledManually": false
            },
            {
              "name": "SmoothPlatformerCamera",
              "type": "SmoothCamera::SmoothPlatformerCamera",
              "PlatformerCharacter": "PlatformerObject",
              "SmoothCamera": "SmoothCamera",
              "JumpOriginY": 1.7803205197259924e-308,
              "AirFollowFreeAreaTop": 0,
              "AirFollowFreeAreaBottom": 0,
              "FloorFollowFreeAreaTop": 0,
              "FloorFollowFreeAreaBottom": 0,
              "AirUpwardSpeed": 0.95,
              "AirDownwardSpeed": 0.95,
              "FloorUpwardSpeed": 0.9,
              "FloorDownwardSpeed": 0.9,
              "AirUpwardSpeedMax": 9000,
              "AirDownwardSpeedMax": 9000,
              "FloorUpwardSpeedMax": 9000,
              "FloorDownwardSpeedMax": 9000
            },
            {
              "name": "Tween",
              "type": "Tween::TweenBehavior"
            },
            {
              "name": "WallJump",
              "type": "AdvancedJump::WallJump",
              "PlatformerCharacter": "PlatformerObject",
              "PlatformerConfigurationStack": "PlatformerConfigurationStack",
              "JumpTimeFrame": 0.125,
              "WallJumpSpeedX": 350,
              "WallJumpAccelerationX": 1500,
              "SideSpeedSustainTime": 0.2,
              "WallSlidingGravity": 500,
              "WallSlidingMaxFallingSpeed": 350,
              "WallSlidingSpeedAbsorption": 350,
              "WallSlidingFallingSpeedMin": 50,
              "AutomaticSliding": true,
              "PreviousX": 50.00000000002912,
              "IsAgainstWall": false,
              "WasLeftOrRightPressed": false,
              "IsWallJumping": false,
              "IsJumpingLeft": false,
              "WasInTheAir": false,
              "HasJustWallJump": false,
              "MovedAwayFromTheWall": true
            }
          ],
          "animations": [
            {
              "name": "бег",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "бег2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стоит",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.7,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "прыжок",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.05,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умерает",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит9",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умирает от лавы",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы9",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы12",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы13",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умирает от лавы14",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "падение",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.05,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite8",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стреляет в право",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "стреляет в лево",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "стоит",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "перезарядка",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "перезарядка5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 26,
                            "y": 49
                          },
                          {
                            "x": 24.5,
                            "y": 48.5
                          },
                          {
                            "x": 24.5,
                            "y": 45.5
                          },
                          {
                            "x": 22.5,
                            "y": 45.5
                          },
                          {
                            "x": 22,
                            "y": 34.5
                          },
                          {
                            "x": 26.5,
                            "y": 32
                          },
                          {
                            "x": 24,
                            "y": 31.5
                          },
                          {
                            "x": 24.5,
                            "y": 21
                          },
                          {
                            "x": 38.5,
                            "y": 20.5
                          },
                          {
                            "x": 38.5,
                            "y": 31.5
                          },
                          {
                            "x": 36.5,
                            "y": 32.5
                          },
                          {
                            "x": 40.5,
                            "y": 34.5
                          },
                          {
                            "x": 40.5,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 45.5
                          },
                          {
                            "x": 38,
                            "y": 48.5
                          },
                          {
                            "x": 37,
                            "y": 49.5
                          },
                          {
                            "x": 37,
                            "y": 57.5
                          },
                          {
                            "x": 26,
                            "y": 57.5
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "assetStoreId": "",
          "height": 32,
          "name": "земля",
          "texture": "NewTiledSprite2",
          "type": "TiledSpriteObject::TiledSprite",
          "width": 32,
          "variables": [],
          "effects": [],
          "behaviors": [
            {
              "name": "Platform",
              "type": "PlatformBehavior::PlatformBehavior",
              "canBeGrabbed": true,
              "platformType": "NormalPlatform",
              "yGrabOffset": 0
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "жизни",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "3 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "3 hp",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "3 hp2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "2 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite10",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite11",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "1 hp",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 1,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite14",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite15",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "умер",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.7,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер6",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "умер7",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 2,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 43
                          },
                          {
                            "x": 128,
                            "y": 84
                          },
                          {
                            "x": 2,
                            "y": 84
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "NewSprite",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.01,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite23",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite24",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 0
                          },
                          {
                            "x": 64,
                            "y": 64
                          },
                          {
                            "x": 0,
                            "y": 64
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "пуля",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite2",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite28",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 0,
                            "y": 3
                          },
                          {
                            "x": 14,
                            "y": 3
                          },
                          {
                            "x": 14,
                            "y": 11
                          },
                          {
                            "x": 0,
                            "y": 11
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "враг",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [
            {
              "name": "HP_враг",
              "type": "number",
              "value": 1
            }
          ],
          "effects": [],
          "behaviors": [
            {
              "name": "Pathfinding",
              "type": "PathfindingBehavior::PathfindingBehavior",
              "acceleration": 400,
              "allowDiagonals": true,
              "angleOffset": 0,
              "angularMaxSpeed": 180,
              "cellHeight": 20,
              "cellWidth": 20,
              "extraBorder": 0,
              "gridOffsetX": 0,
              "gridOffsetY": 0,
              "maxSpeed": 200,
              "rotateObject": false,
              "smoothingMaxCellGap": 1
            }
          ],
          "animations": [
            {
              "name": "вбежит",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": true,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вбежит3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вбежит2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "name": "вумер",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.2,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер2",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер3",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер5",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    },
                    {
                      "hasCustomCollisionMask": true,
                      "image": "вумер4",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 17,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 11
                          },
                          {
                            "x": 45,
                            "y": 54
                          },
                          {
                            "x": 17,
                            "y": 54
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "adaptCollisionMaskAutomatically": true,
          "assetStoreId": "",
          "name": "портал",
          "type": "Sprite",
          "updateIfNotVisible": false,
          "variables": [],
          "effects": [],
          "behaviors": [],
          "animations": [
            {
              "name": "NewSprite2",
              "useMultipleDirections": false,
              "directions": [
                {
                  "looping": false,
                  "metadata": "{\"pskl\":{}}",
                  "timeBetweenFrames": 0.08,
                  "sprites": [
                    {
                      "hasCustomCollisionMask": true,
                      "image": "NewSprite29",
                      "points": [],
                      "originPoint": {
                        "name": "origine",
                        "x": 0,
                        "y": 0
                      },
                      "centerPoint": {
                        "automatic": true,
                        "name": "centre",
                        "x": 0,
                        "y": 0
                      },
                      "customCollisionMask": [
                        [
                          {
                            "x": 15,
                            "y": 19
                          },
                          {
                            "x": 49,
                            "y": 19
                          },
                          {
                            "x": 49,
                            "y": 45
                          },
                          {
                            "x": 15,
                            "y": 45
                          }
                        ]
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "objectsFolderStructure": {
        "folderName": "__ROOT",
        "children": [
          {
            "objectName": "игрок"
          },
          {
            "objectName": "враг"
          },
          {
            "objectName": "пуля"
          },
          {
            "objectName": "жизни"
          },
          {
            "objectName": "земля"
          },
          {
            "objectName": "портал"
          },
          {
            "objectName": "NewSprite"
          }
        ]
      },
      "events": [
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            },
            {
              "type": {
                "value": "PlatformBehavior::IsOnFloor"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"бег\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "inverted": true,
                "value": "PlatformBehavior::PlatformerObjectBehavior::IsMovingEvenALittle"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стоит\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::IsJumping"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"прыжок\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [],
          "actions": [
            {
              "type": {
                "value": "PutAroundObject"
              },
              "parameters": [
                "жизни",
                "игрок",
                "400",
                "210"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "2"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"2 hp\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "1"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"1 hp\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "=",
                "0"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "жизни",
                "Animation",
                "=",
                "\"умер\""
              ]
            },
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"умерает\""
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "5"
              ]
            },
            {
              "type": {
                "value": "PushScene"
              },
              "parameters": [
                "",
                "\"2\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "PlatformBehavior::IsFalling"
              },
              "parameters": [
                "игрок",
                "PlatformerObject"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"падение\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "NewSprite",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "PushScene"
              },
              "parameters": [
                "",
                "\"2\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"v\""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "FireBullet::FireBullet::ReloadAmmo"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"c\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Right\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Up\""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в право\""
              ]
            },
            {
              "type": {
                "value": "FireBullet::FireBullet::Fire"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                "игрок.X()",
                "игрок.Y()",
                "пуля",
                "0",
                "600",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"c\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Left\""
              ]
            },
            {
              "type": {
                "value": "KeyFromTextPressed"
              },
              "parameters": [
                "",
                "\"Up\""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"стреляет в лево\""
              ]
            },
            {
              "type": {
                "value": "FireBullet::FireBullet::Fire"
              },
              "parameters": [
                "игрок",
                "FireBullet",
                "игрок.X()",
                "игрок.Y()",
                "пуля",
                "180",
                "600",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [],
          "actions": [
            {
              "type": {
                "value": "PathfindingBehavior::SetDestination"
              },
              "parameters": [
                "враг",
                "Pathfinding",
                "=",
                "игрок.X()",
                "игрок.Y()"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "пуля",
                "враг",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetNumberObjectVariable"
              },
              "parameters": [
                "враг",
                "HP_враг",
                "-",
                "1"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "враг",
                "HP_враг",
                "=",
                "0"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "враг",
                "Animation",
                "=",
                "\"вумер\""
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "1"
              ]
            },
            {
              "type": {
                "value": "Delete"
              },
              "parameters": [
                "враг",
                ""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "враг",
                "",
                "",
                ""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetNumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "-",
                "1"
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "NumberObjectVariable"
              },
              "parameters": [
                "игрок",
                "HP_игрок",
                "<=",
                "0"
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "AnimatableCapability::AnimatableBehavior::SetName"
              },
              "parameters": [
                "игрок",
                "Animation",
                "=",
                "\"умерает\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "CollisionNP"
              },
              "parameters": [
                "игрок",
                "портал",
                "",
                "",
                ""
              ]
            }
          ],
          "actions": [
            {
              "type": {
                "value": "PushScene"
              },
              "parameters": [
                "",
                "\"2\""
              ]
            }
          ]
        },
        {
          "type": "BuiltinCommonInstructions::Standard",
          "conditions": [
            {
              "type": {
                "value": "SceneJustBegins"
              },
              "parameters": [
                ""
              ]
            },
            {
              "type": {
                "value": "BuiltinCommonInstructions::Once"
              },
              "parameters": []
            }
          ],
          "actions": [
            {
              "type": {
                "value": "SetCameraCenterX"
              },
              "parameters": [
                "",
                "=",
                "портал.X()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterY"
              },
              "parameters": [
                "",
                "=",
                "портал.Y()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "Wait"
              },
              "parameters": [
                "3"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterX"
              },
              "parameters": [
                "",
                "=",
                "игрок.X()",
                "",
                "0"
              ]
            },
            {
              "type": {
                "value": "SetCameraCenterY"
              },
              "parameters": [
                "",
                "=",
                "игрок.Y()",
                "",
                "0"
              ]
            }
          ]
        }
      ],
      "layers": [
        {
          "ambientLightColorB": 200,
          "ambientLightColorG": 200,
          "ambientLightColorR": 200,
          "camera2DPlaneMaxDrawingDistance": 5000,
          "camera3DFarPlaneDistance": 10000,
          "camera3DFieldOfView": 45,
          "camera3DNearPlaneDistance": 3,
          "cameraType": "",
          "followBaseLayerCamera": false,
          "isLightingLayer": false,
          "isLocked": false,
          "name": "",
          "renderingType": "",
          "visibility": true,
          "cameras": [
            {
              "defaultSize": true,
              "defaultViewport": true,
              "height": 0,
              "viewportBottom": 1,
              "viewportLeft": 0,
              "viewportRight": 1,
              "viewportTop": 0,
              "width": 0
            }
          ],
          "effects": [
            {
              "effectType": "Scene3D::HemisphereLight",
              "name": "3D Ambient Hemisphere Light",
              "doubleParameters": {
                "elevation": 40,
                "intensity": 0.33,
                "rotation": 300
              },
              "stringParameters": {
                "groundColor": "127;127;127",
                "skyColor": "255;255;255",
                "top": "Z+"
              },
              "booleanParameters": {}
            },
            {
              "effectType": "Scene3D::DirectionalLight",
              "name": "3D Sun Light",
              "doubleParameters": {
                "distanceFromCamera": 1500,
                "elevation": 40,
                "frustumSize": 4000,
                "intensity": 0.75,
                "minimumShadowBias": 0,
                "rotation": 300
              },
              "stringParameters": {
                "color": "255;255;255",
                "shadowQuality": "medium",
                "top": "Z+"
              },
              "booleanParameters": {
                "isCastingShadow": true
              }
            }
          ]
        }
      ],
      "behaviorsSharedData": [
        {
          "name": "AdvancedJump",
          "type": "AdvancedJump::AdvancedJump"
        },
        {
          "name": "Animation",
          "type": "AnimatableCapability::AnimatableBehavior"
        },
        {
          "name": "Effect",
          "type": "EffectCapability::EffectBehavior"
        },
        {
          "name": "FireBullet",
          "type": "FireBullet::FireBullet"
        },
        {
          "name": "Flippable",
          "type": "FlippableCapability::FlippableBehavior"
        },
        {
          "name": "Opacity",
          "type": "OpacityCapability::OpacityBehavior"
        },
        {
          "name": "Pathfinding",
          "type": "PathfindingBehavior::PathfindingBehavior"
        },
        {
          "name": "Platform",
          "type": "PlatformBehavior::PlatformBehavior"
        },
        {
          "name": "PlatformerConfigurationStack",
          "type": "AdvancedJump::PlatformerConfigurationStack"
        },
        {
          "name": "PlatformerObject",
          "type": "PlatformBehavior::PlatformerObjectBehavior"
        },
        {
          "name": "Resizable",
          "type": "ResizableCapability::ResizableBehavior"
        },
        {
          "name": "Scale",
          "type": "ScalableCapability::ScalableBehavior"
        },
        {
          "name": "SmoothCamera",
          "type": "SmoothCamera::SmoothCamera"
        },
        {
          "name": "SmoothPlatformerCamera",
          "type": "SmoothCamera::SmoothPlatformerCamera"
        },
        {
          "name": "Tween",
          "type": "Tween::TweenBehavior"
        },
        {
          "name": "WallJump",
          "type": "AdvancedJump::WallJump"
        }
      ]
    }
  ],
  "externalEvents": [],
  "eventsFunctionsExtensions": [
    {
      "author": "@4ian",
      "category": "Game mechanic",
      "extensionNamespace": "",
      "fullName": "Fire bullets",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "/extensions/fire-bullet/details",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWJ1bGxldCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNCwyMkgxMFYyMUgxNFYyMk0xMywxMFY3SDExVjEwTDEwLDExLjVWMjBIMTRWMTEuNUwxMywxME0xMiwyQzEyLDIgMTEsMyAxMSw1VjZIMTNWNUMxMyw1IDEzLDMgMTIsMloiIC8+PC9zdmc+",
      "name": "FireBullet",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/bullet.svg",
      "shortDescription": "Fire bullets, manage ammo, reloading and overheating.",
      "version": "0.9.2",
      "description": [
        "This extension allows objects to fire bullets. To use it, add the behavior to the object that will shoot, then use the provided action to launch another object as the bullet.",
        "",
        "The properties of the behavior can be used to customize:",
        "- Cooldown between shots",
        "- Firing multiple bullets at a time ([open the project online](https://editor.gdevelop.io/?project=example://fire-bullet))",
        "- Ammo management",
        "- Overheat",
        "",
        "The speed can be specified when using the actions to fire the bullets.",
        "The bullets are automatically given a permanent force to make them move in the 2D plane (no need to use a linear movement or move them with another behavior).",
        "",
        "It can be used for:",
        "- Twin-stick shooters ([open the project online](https://editor.gdevelop.io/?project=example://conviction-of-gun-dude-desktop))",
        "- Shoot'em up ([open the project online](https://editor.gdevelop.io/?project=example://space-shooter))",
        "",
        "A simple example shows how to make firing patterns ([open the project online](https://editor.gdevelop.io/?project=example://firing-patterns))."
      ],
      "origin": {
        "identifier": "FireBullet",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "fire",
        "bullet",
        "spawn",
        "firerate",
        "reload",
        "weapon",
        "ranged",
        "ammo",
        "overheat"
      ],
      "authorIds": [
        "wWP8BSlAW0UP4NeaHa2LcmmDzmH2",
        "xpwUwByyImTDcHEqDUqfyg0oRBt1",
        "2OwwM8ToR9dx9RJ2sAKTcrLmCB92",
        "gqDaZjCfevOOxBYkK6zlhtZnXCg1"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [],
      "eventsFunctions": [],
      "eventsBasedBehaviors": [
        {
          "description": "Fire bullets with built-in cooldown, ammo, reloading, and overheating. Once added to your object that must shoot, use the behavior actions to fire another object as a bullet. These actions check all constraints internally (can be called without conditions, they will only fire when ready) and will make the bullet move (using a permanent force).",
          "fullName": "Fire bullets",
          "name": "FireBullet",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__FireBullet.FiringCooldown\""
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "=",
                        "StartingAmmo"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShotsBeforeNextReload",
                        "=",
                        "ShotsPerReload"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "colorB": 224,
                  "colorG": 16,
                  "colorR": 189,
                  "creationTime": 0,
                  "name": "Take a shot (if triggered)",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Creators can use the \"FireBullet\" action multiple times in a frame and it will be counted as a single \"shot\"."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "HasJustFired",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "HasJustFired",
                            "False",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "ResetObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"__FireBullet.FiringCooldown\""
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "TotalShotsFired",
                            "+",
                            "1"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Ammo",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "UnlimitedAmmo",
                                    "True",
                                    ""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "AmmoQuantity",
                                    "=",
                                    "max(0, AmmoQuantity - 1)"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "ShotsPerReload",
                                    ">",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "ShotsBeforeNextReload",
                                    "-",
                                    "1"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "AutomaticReloading",
                                    "True",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "FireBullet::FireBullet::IsReloadNeeded"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "FireBullet::FireBullet::IsReloadInProgress"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "FireBullet::FireBullet::ReloadAmmo"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        },
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Overheat",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "HeatIncreasePerShot",
                                    ">",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "HeatLevel",
                                    "+",
                                    "HeatIncreasePerShot"
                                  ]
                                }
                              ],
                              "events": [
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "NumberVariable"
                                      },
                                      "parameters": [
                                        "OverheatDuration",
                                        ">",
                                        "0"
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "FireBullet::FireBullet::IsOverheated"
                                      },
                                      "parameters": [
                                        "Object",
                                        "Behavior",
                                        ""
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "ResetObjectTimer"
                                      },
                                      "parameters": [
                                        "Object",
                                        "\"__FireBullet.OverheatDuration\""
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Reload",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Detect when reload is completed"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "FireBullet::FireBullet::IsReloadInProgress"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "CompareObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"__FireBullet.ReloadingTimer\"",
                            ">=",
                            "ReloadDuration"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "TotalReloadsCompleted",
                            "+",
                            "1"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "ReloadInProgress",
                            "False",
                            ""
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "FireBullet::FireBullet::IsUnlimitedAmmo"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ShotsBeforeNextReload",
                                "=",
                                "ShotsPerReload"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Only reload the amount of ammo available"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsUnlimitedAmmo"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ShotsBeforeNextReload",
                                "=",
                                "min(ShotsPerReload, AmmoQuantity)"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Cooling",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::CompareNumbers"
                          },
                          "parameters": [
                            "HeatLevel",
                            ">",
                            "0"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "ExponentialCoolingRate",
                                ">",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "HeatLevel",
                                "=",
                                "max(0, HeatLevel - TimeDelta() * ExponentialCoolingRate * HeatLevel)"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "LinearCoolingRate",
                                ">",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "HeatLevel",
                                "=",
                                "max(0, HeatLevel - TimeDelta() * LinearCoolingRate)"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Fire bullets toward an object at a specified speed. Call this continuously, the action checks readiness internally — no extra timer or check needed.",
              "fullName": "Fire bullets toward an object",
              "functionType": "Action",
              "name": "FireTowardObject",
              "sentence": "Fire _PARAM4_ from _PARAM0_ (if ready), at position _PARAM2_; _PARAM3_, toward _PARAM5_ with speed _PARAM6_ px/s",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::Fire"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "XPosition",
                        "YPosition",
                        "Bullet",
                        "Object.AngleToObject(TargetObject)",
                        "Speed",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "X position, where to create the bullet",
                  "name": "XPosition",
                  "type": "expression"
                },
                {
                  "description": "Y position, where to create the bullet",
                  "name": "YPosition",
                  "type": "expression"
                },
                {
                  "description": "The bullet object",
                  "name": "Bullet",
                  "type": "objectListOrEmptyIfJustDeclared"
                },
                {
                  "description": "Target object",
                  "name": "TargetObject",
                  "type": "objectList"
                },
                {
                  "description": "Speed of the bullet, in pixels per second",
                  "name": "Speed",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Fire bullets toward a position at a specified speed. Call this continuously, the action checks readiness internally — no extra timer or check needed.",
              "fullName": "Fire bullets toward a position",
              "functionType": "Action",
              "name": "FireTowardPosition",
              "sentence": "Fire _PARAM4_ from _PARAM0_ (if ready), at position _PARAM2_; _PARAM3_, toward position _PARAM5_;_PARAM6_ with speed _PARAM7_ px/s",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::Fire"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "XPosition",
                        "YPosition",
                        "Bullet",
                        "Object.AngleToPosition(TargetXPosition, TargetYPosition)",
                        "Speed",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "X position, where to create the bullet",
                  "name": "XPosition",
                  "type": "expression"
                },
                {
                  "description": "Y position, where to create the bullet",
                  "name": "YPosition",
                  "type": "expression"
                },
                {
                  "description": "The bullet object",
                  "name": "Bullet",
                  "type": "objectListOrEmptyIfJustDeclared"
                },
                {
                  "description": "Target X position",
                  "name": "TargetXPosition",
                  "type": "expression"
                },
                {
                  "description": "Target Y position",
                  "name": "TargetYPosition",
                  "type": "expression"
                },
                {
                  "description": "Speed of the bullet, in pixels per second",
                  "name": "Speed",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Fire bullets in the direction of a given angle at a specified speed. Call this continuously, the action checks readiness internally — no extra timer or check needed.",
              "fullName": "Fire bullets toward an angle",
              "functionType": "Action",
              "name": "Fire",
              "sentence": "Fire _PARAM4_ from _PARAM0_ (if ready), at position _PARAM2_; _PARAM3_, toward angle _PARAM5_ and speed _PARAM6_ px/s",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::IsReadyToShoot"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "HasJustFired",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::CompareNumbers"
                          },
                          "parameters": [
                            "BulletQuantity",
                            "=",
                            "1"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "FireBullet::FireBullet::FireSingleBullet"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            "XPosition",
                            "YPosition",
                            "Bullet",
                            "Angle",
                            "Speed",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::CompareNumbers"
                          },
                          "parameters": [
                            "BulletQuantity",
                            ">",
                            "1"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Repeat",
                              "repeatExpression": "BulletQuantity",
                              "conditions": [],
                              "actions": [],
                              "events": [
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "FireBullet::FireBullet::FiringArc"
                                      },
                                      "parameters": [
                                        "Object",
                                        "Behavior",
                                        "!=",
                                        "360",
                                        ""
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "MultiShotAngle",
                                        "=",
                                        "Angle + lerp(-FiringArc / 2, FiringArc / 2, BulletIndex / (BulletQuantity - 1)) "
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Comment",
                                  "color": {
                                    "b": 109,
                                    "g": 230,
                                    "r": 255,
                                    "textB": 0,
                                    "textG": 0,
                                    "textR": 0
                                  },
                                  "comment": "When firing in a full circle, prevent first and last bullet from using the same angle"
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "FireBullet::FireBullet::FiringArc"
                                      },
                                      "parameters": [
                                        "Object",
                                        "Behavior",
                                        "=",
                                        "360",
                                        ""
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "MultiShotAngle",
                                        "=",
                                        "Angle + lerp(-FiringArc / 2, FiringArc / 2, BulletIndex / BulletQuantity) "
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "FireBullet::FireBullet::FireSingleBullet"
                                      },
                                      "parameters": [
                                        "Object",
                                        "Behavior",
                                        "XPosition",
                                        "YPosition",
                                        "Bullet",
                                        "MultiShotAngle",
                                        "Speed",
                                        ""
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "BulletIndex",
                                        "+",
                                        "1"
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ],
                          "variables": [
                            {
                              "folded": true,
                              "name": "MultiShotAngle",
                              "type": "number",
                              "value": 0
                            },
                            {
                              "name": "BulletIndex",
                              "type": "number",
                              "value": 0
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "X position, where to create the bullet",
                  "name": "XPosition",
                  "type": "expression"
                },
                {
                  "description": "Y position, where to create the bullet",
                  "name": "YPosition",
                  "type": "expression"
                },
                {
                  "description": "The bullet object",
                  "name": "Bullet",
                  "type": "objectListOrEmptyIfJustDeclared"
                },
                {
                  "description": "Angle of the bullet, in degrees",
                  "name": "Angle",
                  "type": "expression"
                },
                {
                  "description": "Speed of the bullet, in pixels per second",
                  "name": "Speed",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Fire a single bullet. This is only meant to be used inside the \"Fire bullet\" action.",
              "fullName": "Fire a single bullet",
              "functionType": "Action",
              "group": "Firing",
              "name": "FireSingleBullet",
              "private": true,
              "sentence": "Fire a single bullet _PARAM4_ from _PARAM0_, at position _PARAM2_; _PARAM3_, with angle _PARAM5_ and speed _PARAM6_ px/s",
              "events": [
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Fire a single bullet",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Create bullet"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "Create"
                          },
                          "parameters": [
                            "",
                            "Bullet",
                            "XPosition",
                            "YPosition",
                            "BulletLayer"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Move bullet (apply angle and bullet speed variances)"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "RandomizedAngle",
                                "=",
                                "Angle + RandomInRange(-AngleVariance, AngleVariance)"
                              ]
                            },
                            {
                              "type": {
                                "value": "AddForceAL"
                              },
                              "parameters": [
                                "Bullet",
                                "RandomizedAngle",
                                "Speed + RandomInRange(-BulletSpeedVariance, BulletSpeedVariance)",
                                "1"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Rotate newly created bullet, if needed"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "RotateBullet",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetAngle"
                              },
                              "parameters": [
                                "Bullet",
                                "=",
                                "RandomizedAngle"
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Update statistics"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "TotalBulletsCreated",
                            "+",
                            "1"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "X position, where to create the bullet",
                  "name": "XPosition",
                  "type": "expression"
                },
                {
                  "description": "Y position, where to create the bullet",
                  "name": "YPosition",
                  "type": "expression"
                },
                {
                  "description": "The bullet object",
                  "name": "Bullet",
                  "type": "objectListOrEmptyIfJustDeclared"
                },
                {
                  "description": "Angle of the bullet, in degrees",
                  "name": "Angle",
                  "type": "expression"
                },
                {
                  "description": "Speed of the bullet, in pixels per second",
                  "name": "Speed",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Reload ammo.",
              "fullName": "Reload ammo",
              "functionType": "Action",
              "name": "ReloadAmmo",
              "sentence": "Reload ammo on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "FireBullet::FireBullet::IsOutOfAmmo"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "ReloadInProgress",
                        "True",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__FireBullet.ReloadingTimer\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object has just fired something.",
              "fullName": "Has just fired",
              "functionType": "Condition",
              "group": "Firing",
              "name": "HasJustFired",
              "sentence": "_PARAM0_ has just fired",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "HasJustFired",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if bullet rotates to match trajectory.",
              "fullName": "Is bullet rotation enabled",
              "functionType": "Condition",
              "group": "Firing",
              "name": "BulletRotationEnabled",
              "sentence": "Bullet rotation enabled on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "RotateBullet",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the firing arc (in degrees) where bullets are shot. Bullets are evenly spaced out inside the firing arc.",
              "fullName": "Firing arc",
              "functionType": "ExpressionAndCondition",
              "group": "Multi-Fire",
              "name": "FiringArc",
              "sentence": "the firing arc",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "FiringArc"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "FiringArc",
              "name": "SetFiringArcOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FiringArc",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Firing arc (degrees) Range: 0 to 360",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the firing arc (in degrees) where bullets will be shot. Bullets will be evenly spaced out inside the firing arc.",
              "fullName": "Set firing arc (deprecated)",
              "functionType": "Action",
              "group": "Multi-Fire",
              "name": "SetFiringArc",
              "private": true,
              "sentence": "Set firing arc of _PARAM0_ to _PARAM2_ degrees",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetFiringArcOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Firing arc (degrees) Range: 0 to 360",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the angle variance (in degrees) applied to each bullet.",
              "fullName": "Angle variance",
              "functionType": "ExpressionAndCondition",
              "group": "Firing variance",
              "name": "AngleVariance",
              "sentence": "the angle variance",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "AngleVariance"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "AngleVariance",
              "name": "SetAngleVarianceOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AngleVariance",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Angle variance (degrees) Range: 0 to 180",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the angle variance (in degrees) applied to each bullet.",
              "fullName": "Set angle variance (deprecated)",
              "functionType": "Action",
              "group": "Firing",
              "name": "SetAngleVariance",
              "private": true,
              "sentence": "Set angle variance of _PARAM0_ to _PARAM2_ degrees",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetAngleVarianceOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Angle variance (degrees) Range: 0 to 180",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the bullet speed variance (pixels per second) applied to each bullet.",
              "fullName": "Bullet speed variance",
              "functionType": "ExpressionAndCondition",
              "group": "Firing variance",
              "name": "BulletSpeedVariance",
              "sentence": "the bullet speed variance",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "BulletSpeedVariance"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "BulletSpeedVariance",
              "name": "SetBulletSpeedVarianceOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "BulletSpeedVariance",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Angle variance (degrees) Range: 0 to 180",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the speed variance (pixels per second) applied to each bullet.",
              "fullName": "Set bullet speed variance (deprecated)",
              "functionType": "Action",
              "group": "Multi-Fire",
              "name": "SetBulletSpeedVariance",
              "private": true,
              "sentence": "Set bullet speed variance of _PARAM0_ to _PARAM2_ pixels per second",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetBulletSpeedVarianceOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Angle variance (degrees) Range: 0 to 180",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the number of bullets shot every time the \"fire bullet\" action is used.",
              "fullName": "Bullets per shot",
              "functionType": "ExpressionAndCondition",
              "group": "Multi-Fire",
              "name": "BulletQuantity",
              "sentence": "the number of bullets per shot",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "BulletQuantity"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "BulletQuantity",
              "name": "SetBulletQuantityOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "BulletQuantity",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Bullets",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the number of bullets shot every time the \"fire bullet\" action is used.",
              "fullName": "Set number of bullets per shot (deprecated)",
              "functionType": "Action",
              "group": "Multi-Fire",
              "name": "SetBulletQuantity",
              "private": true,
              "sentence": "Set number of bullets per shot of _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetBulletQuantityOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Bullets",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the layer that bullets are created on.",
              "fullName": "Set bullet layer",
              "functionType": "Action",
              "group": "Firing",
              "name": "SetBulletLayer",
              "sentence": "Set the layer used to create bullets fired by _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetStringVariable"
                      },
                      "parameters": [
                        "BulletLayer",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Layer",
                  "name": "Value",
                  "type": "layer"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable bullet rotation.",
              "fullName": "Enable (or disable) bullet rotation",
              "functionType": "Action",
              "group": "Firing",
              "name": "SetRotateBullet",
              "sentence": "Enable bullet rotation on _PARAM0_:  _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "RotateBullet",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "RotateBullet",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "defaultValue": "yes",
                  "description": "Rotate bullet to match trajetory",
                  "name": "Value",
                  "optional": true,
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable unlimited ammo.",
              "fullName": "Enable (or disable) unlimited ammo",
              "functionType": "Action",
              "group": "Ammo",
              "name": "SetUnlimitedAmmo",
              "sentence": "Enable unlimited ammo on _PARAM0_:  _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "UnlimitedAmmo",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "UnlimitedAmmo",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "defaultValue": "yes",
                  "description": "Unlimited ammo",
                  "name": "Value",
                  "optional": true,
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the firing cooldown (in seconds) also known as rate of fire.",
              "fullName": "Firing cooldown",
              "functionType": "ExpressionAndCondition",
              "group": "Firing",
              "name": "Cooldown",
              "sentence": "the firing cooldown",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "FireCooldown"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "Cooldown",
              "name": "SetCooldownOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FireCooldown",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Cooldown in seconds",
                  "name": "NewCooldown",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the firing cooldown, which changes the rate of fire.",
              "fullName": "Set firing cooldown (deprecated)",
              "functionType": "Action",
              "group": "Firing",
              "name": "SetCooldown",
              "private": true,
              "sentence": "Set the fire rate of _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetCooldownOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Cooldown in seconds",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the reload duration (in seconds).",
              "fullName": "Reload duration",
              "functionType": "ExpressionAndCondition",
              "group": "Reload",
              "name": "ReloadDuration",
              "sentence": "the reload duration",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ReloadDuration"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ReloadDuration",
              "name": "SetReloadDurationOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ReloadDuration",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Reload duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the duration to reload ammo.",
              "fullName": "Set reload duration (deprecated)",
              "functionType": "Action",
              "group": "Reload",
              "name": "SetReloadDuration",
              "private": true,
              "sentence": "Set the reload duration of _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetReloadDurationOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Reload duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the overheat duration (in seconds). When an object is overheated, it can't fire for this duration.",
              "fullName": "Overheat duration",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "OverheatDuration",
              "sentence": "the overheat duration",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "OverheatDuration"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "OverheatDuration",
              "name": "SetOverheatDurationOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "OverheatDuration",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Overheat duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the duration after becoming overheated.",
              "fullName": "Set overheat duration (deprecated)",
              "functionType": "Action",
              "group": "Overheat",
              "name": "SetOverheatDuration",
              "private": true,
              "sentence": "Set the overheat duration of _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetOverheatDurationOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Overheat duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the ammo quantity.",
              "fullName": "Ammo quantity",
              "functionType": "ExpressionAndCondition",
              "group": "Ammo",
              "name": "AmmoQuantity",
              "sentence": "the ammo quantity",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "AmmoQuantity"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "AmmoQuantity",
              "name": "SetAmmoQuantityOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Ammo",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the quantity of ammo.",
              "fullName": "Set ammo quantity (deprecated)",
              "functionType": "Action",
              "group": "Ammo",
              "name": "SetAmmoQuantity",
              "private": true,
              "sentence": "Set the ammo quantity of _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetAmmoQuantityOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "max(0, Value)",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Ammo",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the heat increase per shot.",
              "fullName": "Heat increase per shot",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "HeatIncreasePerShot",
              "sentence": "the heat increase per shot",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "HeatIncreasePerShot"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "HeatIncreasePerShot",
              "name": "SetHeatPerShotOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "HeatIncreasePerShot",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Heat increase per shot (Range: 0 to 1)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the heat increase per shot.",
              "fullName": "Set heat increase per shot (deprecated)",
              "functionType": "Action",
              "group": "Overheat",
              "name": "SetHeatPerShot",
              "private": true,
              "sentence": "Set the heat increase of _PARAM0_ to _PARAM2_ per shot",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetHeatPerShotOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Heat increase per shot (Range: 0 to 1)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the max ammo.",
              "fullName": "Max ammo",
              "functionType": "ExpressionAndCondition",
              "group": "Ammo",
              "name": "MaxAmmo",
              "sentence": "the max ammo",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "MaxAmmo"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "MaxAmmo",
              "name": "SetMaxAmmoOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "MaxAmmo",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "MaxAmmo",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "=",
                        "min(MaxAmmo, AmmoQuantity)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Max ammo",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the max ammo.",
              "fullName": "Set max ammo (deprecated)",
              "functionType": "Action",
              "group": "Ammo",
              "name": "SetMaxAmmo",
              "private": true,
              "sentence": "Set the max ammo of _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetMaxAmmoOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Max ammo",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Reset total shots fired.",
              "fullName": "Reset total shots fired",
              "functionType": "Action",
              "group": "Stats",
              "name": "ResetTotalShotsFired",
              "sentence": "Reset total shots fired by _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "TotalShotsFired",
                        "=",
                        "0"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Reset total bullets created.",
              "fullName": "Reset total bullets created",
              "functionType": "Action",
              "group": "Stats",
              "name": "ResetTotalBulletsCreated",
              "sentence": "Reset total bullets created by _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "TotalBulletsCreated",
                        "=",
                        "0"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Reset total reloads completed.",
              "fullName": "Reset total reloads completed",
              "functionType": "Action",
              "group": "Stats",
              "name": "ResetTotalReloadsCompleted",
              "sentence": "Reset total reloads completed by _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "TotalReloadsCompleted",
                        "=",
                        "0"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the number of shots per reload.",
              "fullName": "Shots per reload",
              "functionType": "ExpressionAndCondition",
              "group": "Reload",
              "name": "ShotsPerReload",
              "sentence": "the shots per reload",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShotsPerReload"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ShotsPerReload",
              "name": "SetShotsPerReloadOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShotsPerReload",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "ShotsBeforeNextReload",
                        ">",
                        "ShotsPerReload"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShotsBeforeNextReload",
                        "=",
                        "ShotsPerReload"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Shots per reload",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the number of shots per reload.",
              "fullName": "Set shots per reload (deprecated)",
              "functionType": "Action",
              "group": "Reload",
              "name": "SetShotsPerReload",
              "private": true,
              "sentence": "Set the shots per reload of _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetShotsPerReloadOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Shots per reload",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable (or disable) automatic reloading.",
              "fullName": "Enable (or disable) automatic reloading",
              "functionType": "Action",
              "group": "Reload",
              "name": "SetAutomaticReload",
              "sentence": "Enable automatic reloading on _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "AutomaticReloading",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "AutomaticReloading",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "defaultValue": "yes",
                  "description": "Enable automatic reloading",
                  "name": "Value",
                  "optional": true,
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the linear cooling rate (per second).",
              "fullName": "Linear cooling rate",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "LinearCoolingRate",
              "sentence": "the linear cooling rate",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "LinearCoolingRate"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "LinearCoolingRate",
              "name": "SetLinearCoolingRateOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LinearCoolingRate",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Heat cooling rate (per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the linear rate of cooling.",
              "fullName": "Set linear cooling rate (deprecated)",
              "functionType": "Action",
              "group": "Overheat",
              "name": "SetLinearCoolingRate",
              "private": true,
              "sentence": "Set the linear cooling rate of _PARAM0_ to _PARAM2_ per second",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetLinearCoolingRateOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Heat cooling rate (per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the exponential cooling rate, per second.",
              "fullName": "Exponential cooling rate",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "ExponentialCoolingRate",
              "sentence": "the exponential cooling rate",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ExponentialCoolingRate"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ExponentialCoolingRate",
              "name": "SetExponentialCoolingRateOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ExponentialCoolingRate",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Exponential cooling rate",
                  "name": "Value",
                  "supplementaryInformation": "[\"Exponential\",\"Linear\"]",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the exponential rate of cooling.",
              "fullName": "Set exponential cooling rate (deprecated)",
              "functionType": "Action",
              "group": "Overheat",
              "name": "SetExponentialCoolingRate",
              "private": true,
              "sentence": "Set the exponential cooling rate of _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::SetExponentialCoolingRateOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Exponential cooling rate",
                  "name": "Value",
                  "supplementaryInformation": "[\"Exponential\",\"Linear\"]",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Increase ammo quantity.",
              "fullName": "Increase ammo",
              "functionType": "Action",
              "name": "IncreaseAmmo",
              "sentence": "Increase ammo of _PARAM0_ by _PARAM2_ shots",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "+",
                        "AmmoGained"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "If Max Ammo is set, do not exceed the value"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "MaxAmmo",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "=",
                        "min(MaxAmmo, AmmoQuantity)"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::IsReloadNeeded"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "AutomaticReloading",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "FireBullet::FireBullet::ReloadAmmo"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                },
                {
                  "description": "Ammo gained",
                  "name": "AmmoGained",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Layer that bullets are created on.",
              "fullName": "Bullet layer",
              "functionType": "StringExpression",
              "group": "Multi-Fire",
              "name": "BulletLayer",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnString"
                      },
                      "parameters": [
                        "BulletLayer"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "layer"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the heat level (range: 0 to 1).",
              "fullName": "Heat level",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "HeatLevel",
              "sentence": "the heat level",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "min(1, HeatLevel)"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Total shots fired (multi-bullet shots are considered one shot).",
              "fullName": "Shots fired",
              "functionType": "Expression",
              "group": "Stats",
              "name": "TotalShotsFired",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "TotalShotsFired"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Total bullets created.",
              "fullName": "Bullets created",
              "functionType": "Expression",
              "group": "Stats",
              "name": "TotalBulletsCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "TotalBulletsCreated"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Reloads completed.",
              "fullName": "Reloads completed",
              "functionType": "Expression",
              "group": "Stats",
              "name": "TotalReloadsCompleted",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "TotalReloadsCompleted"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the remaining shots before the next reload is required.",
              "fullName": "Shots before next reload",
              "functionType": "ExpressionAndCondition",
              "group": "Reload",
              "name": "ShotsBeforeNextReload",
              "sentence": "the remaining shots (before the next reload)",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShotsBeforeNextReload"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the remaining duration before the cooldown will permit a bullet to be fired, in seconds.",
              "fullName": "Duration before cooldown end",
              "functionType": "ExpressionAndCondition",
              "group": "Firing",
              "name": "CooldownTimeLeft",
              "sentence": "the remaining duration before the cooldown end",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0, FireCooldown - Object.ObjectTimerElapsedTime(\"__FireBullet.FiringCooldown\"))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the remaining duration before the overheat penalty ends, in seconds.",
              "fullName": "Duration before overheat end",
              "functionType": "ExpressionAndCondition",
              "group": "Overheat",
              "name": "OverheatTimeLeft",
              "sentence": "the remaining duration before the overheat end",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__FireBullet.OverheatDuration\"",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0, OverheatDuration - Object.ObjectTimerElapsedTime(\"__FireBullet.OverheatDuration\"))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the remaining duration before the reload finishes, in seconds.",
              "fullName": "Duration before the reload finishes",
              "functionType": "ExpressionAndCondition",
              "group": "Reload",
              "name": "ReloadTimeLeft",
              "sentence": "the remaining duration before the reload finishes",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__FireBullet.ReloadingTimer\"",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0, ReloadDuration - Object.ObjectTimerElapsedTime(\"__FireBullet.ReloadingTimer\"))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if object is currently performing an ammo reload.",
              "fullName": "Is ammo reloading in progress",
              "functionType": "Condition",
              "group": "Reload",
              "name": "IsReloadInProgress",
              "sentence": "_PARAM0_ is reloading ammo",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "ReloadInProgress",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if object is ready to shoot.",
              "fullName": "Is ready to shoot",
              "functionType": "Condition",
              "group": "Firing",
              "name": "IsReadyToShoot",
              "sentence": "_PARAM0_ is ready to shoot",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "HasJustFired",
                            "True",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::And"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "value": "BehaviorActivated"
                              },
                              "parameters": [
                                "Object",
                                "Behavior"
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsOutOfAmmo"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsReloadNeeded"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsReloadInProgress"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsFiringCooldownActive"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FireBullet::FireBullet::IsOverheated"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if automatic reloading is enabled.",
              "fullName": "Is automatic reloading enabled",
              "functionType": "Condition",
              "group": "Reload",
              "name": "IsAutomaticReloadingEnabled",
              "sentence": "Automatic reloading is enabled on_PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "AutomaticReloading",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if ammo is unlimited.",
              "fullName": "Is ammo unlimited",
              "functionType": "Condition",
              "group": "Ammo",
              "name": "IsUnlimitedAmmo",
              "sentence": "_PARAM0_ has unlimited ammo",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "UnlimitedAmmo",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if object has no ammo available.",
              "fullName": "Is out of ammo",
              "functionType": "Condition",
              "group": "Ammo",
              "name": "IsOutOfAmmo",
              "sentence": "_PARAM0_ is out of ammo",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "FireBullet::FireBullet::IsUnlimitedAmmo"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "AmmoQuantity",
                        "<=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if object needs to reload ammo.",
              "fullName": "Is a reload needed",
              "functionType": "Condition",
              "group": "Reload",
              "name": "IsReloadNeeded",
              "sentence": "_PARAM0_ needs to reload ammo",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Shots per reload must not be \"0\""
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "ShotsPerReload",
                        ">",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "ShotsBeforeNextReload",
                        "=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if object is overheated.",
              "fullName": "Is overheated",
              "functionType": "Condition",
              "group": "Overheat",
              "name": "IsOverheated",
              "sentence": "_PARAM0_ is overheated",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "HeatLevel",
                            ">=",
                            "1"
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::CompareNumbers"
                          },
                          "parameters": [
                            "Object.Behavior::OverheatTimeLeft()",
                            ">",
                            "0"
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if firing cooldown is active.",
              "fullName": "Is firing cooldown active",
              "functionType": "Condition",
              "group": "Firing",
              "name": "IsFiringCooldownActive",
              "sentence": "Firing cooldown is active on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::CompareNumbers"
                      },
                      "parameters": [
                        "Object.Behavior::CooldownTimeLeft()",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "FireBullet::FireBullet",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "0.1",
              "type": "Number",
              "unit": "Second",
              "label": "Firing cooldown",
              "description": "Objects cannot shoot while firing cooldown is active.",
              "name": "FireCooldown"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "HasJustFired"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "Rotate bullets to match their trajectory",
              "name": "RotateBullet"
            },
            {
              "value": "45",
              "type": "Number",
              "unit": "DegreeAngle",
              "label": "Firing arc",
              "description": "Multi-Fire bullets will be evenly spaced inside the firing arc",
              "group": "Multi-Fire",
              "name": "FiringArc"
            },
            {
              "value": "1",
              "type": "Number",
              "label": "Number of bullets created at once",
              "description": "Multi-Fire bullets will be evenly spaced inside the firing arc",
              "group": "Multi-Fire",
              "name": "BulletQuantity"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "DegreeAngle",
              "label": "Angle variance",
              "description": "Make imperfect aim (between 0 and 180 degrees).",
              "group": "Firing variance",
              "advanced": true,
              "name": "AngleVariance"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Bullet speed variance",
              "description": "Bullet speed will be adjusted by a random value within this range.",
              "group": "Firing variance",
              "advanced": true,
              "name": "BulletSpeedVariance"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Ammo quantity (current)",
              "hidden": true,
              "name": "AmmoQuantity"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Shots per reload ",
              "description": "Use 0 to disable reloading.",
              "group": "Reload",
              "advanced": true,
              "name": "ShotsPerReload"
            },
            {
              "value": "1",
              "type": "Number",
              "unit": "Second",
              "label": "Reloading duration",
              "description": "Objects cannot shoot while reloading is in progress.",
              "group": "Reload",
              "advanced": true,
              "name": "ReloadDuration"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Max ammo ",
              "group": "Ammo",
              "advanced": true,
              "name": "MaxAmmo"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Shots before next reload",
              "hidden": true,
              "name": "ShotsBeforeNextReload"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Total shots fired",
              "description": "Regardless of how many bullets are created, only 1 shot will be counted per frame",
              "hidden": true,
              "name": "TotalShotsFired"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Total bullets created",
              "hidden": true,
              "name": "TotalBulletsCreated"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Starting ammo",
              "group": "Ammo",
              "advanced": true,
              "name": "StartingAmmo"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Total reloads completed",
              "hidden": true,
              "name": "TotalReloadsCompleted"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "Unlimited ammo",
              "group": "Ammo",
              "advanced": true,
              "name": "UnlimitedAmmo"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "ReloadInProgress"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Heat increase per shot (between 0 and 1)",
              "description": " Object is overheated when Heat reaches 1.",
              "group": "Overheat",
              "advanced": true,
              "name": "HeatIncreasePerShot"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Heat level (Range: 0 to 1)",
              "hidden": true,
              "name": "HeatLevel"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "Reload automatically",
              "group": "Reload",
              "advanced": true,
              "name": "AutomaticReloading"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Overheat duration",
              "description": "Object cannot shoot while overheat duration is active.",
              "group": "Overheat",
              "advanced": true,
              "name": "OverheatDuration"
            },
            {
              "value": "0.1",
              "type": "Number",
              "label": "Linear cooling rate (per second)",
              "group": "Overheat",
              "advanced": true,
              "name": "LinearCoolingRate"
            },
            {
              "value": "0.3",
              "type": "Number",
              "label": "Exponential cooling rate (per second)",
              "description": "Happens faster when heat is high and slower when heat is low.",
              "group": "Overheat",
              "extraInformation": [
                "Linear",
                "Exponential"
              ],
              "choices": [],
              "advanced": true,
              "name": "ExponentialCoolingRate"
            },
            {
              "value": "",
              "type": "String",
              "label": "Layer the bullets are created on",
              "description": "Base layer by default.",
              "group": "Shooting configuration",
              "hidden": true,
              "name": "BulletLayer"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "RandomizedAngle"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "FireCooldown"
              },
              {
                "propertyName": "HasJustFired"
              },
              {
                "propertyName": "RotateBullet"
              },
              {
                "folderName": "Multi-Fire",
                "children": [
                  {
                    "propertyName": "FiringArc"
                  },
                  {
                    "propertyName": "BulletQuantity"
                  }
                ]
              },
              {
                "folderName": "Firing variance",
                "children": [
                  {
                    "propertyName": "AngleVariance"
                  },
                  {
                    "propertyName": "BulletSpeedVariance"
                  }
                ]
              },
              {
                "propertyName": "AmmoQuantity"
              },
              {
                "folderName": "Reload",
                "children": [
                  {
                    "propertyName": "ShotsPerReload"
                  },
                  {
                    "propertyName": "ReloadDuration"
                  },
                  {
                    "propertyName": "AutomaticReloading"
                  }
                ]
              },
              {
                "folderName": "Ammo",
                "children": [
                  {
                    "propertyName": "MaxAmmo"
                  },
                  {
                    "propertyName": "StartingAmmo"
                  },
                  {
                    "propertyName": "UnlimitedAmmo"
                  }
                ]
              },
              {
                "propertyName": "ShotsBeforeNextReload"
              },
              {
                "propertyName": "TotalShotsFired"
              },
              {
                "propertyName": "TotalBulletsCreated"
              },
              {
                "propertyName": "TotalReloadsCompleted"
              },
              {
                "propertyName": "ReloadInProgress"
              },
              {
                "folderName": "Overheat",
                "children": [
                  {
                    "propertyName": "HeatIncreasePerShot"
                  },
                  {
                    "propertyName": "OverheatDuration"
                  },
                  {
                    "propertyName": "LinearCoolingRate"
                  },
                  {
                    "propertyName": "ExponentialCoolingRate"
                  }
                ]
              },
              {
                "propertyName": "HeatLevel"
              },
              {
                "folderName": "Shooting configuration",
                "children": [
                  {
                    "propertyName": "BulletLayer"
                  }
                ]
              },
              {
                "propertyName": "RandomizedAngle"
              }
            ]
          }
        }
      ],
      "eventsBasedObjects": []
    },
    {
      "author": "@4ian",
      "category": "Game mechanic",
      "extensionNamespace": "",
      "fullName": "Health points and damage",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLWhlYXJ0LWhhbGYtZnVsbCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNi41LDVDMTUsNSAxMy41OCw1LjkxIDEzLDcuMlYxNy43NEMxNy4yNSwxMy44NyAyMCwxMS4yIDIwLDguNUMyMCw2LjUgMTguNSw1IDE2LjUsNU0xNi41LDNDMTkuNTgsMyAyMiw1LjQxIDIyLDguNUMyMiwxMi4yNyAxOC42LDE1LjM2IDEzLjQ1LDIwLjAzTDEyLDIxLjM1TDEwLjU1LDIwLjAzQzUuNCwxNS4zNiAyLDEyLjI3IDIsOC41QzIsNS40MSA0LjQyLDMgNy41LDNDOS4yNCwzIDEwLjkxLDMuODEgMTIsNS4wOEMxMy4wOSwzLjgxIDE0Ljc2LDMgMTYuNSwzWiIgLz48L3N2Zz4=",
      "name": "Health",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/heart-half-full.svg",
      "shortDescription": "Manage health (life) points, shield and armor.",
      "version": "0.4.0",
      "description": [
        "Manage health (life) points, shield and armor of instances of an object. ",
        "",
        "It handles:",
        "- Damage cooldown",
        "- Health and shield regeneration",
        "- Over healing",
        "",
        "It can be used on:",
        "- Players",
        "- Enemies",
        "- NPCs",
        "- Inanimate objects (for insance breakable doors or mining rocks)",
        "",
        "The top-down RPG example uses this extension ([open the project online](https://editor.gdevelop.io/?project=example://top-down-rpg))."
      ],
      "origin": {
        "identifier": "Health",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "health",
        "life",
        "damage",
        "hit",
        "heal",
        "shield",
        "regeneration",
        "armor"
      ],
      "authorIds": [
        "wWP8BSlAW0UP4NeaHa2LcmmDzmH2",
        "xpwUwByyImTDcHEqDUqfyg0oRBt1",
        "gqDaZjCfevOOxBYkK6zlhtZnXCg1"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [],
      "eventsFunctions": [],
      "eventsBasedBehaviors": [
        {
          "description": "Manage health (life) points, shield and armor.",
          "fullName": "Health",
          "name": "Health",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__Health.TimeSinceLastHit\""
                      ]
                    },
                    {
                      "type": {
                        "value": "Health::Health::SetCurrentHealth"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "Health",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "colorB": 224,
                  "colorG": 16,
                  "colorR": 189,
                  "creationTime": 0,
                  "name": "Health",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Regeneration",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Health"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "HealthRegenRate",
                                "!=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "CurrentHealth",
                                "<",
                                "Object.Behavior::MaxHealth()"
                              ]
                            },
                            {
                              "type": {
                                "value": "CompareObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"__Health.TimeSinceLastHit\"",
                                ">",
                                "HealthRegenDelay"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "CurrentHealth",
                                "+",
                                "HealthRegenRate * TimeDelta()"
                              ]
                            }
                          ],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "Correct any values above maximum limits"
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentHealth",
                                    ">",
                                    "Object.Behavior::MaxHealth()"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentHealth",
                                    "=",
                                    "MaxHealth"
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Reset triggers",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsHealthJustDamaged",
                                "False",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsJustHealed",
                                "False",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsJustDodged",
                                "False",
                                ""
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 224,
                  "colorG": 16,
                  "colorR": 189,
                  "creationTime": 0,
                  "name": "Shield",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Regeneration",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Shield"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "ShieldRegenRate",
                                "!=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "CurrentShieldPoints",
                                "<",
                                "MaxShieldPoints"
                              ]
                            },
                            {
                              "type": {
                                "value": "CompareObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"__Health.TimeSinceLastHit\"",
                                ">",
                                "ShieldRegenDelay"
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentShieldPoints",
                                    "=",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "Health::Health::RenewShieldDuration"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentShieldPoints",
                                    "+",
                                    "ShieldRegenRate * TimeDelta()"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "Correct any values above maximum limits"
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentShieldPoints",
                                    ">",
                                    "MaxShieldPoints"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "CurrentShieldPoints",
                                    "=",
                                    "MaxShieldPoints"
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Remove shield points if shield expired",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "Health::Health::IsShieldActive"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::Once"
                              },
                              "parameters": []
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "CurrentShieldPoints",
                                "=",
                                "0"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Reset damage trigger",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsShieldJustDamaged",
                                "False",
                                ""
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Apply damage to the object. Shield and armor can reduce this damage if enabled.",
              "fullName": "Apply damage to an object",
              "functionType": "Action",
              "group": "Health",
              "name": "Hit",
              "sentence": "Apply _PARAM2_ points of damage to _PARAM0_ (Damage can be reduced by Shield: _PARAM3_, Armor: _PARAM4_)",
              "events": [
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Incoming damage",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Only consider incoming damage when damage cooldown is not active"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "Health::Health::IsDamageCooldownActive"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DamageToBeApplied",
                            "=",
                            "DamageValue"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Chance to dodge",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "No damage will be applied when dodged"
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "BuiltinCommonInstructions::CompareNumbers"
                                  },
                                  "parameters": [
                                    "RandomFloatInRange(0,1)",
                                    "<",
                                    "ChanceToDodge"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetBooleanVariable"
                                  },
                                  "parameters": [
                                    "IsJustDodged",
                                    "True",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "DamageToBeApplied",
                                    "=",
                                    "0"
                                  ]
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        },
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Damage reduction from Armor",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "UseArmor",
                                    "True",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "DamageToBeApplied",
                                    ">",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [],
                              "events": [
                                {
                                  "colorB": 228,
                                  "colorG": 176,
                                  "colorR": 74,
                                  "creationTime": 0,
                                  "name": "Flat damage reduction",
                                  "source": "",
                                  "type": "BuiltinCommonInstructions::Group",
                                  "events": [
                                    {
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "DamageToBeApplied",
                                            "=",
                                            "max(0,DamageToBeApplied - FlatDamageReduction)"
                                          ]
                                        }
                                      ]
                                    }
                                  ],
                                  "parameters": []
                                },
                                {
                                  "colorB": 228,
                                  "colorG": 176,
                                  "colorR": 74,
                                  "creationTime": 0,
                                  "name": "Percent damage reduction",
                                  "source": "",
                                  "type": "BuiltinCommonInstructions::Group",
                                  "events": [
                                    {
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [
                                        {
                                          "type": {
                                            "value": "NumberVariable"
                                          },
                                          "parameters": [
                                            "PercentDamageReduction",
                                            ">",
                                            "0"
                                          ]
                                        },
                                        {
                                          "type": {
                                            "value": "NumberVariable"
                                          },
                                          "parameters": [
                                            "DamageToBeApplied",
                                            ">",
                                            "0"
                                          ]
                                        }
                                      ],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "DamageToBeApplied",
                                            "*",
                                            "1 - min(1, PercentDamageReduction)"
                                          ]
                                        }
                                      ]
                                    }
                                  ],
                                  "parameters": []
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        },
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Apply damage to shield",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "If shield is active, damage the shield first"
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "UseShield",
                                    "True",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "Health::Health::IsShieldActive"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "DamageToBeApplied",
                                    ">",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetBooleanVariable"
                                  },
                                  "parameters": [
                                    "IsShieldJustDamaged",
                                    "True",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "Health::Health::TriggerDamageCooldown"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                }
                              ],
                              "events": [
                                {
                                  "type": "BuiltinCommonInstructions::Comment",
                                  "color": {
                                    "b": 109,
                                    "g": 230,
                                    "r": 255,
                                    "textB": 0,
                                    "textG": 0,
                                    "textR": 0
                                  },
                                  "comment": "If damage is less than shield, subtract damage from shield."
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "NumberVariable"
                                      },
                                      "parameters": [
                                        "DamageToBeApplied",
                                        "<=",
                                        "CurrentShieldPoints"
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "CurrentShieldPoints",
                                        "-",
                                        "DamageToBeApplied"
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ShieldDamageTaken",
                                        "=",
                                        "DamageToBeApplied"
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "DamageToBeApplied",
                                        "=",
                                        "0"
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Comment",
                                  "color": {
                                    "b": 109,
                                    "g": 230,
                                    "r": 255,
                                    "textB": 0,
                                    "textG": 0,
                                    "textR": 0
                                  },
                                  "comment": "If damage is greater than shield, conditionally apply excess damage based on property"
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "NumberVariable"
                                      },
                                      "parameters": [
                                        "DamageToBeApplied",
                                        ">",
                                        "CurrentShieldPoints"
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ShieldDamageTaken",
                                        "=",
                                        "CurrentShieldPoints"
                                      ]
                                    }
                                  ],
                                  "events": [
                                    {
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [
                                        {
                                          "type": {
                                            "value": "BooleanVariable"
                                          },
                                          "parameters": [
                                            "BlockExcessDamage",
                                            "True",
                                            ""
                                          ]
                                        }
                                      ],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "DamageToBeApplied",
                                            "=",
                                            "0"
                                          ]
                                        },
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "CurrentShieldPoints",
                                            "=",
                                            "0"
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "type": "BuiltinCommonInstructions::Comment",
                                      "color": {
                                        "b": 109,
                                        "g": 230,
                                        "r": 255,
                                        "textB": 0,
                                        "textG": 0,
                                        "textR": 0
                                      },
                                      "comment": "Apply excess damage only if shield does not block excess damage"
                                    },
                                    {
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [
                                        {
                                          "type": {
                                            "inverted": true,
                                            "value": "BooleanVariable"
                                          },
                                          "parameters": [
                                            "BlockExcessDamage",
                                            "True",
                                            ""
                                          ]
                                        }
                                      ],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "DamageToBeApplied",
                                            "-",
                                            "CurrentShieldPoints"
                                          ]
                                        },
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "CurrentShieldPoints",
                                            "=",
                                            "0"
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        },
                        {
                          "colorB": 228,
                          "colorG": 176,
                          "colorR": 74,
                          "creationTime": 0,
                          "name": "Apply damage to health",
                          "source": "",
                          "type": "BuiltinCommonInstructions::Group",
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "NumberVariable"
                                  },
                                  "parameters": [
                                    "DamageToBeApplied",
                                    ">",
                                    "0"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "Health::Health::SetJustDamaged"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    "yes",
                                    ""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "Health::Health::TriggerDamageCooldown"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Behavior",
                                    ""
                                  ]
                                }
                              ],
                              "events": [
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "Health::Health::SetCurrentHealth"
                                      },
                                      "parameters": [
                                        "Object",
                                        "Behavior",
                                        "CurrentHealth - DamageToBeApplied",
                                        ""
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ],
                          "parameters": []
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Points of damage",
                  "name": "DamageValue",
                  "type": "expression"
                },
                {
                  "defaultValue": "yes",
                  "description": "Shield can reduce damage taken",
                  "name": "UseShield",
                  "optional": true,
                  "type": "yesorno"
                },
                {
                  "defaultValue": "yes",
                  "description": "Armor can reduce damage taken",
                  "name": "UseArmor",
                  "optional": true,
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "current health points of the object.",
              "fullName": "Health points",
              "functionType": "ExpressionAndCondition",
              "group": "Health",
              "name": "Health",
              "sentence": "health points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "CurrentHealth"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the health points of the object. Will not trigger damage cooldown.",
              "fullName": "Change health points",
              "functionType": "Action",
              "group": "Health",
              "name": "SetHealth",
              "sentence": "Change the health of _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentHealth",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "If MaxHealth is set, prevent health from going above it"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "MaxHealth",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentHealth",
                        "=",
                        "min(CurrentHealth, MaxHealth)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "New health value",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the health points of the object. Will not trigger damage cooldown.",
              "fullName": "Change health points (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetCurrentHealth",
              "private": true,
              "sentence": "Change the health of _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetHealth"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "New health value",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Heal the object by increasing its health points.",
              "fullName": "Heal object",
              "functionType": "Action",
              "group": "Health",
              "name": "Heal",
              "sentence": "Heal _PARAM0_ with _PARAM2_ health points",
              "events": [
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Heal",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "If Max Health is not set, do not enforce Max Health"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "MaxHealth",
                            "=",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "HealToBeApplied",
                            "=",
                            "HealValue"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "If Max Health is set and Overhealing is not allowed"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "MaxHealth",
                            ">",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "inverted": true,
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "AllowOverHealing",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "HealToBeApplied",
                            "=",
                            "min(HealValue,MaxHealth - CurrentHealth)"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Perform heal"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "CurrentHealth",
                            "+",
                            "HealToBeApplied"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Update healing trigger"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "IsJustHealed",
                            "True",
                            ""
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Points to heal (will be added to object health)",
                  "name": "HealValue",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the maximum health points of the object.",
              "fullName": "Maximum health points",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "MaxHealth",
              "sentence": "the maximum health points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "MaxHealth"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "MaxHealth",
              "name": "SetMaxHealthOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "MaxHealth",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Make sure Current Health does not exceed new Max Health"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "CurrentHealth",
                        ">",
                        "Object.Behavior::MaxHealth()"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentHealth",
                        "=",
                        "Object.Behavior::MaxHealth()"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Maximum health",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the object maximum health points.",
              "fullName": "Maximum health points (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetMaxHealth",
              "private": true,
              "sentence": "Change the maximum health of _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetMaxHealthOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Maximum health",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the rate of health regeneration (points per second).",
              "fullName": "Rate of health regeneration",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "HealthRegenRate",
              "sentence": "the rate of health regeneration",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "HealthRegenRate"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "HealthRegenRate",
              "name": "SetHealthRegenRateOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "HealthRegenRate",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Rate of regen",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the rate of health regeneration.",
              "fullName": "Rate of health regeneration (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetHealthRegenRate",
              "private": true,
              "sentence": "Change the rate of health regen of _PARAM0_ to _PARAM2_ points per second",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetHealthRegenRateOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Rate of regen",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the duration of damage cooldown (seconds).",
              "fullName": "Damage cooldown",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "DamageCooldownDuration",
              "sentence": "the duration of damage cooldown",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "DamageCooldown"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "DamageCooldownDuration",
              "name": "SetCooldownDurationOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "DamageCooldown",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Duration of damage cooldown (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the duration of damage cooldown (seconds).",
              "fullName": "Damage cooldown (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetCooldownDuration",
              "private": true,
              "sentence": "Change the duration of damage cooldown on _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetCooldownDurationOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Duration of damage cooldown (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the delay before health regeneration starts after last being hit (seconds).",
              "fullName": "Health regeneration delay",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "HealthRegenDelay",
              "sentence": "the health regeneration delay",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "HealthRegenDelay"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "HealthRegenDelay",
              "name": "SetHealthRegenDelayOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "HealthRegenDelay",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Delay (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the delay before health regeneration starts after being hit.",
              "fullName": "Health regeneration delay (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetHealthRegenDelay",
              "private": true,
              "sentence": "Change the health regeneration delay on _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetHealthRegenDelayOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Delay (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the chance to dodge incoming damage (range: 0 to 1).",
              "fullName": "Dodge chance",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "ChanceToDodge",
              "sentence": "the chance to dodge incoming damage",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ChanceToDodge"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ChanceToDodge",
              "name": "SetChanceToDodgeOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ChanceToDodge",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Chance to dodge (Range: 0 to 1)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the chance to dodge incoming damage.",
              "fullName": "Chance to dodge incoming damage (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetChanceToDodge",
              "private": true,
              "sentence": "Change the chance to dodge on _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetChanceToDodgeOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Chance to dodge (Range: 0 to 1)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the flat damage reduction from the armor. Incoming damage is reduced by this value.",
              "fullName": "Armor flat damage reduction",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "FlatDamageReduction",
              "sentence": "the armor flat damage reduction",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "FlatDamageReduction"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "FlatDamageReduction",
              "name": "SetFlatDamageReductionOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FlatDamageReduction",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Flat reduction from armor",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the flat damage reduction from armor. Incoming damage is reduced by this value.",
              "fullName": "Flat damage reduction from armor (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetFlatDamageReduction",
              "private": true,
              "sentence": "Change the flat damage reduction from armor on _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetFlatDamageReductionOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Flat reduction from armor",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the percent damage reduction from armor (range: 0 to 1).",
              "fullName": "Armor percent damage reduction",
              "functionType": "ExpressionAndCondition",
              "group": "Health configuration",
              "name": "PercentDamageReduction",
              "sentence": "the armor percent damage reduction",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "PercentDamageReduction"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "PercentDamageReduction",
              "name": "SetPercentDamageReductionOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "PercentDamageReduction",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Percent damage reduction from armor",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the percent damage reduction from armor. Range: 0 to 1.",
              "fullName": "Percent damage reduction from armor (deprecated)",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetPercentDamageReduction",
              "private": true,
              "sentence": "Change the percent damage reduction from armor on _PARAM0_ to _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetPercentDamageReductionOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Percent damage reduction from armor",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Allow heals to increase health above max health.  Regeneration will not exceed max health.",
              "fullName": "Allow over-healing",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "AllowOverHealing",
              "sentence": "Allow over-healing on _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "AllowOverHealing",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "AllowOverHealing",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Allow over-healing",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Mark object as hit at least once.",
              "fullName": "Mark object as hit at least once",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetHitAtLeastOnce",
              "private": true,
              "sentence": "Mark _PARAM0_ as hit at least once: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "HitAtLeastOnce",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "HitAtLeastOnce",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Hit at least once",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Mark object as just damaged.",
              "fullName": "Mark object as just damaged",
              "functionType": "Action",
              "group": "Health configuration",
              "name": "SetJustDamaged",
              "private": true,
              "sentence": "Mark _PARAM0_ as just damaged: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsHealthJustDamaged",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsHealthJustDamaged",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Just damaged",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Trigger damage cooldown.",
              "fullName": "Trigger damage cooldown",
              "functionType": "Action",
              "group": "Health",
              "name": "TriggerDamageCooldown",
              "sentence": "Trigger the damage cooldown on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Mark that the object was hit at least once (used for initial state of damage cooldown)"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "Health::Health::HitAtLeastOnce"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetHitAtLeastOnce"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "yes",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__Health.TimeSinceLastHit\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object has been hit at least once.",
              "fullName": "Object has been hit at least once",
              "functionType": "Condition",
              "group": "Health",
              "name": "HitAtLeastOnce",
              "private": true,
              "sentence": "_PARAM0_ has been hit at least once",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "This condition is used to prevent \"damage cooldown\" from being active when the game starts."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "HitAtLeastOnce",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if health was just damaged previously in the events.",
              "fullName": "Is health just damaged",
              "functionType": "Condition",
              "group": "Health",
              "name": "IsJustDamaged",
              "sentence": "Health has just been damaged on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsHealthJustDamaged",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object was just healed previously in the events.",
              "fullName": "Is just healed",
              "functionType": "Condition",
              "group": "Health",
              "name": "IsJustHealed",
              "sentence": "_PARAM0_ has just been healed",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsJustHealed",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if damage cooldown is active. Object and shield cannot be damaged while this is active.",
              "fullName": "Is damage cooldown active",
              "functionType": "Condition",
              "group": "Health",
              "name": "IsDamageCooldownActive",
              "sentence": "Damage cooldown on _PARAM0_ is active",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "HitAtLeastOnce",
                        "True",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "DamageCooldown",
                        ">",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__Health.TimeSinceLastHit\"",
                        "<",
                        "DamageCooldown"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the time before damage cooldown ends (seconds).",
              "fullName": "Time remaining in damage cooldown",
              "functionType": "ExpressionAndCondition",
              "group": "Health",
              "name": "DamageCooldownRemaining",
              "sentence": "the time before damage cooldown end",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "0"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "Health::Health::IsDamageCooldownActive"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0,DamageCooldown - Object.ObjectTimerElapsedTime(\"__Health.TimeSinceLastHit\"))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object is considered dead (no health points).",
              "fullName": "Is dead",
              "functionType": "Condition",
              "group": "Health",
              "name": "IsDead",
              "sentence": "_PARAM0_ is dead",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "CurrentHealth",
                        "<=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the time since last taken hit (seconds).",
              "fullName": "Time since last hit",
              "functionType": "ExpressionAndCondition",
              "group": "Health",
              "name": "TimeSinceLastHit",
              "sentence": "the time since last taken hit on health",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "Object.ObjectTimerElapsedTime(\"__Health.TimeSinceLastHit\")"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the health damage taken from most recent hit.",
              "fullName": "Health damage taken from most recent hit",
              "functionType": "ExpressionAndCondition",
              "group": "Health",
              "name": "PreviousDamageTaken",
              "sentence": "the health damage taken from most recent hit",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "DamageToBeApplied"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the maximum shield points of the object.",
              "fullName": "Maximum shield points",
              "functionType": "ExpressionAndCondition",
              "group": "Shield configuration",
              "name": "MaxShield",
              "sentence": "the maximum shield points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "MaxShieldPoints"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "MaxShield",
              "name": "SetMaxShieldOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "MaxShieldPoints",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Maximum shield",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the maximum shield points of the object.",
              "fullName": "Maximum shield points (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetMaxShield",
              "private": true,
              "sentence": "Change the maximum shield of _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetMaxShieldOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Maximum shield",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change maximum shield points.",
              "fullName": "Max shield points (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetMaxShieldPoints",
              "private": true,
              "sentence": "Change the maximum shield points on _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetMaxShieldOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield points",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the current shield points of the object.",
              "fullName": "Shield points",
              "functionType": "ExpressionAndCondition",
              "group": "Shield",
              "name": "ShieldPoints",
              "sentence": "the shield points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "CurrentShieldPoints"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ShieldPoints",
              "name": "SetShieldPointsOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentShieldPoints",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield points",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change current shield points. Will not trigger damage cooldown.",
              "fullName": "Shield points (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetShieldPoints",
              "private": true,
              "sentence": "Change current shield points on _PARAM0_ to _PARAM2_ points",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetShieldPointsOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield points",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the rate of shield regeneration (points per second).",
              "fullName": "Rate of shield regeneration",
              "functionType": "ExpressionAndCondition",
              "group": "Shield configuration",
              "name": "ShieldRegenRate",
              "sentence": "the rate of shield regeneration",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShieldRegenRate"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ShieldRegenRate",
              "name": "SetShieldRegenRateOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShieldRegenRate",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Regeneration rate (points per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change rate of shield regeneration.",
              "fullName": "Shield regeneration rate (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetShieldRegenRate",
              "private": true,
              "sentence": "Change the shield regeneration rate of _PARAM0_ to _PARAM2_ points per second",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetShieldRegenRateOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Regeneration rate (points per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the delay before shield regeneration starts after being hit (seconds).",
              "fullName": "Shield regeneration delay",
              "functionType": "ExpressionAndCondition",
              "group": "Shield configuration",
              "name": "ShieldRegenDelay",
              "sentence": "the shield regeneration delay",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShieldRegenDelay"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ShieldRegenDelay",
              "name": "SetShieldRegenDelayOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShieldRegenDelay",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Regeneration delay (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change delay before shield regeneration starts after being hit.",
              "fullName": "Shield regeneration delay (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetShieldRegenDelay",
              "private": true,
              "sentence": "Change the shield regeneration delay on _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetShieldRegenDelayOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Regeneration delay (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the duration of the shield (seconds). A value of \"0\" means the shield is permanent.",
              "fullName": "Duration of shield",
              "functionType": "ExpressionAndCondition",
              "group": "Shield configuration",
              "name": "ShieldDuration",
              "sentence": "the duration of the shield",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShieldDuration"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "ShieldDuration",
              "name": "SetShieldDurationOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ShieldDuration",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change duration of shield. Use \"0\" to make shield permanent.",
              "fullName": "Duration of shield (deprecated)",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetShieldDuration",
              "private": true,
              "sentence": "Change the duration of shield on _PARAM0_ to _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::SetShieldDurationOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield duration (seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Renew shield duration to it's full value.",
              "fullName": "Renew shield duration",
              "functionType": "Action",
              "group": "Shield",
              "name": "RenewShieldDuration",
              "sentence": "Renew the shield duration on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__Health.ShieldDuration\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Activate the shield by setting the shield points and renewing the shield duration (optional).",
              "fullName": "Activate shield",
              "functionType": "Action",
              "group": "Shield",
              "name": "ActivateShield",
              "sentence": "Activate the shield on _PARAM0_ with _PARAM2_ points (Renew shield duration: _PARAM3_)",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentShieldPoints",
                        "=",
                        "ShieldPoints"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "MaxShieldPoints",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CurrentShieldPoints",
                        "=",
                        "min(ShieldPoints,Object.Behavior::MaxShield())"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "RenewShieldDuration",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "Health::Health::RenewShieldDuration"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Shield points",
                  "name": "ShieldPoints",
                  "type": "expression"
                },
                {
                  "defaultValue": "yes",
                  "description": "Renew shield duration",
                  "name": "RenewShieldDuration",
                  "optional": true,
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable (or disable) blocking excess damage when shield breaks.",
              "fullName": "Block excess damage when shield breaks",
              "functionType": "Action",
              "group": "Shield configuration",
              "name": "SetShieldBlockExcessDamage",
              "sentence": "Shield on _PARAM0_ blocks excess damage when it breaks: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "BlockExcessDamage",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "BlockExcessDamage",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                },
                {
                  "description": "Block excess damage",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the shield was just damaged previously in the events.",
              "fullName": "Is shield just damaged",
              "functionType": "Condition",
              "group": "Shield",
              "name": "IsShieldJustDamaged",
              "sentence": "Shield on _PARAM0_ has just been damaged",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsShieldJustDamaged",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if incoming damage was just dodged.",
              "fullName": "Damage was just dodged",
              "functionType": "Condition",
              "group": "Health",
              "name": "IsJustDodged",
              "sentence": "_PARAM0_ just dodged incoming damage",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsJustDodged",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the shield is active (based on shield points and duration).",
              "fullName": "Is shield active",
              "functionType": "Condition",
              "group": "Shield",
              "name": "IsShieldActive",
              "sentence": "Shield on _PARAM0_ is active",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "False"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "To be considered \"active\", a shield must have positive points AND not exceed duration"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "CurrentShieldPoints",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Don't check the timer when duration is zero (or negative)"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ShieldDuration",
                            "<=",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetReturnBoolean"
                          },
                          "parameters": [
                            "True"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ShieldDuration",
                            ">",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "CompareObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"__Health.ShieldDuration\"",
                            "<",
                            "ShieldDuration"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetReturnBoolean"
                          },
                          "parameters": [
                            "True"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the time before the shield duration ends (seconds).",
              "fullName": "Time before shield duration ends",
              "functionType": "ExpressionAndCondition",
              "group": "Shield",
              "name": "ShieldTimeRemaining",
              "sentence": "the time before the shield duration end",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "0"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "ShieldDuration",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0,ShieldDuration - Object.ObjectTimerElapsedTime(\"__Health.ShieldDuration\"))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the shield damage taken from most recent hit.",
              "fullName": "Shield damage taken from most recent hit",
              "functionType": "ExpressionAndCondition",
              "group": "Shield",
              "name": "PreviousDamageToShield",
              "sentence": "the shield damage taken from most recent hit",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ShieldDamageTaken"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the health points gained from previous heal.",
              "fullName": "Health points gained from previous heal",
              "functionType": "ExpressionAndCondition",
              "group": "Health",
              "name": "PreviousHealAmount",
              "sentence": "the health points gained from previous heal",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "HealToBeApplied"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "Health::Health",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "100",
              "type": "Number",
              "label": "Starting health",
              "group": "Health",
              "name": "Health"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Current health (life) points",
              "group": "Health",
              "hidden": true,
              "name": "CurrentHealth"
            },
            {
              "value": "100",
              "type": "Number",
              "label": "Maximum health",
              "description": "Use 0 for no maximum.",
              "group": "Health",
              "name": "MaxHealth"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Damage cooldown",
              "group": "Health",
              "name": "DamageCooldown"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Allow heals to increase health above max health (regen will never exceed max health)",
              "group": "Health",
              "advanced": true,
              "name": "AllowOverHealing"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "group": "Health",
              "hidden": true,
              "name": "IsHealthJustDamaged"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Damage to health from the previous incoming damage",
              "group": "Health",
              "hidden": true,
              "name": "DamageToBeApplied"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "group": "Health",
              "hidden": true,
              "name": "HitAtLeastOnce"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Chance to dodge incoming damage (between 0 and 1)",
              "description": "When a damage is dodged, no damage is applied.",
              "group": "Health",
              "advanced": true,
              "name": "ChanceToDodge"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "group": "Health",
              "hidden": true,
              "name": "IsJustDodged"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Health points gained from the previous heal",
              "group": "Health",
              "hidden": true,
              "name": "HealToBeApplied"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Rate of health regeneration (points per second)",
              "group": "Health regeneration",
              "advanced": true,
              "name": "HealthRegenRate"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Health regeneration delay ",
              "description": "Delay before health regeneration starts after a hit.",
              "group": "Health regeneration",
              "advanced": true,
              "name": "HealthRegenDelay"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsJustHealed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "Current shield points",
              "group": "Shield",
              "hidden": true,
              "name": "CurrentShieldPoints"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Maximum shield",
              "description": "Leave 0 for unlimited.",
              "group": "Shield",
              "advanced": true,
              "name": "MaxShieldPoints"
            },
            {
              "value": "5",
              "type": "Number",
              "unit": "Second",
              "label": "Duration of shield",
              "description": "Use 0 to make the shield permanent.",
              "group": "Shield",
              "advanced": true,
              "name": "ShieldDuration"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Rate of shield regeneration (points per second)",
              "group": "Shield regeneration",
              "advanced": true,
              "name": "ShieldRegenRate"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Block excess damage when shield is broken",
              "group": "Shield",
              "advanced": true,
              "name": "BlockExcessDamage"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Shield regeneration delay",
              "description": "Delay before shield regeneration starts after a hit.",
              "group": "Shield regeneration",
              "advanced": true,
              "name": "ShieldRegenDelay"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "group": "Shield",
              "hidden": true,
              "name": "IsShieldJustDamaged"
            },
            {
              "value": "",
              "type": "Number",
              "label": "Damage to shield from the previous incoming damage",
              "group": "Shield",
              "hidden": true,
              "name": "ShieldDamageTaken"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Flat damage reduction from armor",
              "description": "Incoming damages are reduced by this value.",
              "group": "Armor",
              "advanced": true,
              "name": "FlatDamageReduction"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Percentage damage reduction from armor (between 0 and 1)",
              "group": "Armor",
              "advanced": true,
              "name": "PercentDamageReduction"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "folderName": "Health",
                "children": [
                  {
                    "propertyName": "Health"
                  },
                  {
                    "propertyName": "CurrentHealth"
                  },
                  {
                    "propertyName": "MaxHealth"
                  },
                  {
                    "propertyName": "DamageCooldown"
                  },
                  {
                    "propertyName": "AllowOverHealing"
                  },
                  {
                    "propertyName": "IsHealthJustDamaged"
                  },
                  {
                    "propertyName": "DamageToBeApplied"
                  },
                  {
                    "propertyName": "HitAtLeastOnce"
                  },
                  {
                    "propertyName": "ChanceToDodge"
                  },
                  {
                    "propertyName": "IsJustDodged"
                  },
                  {
                    "propertyName": "HealToBeApplied"
                  }
                ]
              },
              {
                "folderName": "Health regeneration",
                "children": [
                  {
                    "propertyName": "HealthRegenRate"
                  },
                  {
                    "propertyName": "HealthRegenDelay"
                  }
                ]
              },
              {
                "propertyName": "IsJustHealed"
              },
              {
                "folderName": "Shield",
                "children": [
                  {
                    "propertyName": "CurrentShieldPoints"
                  },
                  {
                    "propertyName": "MaxShieldPoints"
                  },
                  {
                    "propertyName": "ShieldDuration"
                  },
                  {
                    "propertyName": "BlockExcessDamage"
                  },
                  {
                    "propertyName": "IsShieldJustDamaged"
                  },
                  {
                    "propertyName": "ShieldDamageTaken"
                  }
                ]
              },
              {
                "folderName": "Shield regeneration",
                "children": [
                  {
                    "propertyName": "ShieldRegenRate"
                  },
                  {
                    "propertyName": "ShieldRegenDelay"
                  }
                ]
              },
              {
                "folderName": "Armor",
                "children": [
                  {
                    "propertyName": "FlatDamageReduction"
                  },
                  {
                    "propertyName": "PercentDamageReduction"
                  }
                ]
              }
            ]
          }
        }
      ],
      "eventsBasedObjects": []
    },
    {
      "author": "",
      "category": "Movement",
      "extensionNamespace": "",
      "fullName": "Advanced platformer movements",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjMiIGN5PSI3IiByPSIzIi8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNOCwxMGwyLjgtMi44QzEyLDYsMTQsNiwxNS4yLDcuMmw3LjksNy45YzEuMSwxLjEsMi44LDEuMiw0LjEsMC4yTDMwLDEzIi8+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTcsMTBsLTQuNyw0LjdjLTEuNSwxLjUtMSw0LjIsMSw1bDMuOSwxLjVjMS4xLDAuNCwxLjksMS41LDEuOSwyLjd2NiIvPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTE0LDIwbC0yLjYsMi42Yy0wLjgsMC44LTIuMSwwLjgtMi44LDBMNSwxOSIvPg0KPGxpbmUgY2xhc3M9InN0MCIgeDE9IjE2IiB5MT0iMTgiIHgyPSIyMSIgeTI9IjEzIi8+DQo8L3N2Zz4NCg==",
      "name": "AdvancedJump",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Sports and Fitness/Sports and Fitness_training_running_run.svg",
      "shortDescription": "Let platformer characters: air jump, wall jump wall sliding, coyote time and dashing.",
      "version": "0.2.4",
      "description": [
        "This extension provides behaviors to:",
        "",
        "* Jump in mid-air",
        "* Jump and slide against walls",
        "* Dash horizontally",
        "* Dash toward the floor",
        "* Do coyote time, also known as \"ledge tolerance\". It lets players jumping even after their character is no longer touching the ground for a given amount of time. It aims to give players a feeling of control and reduce frustration.",
        "",
        "An example allows to check it out ([open the project online](https://editor.gdevelop.io/?project=example://platformer-moves))."
      ],
      "origin": {
        "identifier": "AdvancedJump",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "platformer",
        "platform",
        "jump",
        "ledge tolerance",
        "coyote time",
        "air jump",
        "wall jump",
        "wall sliding",
        "dash",
        "dive"
      ],
      "authorIds": [
        "IWykYNRvhCZBN3vEgKEbBPOR3Oc2",
        "JD2xwvKWgodlqsGiL1GCH3tDEwq1",
        "q8ubdigLvIRXLxsJDDTaokO41mc2",
        "UMcf9dzu8pVV84ZSLaGAtUB8PyF2"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [],
      "eventsFunctions": [],
      "eventsBasedBehaviors": [
        {
          "description": "Let platformer characters jump shortly after leaving a platform and also jump in mid-air.",
          "fullName": "Coyote time and air jump",
          "name": "AdvancedJump",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Coyote time",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Avoid any side effect if the feature is not used."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "CoyoteTimeFrameDuration",
                            ">",
                            "0"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "The timeframe is starting."
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "WasInTheAir",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "PlatformBehavior::IsFalling"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerBehavior"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"__CoyoteTime_CoyoteJump\""
                              ]
                            },
                            {
                              "type": {
                                "value": "PlatformBehavior::SetCanJump"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerBehavior"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "CanCoyoteJump",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "events": [
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Start\"",
                                    "\"info\"",
                                    "\"CoyoteTime\""
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "CanCoyoteJump",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "The timeframe is missed."
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "CompareObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"__CoyoteTime_CoyoteJump\"",
                                    ">=",
                                    "CoyoteTimeFrameDuration"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::SetCanNotAirJump"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerBehavior"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "SetBooleanVariable"
                                  },
                                  "parameters": [
                                    "CanCoyoteJump",
                                    "False",
                                    ""
                                  ]
                                }
                              ],
                              "events": [
                                {
                                  "disabled": true,
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "DebuggerTools::ConsoleLog"
                                      },
                                      "parameters": [
                                        "\"End\"",
                                        "\"info\"",
                                        "\"CoyoteTime\""
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Comment",
                              "color": {
                                "b": 109,
                                "g": 230,
                                "r": 255,
                                "textB": 0,
                                "textG": 0,
                                "textR": 0
                              },
                              "comment": "Coyote jump"
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::IsJumping"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerBehavior"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetBooleanVariable"
                                  },
                                  "parameters": [
                                    "CanCoyoteJump",
                                    "False",
                                    ""
                                  ]
                                }
                              ],
                              "events": [
                                {
                                  "disabled": true,
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "DebuggerTools::ConsoleLog"
                                      },
                                      "parameters": [
                                        "\"Coyote jump\"",
                                        "\"info\"",
                                        "\"CoyoteTime\""
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "The new value will be used next frame."
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "AdvancedJump::AdvancedJump::UpdateWasInTheAir"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Air Jump",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "While in the coyote jump frame, the Object is treated as being on the floor. No air jump can happen."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "PlatformBehavior::IsOnFloor"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior"
                          ]
                        },
                        {
                          "type": {
                            "inverted": true,
                            "value": "AdvancedJump::AdvancedJump::CanCoyoteJump"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Once"
                          },
                          "parameters": []
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "AreFloorJumpCountedAsAirJump",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "PlatformBehavior::IsJumping"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerBehavior"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "AirJumpCount",
                                "+",
                                "1"
                              ]
                            }
                          ],
                          "events": [
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Floor jump: \" + ToString(AirJumpCountMaximum - AirJumpCount) + \" + 0\"",
                                    "\"info\"",
                                    "\"AirJump\""
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "When the object fall, it doesn't jump but air jumps must be allowed"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::IsFalling"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerBehavior"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "WasJumpKeyReleased",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "events": [
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Falling\"",
                                    "\"info\"",
                                    "\"AirJump\""
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "The order of these events is important because the idle state is:\non the floor and jump key released but the 1st jump must not count."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior",
                            "\"Jump\""
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Once"
                          },
                          "parameters": []
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "WasJumpKeyReleased",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Jump released: \" + ToString(AirJumpCountMaximum - AirJumpCount) + \" + 0\"",
                                "\"info\"",
                                "\"AirJump\""
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Reset air jump counter."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "PlatformBehavior::IsFalling"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior"
                          ]
                        },
                        {
                          "type": {
                            "inverted": true,
                            "value": "PlatformBehavior::IsJumping"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "AirJumpCount",
                            "=",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "WasJumpKeyReleased",
                            "False",
                            ""
                          ]
                        }
                      ],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::Once"
                              },
                              "parameters": []
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Reset air jump counter\"",
                                "\"info\"",
                                "\"AirJump\""
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Allow air jumps."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "PlatformBehavior::CanJump"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior"
                          ]
                        },
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "AirJumpCount",
                            "<",
                            "AirJumpCountMaximum"
                          ]
                        },
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "WasJumpKeyReleased",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::SetCanJump"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "WasJumpKeyReleased",
                            "False",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "AirJumpCount",
                            "+",
                            "1"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Jump allowed: \" + ToString(AirJumpCountMaximum - AirJumpCount) + \" + 1\"",
                                "\"info\"",
                                "\"AirJump\""
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::AdvancedJump::UpdateWasInTheAir"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onDeActivate",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "RemoveObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__CoyoteTime_CoyoteJump\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onActivate",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Coyote time was disabled, so WasInTheAir may not have been updated for a long time."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::AdvancedJump::UpdateWasInTheAir"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the coyote time duration of an object (in seconds).",
              "fullName": "Coyote timeframe",
              "functionType": "Action",
              "group": "Coyote time",
              "name": "SetCoyoteTime",
              "sentence": "Change coyote time of _PARAM0_: _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Coyote time was disabled, so WasInTheAir may not have been updated for a long time."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "CoyoteTimeFrameDuration",
                        "<=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::AdvancedJump::UpdateWasInTheAir"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CoyoteTimeFrameDuration",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                },
                {
                  "description": "Duration",
                  "longDescription": "Coyote time duration in seconds.",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if a coyote jump can currently happen.",
              "fullName": "Can coyote jump",
              "functionType": "Condition",
              "group": "Coyote time",
              "name": "CanCoyoteJump",
              "sentence": "_PARAM0_ can coyote jump",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "CanCoyoteJump",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "Update WasInTheAir",
              "functionType": "Action",
              "group": "Coyote time",
              "name": "UpdateWasInTheAir",
              "private": true,
              "sentence": "Update WasInTheAir property of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasInTheAir",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::IsOnFloor"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::IsGrabbingPlatform"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::IsOnLadder"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasInTheAir",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Number of jumps in mid-air that are allowed.",
              "fullName": "Maximal jump number",
              "functionType": "Expression",
              "group": "Air jump",
              "name": "AirJumpsMax",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "AirJumpCountMaximum"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Number of jumps in mid-air that are still allowed.",
              "fullName": "Remaining jump",
              "functionType": "Expression",
              "group": "Air jump",
              "name": "RemainingAirJumps",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::CanJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "max(0, AirJumpCountMaximum - AirJumpCount)"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "When the jump is allowed but not yet done, it must not be counted."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::CanJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "clamp(1 + AirJumpCountMaximum - AirJumpCount, 0, AirJumpCountMaximum)"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the number of times the character can jump in mid-air.",
              "fullName": "Air jumps",
              "functionType": "Action",
              "group": "Air jump",
              "name": "SetAirJumpCountMaximum",
              "sentence": "Change the number of times _PARAM0_ can jump in mid-air: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AirJumpCountMaximum",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                },
                {
                  "description": "Number of air jumps",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Remove one of the remaining air jumps of a character.",
              "fullName": "Remove a remaining air jump",
              "functionType": "Action",
              "group": "Air jump",
              "name": "RemoveOneRemainingAirJump",
              "sentence": "Remove one of the remaining air jumps of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AirJumpCount",
                        "+",
                        "1"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Avoid to jump again before the current jump input ends."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerBehavior",
                            "\"Jump\""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "WasJumpKeyReleased",
                            "False",
                            ""
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Allow back all air jumps of a character.",
              "fullName": "Reset air jumps",
              "functionType": "Action",
              "group": "Air jump",
              "name": "ResetAirJumpCounter",
              "sentence": "Allow back all air jumps of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "AirJumpCount",
                        "=",
                        "0"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "This avoid to give an extra jump if the character was already allowed to jump in mid-air."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::SetCanNotAirJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasJumpKeyReleased",
                        "True",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Avoid to jump again before the current jump input ends."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerBehavior",
                        "\"Jump\""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasJumpKeyReleased",
                        "False",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if floor jumps are counted as air jumps for an object.",
              "fullName": "Floor jumps count as air jumps",
              "functionType": "Condition",
              "group": "Air jump",
              "name": "AreFloorJumpCountedAsAirJump",
              "sentence": "Floor jumps count as air jumps for _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "AreFloorJumpCountedAsAirJump",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::AdvancedJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerBehavior"
            },
            {
              "value": "0.25",
              "type": "Number",
              "unit": "Second",
              "label": "Coyote time duration",
              "group": "Coyote time",
              "name": "CoyoteTimeFrameDuration"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Can coyote jump",
              "group": "Coyote time",
              "hidden": true,
              "name": "CanCoyoteJump"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Was in the air",
              "group": "Coyote time",
              "hidden": true,
              "name": "WasInTheAir"
            },
            {
              "value": "1",
              "type": "Number",
              "label": "Number of air jumps",
              "group": "Air jump",
              "name": "AirJumpCountMaximum"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Floor jumps count as air jumps",
              "group": "Air jump",
              "name": "AreFloorJumpCountedAsAirJump"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "",
              "group": "Air jump",
              "hidden": true,
              "name": "AirJumpCount"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "group": "Air jump",
              "hidden": true,
              "name": "WasJumpKeyReleased"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerBehavior"
              },
              {
                "folderName": "Coyote time",
                "children": [
                  {
                    "propertyName": "CoyoteTimeFrameDuration"
                  },
                  {
                    "propertyName": "CanCoyoteJump"
                  },
                  {
                    "propertyName": "WasInTheAir"
                  }
                ]
              },
              {
                "folderName": "Air jump",
                "children": [
                  {
                    "propertyName": "AirJumpCountMaximum"
                  },
                  {
                    "propertyName": "AreFloorJumpCountedAsAirJump"
                  },
                  {
                    "propertyName": "AirJumpCount"
                  },
                  {
                    "propertyName": "WasJumpKeyReleased"
                  }
                ]
              }
            ]
          }
        },
        {
          "description": "Let platformer characters jump and slide against walls.",
          "fullName": "Wall jump",
          "name": "WallJump",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "\"Jump\""
                      ]
                    },
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Once"
                      },
                      "parameters": []
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Avoid a jump from the floor to do a wall jump because of the allowed timeframe."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "WasInTheAir",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "AdvancedJump::WallJump::RememberJumpKeyPressed"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            "\"Jump\"",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Reset default character configuration when a jump that is not a wall jump happens (for instance an air jump)."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "HasJustWallJump",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "IsWallJumping",
                            "False",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "AdvancedJump::WallJump::ToggleSideSpeed"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            "",
                            ""
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "To know when jumping from the floor or not."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasInTheAir",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::IsFalling"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::IsJumping"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "WasInTheAir",
                        "True",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Wall jump end",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsWallJumping",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Reset default character configuration when the character change of direction or start to fall."
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::Or"
                              },
                              "parameters": [],
                              "subInstructions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::IsFalling"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "BuiltinCommonInstructions::And"
                                  },
                                  "parameters": [],
                                  "subInstructions": [
                                    {
                                      "type": {
                                        "value": "BooleanVariable"
                                      },
                                      "parameters": [
                                        "IsJumpingLeft",
                                        "True",
                                        ""
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                      },
                                      "parameters": [
                                        "Object",
                                        "PlatformerCharacter",
                                        "\"Left\""
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "BuiltinCommonInstructions::And"
                                  },
                                  "parameters": [],
                                  "subInstructions": [
                                    {
                                      "type": {
                                        "inverted": true,
                                        "value": "BooleanVariable"
                                      },
                                      "parameters": [
                                        "IsJumpingLeft",
                                        "True",
                                        ""
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                      },
                                      "parameters": [
                                        "Object",
                                        "PlatformerCharacter",
                                        "\"Right\""
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsWallJumping",
                                "False",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::ToggleSideSpeed"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Wall detection",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "When the character tries to move but can't actually move, it's against a wall."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "IsAgainstWall",
                            "False",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "PreviousX",
                            "=",
                            "Object.X()"
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Or"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::And"
                              },
                              "parameters": [],
                              "subInstructions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Left\""
                                  ]
                                },
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Right\""
                                  ]
                                }
                              ]
                            },
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::And"
                              },
                              "parameters": [],
                              "subInstructions": [
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Left\""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Right\""
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "IsAgainstWall",
                            "True",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "AdvancedJump::WallJump::RememberIsAgainstWall"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "\"Left\""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsJumpingLeft",
                                "False",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "\"Right\""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsJumpingLeft",
                                "True",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Save the previous position for the wall detection."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "PreviousX",
                            "=",
                            "Object.X()"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Wall jump",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "HasJustWallJump",
                            "False",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Or"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "IsAgainstWall",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::WasAgainstWall"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "JumpTimeFrame",
                                ""
                              ]
                            }
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "To be permissive, when the jump key was pressed right before the character touch the wall,\nit is still detected as a wall jump which reset the air jump counter."
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::WasJumpKeyPressed"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "JumpTimeFrame",
                                "\"Jump\"",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::ForgetJumpKeyPressed"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "\"Jump\"",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "PlatformBehavior::SetCanJump"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsWallJumping",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::ToggleSideSpeed"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "yes",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::ForgetIsAgainstWall"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "HasJustWallJump",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"__WallJump_TimeFromJumpStart\""
                              ]
                            }
                          ],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "IsJumpingLeft",
                                    "True",
                                    ""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "=",
                                    "-WallJumpSpeedX"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "BooleanVariable"
                                  },
                                  "parameters": [
                                    "IsJumpingLeft",
                                    "True",
                                    ""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "=",
                                    "WallJumpSpeedX"
                                  ]
                                }
                              ]
                            },
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Wall jump\"",
                                    "\"info\"",
                                    "\"WallJump\""
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Sustain jump speed",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsWallJumping",
                            "True",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "CompareObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"__WallJump_TimeFromJumpStart\"",
                            "<=",
                            "SideSpeedSustainTime"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "IsJumpingLeft",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "=",
                                "-WallJumpSpeedX"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "IsJumpingLeft",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "=",
                                "WallJumpSpeedX"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Wall sliding",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsAgainstWall",
                            "True",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Or"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "\"Left\""
                              ]
                            },
                            {
                              "type": {
                                "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "\"Right\""
                              ]
                            }
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetBooleanVariable"
                          },
                          "parameters": [
                            "MovedAwayFromTheWall",
                            "True",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsAgainstWall",
                            "True",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::IsFalling"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "MovedAwayFromTheWall",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::AbsorbFallingSpeed"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "WallSlidingSpeedAbsorption",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "MovedAwayFromTheWall",
                                "False",
                                ""
                              ]
                            }
                          ],
                          "events": [
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Absob speed\"",
                                    "\"info\"",
                                    "\"WallJump\""
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "AdvancedJump::WallJump::SlideOnWall"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                "yes",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "AutomaticSliding",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "IsWallJumping",
                                "True",
                                ""
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Left\""
                                  ]
                                },
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Right\""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::SimulateLeftKey"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Left\""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter",
                                    "\"Right\""
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "PlatformBehavior::SimulateRightKey"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter"
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Or"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "BooleanVariable"
                              },
                              "parameters": [
                                "IsAgainstWall",
                                "True",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "PlatformBehavior::IsFalling"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter"
                              ]
                            }
                          ]
                        },
                        {
                          "type": {
                            "value": "AjoutObjConcern"
                          },
                          "parameters": [
                            "",
                            "Object"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "AdvancedJump::WallJump::SlideOnWall"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            "no",
                            ""
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object has just wall jumped.",
              "fullName": "Has just wall jumped",
              "functionType": "Condition",
              "name": "HasJustWallJumped",
              "sentence": "_PARAM0_ has just jumped from a wall",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "HasJustWallJump",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object is wall jumping.",
              "fullName": "Is wall jumping",
              "functionType": "Condition",
              "name": "IsWallJumping",
              "sentence": "_PARAM0_ jumped from a wall",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsWallJumping",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object is against a wall.",
              "fullName": "Against a wall",
              "functionType": "Condition",
              "name": "IsAgaintWall",
              "sentence": "_PARAM0_ is against a wall",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsAgainstWall",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Remember that the character was against a wall.",
              "fullName": "Remember is against wall",
              "functionType": "Action",
              "group": "Private",
              "name": "RememberIsAgainstWall",
              "private": true,
              "sentence": "_PARAM0_ remembers having been against a wall",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_IsAgainstWall\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Forget that the character was against a wall.",
              "fullName": "Forget is against wall",
              "functionType": "Action",
              "group": "Private",
              "name": "ForgetIsAgainstWall",
              "private": true,
              "sentence": "_PARAM0_ forgets to had been against a wall",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "RemoveObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_IsAgainstWall\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Remember that the character was against a wall within the time frame.",
              "fullName": "Was against wall",
              "functionType": "Condition",
              "group": "Private",
              "name": "WasAgainstWall",
              "private": true,
              "sentence": "_PARAM0_ remembers to had been against a wall within _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_IsAgainstWall\"",
                        "<=",
                        "TimeFrame"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Time frame",
                  "longDescription": "The time frame in seconds.",
                  "name": "TimeFrame",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Remember that the jump key was pressed.",
              "fullName": "Remember key pressed",
              "functionType": "Action",
              "group": "Private",
              "name": "RememberJumpKeyPressed",
              "private": true,
              "sentence": "_PARAM0_ remembers the _PARAM2_ key was pressed",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_KeyPressed_\" + Key"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Key",
                  "name": "Key",
                  "supplementaryInformation": "[\"Jump\",\"Left\",\"Right\"]",
                  "type": "stringWithSelector"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Forget that the jump key was pressed.",
              "fullName": "Forget key pressed",
              "functionType": "Action",
              "group": "Private",
              "name": "ForgetJumpKeyPressed",
              "private": true,
              "sentence": "_PARAM0_ forgets the _PARAM2_ key was pressed",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "RemoveObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_KeyPressed_\" + Key"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "",
                  "name": "Key",
                  "supplementaryInformation": "[\"Jump\",\"Left\",\"Right\"]",
                  "type": "stringWithSelector"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the key was pressed within the time frame.",
              "fullName": "Remember key pressed",
              "functionType": "Condition",
              "group": "Private",
              "name": "WasJumpKeyPressed",
              "private": true,
              "sentence": "_PARAM0_ remembers _PARAM3_ key was pressed within _PARAM2_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__WallJump_KeyPressed_\" + Key",
                        "<=",
                        "TimeFrame"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Time frame",
                  "longDescription": "The time frame in seconds.",
                  "name": "TimeFrame",
                  "type": "expression"
                },
                {
                  "description": "",
                  "name": "Key",
                  "supplementaryInformation": "[\"Jump\",\"Left\",\"Right\"]",
                  "type": "stringWithSelector"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable side speed.",
              "fullName": "Toggle side speed",
              "functionType": "Action",
              "group": "Private",
              "name": "ToggleSideSpeed",
              "private": true,
              "sentence": "Enable side speed for _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Don't save the wrong acceleration and speed if the action is called 2 times with true."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "EnableSideSpeed",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureAcceleration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "WallJumpAccelerationX",
                        "\"WallJumpLeap\"",
                        ""
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::MaxSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "<",
                            "WallJumpSpeedX"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureMaxSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerConfigurationStack",
                            "WallJumpSpeedX",
                            "\"WallJumpLeap\"",
                            ""
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Don't do it if speed wasn't saved by the previous event at some point."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "EnableSideSpeed",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "\"WallJumpLeap\"",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Enable side speed",
                  "name": "EnableSideSpeed",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable wall sliding.",
              "fullName": "Slide on wall",
              "functionType": "Action",
              "group": "Private",
              "name": "SlideOnWall",
              "private": true,
              "sentence": "Enable wall sliding for _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Don't save the wrong gravity and maximum speed if the action is called 2 times with true."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "EnableWallSliding",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureGravity"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "WallSlidingGravity",
                        "\"WallJumpSliding\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureMaxFallSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "WallSlidingMaxFallingSpeed",
                        "\"WallJumpSliding\"",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Don't do it if gravity wasn't saved by the previous event at some point."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "EnableWallSliding",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "\"WallJumpSliding\"",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Enable wall sliding",
                  "name": "EnableWallSliding",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Absorb falling speed of an object.",
              "fullName": "Absorb falling speed",
              "functionType": "Action",
              "group": "Private",
              "name": "AbsorbFallingSpeed",
              "private": true,
              "sentence": "Absorb falling speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::AbortJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentFallSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "max(WallSlidingFallingSpeedMin, Object.PlatformerCharacter::CurrentFallSpeed() - Object.PlatformerCharacter::CurrentJumpSpeed() - SpeedAbsorption) + Object.PlatformerCharacter::CurrentJumpSpeed()"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Speed absorption (in pixels per second)",
                  "name": "SpeedAbsorption",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "The wall jump detection time frame of an object (in seconds).",
              "fullName": "Jump time frame",
              "functionType": "Expression",
              "group": "Wall jump configuration",
              "name": "JumpTimeFrame",
              "sentence": "Change the wall jump detection time frame of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "JumpTimeFrame"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the wall jump detection time frame of an object (in seconds).",
              "fullName": "Jump time frame",
              "functionType": "Action",
              "group": "Wall jump configuration",
              "name": "SetJumpTimeFrame",
              "sentence": "Change the wall jump detection time frame of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "JumpTimeFrame",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Jump detection time frame (in seconds)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "The side speed of wall jumps of an object (in pixels per second).",
              "fullName": "Side speed",
              "functionType": "Expression",
              "group": "Wall jump configuration",
              "name": "WallJumpSpeedX",
              "sentence": "Change the side speed of wall jumps of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "WallJumpSpeedX"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the side speed of wall jumps of an object (in pixels per second).",
              "fullName": "Side speed",
              "functionType": "Action",
              "group": "Wall jump configuration",
              "name": "SetWallJumpSpeedX",
              "sentence": "Change the side speed of wall jumps of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WallJumpSpeedX",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Side speed",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "The side acceleration of wall jumps of an object (in pixels per second per second).",
              "fullName": "Side acceleration",
              "functionType": "Expression",
              "group": "Wall jump configuration",
              "name": "WallJumpAccelerationX",
              "sentence": "Change the side acceleration of wall jumps of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "WallJumpAccelerationX"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the side acceleration of wall jumps of an object (in pixels per second per second).",
              "fullName": "Side acceleration",
              "functionType": "Action",
              "group": "Wall jump configuration",
              "name": "SetWallJumpAccelerationX",
              "sentence": "Change the side acceleration of wall jumps of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WallJumpAccelerationX",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Side acceleration",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "The wall sliding gravity of an object (in pixels per second per second).",
              "fullName": "Gravity",
              "functionType": "Expression",
              "group": "Wall sliding configuration",
              "name": "WallSlidingGravity",
              "sentence": "Change the wall sliding gravity of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "WallSlidingGravity"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the wall sliding gravity of an object (in pixels per second per second).",
              "fullName": "Gravity",
              "functionType": "Action",
              "group": "Wall sliding configuration",
              "name": "SetWallSlidingGravity",
              "sentence": "Change the wall sliding gravity of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WallSlidingGravity",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Gravity",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "The wall sliding maximum falling speed of an object (in pixels per second).",
              "fullName": "Maximum falling speed",
              "functionType": "Expression",
              "group": "Wall sliding configuration",
              "name": "WallSlidingMaxFallingSpeed",
              "sentence": "Change the wall sliding maximum falling speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "WallSlidingMaxFallingSpeed"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the wall sliding maximum falling speed of an object (in pixels per second).",
              "fullName": "Maximum falling speed",
              "functionType": "Action",
              "group": "Wall sliding configuration",
              "name": "SetWallSlidingMaxFallingSpeed",
              "sentence": "Change the wall sliding maximum falling speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WallSlidingMaxFallingSpeed",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Maximum falling speed",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the impact speed absorption of an object.",
              "fullName": "Impact speed absorption",
              "functionType": "Expression",
              "group": "Wall sliding configuration",
              "name": "WallSlidingSpeedAbsorption",
              "sentence": "Change the impact speed absorption of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "WallSlidingSpeedAbsorption"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the impact speed absorption of an object.",
              "fullName": "Impact speed absorption",
              "functionType": "Action",
              "group": "Wall sliding configuration",
              "name": "SetWallSlidingSpeedAbsorption",
              "sentence": "Change the impact speed absorption of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WallSlidingSpeedAbsorption",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::WallJump",
                  "type": "behavior"
                },
                {
                  "description": "Impact speed absorption",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerCharacter"
            },
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character configuration stack",
              "extraInformation": [
                "AdvancedJump::PlatformerConfigurationStack"
              ],
              "choices": [],
              "name": "PlatformerConfigurationStack"
            },
            {
              "value": "0.125",
              "type": "Number",
              "unit": "Second",
              "label": "Jump detection time frame",
              "group": "Wall jump",
              "name": "JumpTimeFrame"
            },
            {
              "value": "250",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Side speed",
              "group": "Wall jump",
              "name": "WallJumpSpeedX"
            },
            {
              "value": "1500",
              "type": "Number",
              "unit": "PixelAcceleration",
              "label": "Side acceleration",
              "group": "Wall jump",
              "name": "WallJumpAccelerationX"
            },
            {
              "value": "0.2",
              "type": "Number",
              "unit": "Second",
              "label": "Side speed sustain time",
              "group": "Wall jump",
              "name": "SideSpeedSustainTime"
            },
            {
              "value": "500",
              "type": "Number",
              "unit": "PixelAcceleration",
              "label": "Gravity",
              "group": "Wall sliding",
              "name": "WallSlidingGravity"
            },
            {
              "value": "350",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Maximum falling speed",
              "group": "Wall sliding",
              "name": "WallSlidingMaxFallingSpeed"
            },
            {
              "value": "350",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Impact speed absorption",
              "group": "Wall sliding",
              "name": "WallSlidingSpeedAbsorption"
            },
            {
              "value": "50",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Minimal falling speed",
              "group": "Wall sliding",
              "name": "WallSlidingFallingSpeedMin"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "Keep sliding without holding a key",
              "group": "Wall sliding",
              "name": "AutomaticSliding"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "PreviousX"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsAgainstWall"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "WasLeftOrRightPressed"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsWallJumping"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsJumpingLeft"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "WasInTheAir"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "HasJustWallJump"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "MovedAwayFromTheWall"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerCharacter"
              },
              {
                "propertyName": "PlatformerConfigurationStack"
              },
              {
                "folderName": "Wall jump",
                "children": [
                  {
                    "propertyName": "JumpTimeFrame"
                  },
                  {
                    "propertyName": "WallJumpSpeedX"
                  },
                  {
                    "propertyName": "WallJumpAccelerationX"
                  },
                  {
                    "propertyName": "SideSpeedSustainTime"
                  }
                ]
              },
              {
                "folderName": "Wall sliding",
                "children": [
                  {
                    "propertyName": "WallSlidingGravity"
                  },
                  {
                    "propertyName": "WallSlidingMaxFallingSpeed"
                  },
                  {
                    "propertyName": "WallSlidingSpeedAbsorption"
                  },
                  {
                    "propertyName": "WallSlidingFallingSpeedMin"
                  },
                  {
                    "propertyName": "AutomaticSliding"
                  }
                ]
              },
              {
                "propertyName": "PreviousX"
              },
              {
                "propertyName": "IsAgainstWall"
              },
              {
                "propertyName": "WasLeftOrRightPressed"
              },
              {
                "propertyName": "IsWallJumping"
              },
              {
                "propertyName": "IsJumpingLeft"
              },
              {
                "propertyName": "WasInTheAir"
              },
              {
                "propertyName": "HasJustWallJump"
              },
              {
                "propertyName": "MovedAwayFromTheWall"
              }
            ]
          }
        },
        {
          "description": "Make platformer characters dash toward the floor.",
          "fullName": "Dive dash",
          "name": "DiveDash",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Revert default configuration"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::IsOnFloor"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    },
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsDiving",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "\"DiveDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsDiving",
                        "False",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::DiveDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Simulate a press of dive key to make the object dives to the floor if it can dive.",
              "fullName": "Simulate dive key",
              "functionType": "Action",
              "name": "SimulateDiveKey",
              "sentence": "Simulate pressing dive key for _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Vertical dash to smash the ground"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "AdvancedJump::DiveDash::CanDive"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::AbortJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureMaxFallSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "DiveMaxFallingSpeed",
                        "\"DiveDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureGravity"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "DiveGravity",
                        "\"DiveDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentFallSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "DiveInitialFallingSpeed"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsDiving",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::DiveDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object can dive.",
              "fullName": "Can dive",
              "functionType": "Condition",
              "name": "CanDive",
              "sentence": "_PARAM0_ can dive",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::IsJumping"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::IsFalling"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsDiving",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::DiveDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object is diving.",
              "fullName": "Is diving",
              "functionType": "Condition",
              "name": "IsDiving",
              "sentence": "_PARAM0_ is diving",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsDiving",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::DiveDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerCharacter"
            },
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character configuration stack",
              "extraInformation": [
                "AdvancedJump::PlatformerConfigurationStack"
              ],
              "choices": [],
              "name": "PlatformerConfigurationStack"
            },
            {
              "value": "3000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Maximum falling speed",
              "name": "DiveMaxFallingSpeed"
            },
            {
              "value": "1000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Initial falling speed",
              "name": "DiveInitialFallingSpeed"
            },
            {
              "value": "8000",
              "type": "Number",
              "unit": "PixelAcceleration",
              "label": "Gravity",
              "name": "DiveGravity"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsDiving"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerCharacter"
              },
              {
                "propertyName": "PlatformerConfigurationStack"
              },
              {
                "propertyName": "DiveMaxFallingSpeed"
              },
              {
                "propertyName": "DiveInitialFallingSpeed"
              },
              {
                "propertyName": "DiveGravity"
              },
              {
                "propertyName": "IsDiving"
              }
            ]
          }
        },
        {
          "description": "Make platformer characters dash horizontally.",
          "fullName": "Horizontal dash",
          "name": "HorizontalDash",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::HorizontalDash::UpdateLastDirection"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "AdvancedJump::HorizontalDash::IsDashing"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "DashKeyIsPressed",
                        "True",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__PlatformerDash_CoolDown\"",
                        "<",
                        "CoolDownDuration"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "CanDash",
                        "True",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "AdvancedJump::HorizontalDash::IsDashing"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::IsJumping"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerConfigurationStack",
                            "\"HorizontalDashGravity\"",
                            ""
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Sustain"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsSustainning",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Sustain: \" + ToString(Object.PlatformerCharacter::CurrentSpeed())",
                                "",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::CurrentSpeed"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                "<",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::SimulateLeftKey"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::CurrentSpeed"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter",
                                ">",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "PlatformBehavior::SimulateRightKey"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerCharacter"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::Or"
                              },
                              "parameters": [],
                              "subInstructions": [
                                {
                                  "type": {
                                    "value": "CompareObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"__PlatformerDash_SustainTime\"",
                                    ">",
                                    "DashSustainDurationMax"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "BuiltinCommonInstructions::And"
                                  },
                                  "parameters": [],
                                  "subInstructions": [
                                    {
                                      "type": {
                                        "value": "BooleanVariable"
                                      },
                                      "parameters": [
                                        "DashKeyIsPressed",
                                        "False",
                                        ""
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "CompareObjectTimer"
                                      },
                                      "parameters": [
                                        "Object",
                                        "\"__PlatformerDash_SustainTime\"",
                                        ">",
                                        "DashSustainDurationMin"
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "type": {
                                "value": "AjoutObjConcern"
                              },
                              "parameters": [
                                "",
                                "Object"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetBooleanVariable"
                              },
                              "parameters": [
                                "IsSustainning",
                                "False",
                                ""
                              ]
                            },
                            {
                              "type": {
                                "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureDeceleration"
                              },
                              "parameters": [
                                "Object",
                                "PlatformerConfigurationStack",
                                "DashDecceleration",
                                "\"HorizontalDash\"",
                                ""
                              ]
                            }
                          ],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "PlatformBehavior::IsJumping"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerCharacter"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureGravity"
                                  },
                                  "parameters": [
                                    "Object",
                                    "PlatformerConfigurationStack",
                                    "DashGravity",
                                    "\"HorizontalDashGravity\"",
                                    ""
                                  ]
                                }
                              ]
                            },
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Sustain end\"",
                                    "",
                                    ""
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "After sustain"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "IsSustainning",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::SimulateLeftKey"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::SimulateRightKey"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "ToString(Object.PlatformerCharacter::CurrentSpeed())",
                                "",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Dashing end"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::CurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "<=",
                            "Object.PlatformerConfigurationStack::UsualMaxSpeed()"
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::CurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            ">=",
                            "-Object.PlatformerConfigurationStack::UsualMaxSpeed()"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "AdvancedJump::HorizontalDash::AbortDash"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        }
                      ],
                      "events": [
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Dash end\"",
                                "",
                                ""
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "DashKeyIsPressed",
                        "False",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::HorizontalDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Update the last direction used by the character.",
              "fullName": "Update last direction",
              "functionType": "Action",
              "name": "UpdateLastDirection",
              "private": true,
              "sentence": "Update last direction used by _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "\"Left\""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "\"Right\""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "LastDirectionIsLeft",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "\"Left\""
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::PlatformerObjectBehavior::IsUsingControl"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "\"Right\""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "LastDirectionIsLeft",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::HorizontalDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Simulate a press of dash key.",
              "fullName": "Simulate dash key",
              "functionType": "Action",
              "name": "SimulateDashKey",
              "sentence": "Simulate pressing dash key for _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "DashKeyIsPressed",
                        "True",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "CanDash",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__PlatformerDash_SustainTime\""
                      ]
                    },
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsSustainning",
                        "True",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::AbortJump"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentFallSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureGravity"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "DashSustainGravity",
                        "\"HorizontalDashGravity\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureMaxSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "DashSustainSpeedMax",
                        "\"HorizontalDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureAcceleration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "DashSustainAcceleration",
                        "\"HorizontalDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureDeceleration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "0",
                        "\"HorizontalDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "CanDash",
                        "False",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::HorizontalDash::UpdateLastDirection"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "LastDirectionIsLeft",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "=",
                            "-DashInitialSpeed"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "inverted": true,
                            "value": "BooleanVariable"
                          },
                          "parameters": [
                            "LastDirectionIsLeft",
                            "True",
                            ""
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "=",
                            "DashInitialSpeed"
                          ]
                        }
                      ]
                    },
                    {
                      "disabled": true,
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "DebuggerTools::ConsoleLog"
                          },
                          "parameters": [
                            "\"Dash start\"",
                            "",
                            ""
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::HorizontalDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the object is dashing.",
              "fullName": "Is dashing",
              "functionType": "Condition",
              "name": "IsDashing",
              "sentence": "_PARAM0_ is dashing",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "CompareObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__PlatformerDash_SustainTime\"",
                        ">=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::HorizontalDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Abort the current dash and set the object to its usual horizontal speed.",
              "fullName": "Abort dash",
              "functionType": "Action",
              "name": "AbortDash",
              "sentence": "Abort the current dash of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "\"HorizontalDash\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::RevertConfiguration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerConfigurationStack",
                        "\"HorizontalDashGravity\"",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "RemoveObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__PlatformerDash_SustainTime\""
                      ]
                    },
                    {
                      "type": {
                        "value": "ResetObjectTimer"
                      },
                      "parameters": [
                        "Object",
                        "\"__PlatformerDash_CoolDown\""
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::CurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "<",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "=",
                            "-Object.PlatformerConfigurationStack::UsualMaxSpeed()"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::CurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            ">",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::PlatformerObjectBehavior::SetCurrentSpeed"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter",
                            "=",
                            "Object.PlatformerConfigurationStack::UsualMaxSpeed()"
                          ]
                        }
                      ]
                    },
                    {
                      "disabled": true,
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "DebuggerTools::ConsoleLog"
                          },
                          "parameters": [
                            "\"Dash end\"",
                            "",
                            ""
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::HorizontalDash",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerCharacter"
            },
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer charcacter configuration stack",
              "extraInformation": [
                "AdvancedJump::PlatformerConfigurationStack"
              ],
              "choices": [],
              "name": "PlatformerConfigurationStack"
            },
            {
              "value": "500",
              "type": "Number",
              "label": "Initial speed",
              "name": "DashInitialSpeed"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Sustain minimum duration",
              "group": "Sustain",
              "name": "DashSustainDurationMin"
            },
            {
              "value": "0.25",
              "type": "Number",
              "label": "Sustain maxiumum duration",
              "group": "Sustain",
              "name": "DashSustainDurationMax"
            },
            {
              "value": "1500",
              "type": "Number",
              "label": "Sustain acceleration",
              "group": "Sustain",
              "name": "DashSustainAcceleration"
            },
            {
              "value": "750",
              "type": "Number",
              "label": "Sustain maxiumum speed",
              "group": "Sustain",
              "name": "DashSustainSpeedMax"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Sustain gravity",
              "group": "Sustain",
              "name": "DashSustainGravity"
            },
            {
              "value": "3000",
              "type": "Number",
              "label": "Decceleration",
              "name": "DashDecceleration"
            },
            {
              "value": "1000",
              "type": "Number",
              "label": "",
              "name": "DashGravity"
            },
            {
              "value": "0.25",
              "type": "Number",
              "label": "Cool down duration",
              "name": "CoolDownDuration"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "LastDirectionIsLeft"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "DashKeyIsPressed"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsSustainning"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "CanDash"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerCharacter"
              },
              {
                "propertyName": "PlatformerConfigurationStack"
              },
              {
                "propertyName": "DashInitialSpeed"
              },
              {
                "folderName": "Sustain",
                "children": [
                  {
                    "propertyName": "DashSustainDurationMin"
                  },
                  {
                    "propertyName": "DashSustainDurationMax"
                  },
                  {
                    "propertyName": "DashSustainAcceleration"
                  },
                  {
                    "propertyName": "DashSustainSpeedMax"
                  },
                  {
                    "propertyName": "DashSustainGravity"
                  }
                ]
              },
              {
                "propertyName": "DashDecceleration"
              },
              {
                "propertyName": "DashGravity"
              },
              {
                "propertyName": "CoolDownDuration"
              },
              {
                "propertyName": "LastDirectionIsLeft"
              },
              {
                "propertyName": "DashKeyIsPressed"
              },
              {
                "propertyName": "IsSustainning"
              },
              {
                "propertyName": "CanDash"
              }
            ]
          }
        },
        {
          "description": "Resolve conflict between platformer character configuration changes.",
          "fullName": "Platformer character configuration stack",
          "name": "PlatformerConfigurationStack",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::JsCode",
                  "inlineCode": [
                    "const behaviorName = eventsFunctionContext.getBehaviorName(\"Behavior\");",
                    "const object = objects[0];",
                    "const behavior = object.getBehavior(behaviorName);",
                    "/** @type {gdjs.PlatformerObjectRuntimeBehavior} */",
                    "const character = object.getBehavior(behavior._getPlatformerCharacter());",
                    "",
                    "behavior.__settingNames = behavior.__settingNames || [\"gravity\", \"maxFallSpeed\", \"jumpSpeed\", \"jumpSustainTime\", \"acceleration\", \"deceleration\", \"maxSpeed\"];",
                    "",
                    "/** @type {{id:string, gravity: float, maxFallSpeed: float, jumpSpeed: float, jumpSustainTime: float, acceleration: float, deceleration: float, maxSpeed: float}[]} */",
                    "const configurationChanges = [];",
                    "behavior.__configurationChanges = configurationChanges;",
                    "// Add the default configuration",
                    "configurationChanges.push(({",
                    "    id: undefined,",
                    "    gravity: character.getGravity(),",
                    "    maxFallSpeed: character.getMaxFallingSpeed(),",
                    "    jumpSpeed: character.getJumpSpeed(),",
                    "    jumpSustainTime: character.getJumpSustainTime(),",
                    "    acceleration: character.getAcceleration(),",
                    "    deceleration: character.getDeceleration(),",
                    "    maxSpeed: character.getMaxSpeed()",
                    "}));",
                    ""
                  ],
                  "parameterObjects": "Object",
                  "useStrict": true,
                  "eventsSheetExpanded": true
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Revert configuration changes for one identifier and update the character configuration to use the most recent ones.",
              "fullName": "Revert configuration",
              "functionType": "Action",
              "name": "RevertConfiguration",
              "sentence": "Revert configuration changes: _PARAM2_ on _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::JsCode",
                  "inlineCode": [
                    "const behaviorName = eventsFunctionContext.getBehaviorName(\"Behavior\");",
                    "const object = objects[0];",
                    "const behavior = object.getBehavior(behaviorName);",
                    "/** @type {gdjs.PlatformerObjectRuntimeBehavior} */",
                    "const character = object.getBehavior(behavior._getPlatformerCharacter());",
                    "/** @type {string} */",
                    "const id = eventsFunctionContext.getArgument(\"Identifier\");",
                    "",
                    "if (id === undefined) {",
                    "    return;",
                    "}",
                    "",
                    "/** @type {{id:string, gravity: float, maxFallSpeed: float, jumpSpeed: float, jumpSustainTime: float, acceleration: float, deceleration: float, maxSpeed: float}[]} */",
                    "const configurationChanges = behavior.__configurationChanges || [];",
                    "",
                    "const index = configurationChanges.findIndex(value => value.id === id);",
                    "if (index >= 0) {",
                    "    configurationChanges.splice(index, 1);",
                    "",
                    "    // Update the configuration with the most recent changes.",
                    "    /** @type {string[]} */",
                    "    const settingNames = behavior.__settingNames;",
                    "    for (const settingName of settingNames) {",
                    "        const configuration = configurationChanges.find(value => value[settingName] !== undefined);",
                    "        const settingValue = configuration[settingName];",
                    "        // Methods can't be stored because the character instance could change.",
                    "        switch (settingName) {",
                    "            case \"gravity\":",
                    "                character.setGravity(settingValue);",
                    "                break;",
                    "            case \"maxFallSpeed\":",
                    "                character.setMaxFallingSpeed(settingValue);",
                    "                break;",
                    "            case \"jumpSpeed\":",
                    "                character.setJumpSpeed(settingValue);",
                    "                break;",
                    "            case \"jumpSustainTime\":",
                    "                character.setJumpSustainTime(settingValue);",
                    "                break;",
                    "            case \"acceleration\":",
                    "                character.setAcceleration(settingValue);",
                    "                break;",
                    "            case \"deceleration\":",
                    "                character.setDeceleration(settingValue);",
                    "                break;",
                    "            case \"maxSpeed\":",
                    "                character.setMaxSpeed(settingValue);",
                    "                break;",
                    "        }",
                    "    }",
                    "}",
                    ""
                  ],
                  "parameterObjects": "Object",
                  "useStrict": true,
                  "eventsSheetExpanded": true
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return the character property value when no change applies on it.",
              "fullName": "Setting",
              "functionType": "Expression",
              "name": "UsualSetting",
              "private": true,
              "sentence": "Configure the _PARAM2_ of _PARAM0_: _PARAM3_ with the identifier: _PARAM4_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::JsCode",
                  "inlineCode": [
                    "const behaviorName = eventsFunctionContext.getBehaviorName(\"Behavior\");",
                    "const object = objects[0];",
                    "const behavior = object.getBehavior(behaviorName);",
                    "/** @type {gdjs.PlatformerObjectRuntimeBehavior} */",
                    "const character = object.getBehavior(behavior._getPlatformerCharacter());",
                    "/** @type {string} */",
                    "const settingName = eventsFunctionContext.getArgument(\"SettingName\");",
                    "/** @type {float} */",
                    "const settingValue = eventsFunctionContext.getArgument(\"SettingValue\");",
                    "/** @type {string} */",
                    "const id = eventsFunctionContext.getArgument(\"Identifier\");",
                    "",
                    "/** @type {{id:string, gravity: float, maxFallSpeed: float, jumpSpeed: float, jumpSustainTime: float, acceleration: float, deceleration: float, maxSpeed: float}[]} */",
                    "const configurationChanges = behavior.__configurationChanges || [];",
                    "",
                    "eventsFunctionContext.returnValue = configurationChanges[configurationChanges.length - 1][settingName];",
                    ""
                  ],
                  "parameterObjects": "Object",
                  "useStrict": true,
                  "eventsSheetExpanded": true
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "",
                  "name": "SettingName",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return the usual maximum horizontal speed when no configuration change applies on it.",
              "fullName": "Usual maximum horizontal speed",
              "functionType": "Expression",
              "name": "UsualMaxSpeed",
              "sentence": "Configure the maximum horizontal speed of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "Object.Behavior::UsualSetting(\"maxSpeed\")"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure a character property for a given configuration layer and move this layer on top.",
              "fullName": "Configure setting",
              "functionType": "Action",
              "name": "ConfigureSetting",
              "private": true,
              "sentence": "Configure the _PARAM2_ of _PARAM0_: _PARAM3_ with the identifier: _PARAM4_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::JsCode",
                  "inlineCode": [
                    "const behaviorName = eventsFunctionContext.getBehaviorName(\"Behavior\");",
                    "const object = objects[0];",
                    "const behavior = object.getBehavior(behaviorName);",
                    "/** @type {gdjs.PlatformerObjectRuntimeBehavior} */",
                    "const character = object.getBehavior(behavior._getPlatformerCharacter());",
                    "/** @type {string} */",
                    "const settingName = eventsFunctionContext.getArgument(\"SettingName\");",
                    "/** @type {float} */",
                    "const settingValue = eventsFunctionContext.getArgument(\"SettingValue\");",
                    "/** @type {string} */",
                    "const id = eventsFunctionContext.getArgument(\"Identifier\");",
                    "",
                    "/** @type {{id:string, gravity: float, maxFallSpeed: float, jumpSpeed: float, jumpSustainTime: float, acceleration: float, deceleration: float, maxSpeed: float}[]} */",
                    "const configurationChanges = behavior.__configurationChanges || [];",
                    "",
                    "const index = configurationChanges.findIndex(value => value.id === id);",
                    "let configurationChange;",
                    "if (index < 0) {",
                    "    configurationChange = {id:id, gravity: undefined, maxFallSpeed: undefined, jumpSpeed: undefined, jumpSustainTime: undefined, acceleration: undefined, deceleration: undefined, maxSpeed: undefined}",
                    "    configurationChanges.splice(0, 0, configurationChange);",
                    "}",
                    "else {",
                    "    configurationChange = configurationChanges[index];",
                    "    // Move the configuration change on top",
                    "    if (index > 0) {",
                    "        configurationChanges.splice(index, 1);",
                    "        configurationChanges.splice(0, 0, configurationChange);",
                    "    }",
                    "}",
                    "configurationChange[settingName] = settingValue;",
                    ""
                  ],
                  "parameterObjects": "Object",
                  "useStrict": true,
                  "eventsSheetExpanded": true
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "",
                  "name": "SettingName",
                  "type": "string"
                },
                {
                  "description": "Setting value",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure character gravity for a given configuration layer and move this layer on top.",
              "fullName": "Configure gravity",
              "functionType": "Action",
              "name": "ConfigureGravity",
              "sentence": "Configure the gravity of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureSetting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "\"gravity\"",
                        "SettingValue",
                        "Identifier",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::Gravity"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "SettingValue"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Gravity",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure character deceleration for a given configuration layer and move this layer on top.",
              "fullName": "Configure horizontal deceleration",
              "functionType": "Action",
              "name": "ConfigureDeceleration",
              "sentence": "Configure the horizontal deceleration of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureSetting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "\"deceleration\"",
                        "SettingValue",
                        "Identifier",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::Deceleration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "SettingValue"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Acceleration",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure character maximum speed for a given configuration layer and move this layer on top.",
              "fullName": "Configure maximum horizontal speed",
              "functionType": "Action",
              "name": "ConfigureMaxSpeed",
              "sentence": "Configure the maximum horizontal speed of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureSetting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "\"maxSpeed\"",
                        "SettingValue",
                        "Identifier",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::MaxSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "SettingValue"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Maximum horizontal speed",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure character acceleration for a given configuration layer and move this layer on top.",
              "fullName": "Configure horizontal acceleration",
              "functionType": "Action",
              "name": "ConfigureAcceleration",
              "sentence": "Configure the horizontal acceleration of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureSetting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "\"acceleration\"",
                        "SettingValue",
                        "Identifier",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::Acceleration"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "SettingValue"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Acceleration",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Configure character maximum falling speed for a given configuration layer and move this layer on top.",
              "fullName": "Configure maximum falling speed",
              "functionType": "Action",
              "name": "ConfigureMaxFallSpeed",
              "sentence": "Configure the maximum falling speed of _PARAM0_: _PARAM2_ with the identifier: _PARAM3_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "AdvancedJump::PlatformerConfigurationStack::ConfigureSetting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "\"maxFallSpeed\"",
                        "SettingValue",
                        "Identifier",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "PlatformBehavior::MaxFallingSpeed"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter",
                        "=",
                        "SettingValue",
                        "yes"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "AdvancedJump::PlatformerConfigurationStack",
                  "type": "behavior"
                },
                {
                  "description": "Maximum falling speed",
                  "name": "SettingValue",
                  "type": "expression"
                },
                {
                  "description": "Configuration identifier",
                  "name": "Identifier",
                  "type": "string"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerCharacter"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerCharacter"
              }
            ]
          }
        }
      ],
      "eventsBasedObjects": []
    },
    {
      "author": "",
      "category": "Camera",
      "extensionNamespace": "",
      "fullName": "Camera impulse",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBkPSJNMjEsMzBjLTAuMywwLTAuNS0wLjEtMC43LTAuM2wtNC00Yy0wLjQtMC40LTAuNC0xLDAtMS40czEtMC40LDEuNCwwbDMuMywzLjNsMy4zLTMuM2MwLjQtMC40LDEtMC40LDEuNCwwczAuNCwxLDAsMS40DQoJCWwtNCw0QzIxLjUsMjkuOSwyMS4zLDMwLDIxLDMweiIvPg0KPC9nPg0KPGc+DQoJPHBhdGggZD0iTTIxLDMwYy0wLjYsMC0xLTAuNC0xLTFWN2MwLTAuNiwwLjQtMSwxLTFzMSwwLjQsMSwxdjIyQzIyLDI5LjYsMjEuNiwzMCwyMSwzMHoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0xNSw4Yy0wLjMsMC0wLjUtMC4xLTAuNy0wLjNMMTEsNC40TDcuNyw3LjdjLTAuNCwwLjQtMSwwLjQtMS40LDBzLTAuNC0xLDAtMS40bDQtNGMwLjQtMC40LDEtMC40LDEuNCwwbDQsNA0KCQljMC40LDAuNCwwLjQsMSwwLDEuNEMxNS41LDcuOSwxNS4zLDgsMTUsOHoiLz4NCjwvZz4NCjxnPg0KCTxwYXRoIGQ9Ik0xMSwyNmMtMC42LDAtMS0wLjQtMS0xVjNjMC0wLjYsMC40LTEsMS0xczEsMC40LDEsMXYyMkMxMiwyNS42LDExLjYsMjYsMTEsMjZ6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==",
      "name": "CameraImpulse",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Arrows/Arrows_thin_arrow_up_down_directions.svg",
      "shortDescription": "Move the camera following an impulse trajectory.",
      "version": "1.1.0",
      "description": [
        "Move the camera following an impulse trajectory.",
        "",
        "It can be used to simulate earthquakes or impacts."
      ],
      "origin": {
        "identifier": "CameraImpulse",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "implusion",
        "shaking",
        "camera",
        "effect",
        "screen",
        "shake",
        "translate"
      ],
      "authorIds": [
        "IWykYNRvhCZBN3vEgKEbBPOR3Oc2"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [
        {
          "name": "Impulses",
          "type": "structure",
          "children": []
        },
        {
          "name": "Impulse",
          "type": "structure",
          "children": [
            {
              "name": "AwayDuration",
              "type": "number",
              "value": 0
            },
            {
              "name": "AwayEasing",
              "type": "number",
              "value": 0
            },
            {
              "name": "BackDuration",
              "type": "string",
              "value": ""
            },
            {
              "name": "BackEasing",
              "type": "number",
              "value": 0
            },
            {
              "name": "DeltaX",
              "type": "number",
              "value": 0
            },
            {
              "name": "DeltaY",
              "type": "number",
              "value": 0
            },
            {
              "name": "Layer",
              "type": "string",
              "value": ""
            },
            {
              "name": "StayDuration",
              "type": "number",
              "value": 0
            },
            {
              "name": "Time",
              "type": "number",
              "value": 0
            }
          ]
        },
        {
          "name": "Identifer",
          "type": "string",
          "value": ""
        },
        {
          "name": "Layers",
          "type": "structure",
          "children": []
        },
        {
          "name": "Layer",
          "type": "structure",
          "children": [
            {
              "name": "CameraDeltaX",
              "type": "number",
              "value": 0
            },
            {
              "name": "CameraDeltaY",
              "type": "number",
              "value": 0
            }
          ]
        }
      ],
      "eventsFunctions": [
        {
          "fullName": "",
          "functionType": "Action",
          "name": "onScenePostEvents",
          "sentence": "",
          "events": [
            {
              "type": "BuiltinCommonInstructions::Comment",
              "color": {
                "b": 109,
                "g": 230,
                "r": 255,
                "textB": 0,
                "textG": 0,
                "textR": 0
              },
              "comment": "Step time counters."
            },
            {
              "type": "BuiltinCommonInstructions::ForEachChildVariable",
              "iterableVariableName": "Impulses",
              "valueIteratorVariableName": "Impulse",
              "keyIteratorVariableName": "Identifer",
              "conditions": [],
              "actions": [],
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "Impulses[Identifer].Time",
                        "+",
                        "TimeDelta()"
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "type": "BuiltinCommonInstructions::Comment",
              "color": {
                "b": 109,
                "g": 230,
                "r": 255,
                "textB": 0,
                "textG": 0,
                "textR": 0
              },
              "comment": "Apply impulses on cameras."
            },
            {
              "type": "BuiltinCommonInstructions::ForEachChildVariable",
              "iterableVariableName": "Impulses",
              "valueIteratorVariableName": "Impulse",
              "keyIteratorVariableName": "Identifer",
              "conditions": [],
              "actions": [],
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "Impulse.Time",
                        ">=",
                        "Impulse.AwayDuration + Impulse.StayDuration + Impulse.BackDuration"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "RemoveVariableChild"
                      },
                      "parameters": [
                        "Impulses",
                        "Identifer"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "Impulse.Time",
                        "<",
                        "Impulse.AwayDuration + Impulse.StayDuration + Impulse.BackDuration"
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Going away"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "Impulse.Time",
                            "<",
                            "Impulse.AwayDuration"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DistanceFactor",
                            "=",
                            "Tween::Ease(Impulse.AwayEasing, 0, 1, Impulse.Time / Impulse.AwayDuration)"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Staying"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "Impulse.Time",
                            ">=",
                            "Impulse.AwayDuration"
                          ]
                        },
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "Impulse.Time",
                            "<",
                            "Impulse.AwayDuration + Impulse.StayDuration"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DistanceFactor",
                            "=",
                            "1"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Going back"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "Impulse.Time",
                            ">=",
                            "Impulse.AwayDuration + Impulse.StayDuration"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DistanceFactor",
                            "=",
                            "Tween::Ease(Impulse.BackEasing, 0, 1, (1 - (Impulse.Time - Impulse.AwayDuration - Impulse.StayDuration) / Impulse.BackDuration))"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Keep the camera displacement to revert it in onScenePreEvents"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "Layers[Impulse.Layer].CameraDeltaX",
                            "+",
                            "Impulse.DeltaX * DistanceFactor"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "Layers[Impulse.Layer].CameraDeltaY",
                            "+",
                            "Impulse.DeltaY * DistanceFactor"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetCameraCenterX"
                          },
                          "parameters": [
                            "",
                            "+",
                            "Layers[Impulse.Layer].CameraDeltaX",
                            "Impulse.Layer",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetCameraCenterY"
                          },
                          "parameters": [
                            "",
                            "+",
                            "Layers[Impulse.Layer].CameraDeltaY",
                            "Impulse.Layer",
                            "0"
                          ]
                        }
                      ]
                    }
                  ],
                  "variables": [
                    {
                      "name": "DistanceFactor",
                      "type": "number",
                      "value": 0
                    }
                  ]
                }
              ]
            }
          ],
          "parameters": [],
          "objectGroups": []
        },
        {
          "fullName": "",
          "functionType": "Action",
          "name": "onScenePreEvents",
          "sentence": "",
          "events": [
            {
              "type": "BuiltinCommonInstructions::Comment",
              "color": {
                "b": 109,
                "g": 230,
                "r": 255,
                "textB": 0,
                "textG": 0,
                "textR": 0
              },
              "comment": "Revert the impulses."
            },
            {
              "type": "BuiltinCommonInstructions::Standard",
              "conditions": [],
              "actions": [],
              "events": [
                {
                  "type": "BuiltinCommonInstructions::ForEachChildVariable",
                  "iterableVariableName": "Layers",
                  "valueIteratorVariableName": "Layer",
                  "keyIteratorVariableName": "LayerName",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetCameraCenterX"
                      },
                      "parameters": [
                        "",
                        "-",
                        "Layer.CameraDeltaX",
                        "LayerName",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetCameraCenterY"
                      },
                      "parameters": [
                        "",
                        "-",
                        "Layer.CameraDeltaY",
                        "LayerName",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "Layers[LayerName].CameraDeltaX",
                        "=",
                        "0"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "Layers[LayerName].CameraDeltaY",
                        "=",
                        "0"
                      ]
                    }
                  ]
                }
              ],
              "variables": [
                {
                  "name": "LayerName",
                  "type": "string",
                  "value": ""
                }
              ]
            }
          ],
          "parameters": [],
          "objectGroups": []
        },
        {
          "description": "Add an impulse to the camera position.",
          "fullName": "Add a camera impulse",
          "functionType": "Action",
          "name": "AddImpulse",
          "sentence": "Add an impulse _PARAM1_ to the camera from layer _PARAM2_ with an amplitude of _PARAM3_  and an angle of _PARAM4_,  going away in _PARAM5_ seconds with _PARAM6_ easing, staying _PARAM7_  seconds, going back in _PARAM8_ seconds with _PARAM9_ easing",
          "events": [
            {
              "type": "BuiltinCommonInstructions::Standard",
              "conditions": [],
              "actions": [
                {
                  "type": {
                    "value": "SetStringVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].Layer",
                    "=",
                    "LayerName"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].DeltaX",
                    "=",
                    "DisplacementX"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].DeltaY",
                    "=",
                    "DisplacementY"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].AwayDuration",
                    "=",
                    "AwayDuration"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].StayDuration",
                    "=",
                    "StayDuration"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].BackDuration",
                    "=",
                    "BackDuration"
                  ]
                },
                {
                  "type": {
                    "value": "SetStringVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].AwayEasing",
                    "=",
                    "AwayEasing"
                  ]
                },
                {
                  "type": {
                    "value": "SetStringVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].BackEasing",
                    "=",
                    "BackEasing"
                  ]
                },
                {
                  "type": {
                    "value": "SetNumberVariable"
                  },
                  "parameters": [
                    "Impulses[NewIdentifier].Time",
                    "=",
                    "0"
                  ]
                }
              ]
            }
          ],
          "parameters": [
            {
              "description": "Identifier",
              "name": "NewIdentifier",
              "type": "string"
            },
            {
              "description": "Layer",
              "name": "LayerName",
              "type": "string"
            },
            {
              "description": "Displacement X",
              "name": "DisplacementX",
              "type": "expression"
            },
            {
              "description": "Displacement Y",
              "name": "DisplacementY",
              "type": "expression"
            },
            {
              "description": "Get away duration (in seconds)",
              "name": "AwayDuration",
              "type": "expression"
            },
            {
              "description": "Get away easing",
              "name": "AwayEasing",
              "supplementaryInformation": "[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]",
              "type": "stringWithSelector"
            },
            {
              "description": "Stay duration (in seconds)",
              "name": "StayDuration",
              "type": "expression"
            },
            {
              "description": "Get back duration (in seconds)",
              "name": "BackDuration",
              "type": "expression"
            },
            {
              "description": "Get back easing",
              "name": "BackEasing",
              "supplementaryInformation": "[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]",
              "type": "stringWithSelector"
            }
          ],
          "objectGroups": []
        },
        {
          "description": "Add an impulse to the camera position.",
          "fullName": "Add a camera impulse (angle)",
          "functionType": "Action",
          "name": "AddImpulseAngle",
          "sentence": "Add an impulse _PARAM1_ to the camera from layer _PARAM2_ with an amplitude of _PARAM3_  and an angle of _PARAM4_,  going away in _PARAM5_ seconds with _PARAM6_ easing, staying _PARAM7_  seconds, going back in _PARAM8_ seconds with _PARAM9_ easing",
          "events": [
            {
              "type": "BuiltinCommonInstructions::Standard",
              "conditions": [],
              "actions": [
                {
                  "type": {
                    "value": "CameraImpulse::AddImpulse"
                  },
                  "parameters": [
                    "",
                    "Identifier",
                    "LayerName",
                    "XFromAngleAndDistance(Angle, Amplitude)",
                    "YFromAngleAndDistance(Angle, Amplitude)",
                    "AwayDuration",
                    "AwayEasing",
                    "StayDuration",
                    "BackDuration",
                    "BackEasing",
                    ""
                  ]
                }
              ]
            }
          ],
          "parameters": [
            {
              "description": "Identifier",
              "name": "Identifier",
              "type": "string"
            },
            {
              "description": "Layer",
              "name": "LayerName",
              "type": "string"
            },
            {
              "description": "Amplitude",
              "name": "Amplitude",
              "type": "expression"
            },
            {
              "description": "Angle (in degree)",
              "name": "Angle",
              "type": "expression"
            },
            {
              "description": "Get away duration (in seconds)",
              "name": "AwayDuration",
              "type": "expression"
            },
            {
              "description": "Get away easing",
              "name": "AwayEasing",
              "supplementaryInformation": "[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]",
              "type": "stringWithSelector"
            },
            {
              "description": "Stay duration (in seconds)",
              "name": "StayDuration",
              "type": "expression"
            },
            {
              "description": "Get back duration (in seconds)",
              "name": "BackDuration",
              "type": "expression"
            },
            {
              "description": "Get back easing",
              "name": "BackEasing",
              "supplementaryInformation": "[\"linear\",\"easeInQuad\",\"easeOutQuad\",\"easeInOutQuad\",\"easeInCubic\",\"easeOutCubic\",\"easeInOutCubic\",\"easeInQuart\",\"easeOutQuart\",\"easeInOutQuart\",\"easeInQuint\",\"easeOutQuint\",\"easeInOutQuint\",\"easeInOutSine\",\"easeInExpo\",\"easeOutExpo\",\"easeInOutExpo\",\"easeInCirc\",\"easeOutCirc\",\"easeInOutCirc\",\"easeOutBounce\",\"easeInBack\",\"easeOutBack\",\"easeInOutBack\",\"elastic\",\"swingFromTo\",\"swingFrom\",\"swingTo\",\"bounce\",\"bouncePast\",\"easeFromTo\",\"easeFrom\",\"easeTo\"]",
              "type": "stringWithSelector"
            }
          ],
          "objectGroups": []
        },
        {
          "description": "Check if a camera impulse is playing.",
          "fullName": "Camera impulse is playing",
          "functionType": "Condition",
          "name": "IsPlaying",
          "sentence": "Camera impulse _PARAM1_ is playing",
          "events": [
            {
              "type": "BuiltinCommonInstructions::Standard",
              "conditions": [
                {
                  "type": {
                    "value": "VariableChildExists2"
                  },
                  "parameters": [
                    "Impulses",
                    "Identifier"
                  ]
                }
              ],
              "actions": [
                {
                  "type": {
                    "value": "SetReturnBoolean"
                  },
                  "parameters": [
                    "True"
                  ]
                }
              ]
            }
          ],
          "parameters": [
            {
              "description": "Identifier",
              "name": "Identifier",
              "type": "string"
            }
          ],
          "objectGroups": []
        }
      ],
      "eventsBasedBehaviors": [],
      "eventsBasedObjects": []
    },
    {
      "author": "",
      "category": "Camera",
      "extensionNamespace": "",
      "fullName": "Smooth Camera",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "/tutorials/follow-player-with-camera/",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQoJLnN0MXtmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjI7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO30NCjwvc3R5bGU+DQo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjQsMTNoLTZjLTEuMSwwLTItMC45LTItMlY1YzAtMS4xLDAuOS0yLDItMmg2YzEuMSwwLDIsMC45LDIsMnY2QzI2LDEyLjEsMjUuMSwxMywyNCwxM3oiLz4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNiw4djEwYzAsMS4xLTAuOSwyLTIsMkg4Yy0xLjEsMC0yLTAuOS0yLTJWOGMwLTEuMSwwLjktMiwyLTJoOCIvPg0KPGNpcmNsZSBjbGFzcz0ic3QwIiBjeD0iMjEiIGN5PSI4IiByPSIyIi8+DQo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSIxMSIgY3k9IjE2IiByPSIxIi8+DQo8cmVjdCB4PSI5IiB5PSI5IiBjbGFzcz0ic3QwIiB3aWR0aD0iNCIgaGVpZ2h0PSIzIi8+DQo8cG9seWxpbmUgY2xhc3M9InN0MCIgcG9pbnRzPSIyMSwyOSAyMSwyOSAxMSwyOSAxMSwyOSAiLz4NCjxwb2x5bGluZSBjbGFzcz0ic3QwIiBwb2ludHM9IjE4LDIwIDE4LDI5IDE0LDI5IDE0LDIwICIvPg0KPHJlY3QgeD0iNyIgeT0iMyIgY2xhc3M9InN0MCIgd2lkdGg9IjQiIGhlaWdodD0iMyIvPg0KPC9zdmc+DQo=",
      "name": "SmoothCamera",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/Line Hero Pack/Master/SVG/Computers and Hardware/Computers and Hardware_camcoder_gopro_go_pro_camera.svg",
      "shortDescription": "Smoothly scroll to follow an object.",
      "version": "0.4.4",
      "description": [
        "The camera follows an object according to:",
        "- a frame rate independent catch-up speed to make the scrolling from smooth to strong",
        "- a maximum speed to do linear following ([open the project online](https://editor.gdevelop.io/?project=example://platformer-with-tilemap)) or slow down the camera when teleporting the object",
        "- a follow-free zone to avoid scrolling on small movements",
        "- an offset to see further in one direction",
        "- an extra delay and catch-up speed to give an impression of speed (useful for dash)",
        "- position forecasting and delay to simulate a cameraman response time",
        "",
        "A platformer dedicated behavior allows to switch of settings when the character is in air or on the floor. This can be used to stabilize the camera when jumping."
      ],
      "origin": {
        "identifier": "SmoothCamera",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "camera",
        "scrolling",
        "follow",
        "smooth",
        "platformer",
        "platform"
      ],
      "authorIds": [
        "IWykYNRvhCZBN3vEgKEbBPOR3Oc2"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [],
      "eventsFunctions": [],
      "eventsBasedBehaviors": [
        {
          "description": "Smoothly scroll to follow an object.",
          "fullName": "Smooth Camera",
          "name": "SmoothCamera",
          "objectType": "",
          "quickCustomizationVisibility": "hidden",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "onCreated",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Update private properties through setters to check their values and initialize state."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetLeftwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "LeftwardSpeed",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetRightwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "RightwardSpeed",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "UpwardSpeed",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "DownwardSpeed",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetLeftwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "LeftwardSpeedMax",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetRightwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "RightwardSpeedMax",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "UpwardSpeedMax",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "DownwardSpeedMax",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaLeft"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "FollowFreeAreaLeft",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaRight"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "FollowFreeAreaRight",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "FollowFreeAreaTop",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "FollowFreeAreaBottom",
                        "log(1 - )"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraDelay",
                        "=",
                        "CameraDelay"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "IsCalledManually",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::DoMoveCameraCloser"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Move the camera closer to the object. This action must be called after the object has moved for the frame.",
              "fullName": "Move the camera closer",
              "functionType": "Action",
              "name": "MoveCameraCloser",
              "sentence": "Move the camera closer to _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "The camera following is called with an action, the call from doStepPreEvents must be disabled to avoid to do it twice."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "IsCalledManually",
                        "True",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::DoMoveCameraCloser"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Move the camera closer to the object.",
              "fullName": "Do move the camera closer",
              "functionType": "Action",
              "name": "DoMoveCameraCloser",
              "private": true,
              "sentence": "Do move the camera closer _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Delaying and forecasting can be used at the same time.\nForecasting only use the positions that are older than the one used for delaying.\nThe behavior uses a position history that is split in 2 arrays:\n- one for delaying the position (from TimeFromStart to TimeFromStart - CamearDelay)\n- one for forecasting the position (from TimeFromStart - CamearDelay to TimeFromStart - CamearDelay - ForecastHistoryDuration"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::UpdateDelayedPosition"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::UpdateForecastedPosition"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "At each frame, the camera must catchup the target by a given ratio (speed)\ncameraX(t) - targetX = (cameraX(t - 1) - targetX) * speed\n\nThe frame rate must not impact on the catch-up speed, we don't want a speed in ratio per frame but a speed ratio per second, like this:\ncameraX(t) - targetX = (cameraX(t - 1s) - targetX) * speed\n\nOk, but we still need to process each frame, we can use a exponent for this:\ncameraX(t) - targetX = (cameraX(t - timeDelta) - targetX) * speed^timeDelta\ncameraX(t) = targetX + (cameraX(t - timeDelta) - targetX) * exp(timeDelta * ln(speed))\n\npow is probably more efficient than precalculated log if the speed is changed continuously but this might be rare enough."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "FollowOnX",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "OldX",
                        "=",
                        "CameraX(Object.Layer(), 0)"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "CameraX"
                          },
                          "parameters": [
                            "",
                            ">",
                            "Object.Behavior::FreeAreaRight()",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetCameraX"
                          },
                          "parameters": [
                            "",
                            "=",
                            "Object.Behavior::FreeAreaRight()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaRight())\n* exp(TimeDelta() * LogLeftwardSpeed)",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "CameraX"
                              },
                              "parameters": [
                                "",
                                "<",
                                "OldX - LeftwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetCameraX"
                              },
                              "parameters": [
                                "",
                                "=",
                                "OldX - LeftwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "CameraX"
                          },
                          "parameters": [
                            "",
                            "<",
                            "Object.Behavior::FreeAreaLeft()",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetCameraX"
                          },
                          "parameters": [
                            "",
                            "=",
                            "Object.Behavior::FreeAreaLeft()\n+ (CameraX(Object.Layer(), 0) - Object.Behavior::FreeAreaLeft())\n* exp(TimeDelta() * LogRightwardSpeed)",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "CameraX"
                              },
                              "parameters": [
                                "",
                                ">",
                                "OldX + RightwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetCameraX"
                              },
                              "parameters": [
                                "",
                                "=",
                                "OldX + RightwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "FollowOnY",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "OldY",
                        "=",
                        "CameraY(Object.Layer(), 0)"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "CameraY"
                          },
                          "parameters": [
                            "",
                            ">",
                            "Object.Behavior::FreeAreaBottom()",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetCameraY"
                          },
                          "parameters": [
                            "",
                            "=",
                            "Object.Behavior::FreeAreaBottom()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaBottom())\n* exp(TimeDelta() * LogUpwardSpeed)",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "CameraY"
                              },
                              "parameters": [
                                "",
                                "<",
                                "OldY - UpwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetCameraY"
                              },
                              "parameters": [
                                "",
                                "=",
                                "OldY - UpwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "CameraY"
                          },
                          "parameters": [
                            "",
                            "<",
                            "Object.Behavior::FreeAreaTop()",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetCameraY"
                          },
                          "parameters": [
                            "",
                            "=",
                            "Object.Behavior::FreeAreaTop()\n+ (CameraY(Object.Layer(), 0) - Object.Behavior::FreeAreaTop())\n* exp(TimeDelta() * LogDownwardSpeed)",
                            "Object.Layer()",
                            "0"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "CameraY"
                              },
                              "parameters": [
                                "",
                                ">",
                                "OldY + DownwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetCameraY"
                              },
                              "parameters": [
                                "",
                                "=",
                                "OldY + DownwardSpeedMax * TimeDelta()",
                                "Object.Layer()",
                                "0"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Delay the camera according to a maximum speed and catch up the delay.",
              "fullName": "Wait and catch up",
              "functionType": "Action",
              "name": "WaitAndCatchUp",
              "sentence": "Delay the camera of _PARAM0_ during: _PARAM2_ seconds according to the maximum speed _PARAM3_;_PARAM4_ seconds and catch up in _PARAM5_ seconds",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Maybe the catch-up show be done in constant pixel speed instead of constant time speed."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WaitingEnd",
                        "=",
                        "TimeFromStart() + NewWaitingDuration"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WaitingSpeedXMax",
                        "=",
                        "NewWaitingSpeedXMax"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "WaitingSpeedYMax",
                        "=",
                        "NewWaitingSpeedYMax"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraDelayCatchUpDuration",
                        "=",
                        "NewCatchUpDuration"
                      ]
                    }
                  ]
                },
                {
                  "disabled": true,
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "DebuggerTools::ConsoleLog"
                      },
                      "parameters": [
                        "\"Wait and catch up\"",
                        "\"info\"",
                        "\"SmoothCamera\""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Waiting duration (in seconds)",
                  "name": "NewWaitingDuration",
                  "type": "expression"
                },
                {
                  "description": "Waiting maximum camera target speed X",
                  "name": "NewWaitingSpeedXMax",
                  "type": "expression"
                },
                {
                  "description": "Waiting maximum camera target speed Y",
                  "name": "NewWaitingSpeedYMax",
                  "type": "expression"
                },
                {
                  "description": "Catch up duration (in seconds)",
                  "name": "NewCatchUpDuration",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Draw the targeted and actual camera position.",
              "fullName": "Draw debug",
              "functionType": "Action",
              "name": "DrawDebug",
              "sentence": "Draw targeted and actual camera position for _PARAM0_ on _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "PrimitiveDrawing::FillOpacity"
                      },
                      "parameters": [
                        "ShapePainter",
                        "=",
                        "0"
                      ]
                    }
                  ]
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Path used by the forecasting",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "Egal"
                          },
                          "parameters": [
                            "Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",
                            ">",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "Index",
                            "=",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::OutlineColor"
                          },
                          "parameters": [
                            "ShapePainter",
                            "\"245;166;35\""
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::BeginFillPath"
                          },
                          "parameters": [
                            "ShapePainter",
                            "Object.Variable(__SmoothCamera.ForecastHistoryX[0])",
                            "Object.Variable(__SmoothCamera.ForecastHistoryY[0])"
                          ]
                        }
                      ],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Repeat",
                          "repeatExpression": "Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "PrimitiveDrawing::PathLineTo"
                              },
                              "parameters": [
                                "ShapePainter",
                                "Object.Variable(__SmoothCamera.ForecastHistoryX[Index])",
                                "Object.Variable(__SmoothCamera.ForecastHistoryY[Index])"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "+",
                                "1"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "PrimitiveDrawing::EndFillPath"
                              },
                              "parameters": [
                                "ShapePainter"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Follow-free area.",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "BuiltinCommonInstructions::Or"
                          },
                          "parameters": [],
                          "subInstructions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "FollowFreeAreaLeft",
                                "!=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "FollowFreeAreaRight",
                                "!=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "FollowFreeAreaTop",
                                "!=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "FollowFreeAreaBottom",
                                "!=",
                                "0"
                              ]
                            }
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "PrimitiveDrawing::OutlineColor"
                          },
                          "parameters": [
                            "ShapePainter",
                            "\"126;211;33\""
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::Rectangle"
                          },
                          "parameters": [
                            "ShapePainter",
                            "Object.Behavior::FreeAreaLeft() - 1",
                            "Object.Behavior::FreeAreaTop() - 1",
                            "Object.Behavior::FreeAreaRight() + 1",
                            "Object.Behavior::FreeAreaBottom() + 1"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Linear regression vector used by the forecasting.",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "PrimitiveDrawing::OutlineColor"
                          },
                          "parameters": [
                            "ShapePainter",
                            "\"208;2;27\""
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::LineV2"
                          },
                          "parameters": [
                            "ShapePainter",
                            "ProjectedOldestX",
                            "ProjectedOldestY",
                            "ProjectedNewestX",
                            "ProjectedNewestY",
                            "1"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "Targeted and actual camera position",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "PrimitiveDrawing::Circle"
                          },
                          "parameters": [
                            "ShapePainter",
                            "ForecastedX",
                            "ForecastedY",
                            "3"
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::LineV2"
                          },
                          "parameters": [
                            "ShapePainter",
                            "CameraX(Object.Layer(), 0)",
                            "CameraY(Object.Layer(), 0) - 4",
                            "CameraX(Object.Layer(), 0)",
                            "CameraY(Object.Layer(), 0) + 4",
                            "1"
                          ]
                        },
                        {
                          "type": {
                            "value": "PrimitiveDrawing::LineV2"
                          },
                          "parameters": [
                            "ShapePainter",
                            "CameraX(Object.Layer(), 0) - 4",
                            "CameraY(Object.Layer(), 0)",
                            "CameraX(Object.Layer(), 0) + 4",
                            "CameraY(Object.Layer(), 0)",
                            "1"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Shape painter",
                  "name": "ShapePainter",
                  "supplementaryInformation": "PrimitiveDrawing::Drawer",
                  "type": "objectList"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable or disable the following on X axis.",
              "fullName": "Follow on X",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowOnX",
              "sentence": "The camera follows _PARAM0_ on X axis: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "FollowOnX",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "FollowOnX",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow on X axis",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Enable or disable the following on Y axis.",
              "fullName": "Follow on Y",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowOnY",
              "sentence": "The camera follows _PARAM0_ on Y axis: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "FollowOnY",
                        "False",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Value",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetBooleanVariable"
                      },
                      "parameters": [
                        "FollowOnY",
                        "True",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow on Y axis",
                  "name": "Value",
                  "type": "yesorno"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera follow free area right border.",
              "fullName": "Follow free area right border",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowFreeAreaRight",
              "sentence": "Change the camera follow free area right border of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FollowFreeAreaRight",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow free area right border",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera follow free area left border.",
              "fullName": "Follow free area left border",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowFreeAreaLeft",
              "sentence": "Change the camera follow free area left border of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FollowFreeAreaLeft",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow free area left border",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera follow free area top border.",
              "fullName": "Follow free area top border",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowFreeAreaTop",
              "sentence": "Change the camera follow free area top border of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FollowFreeAreaTop",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow free area top border",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera follow free area bottom border.",
              "fullName": "Follow free area bottom border",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetFollowFreeAreaBottom",
              "sentence": "Change the camera follow free area bottom border of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "FollowFreeAreaBottom",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Follow free area bottom border",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera leftward maximum speed (in pixels per second).",
              "fullName": "Leftward maximum speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetLeftwardSpeedMax",
              "sentence": "Change the camera leftward maximum speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LeftwardSpeedMax",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Leftward maximum speed (in pixels per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera rightward maximum speed (in pixels per second).",
              "fullName": "Rightward maximum speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetRightwardSpeedMax",
              "sentence": "Change the camera rightward maximum speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "RightwardSpeedMax",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Rightward maximum speed (in pixels per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera upward maximum speed (in pixels per second).",
              "fullName": "Upward maximum speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetUpwardSpeedMax",
              "sentence": "Change the camera upward maximum speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "UpwardSpeedMax",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Upward maximum speed (in pixels per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera downward maximum speed (in pixels per second).",
              "fullName": "Downward maximum speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetDownwardSpeedMax",
              "sentence": "Change the camera downward maximum speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "DownwardSpeedMax",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Downward maximum speed (in pixels per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera leftward catch-up speed (in ratio per second).",
              "fullName": "Leftward catch-up speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetLeftwardSpeed",
              "sentence": "Change the camera leftward catch-up speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LeftwardSpeed",
                        "=",
                        "clamp(0, 1, Value)"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LogLeftwardSpeed",
                        "=",
                        "log(1 - Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Leftward catch-up speed (in ratio per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera rightward catch-up speed (in ratio per second).",
              "fullName": "Rightward catch-up speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetRightwardSpeed",
              "sentence": "Change the camera rightward catch-up speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "RightwardSpeed",
                        "=",
                        "clamp(0, 1, Value)"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LogRightwardSpeed",
                        "=",
                        "log(1 - Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Rightward catch-up speed (in ratio per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera downward catch-up speed (in ratio per second).",
              "fullName": "Downward catch-up speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetDownwardSpeed",
              "sentence": "Change the camera downward catch-up speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "DownwardSpeed",
                        "=",
                        "clamp(0, 1, Value)"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LogDownwardSpeed",
                        "=",
                        "log(1 - Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Downward catch-up speed (in ratio per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera upward catch-up speed (in ratio per second).",
              "fullName": "Upward catch-up speed",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetUpwardSpeed",
              "sentence": "Change the camera upward catch-up speed of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "UpwardSpeed",
                        "=",
                        "clamp(0, 1, Value)"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "LogUpwardSpeed",
                        "=",
                        "log(1 - Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Upward catch-up speed (in ratio per second)",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the camera offset on X axis of the object. This is not the current difference between the object and the camera position.",
              "fullName": "Camera offset X",
              "functionType": "ExpressionAndCondition",
              "group": "Camera configuration",
              "name": "OffsetX",
              "sentence": "the camera offset on X axis",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "CameraOffsetX"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "OffsetX",
              "name": "SetOffsetXOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraOffsetX",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera offset on X axis of an object.",
              "fullName": "Camera Offset X",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetOffsetX",
              "private": true,
              "sentence": "Change the camera offset on X axis of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Deprecated use SetOffsetXOp instead."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetOffsetXOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "Value",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Camera offset X",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "the camera offset on Y axis of the object. This is not the current difference between the object and the camera position.",
              "fullName": "Camera offset Y",
              "functionType": "ExpressionAndCondition",
              "group": "Camera configuration",
              "name": "OffsetY",
              "sentence": "the camera offset on Y axis",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "CameraOffsetY"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "fullName": "",
              "functionType": "ActionWithOperator",
              "getterName": "OffsetY",
              "name": "SetOffsetYOp",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraOffsetY",
                        "=",
                        "Value"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera offset on Y axis of an object.",
              "fullName": "Camera Offset Y",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetOffsetY",
              "private": true,
              "sentence": "Change the camera offset on Y axis of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Deprecated use SetOffsetYOp instead."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetOffsetYOp"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "=",
                        "CameraOffsetY",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Camera offset Y",
                  "name": "CameraOffsetY",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera forecast time (in seconds).",
              "fullName": "Forecast time",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetForecastTime",
              "sentence": "Change the camera forecast time of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ForecastTime",
                        "=",
                        "min(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Forecast time",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Change the camera delay (in seconds).",
              "fullName": "Camera delay",
              "functionType": "Action",
              "group": "Camera configuration",
              "name": "SetCameraDelay",
              "sentence": "Change the camera delay of _PARAM0_: _PARAM2_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraDelay",
                        "=",
                        "max(0, Value)"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Camera delay",
                  "name": "Value",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return follow free area left border X.",
              "fullName": "Free area left",
              "functionType": "Expression",
              "group": "Private",
              "name": "FreeAreaLeft",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ForecastedX + CameraOffsetX - FollowFreeAreaLeft"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return follow free area right border X.",
              "fullName": "Free area right",
              "functionType": "Expression",
              "group": "Private",
              "name": "FreeAreaRight",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ForecastedX + CameraOffsetX + FollowFreeAreaRight"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return follow free area bottom border Y.",
              "fullName": "Free area bottom",
              "functionType": "Expression",
              "group": "Private",
              "name": "FreeAreaBottom",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ForecastedY + CameraOffsetY + FollowFreeAreaBottom"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return follow free area top border Y.",
              "fullName": "Free area top",
              "functionType": "Expression",
              "group": "Private",
              "name": "FreeAreaTop",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "ForecastedY + CameraOffsetY - FollowFreeAreaTop"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Update delayed position and delayed history. This is called in doStepPreEvents.",
              "fullName": "Update delayed position",
              "functionType": "Action",
              "group": "Private",
              "name": "UpdateDelayedPosition",
              "private": true,
              "sentence": "Update delayed position and delayed history of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Add the previous position to have enough (2) positions to evaluate the extra delay for waiting mode."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::IsWaiting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "Egal"
                      },
                      "parameters": [
                        "Object.VariableChildCount(__SmoothCamera.ObjectTime)",
                        "=",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectTime",
                        "TimeFromStart()"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectX",
                        "DelayedCenterX"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectY",
                        "DelayedCenterY"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Use the object center when no delay is asked."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "DelayedCenterX",
                        "=",
                        "Object.CenterX()"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "DelayedCenterY",
                        "=",
                        "Object.CenterY()"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "SmoothCamera::SmoothCamera::IsDelayed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::AddForecastHistoryPosition"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        "TimeFromStart()",
                        "Object.CenterX()",
                        "Object.CenterY()",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "SmoothCamera::SmoothCamera::IsDelayed"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "SmoothCamera::SmoothCamera::IsWaiting"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            ""
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectTime",
                        "TimeFromStart()"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectX",
                        "Object.CenterX()"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectY",
                        "Object.CenterY()"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Remove history entries that are too old to be useful for delaying and pass it to the history for forecasting."
                    },
                    {
                      "infiniteLoopWarning": true,
                      "type": "BuiltinCommonInstructions::While",
                      "whileConditions": [
                        {
                          "type": {
                            "value": "Egal"
                          },
                          "parameters": [
                            "Object.VariableChildCount(__SmoothCamera.ObjectTime)",
                            ">=",
                            "2"
                          ]
                        },
                        {
                          "type": {
                            "value": "VarObjet"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ObjectTime[1]",
                            "<",
                            "TimeFromStart() - Object.Behavior::CurrentDelay()"
                          ]
                        }
                      ],
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SmoothCamera::SmoothCamera::AddForecastHistoryPosition"
                          },
                          "parameters": [
                            "Object",
                            "Behavior",
                            "Object.Variable(__SmoothCamera.ObjectTime[0])",
                            "Object.Variable(__SmoothCamera.ObjectX[0])",
                            "Object.Variable(__SmoothCamera.ObjectY[0])",
                            ""
                          ]
                        },
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ObjectTime",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ObjectX",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ObjectY",
                            "0"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Don't move the camera if there is not enough history."
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DelayedCenterX",
                            "=",
                            "Object.Variable(__SmoothCamera.ObjectX[0])"
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "DelayedCenterY",
                            "=",
                            "Object.Variable(__SmoothCamera.ObjectY[0])"
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "Egal"
                          },
                          "parameters": [
                            "Object.VariableChildCount(__SmoothCamera.ObjectTime)",
                            ">=",
                            "2"
                          ]
                        },
                        {
                          "type": {
                            "value": "VarObjet"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ObjectTime[0]",
                            "<",
                            "TimeFromStart() - Object.Behavior::CurrentDelay()"
                          ]
                        }
                      ],
                      "actions": [],
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "Add the extra delay that could be needed to respect the speed limit in waiting mode.\n\nspeedRatio = min(speedMaxX / historySpeedX, speedMaxY / historySpeedY)\ndelay += min(0, timeDelta * (1 - speedRatio))"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "SmoothCamera::SmoothCamera::IsWaiting"
                              },
                              "parameters": [
                                "Object",
                                "Behavior",
                                ""
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "CameraExtraDelay",
                                "+",
                                "max(0, TimeDelta() * (1 - min(WaitingSpeedXMax * abs(Object.Variable(__SmoothCamera.ObjectX[1]) - Object.Variable(__SmoothCamera.ObjectX[0])), WaitingSpeedYMax * abs(Object.Variable(__SmoothCamera.ObjectY[1]) - Object.Variable(__SmoothCamera.ObjectY[0]))) / (Object.Variable(__SmoothCamera.ObjectTime[1]) - Object.Variable(__SmoothCamera.ObjectTime[0]))))"
                              ]
                            }
                          ],
                          "events": [
                            {
                              "disabled": true,
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [],
                              "actions": [
                                {
                                  "type": {
                                    "value": "DebuggerTools::ConsoleLog"
                                  },
                                  "parameters": [
                                    "\"Extra delay: \" + ToString(CameraExtraDelay)",
                                    "\"info\"",
                                    "\"SmoothCamera\""
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "The time with delay is now between the first 2 indexes"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "DelayedCenterX",
                                "=",
                                "lerp(Object.Variable(__SmoothCamera.ObjectX[1]), Object.Variable(__SmoothCamera.ObjectX[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "DelayedCenterY",
                                "=",
                                "lerp(Object.Variable(__SmoothCamera.ObjectY[1]), Object.Variable(__SmoothCamera.ObjectY[0]), ((TimeFromStart() - Object.Behavior::CurrentDelay()) - Object.Variable(__SmoothCamera.ObjectTime[1])) / (Object.Variable(__SmoothCamera.ObjectTime[0]) - Object.Variable(__SmoothCamera.ObjectTime[1])))"
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "SmoothCamera::SmoothCamera::IsDelayed"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "SmoothCamera::SmoothCamera::IsWaiting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "ObjectVariableClearChildren"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectTime"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariableClearChildren"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectX"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariableClearChildren"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ObjectY"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "SmoothCamera::SmoothCamera::IsWaiting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Once"
                      },
                      "parameters": []
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraDelayCatchUpSpeed",
                        "=",
                        "CameraExtraDelay / CameraDelayCatchUpDuration"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "disabled": true,
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "DebuggerTools::ConsoleLog"
                          },
                          "parameters": [
                            "\"Start to catch up\"",
                            "\"info\"",
                            "\"SmoothCamera\""
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "SmoothCamera::SmoothCamera::IsWaiting"
                      },
                      "parameters": [
                        "Object",
                        "Behavior",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "CameraExtraDelay",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "CameraExtraDelay",
                        "=",
                        "max(0, CameraExtraDelay -CameraDelayCatchUpSpeed * TimeDelta())"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "disabled": true,
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "DebuggerTools::ConsoleLog"
                          },
                          "parameters": [
                            "\"Catching up delay: \" + ToString(CameraExtraDelay)",
                            "\"info\"",
                            "\"SmoothCamera\""
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the camera following target is delayed from the object.",
              "fullName": "Camera is delayed",
              "functionType": "Condition",
              "name": "IsDelayed",
              "private": true,
              "sentence": "The camera of _PARAM0_ is delayed",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "Egal"
                      },
                      "parameters": [
                        "Object.Behavior::CurrentDelay()",
                        ">",
                        "0"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return the current camera delay.",
              "fullName": "Current delay",
              "functionType": "Expression",
              "name": "CurrentDelay",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "CameraDelay + CameraExtraDelay"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Check if the camera following is waiting at a reduced speed.",
              "fullName": "Camera is waiting",
              "functionType": "Condition",
              "name": "IsWaiting",
              "private": true,
              "sentence": "The camera of _PARAM0_ is waiting",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "NumberVariable"
                      },
                      "parameters": [
                        "WaitingEnd",
                        ">",
                        "TimeFromStart()"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnBoolean"
                      },
                      "parameters": [
                        "True"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Add a position to the history for forecasting. This is called 2 times in UpadteDelayedPosition.",
              "fullName": "Add forecast history position",
              "functionType": "Action",
              "group": "Private",
              "name": "AddForecastHistoryPosition",
              "private": true,
              "sentence": "Add the time:_PARAM2_ and position: _PARAM3_; _PARAM4_ to the forecast history of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ForecastHistoryDuration",
                            ">",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ForecastTime",
                            ">",
                            "0"
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ForecastHistoryTime",
                        "Time"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ForecastHistoryX",
                        "ObjectX"
                      ]
                    },
                    {
                      "type": {
                        "value": "ObjectVariablePushNumber"
                      },
                      "parameters": [
                        "Object",
                        "__SmoothCamera.ForecastHistoryY",
                        "ObjectY"
                      ]
                    }
                  ],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "Remove history entries that are too old to be useful.\nKeep at least 2 positions because no forecast can be done with less positions."
                    },
                    {
                      "infiniteLoopWarning": true,
                      "type": "BuiltinCommonInstructions::While",
                      "whileConditions": [
                        {
                          "type": {
                            "value": "Egal"
                          },
                          "parameters": [
                            "Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",
                            ">=",
                            "3"
                          ]
                        },
                        {
                          "type": {
                            "value": "VarObjet"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ForecastHistoryTime[0]",
                            "<",
                            "TimeFromStart() - CameraDelay - CameraExtraDelay - ForecastHistoryDuration"
                          ]
                        }
                      ],
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ForecastHistoryTime",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ForecastHistoryX",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "ObjectVariableRemoveAt"
                          },
                          "parameters": [
                            "Object",
                            "__SmoothCamera.ForecastHistoryY",
                            "0"
                          ]
                        }
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "Time",
                  "name": "Time",
                  "type": "expression"
                },
                {
                  "description": "Object X",
                  "name": "ObjectX",
                  "type": "expression"
                },
                {
                  "description": "Object Y",
                  "name": "ObjectY",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Update forecasted position. This is called in doStepPreEvents.",
              "fullName": "Update forecasted position",
              "functionType": "Action",
              "group": "Private",
              "name": "UpdateForecastedPosition",
              "private": true,
              "sentence": "Update forecasted position of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ForecastedX",
                        "=",
                        "DelayedCenterX"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ForecastedY",
                        "=",
                        "DelayedCenterY"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Simple linear regression\ny = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX\n\nNote than we could use only one position every N positions to reduce the process time,\nbut if we really need efficient process JavaScript and circular queues are a must."
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "Egal"
                      },
                      "parameters": [
                        "Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime)",
                        ">=",
                        "2"
                      ]
                    },
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ForecastHistoryDuration",
                            ">",
                            "0"
                          ]
                        },
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "ForecastTime",
                            ">",
                            "0"
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Mean X",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanX",
                                "=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "=",
                                "0"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Repeat",
                          "repeatExpression": "Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanX",
                                "+",
                                "Object.Variable(__SmoothCamera.ForecastHistoryX[Index])"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "+",
                                "1"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanX",
                                "/",
                                "Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Mean Y",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanY",
                                "=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "=",
                                "0"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Repeat",
                          "repeatExpression": "Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanY",
                                "+",
                                "Object.Variable(__SmoothCamera.ForecastHistoryY[Index])"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "+",
                                "1"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryMeanY",
                                "/",
                                "Object.VariableChildCount(__SmoothCamera.ForecastHistoryY)"
                              ]
                            }
                          ]
                        },
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Mean: \" + ToString(ForecastHistoryMeanX) + \" \" + ToString(ForecastHistoryMeanY)",
                                "",
                                ""
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Variance and Covariance",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "VarianceX = sum((X[i] - MeanX)²)\nVarianceY = sum((Y[i] - MeanY)²)\nCovariance = sum((X[i] - MeanX) * (Y[i] - MeanY))"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryVarianceX",
                                "=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryVarianceY",
                                "=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryCovariance",
                                "=",
                                "0"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "=",
                                "0"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Repeat",
                          "repeatExpression": "Object.VariableChildCount(__SmoothCamera.ForecastHistoryX)",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryVarianceX",
                                "+",
                                "pow(Object.Variable(__SmoothCamera.ForecastHistoryX[Index]) - ForecastHistoryMeanX, 2)"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryVarianceY",
                                "+",
                                "pow(Object.Variable(__SmoothCamera.ForecastHistoryY[Index]) - ForecastHistoryMeanY, 2)"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastHistoryCovariance",
                                "+",
                                "(Object.Variable(__SmoothCamera.ForecastHistoryX[Index]) - ForecastHistoryMeanX)\n*\n(Object.Variable(__SmoothCamera.ForecastHistoryY[Index]) - ForecastHistoryMeanY)"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "Index",
                                "+",
                                "1"
                              ]
                            }
                          ]
                        },
                        {
                          "disabled": true,
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "DebuggerTools::ConsoleLog"
                              },
                              "parameters": [
                                "\"Variances: \" + ToString(ForecastHistoryVarianceX) + \" \" + ToString(ForecastHistoryVarianceY) + \" \" + ToString(ForecastHistoryCovariance)",
                                "\"info\"",
                                "\"SmoothCamera\""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "Egal"
                              },
                              "parameters": [
                                "abs(ForecastHistoryVarianceX)",
                                "<",
                                "1"
                              ]
                            },
                            {
                              "type": {
                                "value": "Egal"
                              },
                              "parameters": [
                                "abs(ForecastHistoryVarianceY)",
                                "<",
                                "1"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastedX",
                                "=",
                                "DelayedCenterX"
                              ]
                            },
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "ForecastedY",
                                "=",
                                "DelayedCenterY"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "BuiltinCommonInstructions::Or"
                              },
                              "parameters": [],
                              "subInstructions": [
                                {
                                  "type": {
                                    "value": "Egal"
                                  },
                                  "parameters": [
                                    "abs(ForecastHistoryVarianceX)",
                                    ">=",
                                    "1"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "Egal"
                                  },
                                  "parameters": [
                                    "abs(ForecastHistoryVarianceY)",
                                    ">=",
                                    "1"
                                  ]
                                }
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "colorB": 228,
                              "colorG": 176,
                              "colorR": 74,
                              "creationTime": 0,
                              "name": "Linear function parameters",
                              "source": "",
                              "type": "BuiltinCommonInstructions::Group",
                              "events": [
                                {
                                  "type": "BuiltinCommonInstructions::Comment",
                                  "color": {
                                    "b": 109,
                                    "g": 230,
                                    "r": 255,
                                    "textB": 0,
                                    "textG": 0,
                                    "textR": 0
                                  },
                                  "comment": "y = A * x + B\n\nA = Covariance / VarianceX\nB = MeanY - A * MeanX"
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "Egal"
                                      },
                                      "parameters": [
                                        "abs(ForecastHistoryVarianceX)",
                                        ">=",
                                        "abs(ForecastHistoryVarianceY)"
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ForecastHistoryLinearA",
                                        "=",
                                        "ForecastHistoryCovariance / ForecastHistoryVarianceX"
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ForecastHistoryLinearB",
                                        "=",
                                        "ForecastHistoryMeanY - ForecastHistoryLinearA * ForecastHistoryMeanX"
                                      ]
                                    }
                                  ],
                                  "events": [
                                    {
                                      "disabled": true,
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "DebuggerTools::ConsoleLog"
                                          },
                                          "parameters": [
                                            "\"Linear: \" + ToString(ForecastHistoryLinearA) + \" \" + ToString(ForecastHistoryLinearB)",
                                            "\"info\"",
                                            "\"SmoothCamera\""
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "colorB": 228,
                                      "colorG": 176,
                                      "colorR": 74,
                                      "creationTime": 0,
                                      "name": "Projection",
                                      "source": "",
                                      "type": "BuiltinCommonInstructions::Group",
                                      "events": [
                                        {
                                          "type": "BuiltinCommonInstructions::Standard",
                                          "conditions": [],
                                          "actions": [
                                            {
                                              "type": {
                                                "value": "SmoothCamera::SmoothCamera::ProjectHistoryEnds"
                                              },
                                              "parameters": [
                                                "Object",
                                                "Behavior",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryX[0])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryY[0])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])",
                                                ""
                                              ]
                                            }
                                          ]
                                        }
                                      ],
                                      "parameters": []
                                    }
                                  ]
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Comment",
                                  "color": {
                                    "b": 109,
                                    "g": 230,
                                    "r": 255,
                                    "textB": 0,
                                    "textG": 0,
                                    "textR": 0
                                  },
                                  "comment": "Axis permutation to avoid a ratio between 2 numbers near 0."
                                },
                                {
                                  "type": "BuiltinCommonInstructions::Standard",
                                  "conditions": [
                                    {
                                      "type": {
                                        "value": "Egal"
                                      },
                                      "parameters": [
                                        "abs(ForecastHistoryVarianceX)",
                                        "<",
                                        "abs(ForecastHistoryVarianceY)"
                                      ]
                                    }
                                  ],
                                  "actions": [
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ForecastHistoryLinearA",
                                        "=",
                                        "ForecastHistoryCovariance / ForecastHistoryVarianceY"
                                      ]
                                    },
                                    {
                                      "type": {
                                        "value": "SetNumberVariable"
                                      },
                                      "parameters": [
                                        "ForecastHistoryLinearB",
                                        "=",
                                        "ForecastHistoryMeanX - ForecastHistoryLinearA * ForecastHistoryMeanY"
                                      ]
                                    }
                                  ],
                                  "events": [
                                    {
                                      "disabled": true,
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "DebuggerTools::ConsoleLog"
                                          },
                                          "parameters": [
                                            "\"Linear: \" + ToString(ForecastHistoryLinearA) + \" \" + ToString(ForecastHistoryLinearB)",
                                            "\"info\"",
                                            "\"SmoothCamera\""
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "colorB": 228,
                                      "colorG": 176,
                                      "colorR": 74,
                                      "creationTime": 0,
                                      "name": "Projection",
                                      "source": "",
                                      "type": "BuiltinCommonInstructions::Group",
                                      "events": [
                                        {
                                          "type": "BuiltinCommonInstructions::Standard",
                                          "conditions": [],
                                          "actions": [
                                            {
                                              "type": {
                                                "value": "SmoothCamera::SmoothCamera::ProjectHistoryEnds"
                                              },
                                              "parameters": [
                                                "Object",
                                                "Behavior",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryY[0])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryX[0])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryY[Object.VariableChildCount(__SmoothCamera.ForecastHistoryY) - 1])",
                                                "Object.Variable(__SmoothCamera.ForecastHistoryX[Object.VariableChildCount(__SmoothCamera.ForecastHistoryX) - 1])",
                                                ""
                                              ]
                                            }
                                          ]
                                        },
                                        {
                                          "type": "BuiltinCommonInstructions::Comment",
                                          "color": {
                                            "b": 109,
                                            "g": 230,
                                            "r": 255,
                                            "textB": 0,
                                            "textG": 0,
                                            "textR": 0
                                          },
                                          "comment": "Permute back axis"
                                        },
                                        {
                                          "type": "BuiltinCommonInstructions::Standard",
                                          "conditions": [],
                                          "actions": [
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "Index",
                                                "=",
                                                "ProjectedOldestX"
                                              ]
                                            },
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "ProjectedOldestX",
                                                "=",
                                                "ProjectedOldestY"
                                              ]
                                            },
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "ProjectedOldestY",
                                                "=",
                                                "Index"
                                              ]
                                            }
                                          ]
                                        },
                                        {
                                          "type": "BuiltinCommonInstructions::Standard",
                                          "conditions": [],
                                          "actions": [
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "Index",
                                                "=",
                                                "ProjectedNewestX"
                                              ]
                                            },
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "ProjectedNewestX",
                                                "=",
                                                "ProjectedNewestY"
                                              ]
                                            },
                                            {
                                              "type": {
                                                "value": "SetNumberVariable"
                                              },
                                              "parameters": [
                                                "ProjectedNewestY",
                                                "=",
                                                "Index"
                                              ]
                                            }
                                          ]
                                        }
                                      ],
                                      "parameters": []
                                    },
                                    {
                                      "disabled": true,
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "DebuggerTools::ConsoleLog"
                                          },
                                          "parameters": [
                                            "\"Oldest: \" + ToString(ProjectedOldestX) + \" \" + ToString(ProjectedOldestY)",
                                            "\"info\"",
                                            "\"SmoothCamera\""
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "disabled": true,
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "DebuggerTools::ConsoleLog"
                                          },
                                          "parameters": [
                                            "\"Newest: \" + ToString(ProjectedNewestX) + \" \" + ToString(ProjectedNewestY)",
                                            "\"info\"",
                                            "\"SmoothCamera\""
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "colorB": 228,
                                  "colorG": 176,
                                  "colorR": 74,
                                  "creationTime": 0,
                                  "name": "Forecasted position",
                                  "source": "",
                                  "type": "BuiltinCommonInstructions::Group",
                                  "events": [
                                    {
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "ForecastedX",
                                            "=",
                                            "ProjectedNewestX + ( ProjectedNewestX - ProjectedOldestX) * Object.Behavior::ForecastTimeRatio()"
                                          ]
                                        },
                                        {
                                          "type": {
                                            "value": "SetNumberVariable"
                                          },
                                          "parameters": [
                                            "ForecastedY",
                                            "=",
                                            "ProjectedNewestY + ( ProjectedNewestY - ProjectedOldestY) * Object.Behavior::ForecastTimeRatio()"
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "disabled": true,
                                      "type": "BuiltinCommonInstructions::Standard",
                                      "conditions": [],
                                      "actions": [
                                        {
                                          "type": {
                                            "value": "DebuggerTools::ConsoleLog"
                                          },
                                          "parameters": [
                                            "\"Forecasted: \" + ToString(ForecastedX) + \" \" + ToString(ForecastedY)",
                                            "\"info\"",
                                            "\"SmoothCamera\""
                                          ]
                                        }
                                      ]
                                    }
                                  ],
                                  "parameters": []
                                }
                              ],
                              "parameters": []
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Project history ends position to have the vector on the line from linear regression. This function is only called by UpdateForecastedPosition.",
              "fullName": "Project history ends",
              "functionType": "Action",
              "group": "Private",
              "name": "ProjectHistoryEnds",
              "private": true,
              "sentence": "Project history oldest: _PARAM2_;_PARAM3_ and newest position: _PARAM4_;_PARAM5_ of _PARAM0_",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "Perpendicular line:\npA = -1/a; \npB = -pA * x + y\n\nIntersection:\n/ ProjectedY = a * ProjectedX + b\n\\ ProjectedY = pA * ProjectedX + b\n\nSolution that is cleaned out from indeterminism (like 0 / 0 or infinity / infinity):\nProjectedX= (x + (y - b) * a) / (a² + 1)\nProjectedY = y + (x * a - y + b) / (a² + 1)"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ProjectedNewestX",
                        "=",
                        "(NewestX + (NewestY - ForecastHistoryLinearB) * ForecastHistoryLinearA) / (1 + pow(ForecastHistoryLinearA, 2))"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ProjectedNewestY",
                        "=",
                        "NewestY + (NewestX * ForecastHistoryLinearA - NewestY \n+ ForecastHistoryLinearB) / (1 + pow(ForecastHistoryLinearA, 2))"
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ProjectedOldestX",
                        "=",
                        "(OldestX + (OldestY - ForecastHistoryLinearB) * ForecastHistoryLinearA) / (1 + pow(ForecastHistoryLinearA, 2))"
                      ]
                    },
                    {
                      "type": {
                        "value": "SetNumberVariable"
                      },
                      "parameters": [
                        "ProjectedOldestY",
                        "=",
                        "OldestY + (OldestX * ForecastHistoryLinearA - OldestY \n+ ForecastHistoryLinearB) / (1 + pow(ForecastHistoryLinearA, 2))"
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                },
                {
                  "description": "OldestX",
                  "name": "OldestX",
                  "type": "expression"
                },
                {
                  "description": "OldestY",
                  "name": "OldestY",
                  "type": "expression"
                },
                {
                  "description": "Newest X",
                  "name": "NewestX",
                  "type": "expression"
                },
                {
                  "description": "Newest Y",
                  "name": "NewestY",
                  "type": "expression"
                }
              ],
              "objectGroups": []
            },
            {
              "description": "Return the ratio between forecast time and the duration of the history. This function is only called by UpdateForecastedPosition.",
              "fullName": "Forecast time ratio",
              "functionType": "Expression",
              "group": "Private",
              "name": "ForecastTimeRatio",
              "private": true,
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [],
                  "actions": [
                    {
                      "type": {
                        "value": "SetReturnNumber"
                      },
                      "parameters": [
                        "- ForecastTime / (Object.Variable(__SmoothCamera.ForecastHistoryTime[0]) - Object.Variable(__SmoothCamera.ForecastHistoryTime[Object.VariableChildCount(__SmoothCamera.ForecastHistoryTime) - 1]))"
                      ]
                    }
                  ]
                }
              ],
              "expressionType": {
                "type": "expression"
              },
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "0.9",
              "type": "Number",
              "label": "Leftward catch-up speed (in ratio per second)",
              "group": "Catch-up speed",
              "name": "LeftwardSpeed"
            },
            {
              "value": "0.9",
              "type": "Number",
              "label": "Rightward catch-up speed (in ratio per second)",
              "group": "Catch-up speed",
              "name": "RightwardSpeed"
            },
            {
              "value": "0.9",
              "type": "Number",
              "label": "Upward catch-up speed (in ratio per second)",
              "group": "Catch-up speed",
              "name": "UpwardSpeed"
            },
            {
              "value": "0.9",
              "type": "Number",
              "label": "Downward catch-up speed (in ratio per second)",
              "group": "Catch-up speed",
              "name": "DownwardSpeed"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "Follow on X axis",
              "name": "FollowOnX"
            },
            {
              "value": "true",
              "type": "Boolean",
              "label": "Follow on Y axis",
              "name": "FollowOnY"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area left border",
              "group": "Position",
              "advanced": true,
              "name": "FollowFreeAreaLeft"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area right border",
              "group": "Position",
              "advanced": true,
              "name": "FollowFreeAreaRight"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area top border",
              "group": "Position",
              "advanced": true,
              "name": "FollowFreeAreaTop"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area bottom border",
              "group": "Position",
              "advanced": true,
              "name": "FollowFreeAreaBottom"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Camera offset X",
              "group": "Position",
              "advanced": true,
              "name": "CameraOffsetX"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Camera offset Y",
              "group": "Position",
              "advanced": true,
              "name": "CameraOffsetY"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Camera delay",
              "group": "Timing",
              "deprecated": true,
              "name": "CameraDelay"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Forecast time",
              "group": "Timing",
              "deprecated": true,
              "name": "ForecastTime"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Second",
              "label": "Forecast history duration",
              "group": "Timing",
              "deprecated": true,
              "name": "ForecastHistoryDuration"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "LogLeftwardSpeed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "LogRightwardSpeed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "LogDownwardSpeed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "LogUpwardSpeed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "DelayedCenterX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "DelayedCenterY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryMeanX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryMeanY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryVarianceX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryCovariance"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryLinearA"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryLinearB"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastedX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastedY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ProjectedNewestX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ProjectedNewestY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ProjectedOldestX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ProjectedOldestY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "ForecastHistoryVarianceY"
            },
            {
              "value": "",
              "type": "Number",
              "label": "Index (local variable)",
              "hidden": true,
              "name": "Index"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "CameraDelayCatchUpSpeed"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "CameraExtraDelay"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "WaitingSpeedXMax"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "WaitingSpeedYMax"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "WaitingEnd"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "CameraDelayCatchUpDuration"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Leftward maximum speed",
              "group": "Maximum speed",
              "advanced": true,
              "name": "LeftwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Rightward maximum speed",
              "group": "Maximum speed",
              "advanced": true,
              "name": "RightwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Upward maximum speed",
              "group": "Maximum speed",
              "advanced": true,
              "name": "UpwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Downward maximum speed",
              "group": "Maximum speed",
              "advanced": true,
              "name": "DownwardSpeedMax"
            },
            {
              "value": "",
              "type": "Number",
              "label": "OldX (local variable)",
              "hidden": true,
              "name": "OldX"
            },
            {
              "value": "",
              "type": "Number",
              "label": "OldY (local variable)",
              "hidden": true,
              "name": "OldY"
            },
            {
              "value": "",
              "type": "Boolean",
              "label": "",
              "hidden": true,
              "name": "IsCalledManually"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "folderName": "Catch-up speed",
                "children": [
                  {
                    "propertyName": "LeftwardSpeed"
                  },
                  {
                    "propertyName": "RightwardSpeed"
                  },
                  {
                    "propertyName": "UpwardSpeed"
                  },
                  {
                    "propertyName": "DownwardSpeed"
                  }
                ]
              },
              {
                "propertyName": "FollowOnX"
              },
              {
                "propertyName": "FollowOnY"
              },
              {
                "folderName": "Position",
                "children": [
                  {
                    "propertyName": "FollowFreeAreaLeft"
                  },
                  {
                    "propertyName": "FollowFreeAreaRight"
                  },
                  {
                    "propertyName": "FollowFreeAreaTop"
                  },
                  {
                    "propertyName": "FollowFreeAreaBottom"
                  },
                  {
                    "propertyName": "CameraOffsetX"
                  },
                  {
                    "propertyName": "CameraOffsetY"
                  }
                ]
              },
              {
                "folderName": "Timing",
                "children": [
                  {
                    "propertyName": "CameraDelay"
                  },
                  {
                    "propertyName": "ForecastTime"
                  },
                  {
                    "propertyName": "ForecastHistoryDuration"
                  }
                ]
              },
              {
                "propertyName": "LogLeftwardSpeed"
              },
              {
                "propertyName": "LogRightwardSpeed"
              },
              {
                "propertyName": "LogDownwardSpeed"
              },
              {
                "propertyName": "LogUpwardSpeed"
              },
              {
                "propertyName": "DelayedCenterX"
              },
              {
                "propertyName": "DelayedCenterY"
              },
              {
                "propertyName": "ForecastHistoryMeanX"
              },
              {
                "propertyName": "ForecastHistoryMeanY"
              },
              {
                "propertyName": "ForecastHistoryVarianceX"
              },
              {
                "propertyName": "ForecastHistoryCovariance"
              },
              {
                "propertyName": "ForecastHistoryLinearA"
              },
              {
                "propertyName": "ForecastHistoryLinearB"
              },
              {
                "propertyName": "ForecastedX"
              },
              {
                "propertyName": "ForecastedY"
              },
              {
                "propertyName": "ProjectedNewestX"
              },
              {
                "propertyName": "ProjectedNewestY"
              },
              {
                "propertyName": "ProjectedOldestX"
              },
              {
                "propertyName": "ProjectedOldestY"
              },
              {
                "propertyName": "ForecastHistoryVarianceY"
              },
              {
                "propertyName": "Index"
              },
              {
                "propertyName": "CameraDelayCatchUpSpeed"
              },
              {
                "propertyName": "CameraExtraDelay"
              },
              {
                "propertyName": "WaitingSpeedXMax"
              },
              {
                "propertyName": "WaitingSpeedYMax"
              },
              {
                "propertyName": "WaitingEnd"
              },
              {
                "propertyName": "CameraDelayCatchUpDuration"
              },
              {
                "folderName": "Maximum speed",
                "children": [
                  {
                    "propertyName": "LeftwardSpeedMax"
                  },
                  {
                    "propertyName": "RightwardSpeedMax"
                  },
                  {
                    "propertyName": "UpwardSpeedMax"
                  },
                  {
                    "propertyName": "DownwardSpeedMax"
                  }
                ]
              },
              {
                "propertyName": "OldX"
              },
              {
                "propertyName": "OldY"
              },
              {
                "propertyName": "IsCalledManually"
              }
            ]
          }
        },
        {
          "description": "Smoothly scroll to follow a character and stabilize the camera when jumping.",
          "fullName": "Smooth platformer camera",
          "name": "SmoothPlatformerCamera",
          "objectType": "",
          "quickCustomizationVisibility": "hidden",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::IsJumping"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    },
                    {
                      "type": {
                        "inverted": true,
                        "value": "PlatformBehavior::IsFalling"
                      },
                      "parameters": [
                        "Object",
                        "PlatformerCharacter"
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorFollowFreeAreaTop",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorFollowFreeAreaBottom",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorUpwardSpeed",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorDownwardSpeed",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorUpwardSpeedMax",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "FloorDownwardSpeedMax",
                        ""
                      ]
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BuiltinCommonInstructions::Or"
                      },
                      "parameters": [],
                      "subInstructions": [
                        {
                          "type": {
                            "value": "PlatformBehavior::IsJumping"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        },
                        {
                          "type": {
                            "value": "PlatformBehavior::IsFalling"
                          },
                          "parameters": [
                            "Object",
                            "PlatformerCharacter"
                          ]
                        }
                      ]
                    }
                  ],
                  "actions": [
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaBottom"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirFollowFreeAreaTop",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetFollowFreeAreaTop"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirFollowFreeAreaBottom",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirUpwardSpeed",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeed"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirDownwardSpeed",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetUpwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirUpwardSpeedMax",
                        ""
                      ]
                    },
                    {
                      "type": {
                        "value": "SmoothCamera::SmoothCamera::SetDownwardSpeedMax"
                      },
                      "parameters": [
                        "Object",
                        "SmoothCamera",
                        "AirDownwardSpeedMax",
                        ""
                      ]
                    }
                  ]
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "SmoothCamera::SmoothPlatformerCamera",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Platformer character behavior",
              "extraInformation": [
                "PlatformBehavior::PlatformerObjectBehavior"
              ],
              "choices": [],
              "name": "PlatformerCharacter"
            },
            {
              "value": "",
              "type": "Behavior",
              "label": "Smooth camera behavior",
              "extraInformation": [
                "SmoothCamera::SmoothCamera"
              ],
              "choices": [],
              "name": "SmoothCamera"
            },
            {
              "value": "",
              "type": "Number",
              "label": "",
              "hidden": true,
              "name": "JumpOriginY"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area top in the air",
              "group": "Position",
              "name": "AirFollowFreeAreaTop"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area bottom in the air",
              "group": "Position",
              "name": "AirFollowFreeAreaBottom"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area top on the floor",
              "group": "Position",
              "name": "FloorFollowFreeAreaTop"
            },
            {
              "value": "0",
              "type": "Number",
              "unit": "Pixel",
              "label": "Follow free area bottom on the floor",
              "group": "Position",
              "name": "FloorFollowFreeAreaBottom"
            },
            {
              "value": "0.95",
              "type": "Number",
              "label": "Upward speed in the air (in ratio per second)",
              "group": "Catch-up speed",
              "name": "AirUpwardSpeed"
            },
            {
              "value": "0.95",
              "type": "Number",
              "label": "Downward speed in the air (in ratio per second)",
              "group": "Catch-up speed",
              "name": "AirDownwardSpeed"
            },
            {
              "value": "0.9",
              "type": "Number",
              "label": "Upward speed on the floor (in ratio per second)",
              "group": "Catch-up speed",
              "name": "FloorUpwardSpeed"
            },
            {
              "value": "0.9",
              "type": "Number",
              "label": "Downward speed on the floor (in ratio per second)",
              "group": "Catch-up speed",
              "name": "FloorDownwardSpeed"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Upward maximum speed in the air",
              "group": "Maximum speed",
              "name": "AirUpwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Downward maximum speed in the air",
              "group": "Maximum speed",
              "name": "AirDownwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Upward maximum speed on the floor",
              "group": "Maximum speed",
              "name": "FloorUpwardSpeedMax"
            },
            {
              "value": "9000",
              "type": "Number",
              "unit": "PixelSpeed",
              "label": "Downward maximum speed on the floor",
              "group": "Maximum speed",
              "name": "FloorDownwardSpeedMax"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "PlatformerCharacter"
              },
              {
                "propertyName": "SmoothCamera"
              },
              {
                "propertyName": "JumpOriginY"
              },
              {
                "folderName": "Position",
                "children": [
                  {
                    "propertyName": "AirFollowFreeAreaTop"
                  },
                  {
                    "propertyName": "AirFollowFreeAreaBottom"
                  },
                  {
                    "propertyName": "FloorFollowFreeAreaTop"
                  },
                  {
                    "propertyName": "FloorFollowFreeAreaBottom"
                  }
                ]
              },
              {
                "folderName": "Catch-up speed",
                "children": [
                  {
                    "propertyName": "AirUpwardSpeed"
                  },
                  {
                    "propertyName": "AirDownwardSpeed"
                  },
                  {
                    "propertyName": "FloorUpwardSpeed"
                  },
                  {
                    "propertyName": "FloorDownwardSpeed"
                  }
                ]
              },
              {
                "folderName": "Maximum speed",
                "children": [
                  {
                    "propertyName": "AirUpwardSpeedMax"
                  },
                  {
                    "propertyName": "AirDownwardSpeedMax"
                  },
                  {
                    "propertyName": "FloorUpwardSpeedMax"
                  },
                  {
                    "propertyName": "FloorDownwardSpeedMax"
                  }
                ]
              }
            ]
          }
        }
      ],
      "eventsBasedObjects": []
    },
    {
      "author": "Gruk",
      "category": "Movement",
      "extensionNamespace": "",
      "fullName": "Timed Back and Forth Movement",
      "gdevelopVersion": ">=5.5.222",
      "helpPath": "",
      "iconUrl": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXJlcGVhdCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0xNywxN0g3VjE0TDMsMThMNywyMlYxOUgxOVYxM0gxN003LDdIMTdWMTBMMjEsNkwxNywyVjVINVYxMUg3VjdaIiAvPjwvc3ZnPg==",
      "name": "TimedBackAndForthMovement",
      "previewIconUrl": "https://resources.gdevelop-app.com/assets/Icons/repeat.svg",
      "shortDescription": "This behavior moves objects back and forth for a chosen time or distance, vertically or horizontally.",
      "version": "1.1.0",
      "description": [
        "This behavior moves an object (like an enemy) for a chosen time or distance, then flips it and starts over, moving the object back and forth, vertically or horizontally.",
        "",
        "Note: animations must be facing **Right** (for horizontal) or **Down** (for vertical) direction."
      ],
      "origin": {
        "identifier": "TimedBackAndForthMovement",
        "name": "gdevelop-extension-store"
      },
      "tags": [
        "enemy",
        "movement",
        "back",
        "forth",
        "up",
        "down",
        "left",
        "right"
      ],
      "authorIds": [
        "9hfK9vapfgUot6y3ARuuRkPBWPJ2"
      ],
      "dependencies": [],
      "globalVariables": [],
      "sceneVariables": [],
      "eventsFunctions": [],
      "eventsBasedBehaviors": [
        {
          "description": "Move an object (e.g. enemy) for a chosen time or distance, then flip it and start over.",
          "fullName": "Timed Back and Forth Movement",
          "name": "TimedBackAndForthMirroredMovement",
          "objectType": "",
          "eventsFunctions": [
            {
              "fullName": "",
              "functionType": "Action",
              "name": "doStepPreEvents",
              "sentence": "",
              "events": [
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "vertical mode"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Vertical",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "initialize"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "StartPosition",
                            "=",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "ResetObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"BacknForth_timeout\""
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "StartPosition",
                            "=",
                            "round(Object.Y())"
                          ]
                        }
                      ]
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Flips",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "distance has been reached, flip it"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PosY"
                              },
                              "parameters": [
                                "Object",
                                "<",
                                "StartPosition - Distance"
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlippedY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "StartPosition",
                                "=",
                                "round(Object.Y())"
                              ]
                            },
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"BacknForth_timeout\""
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlipY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable",
                                "no"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PosY"
                              },
                              "parameters": [
                                "Object",
                                ">",
                                "StartPosition + Distance"
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FlippableCapability::FlippableBehavior::FlippedY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "StartPosition",
                                "=",
                                "round(Object.Y())"
                              ]
                            },
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"BacknForth_timeout\""
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlipY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable",
                                "yes"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Timeout",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "max time has been reached, flip it"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "Timecheck",
                                "!=",
                                "Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "LastPosition",
                                "=",
                                "round(Object.Y())"
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "ObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\"",
                                    "Timeout"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlippedY"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "StartPosition",
                                    "=",
                                    "round(Object.Y())"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "ResetObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlipY"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable",
                                    "no"
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "ObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\"",
                                    "Timeout"
                                  ]
                                },
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "FlippableCapability::FlippableBehavior::FlippedY"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "StartPosition",
                                    "=",
                                    "round(Object.Y())"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "ResetObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\""
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlipY"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable",
                                    "yes"
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Movement",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "FlippableCapability::FlippableBehavior::FlippedY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AddForceXY"
                              },
                              "parameters": [
                                "Object",
                                "0",
                                "Speed",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlippedY"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AddForceXY"
                              },
                              "parameters": [
                                "Object",
                                "0",
                                "- \nSpeed",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "LastPosition",
                                "=",
                                "round(Object.Y())"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    }
                  ]
                },
                {
                  "type": "BuiltinCommonInstructions::Comment",
                  "color": {
                    "b": 109,
                    "g": 230,
                    "r": 255,
                    "textB": 0,
                    "textG": 0,
                    "textR": 0
                  },
                  "comment": "horizontal mode"
                },
                {
                  "type": "BuiltinCommonInstructions::Standard",
                  "conditions": [
                    {
                      "type": {
                        "inverted": true,
                        "value": "BooleanVariable"
                      },
                      "parameters": [
                        "Vertical",
                        "True",
                        ""
                      ]
                    }
                  ],
                  "actions": [],
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "initialize"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [
                        {
                          "type": {
                            "value": "NumberVariable"
                          },
                          "parameters": [
                            "StartPosition",
                            "=",
                            "0"
                          ]
                        }
                      ],
                      "actions": [
                        {
                          "type": {
                            "value": "ResetObjectTimer"
                          },
                          "parameters": [
                            "Object",
                            "\"BacknForth_timeout\""
                          ]
                        },
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "StartPosition",
                            "=",
                            "round(Object.X())"
                          ]
                        }
                      ]
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Flips",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "distance has been reached, flip it"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PosX"
                              },
                              "parameters": [
                                "Object",
                                ">",
                                "StartPosition + Distance"
                              ]
                            },
                            {
                              "type": {
                                "inverted": true,
                                "value": "FlippableCapability::FlippableBehavior::FlippedX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "StartPosition",
                                "=",
                                "round(Object.X())"
                              ]
                            },
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"BacknForth_timeout\""
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlipX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable",
                                "yes"
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "PosX"
                              },
                              "parameters": [
                                "Object",
                                "<",
                                "StartPosition - Distance"
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlippedX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "StartPosition",
                                "=",
                                "round(Object.X())"
                              ]
                            },
                            {
                              "type": {
                                "value": "ResetObjectTimer"
                              },
                              "parameters": [
                                "Object",
                                "\"BacknForth_timeout\""
                              ]
                            },
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlipX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable",
                                "no"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Timeout",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Comment",
                          "color": {
                            "b": 109,
                            "g": 230,
                            "r": 255,
                            "textB": 0,
                            "textG": 0,
                            "textR": 0
                          },
                          "comment": "max time has been reached, flip it"
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "Timecheck",
                                "!=",
                                "Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"
                              ]
                            },
                            {
                              "type": {
                                "value": "NumberVariable"
                              },
                              "parameters": [
                                "LastPosition",
                                "=",
                                "round(Object.X())"
                              ]
                            }
                          ],
                          "actions": [],
                          "events": [
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "ObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\"",
                                    "Timeout"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlippedX"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlipX"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable",
                                    "no"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "StartPosition",
                                    "=",
                                    "round(Object.X())"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "ResetObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\""
                                  ]
                                }
                              ]
                            },
                            {
                              "type": "BuiltinCommonInstructions::Standard",
                              "conditions": [
                                {
                                  "type": {
                                    "value": "ObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\"",
                                    "Timeout"
                                  ]
                                },
                                {
                                  "type": {
                                    "inverted": true,
                                    "value": "FlippableCapability::FlippableBehavior::FlippedX"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable"
                                  ]
                                }
                              ],
                              "actions": [
                                {
                                  "type": {
                                    "value": "FlippableCapability::FlippableBehavior::FlipX"
                                  },
                                  "parameters": [
                                    "Object",
                                    "Flippable",
                                    "yes"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "SetNumberVariable"
                                  },
                                  "parameters": [
                                    "StartPosition",
                                    "=",
                                    "round(Object.X())"
                                  ]
                                },
                                {
                                  "type": {
                                    "value": "ResetObjectTimer"
                                  },
                                  "parameters": [
                                    "Object",
                                    "\"BacknForth_timeout\""
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    },
                    {
                      "colorB": 228,
                      "colorG": 176,
                      "colorR": 74,
                      "creationTime": 0,
                      "name": "Movement",
                      "source": "",
                      "type": "BuiltinCommonInstructions::Group",
                      "events": [
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "inverted": true,
                                "value": "FlippableCapability::FlippableBehavior::FlippedX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AddForceXY"
                              },
                              "parameters": [
                                "Object",
                                "Speed",
                                "0",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [
                            {
                              "type": {
                                "value": "FlippableCapability::FlippableBehavior::FlippedX"
                              },
                              "parameters": [
                                "Object",
                                "Flippable"
                              ]
                            }
                          ],
                          "actions": [
                            {
                              "type": {
                                "value": "AddForceXY"
                              },
                              "parameters": [
                                "Object",
                                "- \nSpeed",
                                "0",
                                ""
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BuiltinCommonInstructions::Standard",
                          "conditions": [],
                          "actions": [
                            {
                              "type": {
                                "value": "SetNumberVariable"
                              },
                              "parameters": [
                                "LastPosition",
                                "=",
                                "round(Object.X())"
                              ]
                            }
                          ]
                        }
                      ],
                      "parameters": []
                    }
                  ]
                },
                {
                  "colorB": 228,
                  "colorG": 176,
                  "colorR": 74,
                  "creationTime": 0,
                  "name": "TimeCheck",
                  "source": "",
                  "type": "BuiltinCommonInstructions::Group",
                  "events": [
                    {
                      "type": "BuiltinCommonInstructions::Comment",
                      "color": {
                        "b": 109,
                        "g": 230,
                        "r": 255,
                        "textB": 0,
                        "textG": 0,
                        "textR": 0
                      },
                      "comment": "store current elapsed time (to make sure time has passed)"
                    },
                    {
                      "type": "BuiltinCommonInstructions::Standard",
                      "conditions": [],
                      "actions": [
                        {
                          "type": {
                            "value": "SetNumberVariable"
                          },
                          "parameters": [
                            "Timecheck",
                            "=",
                            "Object.ObjectTimerElapsedTime(\"BacknForth_timeout\")"
                          ]
                        }
                      ]
                    }
                  ],
                  "parameters": []
                }
              ],
              "parameters": [
                {
                  "description": "Object",
                  "name": "Object",
                  "type": "object"
                },
                {
                  "description": "Behavior",
                  "name": "Behavior",
                  "supplementaryInformation": "TimedBackAndForthMovement::TimedBackAndForthMirroredMovement",
                  "type": "behavior"
                }
              ],
              "objectGroups": []
            }
          ],
          "propertyDescriptors": [
            {
              "value": "",
              "type": "Behavior",
              "label": "Flippable capability",
              "extraInformation": [
                "FlippableCapability::FlippableBehavior"
              ],
              "choices": [],
              "name": "Flippable"
            },
            {
              "value": "false",
              "type": "Boolean",
              "label": "Move the object vertically (instead of horizontally)",
              "name": "Vertical"
            },
            {
              "value": "100",
              "type": "Number",
              "label": "Moving speed (in pixel/s)",
              "name": "Speed"
            },
            {
              "value": "200",
              "type": "Number",
              "label": "Moving distance (in pixels)",
              "name": "Distance"
            },
            {
              "value": "2",
              "type": "Number",
              "label": "Moving maximum time (in seconds)",
              "name": "Timeout"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "Distance start point",
              "hidden": true,
              "name": "StartPosition"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "position of the sprite at the previous frame",
              "hidden": true,
              "name": "LastPosition"
            },
            {
              "value": "0",
              "type": "Number",
              "label": "check that time has elapsed",
              "hidden": true,
              "name": "Timecheck"
            }
          ],
          "propertiesFolderStructure": {
            "folderName": "__ROOT",
            "children": [
              {
                "propertyName": "Flippable"
              },
              {
                "propertyName": "Vertical"
              },
              {
                "propertyName": "Speed"
              },
              {
                "propertyName": "Distance"
              },
              {
                "propertyName": "Timeout"
              },
              {
                "propertyName": "StartPosition"
              },
              {
                "propertyName": "LastPosition"
              },
              {
                "propertyName": "Timecheck"
              }
            ]
          }
        }
      ],
      "eventsBasedObjects": []
    }
  ],
  "externalLayouts": []
}