From 78e96207282c8164e26c591a92e40a749b393d5e Mon Sep 17 00:00:00 2001 From: Jesse Howard Date: Sun, 2 Aug 2026 21:56:52 -0400 Subject: [PATCH] Latest build --- MiniDungeonMultiplayerDev.json | 3141 ++++++++++++++++++++++- MiniDungeonMultiplayerDev.json.autosave | 2 +- assets/01Idle.png | Bin 0 -> 411 bytes assets/01Idle10.png | Bin 0 -> 366 bytes assets/01Idle11.png | Bin 0 -> 383 bytes assets/01Idle12.png | Bin 0 -> 397 bytes assets/01Idle2.png | Bin 0 -> 405 bytes assets/01Idle3.png | Bin 0 -> 392 bytes assets/01Idle4.png | Bin 0 -> 367 bytes assets/01Idle5.png | Bin 0 -> 383 bytes assets/01Idle6.png | Bin 0 -> 397 bytes assets/01Idle7.png | Bin 0 -> 411 bytes assets/01Idle8.png | Bin 0 -> 405 bytes assets/01Idle9.png | Bin 0 -> 392 bytes assets/02Attack.png | Bin 0 -> 422 bytes assets/02Attack10.png | Bin 0 -> 409 bytes assets/02Attack11.png | Bin 0 -> 446 bytes assets/02Attack12.png | Bin 0 -> 411 bytes assets/02Attack13.png | Bin 0 -> 578 bytes assets/02Attack14.png | Bin 0 -> 565 bytes assets/02Attack15.png | Bin 0 -> 499 bytes assets/02Attack16.png | Bin 0 -> 482 bytes assets/02Attack17.png | Bin 0 -> 479 bytes assets/02Attack18.png | Bin 0 -> 479 bytes assets/02Attack19.png | Bin 0 -> 494 bytes assets/02Attack2.png | Bin 0 -> 458 bytes assets/02Attack20.png | Bin 0 -> 525 bytes assets/02Attack21.png | Bin 0 -> 560 bytes assets/02Attack22.png | Bin 0 -> 566 bytes assets/02Attack3.png | Bin 0 -> 456 bytes assets/02Attack4.png | Bin 0 -> 439 bytes assets/02Attack5.png | Bin 0 -> 434 bytes assets/02Attack6.png | Bin 0 -> 407 bytes assets/02Attack7.png | Bin 0 -> 410 bytes assets/02Attack8.png | Bin 0 -> 422 bytes assets/02Attack9.png | Bin 0 -> 421 bytes assets/02Idle.png | Bin 0 -> 578 bytes assets/02Idle10.png | Bin 0 -> 529 bytes assets/02Idle11.png | Bin 0 -> 544 bytes assets/02Idle12.png | Bin 0 -> 555 bytes assets/02Idle2.png | Bin 0 -> 568 bytes assets/02Idle3.png | Bin 0 -> 551 bytes assets/02Idle4.png | Bin 0 -> 533 bytes assets/02Idle5.png | Bin 0 -> 544 bytes assets/02Idle6.png | Bin 0 -> 555 bytes assets/02Idle7.png | Bin 0 -> 578 bytes assets/02Idle8.png | Bin 0 -> 568 bytes assets/02Idle9.png | Bin 0 -> 551 bytes assets/02Walk.png | Bin 0 -> 411 bytes assets/02Walk10.png | Bin 0 -> 560 bytes assets/02Walk11.png | Bin 0 -> 584 bytes assets/02Walk12.png | Bin 0 -> 601 bytes assets/02Walk13.png | Bin 0 -> 570 bytes assets/02Walk14.png | Bin 0 -> 550 bytes assets/02Walk15.png | Bin 0 -> 565 bytes assets/02Walk2.png | Bin 0 -> 413 bytes assets/02Walk3.png | Bin 0 -> 395 bytes assets/02Walk4.png | Bin 0 -> 393 bytes assets/02Walk5.png | Bin 0 -> 400 bytes assets/02Walk6.png | Bin 0 -> 579 bytes assets/02Walk7.png | Bin 0 -> 577 bytes assets/02Walk8.png | Bin 0 -> 581 bytes assets/02Walk9.png | Bin 0 -> 555 bytes assets/03Attack.png | Bin 0 -> 539 bytes assets/03Attack2.png | Bin 0 -> 568 bytes assets/03Attack3.png | Bin 0 -> 539 bytes assets/03Attack4.png | Bin 0 -> 531 bytes assets/03Attack5.png | Bin 0 -> 490 bytes assets/03Attack6.png | Bin 0 -> 539 bytes 69 files changed, 3138 insertions(+), 5 deletions(-) create mode 100644 assets/01Idle.png create mode 100644 assets/01Idle10.png create mode 100644 assets/01Idle11.png create mode 100644 assets/01Idle12.png create mode 100644 assets/01Idle2.png create mode 100644 assets/01Idle3.png create mode 100644 assets/01Idle4.png create mode 100644 assets/01Idle5.png create mode 100644 assets/01Idle6.png create mode 100644 assets/01Idle7.png create mode 100644 assets/01Idle8.png create mode 100644 assets/01Idle9.png create mode 100644 assets/02Attack.png create mode 100644 assets/02Attack10.png create mode 100644 assets/02Attack11.png create mode 100644 assets/02Attack12.png create mode 100644 assets/02Attack13.png create mode 100644 assets/02Attack14.png create mode 100644 assets/02Attack15.png create mode 100644 assets/02Attack16.png create mode 100644 assets/02Attack17.png create mode 100644 assets/02Attack18.png create mode 100644 assets/02Attack19.png create mode 100644 assets/02Attack2.png create mode 100644 assets/02Attack20.png create mode 100644 assets/02Attack21.png create mode 100644 assets/02Attack22.png create mode 100644 assets/02Attack3.png create mode 100644 assets/02Attack4.png create mode 100644 assets/02Attack5.png create mode 100644 assets/02Attack6.png create mode 100644 assets/02Attack7.png create mode 100644 assets/02Attack8.png create mode 100644 assets/02Attack9.png create mode 100644 assets/02Idle.png create mode 100644 assets/02Idle10.png create mode 100644 assets/02Idle11.png create mode 100644 assets/02Idle12.png create mode 100644 assets/02Idle2.png create mode 100644 assets/02Idle3.png create mode 100644 assets/02Idle4.png create mode 100644 assets/02Idle5.png create mode 100644 assets/02Idle6.png create mode 100644 assets/02Idle7.png create mode 100644 assets/02Idle8.png create mode 100644 assets/02Idle9.png create mode 100644 assets/02Walk.png create mode 100644 assets/02Walk10.png create mode 100644 assets/02Walk11.png create mode 100644 assets/02Walk12.png create mode 100644 assets/02Walk13.png create mode 100644 assets/02Walk14.png create mode 100644 assets/02Walk15.png create mode 100644 assets/02Walk2.png create mode 100644 assets/02Walk3.png create mode 100644 assets/02Walk4.png create mode 100644 assets/02Walk5.png create mode 100644 assets/02Walk6.png create mode 100644 assets/02Walk7.png create mode 100644 assets/02Walk8.png create mode 100644 assets/02Walk9.png create mode 100644 assets/03Attack.png create mode 100644 assets/03Attack2.png create mode 100644 assets/03Attack3.png create mode 100644 assets/03Attack4.png create mode 100644 assets/03Attack5.png create mode 100644 assets/03Attack6.png diff --git a/MiniDungeonMultiplayerDev.json b/MiniDungeonMultiplayerDev.json index 6d8f83b..cedc029 100644 --- a/MiniDungeonMultiplayerDev.json +++ b/MiniDungeonMultiplayerDev.json @@ -635,6 +635,542 @@ "name": "NewSprite39", "smoothed": false, "userAdded": false + }, + { + "file": "assets/03Attack.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/03Attack2.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack2", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/03Attack3.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack3", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/03Attack4.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack4", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/03Attack5.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack5", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/03Attack6.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "03Attack6", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle2.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle2", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle3.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle3", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle4.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle4", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle5.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle5", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle6.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle6", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle7.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle7", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle8.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle8", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle9.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle9", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle10.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle10", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle11.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle11", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/01Idle12.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "01Idle12", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk2.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk2", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk3.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk3", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk4.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk4", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk5.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk5", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack2.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack2", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack3.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack3", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack4.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack4", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack5.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack5", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack6.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack6", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack7.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack7", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack8.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack8", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack9.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack9", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack10.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack10", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack11.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack11", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack12.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack12", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle2.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle2", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle3.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle3", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle4.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle4", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle5.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle5", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle6.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle6", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle7.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle7", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle8.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle8", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle9.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle9", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle10.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle10", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle11.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle11", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Idle12.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Idle12", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk6.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk6", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk7.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk7", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk8.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk8", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk9.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk9", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk10.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk10", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk11.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk11", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk12.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk12", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk13.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk13", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk14.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk14", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Walk15.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Walk15", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack13.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack13", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack14.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack14", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack15.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack15", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack16.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack16", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack17.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack17", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack18.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack18", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack19.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack19", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack20.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack20", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack21.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack21", + "smoothed": false, + "userAdded": false + }, + { + "file": "assets/02Attack22.png", + "kind": "image", + "metadata": "{\"extension\":\".png\"}", + "name": "02Attack22", + "smoothed": false, + "userAdded": false } ] }, @@ -1031,7 +1567,14 @@ "persistentUuid": "15baac05-8645-4485-b856-649122e1892c", "type": "Sprite", "updateIfNotVisible": false, - "variables": [], + "variables": [ + { + "name": "var_sprite", + "persistentUuid": "815f23c1-63b9-424b-b968-4232f6355a8e", + "type": "string", + "value": "01" + } + ], "effects": [], "behaviors": [ { @@ -1869,6 +2412,2509 @@ ] } ] + }, + { + "name": "03Attack", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "03Attack", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "03Attack2", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "03Attack3", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "03Attack4", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "03Attack5", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "03Attack6", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "01Idle", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "01Idle", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle2", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle3", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle4", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle5", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle6", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle7", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle8", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle9", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle10", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle11", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "01Idle12", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "01Walk", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "02Walk", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk2", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk3", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk4", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk5", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "01Attack", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "02Attack", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack2", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack3", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack4", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack5", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack6", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack7", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack8", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack9", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack10", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack11", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack12", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "02Idle", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "02Idle", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle2", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle3", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle4", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle5", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle6", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle7", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle8", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle9", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle10", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle11", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Idle12", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "02Walk", + "useMultipleDirections": false, + "directions": [ + { + "looping": true, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "02Walk6", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk7", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk8", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk9", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk10", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk11", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk12", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk13", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk14", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Walk15", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] + }, + { + "name": "02Attack", + "useMultipleDirections": false, + "directions": [ + { + "looping": false, + "metadata": "{\"pskl\":{}}", + "timeBetweenFrames": 0.08, + "sprites": [ + { + "hasCustomCollisionMask": true, + "image": "02Attack13", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack14", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack15", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack16", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack17", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack18", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack19", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack20", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack21", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + }, + { + "hasCustomCollisionMask": true, + "image": "02Attack22", + "points": [], + "originPoint": { + "name": "origine", + "x": 0, + "y": 40 + }, + "centerPoint": { + "automatic": true, + "name": "centre", + "x": 0, + "y": 0 + }, + "customCollisionMask": [ + [ + { + "x": 0, + "y": 28 + }, + { + "x": 32, + "y": 28 + }, + { + "x": 32, + "y": 40 + }, + { + "x": 0, + "y": 40 + } + ] + ] + } + ] + } + ] } ] }, @@ -5378,7 +8424,7 @@ "spr_player", "Animation", "=", - "\"03Walk\"" + "spr_player.var_sprite+\"Walk\"" ] } ] @@ -5425,7 +8471,77 @@ "spr_player", "Animation", "=", - "\"03Walk\"" + "spr_player.var_sprite+\"Walk\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround" + }, + "parameters": [ + "spr_player", + "TopDownMovement", + "90", + "45" + ] + }, + { + "type": { + "value": "BuiltinCommonInstructions::Once" + }, + "parameters": [] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetName" + }, + "parameters": [ + "spr_player", + "Animation", + "=", + "spr_player.var_sprite+\"Walk\"" + ] + } + ] + }, + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [ + { + "type": { + "value": "TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround" + }, + "parameters": [ + "spr_player", + "TopDownMovement", + "270", + "45" + ] + }, + { + "type": { + "value": "BuiltinCommonInstructions::Once" + }, + "parameters": [] + } + ], + "actions": [ + { + "type": { + "value": "AnimatableCapability::AnimatableBehavior::SetName" + }, + "parameters": [ + "spr_player", + "Animation", + "=", + "spr_player.var_sprite+\"Walk\"" ] } ] @@ -5459,7 +8575,7 @@ "spr_player", "Animation", "=", - "\"03Idle\"" + "spr_player.var_sprite+\"Idle\"" ] } ] @@ -5581,6 +8697,23 @@ } ], "parameters": [] + }, + { + "colorB": 228, + "colorG": 176, + "colorR": 74, + "creationTime": 0, + "name": "Controls", + "source": "", + "type": "BuiltinCommonInstructions::Group", + "events": [ + { + "type": "BuiltinCommonInstructions::Standard", + "conditions": [], + "actions": [] + } + ], + "parameters": [] } ] } diff --git a/MiniDungeonMultiplayerDev.json.autosave b/MiniDungeonMultiplayerDev.json.autosave index 7a70e78..c6019a7 100644 --- a/MiniDungeonMultiplayerDev.json.autosave +++ b/MiniDungeonMultiplayerDev.json.autosave @@ -1 +1 @@ -{"firstLayout":"","gdVersion":{"build":274,"major":5,"minor":6,"revision":0},"initialGDVersion":"5.6.274","properties":{"adaptGameResolutionAtRuntime":true,"antialiasingMode":"MSAA","antialisingEnabledOnMobile":false,"folderProject":false,"orientation":"landscape","packageName":"com.example.gamename","pixelsRounding":true,"projectUuid":"9386a7f4-fb47-4bec-8bd2-99c1fb11403b","scaleMode":"nearest","sizeOnStartupMode":"","templateSlug":"","version":"1.0.0","name":"MiniDungeonMultiplayerDev","description":"","author":"","windowWidth":640,"windowHeight":480,"latestCompilationDirectory":"","maxFPS":60,"minFPS":20,"verticalSync":false,"platformSpecificAssets":{"android-icon-144":"","android-icon-192":"","android-icon-36":"","android-icon-48":"","android-icon-72":"","android-icon-96":"","android-windowSplashScreenAnimatedIcon":"","desktop-icon-512":"","ios-icon-100":"","ios-icon-1024":"","ios-icon-114":"","ios-icon-120":"","ios-icon-144":"","ios-icon-152":"","ios-icon-167":"","ios-icon-180":"","ios-icon-20":"","ios-icon-29":"","ios-icon-40":"","ios-icon-50":"","ios-icon-57":"","ios-icon-58":"","ios-icon-60":"","ios-icon-72":"","ios-icon-76":"","ios-icon-80":"","ios-icon-87":""},"loadingScreen":{"backgroundColor":0,"backgroundFadeInDuration":0.2,"backgroundImageResourceName":"","gdevelopLogoStyle":"light","logoAndProgressFadeInDuration":0.2,"logoAndProgressLogoFadeInDelay":0.0,"minDuration":1.5,"progressBarColor":16777215,"progressBarHeight":20.0,"progressBarMaxWidth":200.0,"progressBarMinWidth":40.0,"progressBarWidthPercent":30.0,"showGDevelopSplash":true,"showProgressBar":true},"watermark":{"placement":"bottom-left","showWatermark":true},"authorIds":[],"authorUsernames":[],"categories":[],"playableDevices":[],"extensionProperties":[],"platforms":[{"name":"GDevelop JS platform"}],"currentPlatform":"GDevelop JS platform"},"resources":{"resources":[{"file":"assets/03Idle25.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle25","smoothed":false,"userAdded":false},{"file":"assets/03Idle26.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle26","smoothed":false,"userAdded":false},{"file":"assets/03Idle27.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle27","smoothed":false,"userAdded":false},{"file":"assets/03Idle28.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle28","smoothed":false,"userAdded":false},{"file":"assets/03Idle29.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle29","smoothed":false,"userAdded":false},{"file":"assets/03Idle30.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle30","smoothed":false,"userAdded":false},{"file":"assets/03Idle31.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle31","smoothed":false,"userAdded":false},{"file":"assets/03Idle32.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle32","smoothed":false,"userAdded":false},{"file":"assets/03Idle33.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle33","smoothed":false,"userAdded":false},{"file":"assets/03Idle34.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle34","smoothed":false,"userAdded":false},{"file":"assets/03Idle35.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle35","smoothed":false,"userAdded":false},{"file":"assets/03Idle36.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle36","smoothed":false,"userAdded":false},{"file":"assets/03Walk.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk","smoothed":false,"userAdded":false},{"file":"assets/03Walk2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk2","smoothed":false,"userAdded":false},{"file":"assets/03Walk3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk3","smoothed":false,"userAdded":false},{"file":"assets/03Walk4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk4","smoothed":false,"userAdded":false},{"file":"assets/03Walk5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk5","smoothed":false,"userAdded":false},{"file":"assets/03Walk6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk6","smoothed":false,"userAdded":false},{"file":"assets/03Walk7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk7","smoothed":false,"userAdded":false},{"file":"assets/03Walk8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk8","smoothed":false,"userAdded":false},{"file":"assets/03Walk9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk9","smoothed":false,"userAdded":false},{"file":"assets/03Walk10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk10","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\"}","name":"NewSprite5","smoothed":false,"userAdded":false},{"file":"assets/NewSprite6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite6","smoothed":false,"userAdded":false},{"file":"assets/NewSprite7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite7","smoothed":false,"userAdded":false},{"file":"assets/TestRoom4Way.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoom4Way","smoothed":false,"userAdded":false},{"file":"assets/TestRoomLR.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomLR","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadU.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadU","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadD.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadD","smoothed":false,"userAdded":false},{"file":"assets/TestRoomUD.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomUD","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadL.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadL","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadR.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadR","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite2","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite3","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite8","smoothed":false,"userAdded":false},{"file":"assets/NewSprite9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite9","smoothed":false,"userAdded":false},{"file":"assets/NewSprite10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite10","smoothed":false,"userAdded":false},{"file":"assets/NewSprite11.png","kind":"image","metadata":"{\"extension\":\".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/NewSprite14.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite14","smoothed":false,"userAdded":false},{"file":"assets/NewSprite15.png","kind":"image","metadata":"{\"extension\":\".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/NewSprite25.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite25","smoothed":false,"userAdded":false},{"file":"assets/NewSprite26.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite26","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/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},{"file":"assets/NewSprite32.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite32","smoothed":false,"userAdded":false},{"file":"assets/NewSprite33.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite33","smoothed":false,"userAdded":false},{"file":"assets/NewSprite34.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite34","smoothed":false,"userAdded":false},{"file":"assets/NewSprite35.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite35","smoothed":false,"userAdded":false},{"file":"assets/NewSprite36.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite36","smoothed":false,"userAdded":false},{"file":"assets/NewSprite37.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite37","smoothed":false,"userAdded":false},{"file":"assets/NewSprite38.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite38","smoothed":false,"userAdded":false},{"file":"assets/NewSprite39.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite39","smoothed":false,"userAdded":false}]},"objects":[],"objectsFolderStructure":{"folderName":"__ROOT"},"objectsGroups":[],"variables":[],"layouts":[{"b":255,"disableInputWhenNotFocused":true,"mangledName":"Game","name":"Game","r":247,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":249,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":640.0,"gridHeight":480.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.4335774304702383,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"},"objectsGroups":[{"name":"Rooms","objects":[{"name":"spr_4Way"},{"name":"spr_LR"},{"name":"spr_UD"},{"name":"spr_DeadL"},{"name":"spr_DeadR"},{"name":"spr_DeadUp"},{"name":"spr_DeadDown"}]},{"name":"Checker","objects":[{"name":"spr_right"},{"name":"spr_left"},{"name":"spr_up"},{"name":"spr_down"}]}],"variables":[{"name":"var_roomCount","persistentUuid":"c143876b-6251-4aec-a302-41a096a13d9d","type":"number","value":1.0}],"instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_player","persistentUuid":"168f7870-38ea-449a-b480-8a38e037e176","width":0.0,"x":288.0,"y":256.0,"zOrder":30,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_4Way","persistentUuid":"346c6f81-2757-45a8-a096-c776d3ab76bc","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"e34ef6cd-0335-48e6-8d19-d84d325b8591","width":0.0,"x":640.0,"y":0.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"a02511d0-68fd-4f90-afe7-4326ed28fd87","width":0.0,"x":-640.0,"y":0.0,"zOrder":32,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"bfc88395-d3c8-47c3-bb4e-c2a8d1950bb8","width":0.0,"x":0.0,"y":-480.0,"zOrder":33,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"03b1aa00-32fd-48b7-aaea-14d1e7e1196b","width":0.0,"x":0.0,"y":480.0,"zOrder":34,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b49413c4-39f9-41f9-9c64-b4ae76cd2ad9","width":0.0,"x":352.0,"y":0.0,"zOrder":35,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"baf49daf-10df-4608-b6e4-359b0f395cac","width":0.0,"x":256.0,"y":0.0,"zOrder":36,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"95fcb59f-88a5-4137-ade0-1788226b3252","width":0.0,"x":352.0,"y":448.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"2a116ece-9265-456a-b2aa-6399354e0b4b","width":0.0,"x":256.0,"y":448.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3a816cd3-f87f-47d4-98e0-2943a9dcaaa4","width":256.0,"x":352.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"390c640e-d2ae-494e-b3ba-eaa7a737d262","width":256.0,"x":32.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"94ab7ace-3ea6-4466-a8bb-ab408aaf2656","width":256.0,"x":32.0,"y":416.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1b5b4a92-a874-4ce0-99d5-fb066071eb17","width":256.0,"x":352.0,"y":416.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"915cea7d-00dc-48e6-b658-1a679dabb35a","width":32.0,"x":608.0,"y":64.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"7e61f02d-9158-4a01-a137-a7a4a12678da","width":32.0,"x":608.0,"y":288.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c333414c-b787-464f-b406-46358a49f085","width":32.0,"x":0.0,"y":288.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c5ae41a4-8993-4917-ab04-e7db150e2d14","width":32.0,"x":0.0,"y":64.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"spr_player","persistentUuid":"15baac05-8645-4485-b856-649122e1892c","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[{"name":"TopDownMovement","type":"TopDownMovementBehavior::TopDownMovementBehavior","acceleration":9999.0,"allowDiagonals":true,"angleOffset":0.0,"angularMaxSpeed":180.0,"customIsometryAngle":30.0,"deceleration":9999.0,"ignoreDefaultControls":false,"maxSpeed":200.0,"movementAngleOffset":0.0,"rotateObject":false,"useLegacyTurnBack":false,"viewpoint":"TopDown"}],"animations":[{"name":"03Idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"03Idle25","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle26","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle27","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle28","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle29","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle30","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle31","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle32","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle33","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle34","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle35","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle36","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"03Walk","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"03Walk","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_4Way","persistentUuid":"0e24c193-6010-4988-84e4-84247e4111a6","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoom4Way","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoom4Way","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_right","persistentUuid":"1e631ce1-545f-451f-9f16-36ae35076ff7","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"22df5395-a194-44b8-bc37-bb550d070d01","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite4","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_LR","persistentUuid":"216f1ec8-083e-4ddc-8ecc-19dfe2b3e31d","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomLR","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomLR","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_UD","persistentUuid":"63a7090f-a6d8-4eb9-93ee-9e076596ce88","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomUD","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomUD","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadL","persistentUuid":"cc600b8e-3783-4703-abe3-426832db2a92","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadL","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadL","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadR","persistentUuid":"49f00013-44d6-443c-9ffe-0330d4559935","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadR","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadR","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadUp","persistentUuid":"76f7a08f-18f4-4bf4-a4d2-9db38bad7409","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadU","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadU","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadDown","persistentUuid":"24006229-fc36-4f86-8b51-c78029706d67","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadD","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadD","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_left","persistentUuid":"975b00e7-0480-4497-baaf-2030a83377fb","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"ce81a637-0f6f-41db-a57b-8decaed70174","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite5","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_up","persistentUuid":"64de8436-160b-4de7-af7c-2e25f8e83b8b","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"297f1f68-b1b2-42fd-90e3-ed8b0e5f8335","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite6","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_down","persistentUuid":"11b66a89-0299-4709-97bb-fbfd0e05d9ab","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"01025634-8159-420e-b49c-09c609ea3e6a","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite7","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_skelly01","persistentUuid":"a50eed58-da79-4406-ad04-ae846f10346a","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"skel_idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite2","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite3","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite8","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite9","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite10","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite11","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite12","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite13","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite14","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite15","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite16","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]},{"name":"skel_die","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite17","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite18","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite19","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite20","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite21","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite22","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite23","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite24","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite25","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite26","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite27","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite28","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite29","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite30","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]},{"name":"skel_attack","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite31","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite32","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite33","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite34","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite35","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite36","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite37","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite38","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_wall","persistentUuid":"b3e8803e-3284-4865-a2d2-f0cf1d2c2de8","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Adjustment","name":"Effect","doubleParameters":{"alpha":0.0,"blue":1.0,"brightness":1.0,"contrast":1.0,"gamma":1.0,"green":1.0,"red":1.0,"saturation":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite39","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"Enemies","children":[{"objectName":"spr_skelly01"}]},{"folderName":"Players","children":[{"objectName":"spr_player"}]},{"folderName":"Rooms","children":[{"folderName":"DeadUp","children":[{"objectName":"spr_DeadUp"}]},{"folderName":"4Way","children":[{"objectName":"spr_4Way"}]},{"objectName":"spr_DeadR"},{"objectName":"spr_DeadL"},{"objectName":"spr_UD"},{"objectName":"spr_DeadDown"},{"objectName":"spr_LR"}]},{"folderName":"Checkers","children":[{"objectName":"spr_down"},{"objectName":"spr_up"},{"objectName":"spr_left"},{"objectName":"spr_right"},{"objectName":"spr_wall"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"Functions"}],"layers":[{"ambientLightColorB":200,"ambientLightColorG":200,"ambientLightColorR":200,"camera2DPlaneMaxDrawingDistance":5000.0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":3.0,"cameraType":"","followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Ambient Hemisphere Light","doubleParameters":{"elevation":40.0,"intensity":0.33,"rotation":300.0},"stringParameters":{"groundColor":"127;127;127","skyColor":"255;255;255","top":"Z+"},"booleanParameters":{}},{"effectType":"Scene3D::DirectionalLight","name":"3D Sun Light","doubleParameters":{"distanceFromCamera":1500.0,"elevation":40.0,"frustumSize":4000.0,"intensity":0.75,"minimumShadowBias":0.0,"rotation":300.0},"stringParameters":{"color":"255;255;255","shadowQuality":"medium","top":"Z+"},"booleanParameters":{"isCastingShadow":true}}]},{"ambientLightColorB":200,"ambientLightColorG":200,"ambientLightColorR":200,"camera2DPlaneMaxDrawingDistance":5000.0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":3.0,"cameraType":"","followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"","visibility":true,"cameras":[],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Ambient Hemisphere Light","doubleParameters":{"elevation":40.0,"intensity":0.33,"rotation":300.0},"stringParameters":{"groundColor":"127;127;127","skyColor":"255;255;255","top":"Z+"},"booleanParameters":{}},{"effectType":"Scene3D::DirectionalLight","name":"3D Sun Light","doubleParameters":{"distanceFromCamera":1500.0,"elevation":40.0,"frustumSize":4000.0,"intensity":0.75,"minimumShadowBias":0.0,"rotation":300.0},"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":"TopDownMovement","type":"TopDownMovementBehavior::TopDownMovementBehavior"}]}],"externalEvents":[{"associatedLayout":"Game","name":"Functions","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Scene Start","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneJustBegins"},"parameters":[""]}],"actions":[{"type":{"value":"ZoomCamera"},"parameters":["","0","",""]},{"type":{"value":"Hide"},"parameters":["spr_wall"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Generate Rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Right"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_right","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_right"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_right","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_right.X()","spr_right.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_left","spr_right.X()","spr_right.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_left",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_right",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Left"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_left","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_left"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_left","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LR\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadL\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_left.X()","spr_left.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadL\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_right","spr_left.X()","spr_left.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_right",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_left",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Up"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_up","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_up"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_up","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"UD\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadUp\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_up.X()","spr_up.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadUp\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_down","spr_up.X()","spr_up.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_down",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_up",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Down"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_down","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_down"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_down","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"UD\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadDown\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_down.X()","spr_down.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadDown\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_up","spr_down.X()","spr_down.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_up",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_down",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Rooms","Rooms","","","yes"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Game\"",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Movement/Sprite Control","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsUsingControl"},"parameters":["spr_player","TopDownMovement","\"Right\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","0","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["spr_player","Flippable","no"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","\"03Walk\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","180","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["spr_player","Flippable","yes"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","\"03Walk\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TopDownMovementBehavior::IsMoving"},"parameters":["spr_player","TopDownMovement"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","\"03Idle\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Camera Control","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["spr_player","Rooms","","",""]}],"actions":[{"type":{"value":"RoomBasedCameraMovement::MoveCameraToActiveRoom"},"parameters":["","Rooms","spr_player","","","0","","","0",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextReleased"},"parameters":["","\"Space\""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Game\"",""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Collision","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["spr_player","spr_wall","","",""]}],"actions":[{"type":{"value":"SeparateFromObjects"},"parameters":["spr_player","spr_wall",""]}]}],"parameters":[]}]}],"eventsFunctionsExtensions":[{"author":"","category":"Camera","dimension":"2D","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.5","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":[],"eventsFunctionsFolderStructure":{"folderName":"__ROOT"},"eventsBasedBehaviors":[{"description":"Smoothly scroll to follow an object.","fullName":"Smooth Camera","helpPath":"","iconUrl":"","name":"SmoothCamera","objectType":"","previewIconUrl":"","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":"CameraCenterX"},"parameters":["",">","Object.Behavior::FreeAreaRight()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterX"},"parameters":["","<","OldX - LeftwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","OldX - LeftwardSpeedMax * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraCenterX"},"parameters":["","<","Object.Behavior::FreeAreaLeft()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterX"},"parameters":["",">","OldX + RightwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterY"},"parameters":["",">","Object.Behavior::FreeAreaBottom()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"CameraCenterY"},"parameters":["","<","OldY - UpwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","OldY - UpwardSpeedMax * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraCenterY"},"parameters":["","<","Object.Behavior::FreeAreaTop()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"CameraCenterY"},"parameters":["",">","OldY + DownwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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","group":"Camera configuration","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","group":"Camera configuration","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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(ForecastHistoryVarianceX)","<","1"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(ForecastHistoryVarianceX)",">=","1"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"onCreated"},{"functionName":"doStepPreEvents"},{"functionName":"MoveCameraCloser"},{"functionName":"DoMoveCameraCloser"},{"functionName":"WaitAndCatchUp"},{"functionName":"DrawDebug"},{"folderName":"Camera configuration","children":[{"functionName":"SetFollowOnX"},{"functionName":"SetFollowOnY"},{"functionName":"SetFollowFreeAreaRight"},{"functionName":"SetFollowFreeAreaLeft"},{"functionName":"SetFollowFreeAreaTop"},{"functionName":"SetFollowFreeAreaBottom"},{"functionName":"SetLeftwardSpeedMax"},{"functionName":"SetRightwardSpeedMax"},{"functionName":"SetUpwardSpeedMax"},{"functionName":"SetDownwardSpeedMax"},{"functionName":"SetLeftwardSpeed"},{"functionName":"SetRightwardSpeed"},{"functionName":"SetDownwardSpeed"},{"functionName":"SetUpwardSpeed"},{"functionName":"OffsetX"},{"functionName":"SetOffsetXOp"},{"functionName":"SetOffsetX"},{"functionName":"OffsetY"},{"functionName":"SetOffsetYOp"},{"functionName":"SetOffsetY"},{"functionName":"SetForecastTime"},{"functionName":"SetCameraDelay"}]},{"folderName":"Private","children":[{"functionName":"FreeAreaLeft"},{"functionName":"FreeAreaRight"},{"functionName":"FreeAreaBottom"},{"functionName":"FreeAreaTop"},{"functionName":"UpdateDelayedPosition"},{"functionName":"AddForecastHistoryPosition"},{"functionName":"UpdateForecastedPosition"},{"functionName":"ProjectHistoryEnds"},{"functionName":"ForecastTimeRatio"}]},{"functionName":"IsDelayed"},{"functionName":"CurrentDelay"},{"functionName":"IsWaiting"}]},"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","helpPath":"","iconUrl":"","name":"SmoothPlatformerCamera","objectType":"","previewIconUrl":"","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":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"doStepPreEvents"}]},"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":"","category":"Camera","dimension":"2D","extensionNamespace":"","fullName":"Room-based camera movement","gdevelopVersion":">=5.5.222","helpPath":"https://victrisgames.itch.io/room-based-camera-movement","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGc+DQoJPHBhdGggZD0iTTE0LDNINEMzLjQsMywzLDMuNCwzLDR2MTBjMCwwLjYsMC40LDEsMSwxaDEwYzAuNiwwLDEtMC40LDEtMVY0QzE1LDMuNCwxNC42LDMsMTQsM3oiLz4NCgk8cGF0aCBkPSJNMTQsMTdINGMtMC42LDAtMSwwLjQtMSwxdjEwYzAsMC42LDAuNCwxLDEsMWgxMGMwLjYsMCwxLTAuNCwxLTFWMThDMTUsMTcuNCwxNC42LDE3LDE0LDE3eiIvPg0KCTxwYXRoIGQ9Ik0yOCwzSDE4Yy0wLjYsMC0xLDAuNC0xLDF2MTBjMCwwLjYsMC40LDEsMSwxaDEwYzAuNiwwLDEtMC40LDEtMVY0QzI5LDMuNCwyOC42LDMsMjgsM3oiLz4NCgk8cGF0aCBkPSJNMjgsMTdIMThjLTAuNiwwLTEsMC40LTEsMXYxMGMwLDAuNiwwLjQsMSwxLDFoMTBjMC42LDAsMS0wLjQsMS0xVjE4QzI5LDE3LjQsMjguNiwxNywyOCwxN3oiLz4NCjwvZz4NCjwvc3ZnPg0K","name":"RoomBasedCameraMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Applications and Programming/Applications and Programming_app_apps_applications_tiles.svg","shortDescription":"Move/zoom camera to frame the room object containing the player.","version":"1.0.5","description":["Move camera to the room that contains the trigger object (usually the player). If desired, change zoom to show the entire room or keep zoom static.","","How to use:","- Place room objects on scene","- Select camera zoom limits, how fast the camera should move, and the visible buffer around each room","- Run the \"Move and zoom camera\" action on every frame","- Move the trigger object (player) between rooms and the camera will center on the room that contains the trigger object.","","Tips:","- Use these conditions for custom logic when changing rooms : \"Camera moving\", \"Camera zooming\", and \"Room changed\"","- Set \"Lerp Speed\" to \"1\" to change the camera instantly"],"origin":{"identifier":"RoomBasedCameraMovement","name":"gdevelop-extension-store"},"tags":["camera","follow","room","trigger","zoom","move","smooth"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","8Ih1aa8f5gWUp4UB2BdhQ2iXWxJ3","dt0tRnf2kHWJnjkrpnzTzNj9Yc63"],"dependencies":[],"globalVariables":[],"sceneVariables":[],"eventsFunctions":[{"description":"Move and zoom camera to the room object that contains the trigger object (usually the player).","fullName":"Move and zoom camera to the room object that contains the trigger object (player)","functionType":"Action","group":"Layers and cameras","name":"MoveCameraToActiveRoom","sentence":"Move camera to room object _PARAM1_ that contains trigger object _PARAM2_ (Layer: _PARAM3_, Lerp speed: _PARAM4_, Max zoom: _PARAM5_, Min zoom: _PARAM6_, Border buffer: _PARAM7_px)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save input values"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","=","MaxZoom"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","=","LerpSpeed"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set default values if none provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","<=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","=","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","<=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","=","0.1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Main","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Identify the current room","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect which room is the current one"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["RoomObject","TriggerObject.CenterX()","TriggerObject.CenterY()"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Room has NOT changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Room has changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","!=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update CurrentRoomID variable"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"RoomObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Assign each room a unique ID if they don't have one yet"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxRoomID","+","1"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","Variable(__RoomBasedCameraMovement.MaxRoomID)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Check if this room is the current room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","TriggerObject.Variable(__RoomBasedCameraMovement.CurrentRoomID)"]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change zoom","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the camera dimensions"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth","=","RoomObject.Width()+2*OutsideBuffer"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight","=","RoomObject.Height()+2*OutsideBuffer"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraZoom","=","min(SceneWindowHeight() / Variable(__RoomBasedCameraMovement.CameraHeight), SceneWindowWidth() / Variable(__RoomBasedCameraMovement.CameraWidth))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust zoom to stay within min/max values"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraZoom","=","clamp(Variable(__RoomBasedCameraMovement.CameraZoom),MinZoom,Variable(__RoomBasedCameraMovement.MaxZoom))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change camera zoom"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ZoomCamera"},"parameters":["","ceil(lerp(CameraZoom(Layer,Camera),Variable(__RoomBasedCameraMovement.CameraZoom),Variable(__RoomBasedCameraMovement.LerpSpeed))*1000)/1000","Layer","Camera"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move camera position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"For rooms smaller than the viewable screen, center the camera on the center of the room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth","<=","SceneWindowWidth()"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","ceil(lerp(CameraX(Layer,Camera), RoomObject.CenterX(), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight","<=","SceneWindowHeight()"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","ceil(lerp(CameraY(Layer,Camera), RoomObject.CenterY(), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"For rooms larger than the viewable screen, center the camera on the TriggerObject and clamp camera so it only shows the room + buffer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth",">","SceneWindowWidth()"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","ceil(lerp(CameraX(Layer,Camera), clamp(TriggerObject.CenterX(), \nRoomObject.CenterX() - RoomObject.Width()/2 + SceneWindowWidth()/2 - OutsideBuffer, RoomObject.CenterX() + RoomObject.Width()/2 - SceneWindowWidth()/2 + OutsideBuffer), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight",">","SceneWindowHeight()"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","ceil(lerp(CameraY(Layer,Camera), clamp(TriggerObject.CenterY(), \nRoomObject.CenterY() - RoomObject.Height()/2 + SceneWindowHeight()/2 - OutsideBuffer, RoomObject.CenterY() + RoomObject.Height()/2 - SceneWindowHeight()/2 + OutsideBuffer), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]}],"parameters":[]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate \"IsCameraMoving\" condition","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","0"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer, Camera)"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer, Camera)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check if camera position changed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera has NOT moved"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer,Camera)"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera has moved"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","!=","CameraX(Layer,Camera)"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","!=","CameraY(Layer,Camera)"]}]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update with current camera position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer, Camera)"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer, Camera)"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate \"IsCameraZooming\" condition","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer, Camera)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check if camera zoom changed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera zoom has NOT changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera zoom has changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","!=","CameraZoom(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update with current camera zoom"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer, Camera)"]}]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Room object","longDescription":"Room objects are used to mark areas that should be seen by the camera.","name":"RoomObject","type":"objectList"},{"description":"Trigger object (player)","longDescription":"When the Trigger Object touches a new Room Object, the camera will move to the new room","name":"TriggerObject","type":"objectList"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Lerp speed","longDescription":"Range: 0 to 1","name":"LerpSpeed","type":"expression"},{"description":"Maximum zoom","name":"MaxZoom","type":"expression"},{"description":"Minimum zoom","name":"MinZoom","type":"expression"},{"description":"Outside buffer (pixels)","longDescription":"Minimum extra space displayed around each side the room","name":"OutsideBuffer","type":"expression"},{"description":"Camera","name":"Camera","type":"expression"}],"objectGroups":[]},{"description":"Check if trigger object (usually the player) has entered a new room on this frame.","fullName":"Check if trigger object (player) has entered a new room","functionType":"Condition","name":"ActiveRoomChanged","sentence":"_PARAM1_ has just entered a new room","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Trigger object (player)","name":"TriggerObject","type":"objectList"}],"objectGroups":[]},{"description":"Check if camera is zooming (requires the use of \"Move and zoom camera\" action in this extension).","fullName":"Check if camera is zooming","functionType":"Condition","name":"IsCameraZooming","sentence":"Camera is zooming","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[],"objectGroups":[]},{"description":"Check if camera is moving (requires the use of \"Move and zoom camera\" action in this extension).","fullName":"Check if camera is moving","functionType":"Condition","name":"IsCameraMoving","sentence":"Camera is moving","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[],"objectGroups":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"Layers and cameras","children":[{"functionName":"MoveCameraToActiveRoom"}]},{"functionName":"ActiveRoomChanged"},{"functionName":"IsCameraZooming"},{"functionName":"IsCameraMoving"}]},"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"@oscuridad6661, Tristan Rhodes (@VictrisGames)","category":"Game mechanic","dimension":"","extensionNamespace":"","fullName":"Dungeon generator","gdevelopVersion":">=5.5.222","helpPath":"https://victrisgames.itch.io/extension-dungeon-generator","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpdGVtYXAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOSwyVjhIMTFWMTFINUMzLjg5LDExIDMsMTEuODkgMywxM1YxNkgxVjIySDdWMTZINVYxM0gxMVYxNkg5VjIySDE1VjE2SDEzVjEzSDE5VjE2SDE3VjIySDIzVjE2SDIxVjEzQzIxLDExLjg5IDIwLjExLDExIDE5LDExSDEzVjhIMTVWMkg5WiIgLz48L3N2Zz4=","name":"DungeonGenerator","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/sitemap.svg","shortDescription":"Create a procedurally generated dungeon. Includes two layouts: \"rooms and hallways\" and \"dungeon cave\".","version":"1.2.1","description":["How to use:","- Run the \"Generate Dungeon Cave\" or \"Generate Dungeon with Rooms\" action at the beginning of a scene.","","Tips:","- Keep the amount of space used by room objects to less than ~25% of the total map. If you add too many rooms, they will not be placed correctly and might collide with other rooms.","- Try using top-down controls combined with physics behavior (with no gravity) on the player and wall objects","- Use external layouts to place pre-designed rooms on randomly created room objects","- Use \"Delete Unused Terrain\" option to reduce resources used","- Use \"RoomID(object)\" expression to determine the starting and ending room","- Use \"NeighborCount(object)\" expression to find good places to place treasure. A high amount of neighbors means that the tile is a nook or cranny.","- Use \"IsRoomEntrance\" condition to identify hallway objects that are adjacent to a room","","An example shows how to procedurally generate dungeons or caves ([open the project online](https://editor.gdevelop.io/?project=example://dungeon-generator))."],"origin":{"identifier":"DungeonGenerator","name":"gdevelop-extension-store"},"tags":["dungeon","generator","procedural","generation","automatic","build","create","rogue","roguelike","hallway","entrance","floor","room","cave"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","5iOtaj8yEsam4mIj7TEUDk4LSAe2"],"dependencies":[],"globalVariables":[],"sceneVariables":[],"eventsFunctions":[{"description":"Set the size of hallway objects to be placed on the path created by the pathfinding object.","fullName":"Set size of hallway objects","functionType":"Action","name":"AdjustHallwaySizes","private":true,"sentence":"Set the size of hallway objects _PARAM1_ to be placed on the path created by _PARAM2_ (Tile size: _PARAM4_ pixels, Hallway width: _PARAM5_ tiles)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Adjust size of hallway objects","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the default size of hallway object to the tilesize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize "]},{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Skip the first step in the path (so this function doesn't try to evaluate step 0)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.PathCounter",">","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Vertical move (previous frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter)-1)"]}],"actions":[{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change in direction (this frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter)+1)"]}],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Horizontal move (previous frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter)-1)"]}],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change in direction (this frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter)+1)"]}],"actions":[{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","+","1"]}]}],"parameters":[]}],"parameters":[{"description":"Hallway object","name":"HallwayObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinder object","name":"PathfinderObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinding behavior","name":"PathfindingBehavior","supplementaryInformation":"PathfindingBehavior::PathfindingBehavior","type":"behavior"},{"description":"Tile size (pixels)","name":"TileSize","type":"expression"},{"description":"Hallway width (tiles)","name":"HallwayWidth","type":"expression"}],"objectGroups":[]},{"description":"Fill world with terrain","fullName":"Fill world with terrain","functionType":"Action","name":"FillWorld","private":true,"sentence":"Fill world with terrain (Tile size: _PARAM1_ pixels, Columns: _PARAM2_ tiles, Rows: _PARAM3_ tiles, Fill object: _PARAM4_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Populate map with terrain objects everywhere","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapHeight","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapWidth","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","TerrainObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","+","1"]}]}]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","name":"TileSize","type":"expression"},{"description":"Map width (number of colums)","name":"MapWidth","type":"expression"},{"description":"Map height (number of rows)","name":"MapHeight","type":"expression"},{"description":"Terrain object","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Generate a dungeon cave using a random walk algorithm. When the walker touches an edge of the map, it is moved back to the center of map.","fullName":"Generate a dungeon cave","functionType":"Action","name":"GenerateDungeonCave","sentence":"Generate a dungeon cave that has _PARAM8_ percent floor objects (Tile size: _PARAM1_ pixels, Map width: _PARAM2_ tiles, Map height: _PARAM3_ tiles, Terrain object: _PARAM4_, Floor object: _PARAM5_, Wall object: _PARAM12_, Walker object: _PARAM7_, Walker width/height: _PARAM9_ tiles, Minimum border: _PARAM10_ tiles, Create objects on layer: _PARAM6_, Delete unused terrain: _PARAM11_, Calculate neighbors: _PARAM13_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Random walk","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the number of floor objects to be created. Don't include border in calculation. Multiply border by 2 because it needs to exist on both sides (top+bottom, left+right)."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorGoal","=","round((MapWidth - 2 * MinBorder) * (MapHeight - 2 * MinBorder) * FloorPercentage)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initialize counters"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.StepsTaken","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorCreated","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerRestarts","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Walk until complete (using a 2D array)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start with an empty map (array)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"VariableRemoveChild"},"parameters":["__DungeonGenerator","\"WalkerMap\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create walkers","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initialize walker offsets (these are used to make the walker take up more than one tile)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetY","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create (WalkerSize^2) quantity of objects (1x1=1, 2x2=4, 3x3=9, etc0"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"max(1,WalkerSize)","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"max(1,WalkerSize)","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create virtual walker objects. Walker objects are ONLY used to store variables and to perform ForEach() loops. Position, size, and appearance DO NOT matter. \nTODO: These could be replaced by structure variables."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","WalkerObject","0","0","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the starting position (in the 2D array) and save it so it can be used for restarts"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","=","round(MapWidth/2 + Variable(__DungeonGenerator.WalkerOffsetX))"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","=","round(MapHeight/2 + Variable(__DungeonGenerator.WalkerOffsetY))"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.StartXpos","=","WalkerObject.Variable(__DungeonGenerator.Xpos)"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.StartYpos","=","WalkerObject.Variable(__DungeonGenerator.Ypos)"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetY","+","1"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Process walker movements","source":"","type":"BuiltinCommonInstructions::Group","events":[{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.FloorCreated","<","Variable(__DungeonGenerator.FloorGoal)"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate chance to go in each direction based on the ratio of width to height"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoRight","=","0.5 * (MapWidth / (MapWidth + MapHeight))"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoLeft","=","Variable(__DungeonGenerator.ChanceToGoRight)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoUp","=","0.5 * (MapHeight / (MapWidth + MapHeight))"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoDown","=","Variable(__DungeonGenerator.ChanceToGoUp)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Generate a random number between 0 and 1"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.RandomNumber","=","RandomFloatInRange(0,1)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move LEFT"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","0"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move RIGHT"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move UP"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight) + Variable(__DungeonGenerator.ChanceToGoUp)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move DOWN"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight) + Variable(__DungeonGenerator.ChanceToGoUp)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If ANY Walker is outside map boundries, reset ALL of them to their starting positions"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","<","MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos",">=","MapWidth - MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","<","MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos",">=","MapHeight - MinBorder"]}]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","True"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerRestarts","+","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Check all Walkers if they are on top of terrain"},{"type":"BuiltinCommonInstructions::ForEach","object":"WalkerObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move back to starting position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","=","WalkerObject.Variable(__DungeonGenerator.StartXpos)"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","=","WalkerObject.Variable(__DungeonGenerator.StartYpos)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If Walker is on Terrain, delete it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[WalkerObject.Variable(__DungeonGenerator.Xpos)][WalkerObject.Variable(__DungeonGenerator.Ypos)]","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerMap[WalkerObject.Variable(__DungeonGenerator.Xpos)][WalkerObject.Variable(__DungeonGenerator.Ypos)]","=","1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorCreated","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Track how many steps were taken"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.StepsTaken","+","1"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Draw map based on 2D array","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Loop through every tile in the map"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapHeight","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapWidth","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create terrain objects when array value is 0"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[Variable(__DungeonGenerator.CounterX)][Variable(__DungeonGenerator.CounterY)]","=","0"]}],"actions":[{"type":{"value":"Create"},"parameters":["","TerrainObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["TerrainObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create floor objects when array value is 1"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[Variable(__DungeonGenerator.CounterX)][Variable(__DungeonGenerator.CounterY)]","=","1"]}],"actions":[{"type":{"value":"Create"},"parameters":["","FloorObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["FloorObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["FloorObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","+","1"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Add walls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add walls"},{"type":"BuiltinCommonInstructions::ForEach","object":"TerrainObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches floor"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","FloorObject","","","no"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate neighbors","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["CalculateNeighbors","True",""]}],"actions":[{"type":{"value":"DungeonGenerator::CalculateGridNeighbors"},"parameters":["","FloorObject","WallObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete walkers"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["WalkerObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete unused terrain (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["DeleteUnused","True",""]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","FloorObject","","","no"]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","longDescription":"All objects are based on this size","name":"TileSize","type":"expression"},{"description":"Map width (tiles)","name":"MapWidth","type":"expression"},{"description":"Map height (tiles)","name":"MapHeight","type":"expression"},{"description":"Terrain object","longDescription":"Terrain object is used to fill the map that is not covered by floors, hallways, or walls.","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Floor object","longDescription":"Floor objects are created on every tile that a walker has travelled to.","name":"FloorObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Walker object","longDescription":"Use a random walk algorithm to turn terrain objects into floor objects","name":"WalkerObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Floor percentage (Range: 0-1)","longDescription":"Percentage of map that will be convered by floor objects","name":"FloorPercentage","type":"expression"},{"description":"Size of walker sides (tiles)","longDescription":"The number of tiles for each side of the square walker object. For example, 2=2x2, 3=3x3, 4=4x4.","name":"WalkerSize","type":"expression"},{"description":"Minimum border","longDescription":"Can be used to provide a border of terrain around the map","name":"MinBorder","type":"expression"},{"description":"Delete unused terrain objects","name":"DeleteUnused","type":"trueorfalse"},{"description":"Wall object","longDescription":"Wall objects are placed between floor and terrain objects.","name":"WallObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Calculate neighbors","longDescription":"May take a few seconds to calculate neighbors on a large map, so disable this if you are not using it.","name":"CalculateNeighbors","type":"yesorno"}],"objectGroups":[]},{"description":"Generate a dungeon by placing rooms in random locations and moving them if they collide with each other. Rooms are connected with hallways.","fullName":"Generate a dungeon with room and hallways","functionType":"Action","name":"GenerateDungeonRooms","sentence":"Generate a dungeon with rooms (Room Qty: _PARAM7_, Tile size: _PARAM1_ pixels, Map width: _PARAM2_ tiles, Map height: _PARAM3_ tiles, Terrain object: _PARAM4_, Room object: _PARAM5_, Wall object: _PARAM20_, Hallway object: _PARAM6_, Pathfinding object: _PARAM13_, Min room width: _PARAM9_ tiles, Max room width: _PARAM10_ tiles, Min room height: _PARAM11_ tiles, Max room height: _PARAM12_ tiles, Hallway width: _PARAM17_ tiles, Create objects on layer: _PARAM8_, Max separation attempts: _PARAM15_, Connect rooms in a loop: _PARAM16_, Additional paths: _PARAM18_, Delete unused terrain: _PARAM19_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Populate map with terrain objects everywhere","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::FillWorld"},"parameters":["","TileSize","MapWidth","MapHeight","TerrainObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create rooms at random locations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"NbObjet"},"parameters":["RoomObject","<","RoomQty"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a new room in a random location on map"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","RoomObject","RandomInRange(HallwayWidth, MapWidth - MaxRoomWidth - HallwayWidth) * TileSize","RandomInRange(HallwayWidth, MapHeight - MaxRoomHeight - HallwayWidth) * TileSize","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change the room to a random size"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomWidth","=","RandomInRange(MinRoomWidth, MaxRoomWidth) * TileSize"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomHeight","=","RandomInRange(MinRoomHeight, MaxRoomHeight) * TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["RoomObject","=","RoomObject.Variable(__DungeonGenerator.RoomWidth)"]},{"type":{"value":"ChangeHeight"},"parameters":["RoomObject","=","RoomObject.Variable(__DungeonGenerator.RoomHeight)"]}]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Separate rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Estimate starting distance between rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MinSeparationDistance","=","ceil((sqrt(pow(MaxRoomWidth,2) + pow(MaxRoomHeight,2)))) * TileSize"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.SeparationCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set a default value for separation attempts"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["MaxSeparationAttempts","!=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MaxSeparationAttempts","=","MaxSeparationAttempts"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["MaxSeparationAttempts","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MaxSeparationAttempts","=","10000"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If rooms are close to each other, move them to a new random location"},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Distance"},"parameters":["RoomObject","RoomObject","Variable(__DungeonGenerator.MinSeparationDistance)",""]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.SeparationCounter","<","Variable(__DungeonGenerator.MaxSeparationAttempts)"]}],"conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.SeparationCounter","+","1"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move in a random direction the distance of a room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["RoomObject","+","RandomWithStep(-MaxRoomWidth/2,MaxRoomWidth/2,MaxRoomWidth) * TileSize","+","RandomWithStep(-MaxRoomHeight/2,MaxRoomHeight/2,MaxRoomHeight) * TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move object back into the usable part of map"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["RoomObject",">","(MapHeight - MaxRoomWidth - HallwayWidth)*TileSize"]}],"actions":[{"type":{"value":"SetY"},"parameters":["RoomObject","=","(MapHeight - MaxRoomWidth - HallwayWidth)*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["RoomObject",">","(MapWidth - MaxRoomWidth - HallwayWidth)*TileSize"]}],"actions":[{"type":{"value":"SetX"},"parameters":["RoomObject","=","(MapWidth - MaxRoomWidth - HallwayWidth)*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["RoomObject","<","HallwayWidth*TileSize"]}],"actions":[{"type":{"value":"SetX"},"parameters":["RoomObject","=","HallwayWidth*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["RoomObject","<","HallwayWidth*TileSize"]}],"actions":[{"type":{"value":"SetY"},"parameters":["RoomObject","=","HallwayWidth*TileSize"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Draw paths between rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create pathfinder object if one doesn't exist"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NbObjet"},"parameters":["PathfinderObject","<","1"]}],"actions":[{"type":{"value":"Create"},"parameters":["","PathfinderObject","0","0","Layer"]},{"type":{"value":"PathfindingBehavior::AllowDiagonals"},"parameters":["PathfinderObject","PathfindingBehavior","no"]},{"type":{"value":"ChangeHeight"},"parameters":["PathfinderObject","=","TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["PathfinderObject","=","TileSize"]},{"type":{"value":"SetZOrder"},"parameters":["PathfinderObject","=","100"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure pathfinding cell size matches tile size"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PathfindingBehavior::CellWidth"},"parameters":["PathfinderObject","PathfindingBehavior","!=","TileSize "]}],"actions":[{"type":{"value":"PathfindingBehavior::CellWidth"},"parameters":["PathfinderObject","PathfindingBehavior","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PathfindingBehavior::CellHeight"},"parameters":["PathfinderObject","PathfindingBehavior","!=","TileSize "]}],"actions":[{"type":{"value":"PathfindingBehavior::CellHeight"},"parameters":["PathfinderObject","PathfindingBehavior","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to a random starting room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","RoomObject"]}],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset counter (used to assign RoomID to rooms)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","=","1"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","Variable(__DungeonGenerator.CurrentRoomID)"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Cycle through all rooms, always going to the nearest unvisited room"},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","False"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["RoomObject","PathfinderObject.X()","PathfinderObject.Y()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Assign path order if one does not exist"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","Variable(__DungeonGenerator.CurrentRoomID)"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","+","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the next room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","True"]}]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Close loop","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If desired, connect a hallway from the last room to the first room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["CloseLoop","True",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the starting room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","1"]}],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Add additional paths between rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If desired, make additional random connections between rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","=","0"]}]},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","<","AdditionalPaths"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the next room (don't select the room that already has the pathfinder)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["RoomObject","RoomObject"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["PathfinderObject","RoomObject","","",""]}],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","+","1"]}]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Remove terrain from rooms and hallways.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove terrain from inside rooms and hallways."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]}]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Place walls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"TerrainObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches hallways but not rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["HallwayObject","Deleted","False"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches rooms but not hallways"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete hallways that are at least partially inside of rooms "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["HallwayObject","RoomObject","","","yes"]}],"actions":[{"type":{"value":"Delete"},"parameters":["HallwayObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set boolean flag for hallways that are doorways (adjacent to room but not touching)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["HallwayObject","RoomObject","","","no"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["HallwayObject","__DungeonGenerator.IsRoomEntrance","True"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove extra terrain, if needed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["DeleteUnused","True",""]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","no"]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Cleanup pathfinder object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["PathfinderObject",""]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","longDescription":"All objects are based on this size","name":"TileSize","type":"expression"},{"description":"Map width (number of colums)","name":"MapWidth","type":"expression"},{"description":"Map height (number of rows)","name":"MapHeight","type":"expression"},{"description":"Terrain object","longDescription":"Used to fill the map that is not covered by floors, hallways, or walls.","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Room object","longDescription":"Rooms are placed in random locations and will try to not overlap with other rooms. ","name":"RoomObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Hallway object","longDescription":"Used to connect room objects. They follow the path made by the pathfinder object.","name":"HallwayObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Number of rooms","longDescription":"Rooms should take less than ~25% of map to ensure non-overlapping rooms. If there are too many rooms, they may end up overlapping each other.","name":"RoomQty","type":"expression"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Min room width (tiles)","name":"MinRoomWidth","type":"expression"},{"description":"Max room width (tiles)","name":"MaxRoomWidth","type":"expression"},{"description":"Min room height (tiles)","name":"MinRoomHeight","type":"expression"},{"description":"Max room height (tiles)","name":"MaxRoomHeight","type":"expression"},{"description":"Pathfinder object","longDescription":"Used to identify where hallways are placed between rooms","name":"PathfinderObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinding behavior (required)","name":"PathfindingBehavior","supplementaryInformation":"PathfindingBehavior::PathfindingBehavior","type":"behavior"},{"description":"Max separation attempts","longDescription":"Number of attempts to separate overalapping rooms. When this number is reached, rooms are left in current position. (Default: 10,000)","name":"MaxSeparationAttempts","type":"expression"},{"description":"Connect rooms in a loop","name":"CloseLoop","type":"yesorno"},{"description":"Hallway width (tiles)","name":"HallwayWidth","type":"expression"},{"description":"Additional paths between connect rooms","name":"AdditionalPaths","type":"expression"},{"description":"Delete unused terrain","name":"DeleteUnused","type":"trueorfalse"},{"description":"Wall object","name":"WallObject","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Calculate the number of grid neighbors around an object. Use \"NeighborCount(Object)\" expression to retrieve this value.","fullName":"Calculate the number of grid neighbors around an object","functionType":"Action","name":"CalculateGridNeighbors","sentence":"Calculate the number of grid neighbors (_PARAM2_) around _PARAM1_","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"Object","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save center point and size as scene variables (since we can't compare instances of the same object)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisCenterX","=","Object.CenterX()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisCenterY","=","Object.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisObjectWidth","=","Object.Width()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisNeighborCount","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate offset to start looking for the top-left neighbor"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","=","-1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetY","=","-1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Search for neighbors (but don't consider the center object)"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"3","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"3","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Neighbor","Variable(__DungeonGenerator.ThisCenterX) + (Variable(__DungeonGenerator.NeighborOffsetX) * Variable(__DungeonGenerator.ThisObjectWidth))","Variable(__DungeonGenerator.ThisCenterY) + (Variable(__DungeonGenerator.NeighborOffsetY) * Variable(__DungeonGenerator.ThisObjectWidth))"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisNeighborCount","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","=","-1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetY","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save neighbor count in real object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__DungeonGenerator.Neighbors","=","Variable(__DungeonGenerator.ThisNeighborCount)"]}]}]}],"parameters":[{"description":"Primary object (or object group)","name":"Object","type":"objectList"},{"description":"Neighbor object (or object group)","name":"Neighbor","type":"objectList"}],"objectGroups":[]},{"description":"The numerical order this room was created. (Range: 1 to total number of rooms).","fullName":"Creation order of room","functionType":"Expression","name":"RoomID","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["RoomObject.Variable(__DungeonGenerator.RoomID)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Room object","name":"RoomObject","type":"objectList"}],"objectGroups":[]},{"description":"Number of grid neighbors of an object. Requires running the \"CalculateGridNeighbors\" action before using this expression.","fullName":"Number of grid neighbors of an object","functionType":"Expression","name":"NeighborCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Variable(__DungeonGenerator.Neighbors)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"objectList"}],"objectGroups":[]},{"description":"Check if hallway is a room entrance.","fullName":"Hallway is a room entrance","functionType":"Condition","name":"IsRoomEntrance","sentence":"_PARAM1_ is a room entrance","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__DungeonGenerator.IsRoomEntrance","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Hallway object","name":"Object","type":"objectList"}],"objectGroups":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"AdjustHallwaySizes"},{"functionName":"FillWorld"},{"functionName":"GenerateDungeonCave"},{"functionName":"GenerateDungeonRooms"},{"functionName":"CalculateGridNeighbors"},{"functionName":"RoomID"},{"functionName":"NeighborCount"},{"functionName":"IsRoomEntrance"}]},"eventsBasedBehaviors":[],"eventsBasedObjects":[]}],"externalLayouts":[{"associatedLayout":"Game","name":"4Way","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_4Way","persistentUuid":"f7878de8-d621-4629-afc8-5fcbb25d688d","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"c6ec3658-b64e-4cab-8a8b-98903a65fd27","width":0.0,"x":640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"5a72b7c8-fd61-40c0-884e-b69731807160","width":0.0,"x":-640.0,"y":0.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"60748f83-5456-40c3-b8d2-4c527981e015","width":0.0,"x":0.0,"y":-480.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"e779ea46-1b9a-4892-8196-1c9d194e2c41","width":0.0,"x":0.0,"y":480.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"93ca46b9-87ee-4e70-850c-38e9617605a3","width":0.0,"x":352.0,"y":0.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"bea3a627-abec-44dc-89d3-5df9fbeab374","width":0.0,"x":256.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"d8c9f7bf-925d-4217-a90b-1d9ebe41031d","width":0.0,"x":352.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1994f7b8-51f5-4ee0-b488-0209937688f9","width":0.0,"x":256.0,"y":448.0,"zOrder":9,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b4d80a60-fece-437d-b347-dc1fbc953eff","width":32.0,"x":608.0,"y":288.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1366481c-9a22-4235-8166-8b8e93a5ed57","width":32.0,"x":608.0,"y":64.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f6c9c4e5-1083-4ef9-a17d-f3cba6d22d4d","width":32.0,"x":0.0,"y":64.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"27fae954-5c19-4172-9b74-c529557aaa45","width":32.0,"x":0.0,"y":288.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1c9a1e75-a0c5-4ab1-9d7c-c1da725434f9","width":256.0,"x":352.0,"y":32.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"ea088ace-7e31-460c-9f3c-93de2deca165","width":256.0,"x":32.0,"y":32.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"50fbe774-75cd-48e4-bff7-970e897cd1ac","width":256.0,"x":32.0,"y":416.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"98289955-8a5a-41b3-b107-7279e92d3174","width":256.0,"x":352.0,"y":416.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":1.168756882148187,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"LR","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_LR","persistentUuid":"f69d2e29-2b65-4e41-93b2-56269c88fba4","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"e1e1e2da-9a5f-4db8-a33a-e6478e381d46","width":0.0,"x":640.0,"y":0.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"114e4509-29d9-4811-b71f-45fa7072dbef","width":0.0,"x":-640.0,"y":0.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"9464a17e-8582-4fa0-96cb-21fe7416dbcf","width":32.0,"x":608.0,"y":64.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"534a854e-870e-405a-aafe-90e4ea34ac6d","width":32.0,"x":608.0,"y":288.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1c1ed84d-fabc-4b62-aa04-aa2404bf37e5","width":32.0,"x":0.0,"y":288.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"365e571f-966b-4c50-b2dc-41a460ea4f81","width":32.0,"x":0.0,"y":64.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"8a32e300-81a4-4b6e-974a-f543901f3266","width":576.0,"x":32.0,"y":32.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"2ac92215-360c-4c46-a49c-13b82240fd2a","width":576.0,"x":32.0,"y":416.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"UD","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_UD","persistentUuid":"5e458a16-7f67-4530-87d5-c46cf1c70a3a","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"3b375ba4-cfd5-4918-9c40-366331322c8f","width":0.0,"x":0.0,"y":-480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"a2d2d1ca-ef1a-402a-92ab-4658aaf19d79","width":0.0,"x":0.0,"y":480.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"92301df8-aa43-4b2f-bb7c-3d6cfc821c47","width":32.0,"x":608.0,"y":64.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f7c82eb1-5746-41fe-a9cc-3bac809230d3","width":32.0,"x":0.0,"y":64.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"6ba432e4-a0cd-47f5-965a-612871f65f40","width":256.0,"x":352.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c1e0e2e3-b4d4-4ca7-969b-0ba68078cd0a","width":256.0,"x":32.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c0a51d16-e7fa-482a-a6da-6540113cf26a","width":256.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"82302b03-5c21-401c-b809-15fc60d1ca98","width":256.0,"x":352.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f77e09f4-055b-4a15-ad4b-c6b165b86153","width":0.0,"x":352.0,"y":0.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"95d8477e-82f7-431f-925b-2083fc7e501b","width":0.0,"x":256.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"9bf2e926-e0a5-43a3-9d5f-39f90ba7dca8","width":0.0,"x":352.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"06ceaa29-1c7a-49b4-9142-48b979d23440","width":0.0,"x":256.0,"y":448.0,"zOrder":9,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.926622364902796,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadL","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadL","persistentUuid":"37237183-4a66-4f3a-a60d-0c54a8ca4d90","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"7030b988-29fe-410d-989a-7d0c936f4c11","width":0.0,"x":640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"e1b91469-3e8b-4eef-99e3-0434499e2e54","width":32.0,"x":608.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"8476a995-bde7-4d1c-ac6e-57160597b043","width":32.0,"x":608.0,"y":288.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"5cd7cfb8-cb14-423e-818d-2276aab60696","width":576.0,"x":32.0,"y":416.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"a60a2c5d-3577-4aee-a1de-114c71f2abef","width":576.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"73cc79a0-9706-4cba-bcec-c8f3221c849f","width":32.0,"x":0.0,"y":64.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadR","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadR","persistentUuid":"d251265b-16fb-4e8b-8721-1a08ff078396","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"bd898bf7-4f86-492c-ba74-098d55f1d43e","width":0.0,"x":-640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_skelly01","persistentUuid":"12a0189a-4e93-4750-a313-4598eb2edfa9","width":0.0,"x":445.0,"y":158.0,"zOrder":20,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"6aba8a3b-2776-464b-bc9a-3e012acb894b","width":32.0,"x":608.0,"y":64.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"adb9f59f-d690-4bba-846a-1dec7956fa73","width":32.0,"x":0.0,"y":64.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1549b163-c089-44e8-aa7a-a84c7e810524","width":32.0,"x":0.0,"y":288.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"4ec087d5-64e4-4f69-b032-60113e3be4f5","width":576.0,"x":32.0,"y":32.0,"zOrder":22,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1d2ee646-a75d-4d0f-83a6-4e34cfcfb84e","width":576.0,"x":32.0,"y":416.0,"zOrder":22,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":1.058071480431368,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadUp","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadUp","persistentUuid":"d1a66cb2-ae2e-4f1d-8766-d9992d6d18ad","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"eddf7615-92c4-4b04-940b-6515e299e940","width":0.0,"x":0.0,"y":480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"11cc0725-6ebc-44e5-a90a-0259be053c45","width":32.0,"x":608.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3c206b90-e596-4938-93c9-4f65f7fbe377","width":32.0,"x":0.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"ce6f4701-3ae8-4050-9e7c-9172fb9e5800","width":576.0,"x":32.0,"y":32.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b83cb5df-bc17-49f1-ac0b-3518becffbba","width":256.0,"x":352.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"fce2158f-0f90-46a7-8dca-4bbc529a6cad","width":256.0,"x":32.0,"y":416.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b7f850a5-0c39-4367-b7ed-80cd697d9f78","width":0.0,"x":352.0,"y":448.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f0fb7690-c7aa-45aa-aeef-c7dc178fb6f4","width":0.0,"x":256.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadDown","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadDown","persistentUuid":"552c6a78-2267-41c0-9d12-e4d0e1da2ef8","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"1635740f-8b55-4918-afdf-bfd9de2db35d","width":0.0,"x":0.0,"y":-480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3794d543-64de-4d10-933d-8fca25ef70ff","width":32.0,"x":608.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"84b9b04c-8e2f-4a8f-9295-2ea3fcc98da0","width":32.0,"x":0.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"d70088b3-6953-4e77-b220-6862298fc7f8","width":576.0,"x":32.0,"y":416.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"4c47fd50-16f6-4865-a12c-f9a3ca90ffa5","width":256.0,"x":352.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"675e179d-f323-489c-b7df-d6986db1c80f","width":256.0,"x":32.0,"y":32.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3c942658-08bb-455d-a15a-4e1961a4dc92","width":0.0,"x":352.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"5f2795e3-6b64-49cd-956e-5d3da83e41e7","width":0.0,"x":256.0,"y":0.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9901680147497778,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}}]} \ No newline at end of file +{"firstLayout":"","gdVersion":{"build":274,"major":5,"minor":6,"revision":0},"initialGDVersion":"5.6.274","properties":{"adaptGameResolutionAtRuntime":true,"antialiasingMode":"MSAA","antialisingEnabledOnMobile":false,"folderProject":false,"orientation":"landscape","packageName":"com.example.gamename","pixelsRounding":true,"projectUuid":"9386a7f4-fb47-4bec-8bd2-99c1fb11403b","scaleMode":"nearest","sizeOnStartupMode":"","templateSlug":"","version":"1.0.0","name":"MiniDungeonMultiplayerDev","description":"","author":"","windowWidth":640,"windowHeight":480,"latestCompilationDirectory":"","maxFPS":60,"minFPS":20,"verticalSync":false,"platformSpecificAssets":{"android-icon-144":"","android-icon-192":"","android-icon-36":"","android-icon-48":"","android-icon-72":"","android-icon-96":"","android-windowSplashScreenAnimatedIcon":"","desktop-icon-512":"","ios-icon-100":"","ios-icon-1024":"","ios-icon-114":"","ios-icon-120":"","ios-icon-144":"","ios-icon-152":"","ios-icon-167":"","ios-icon-180":"","ios-icon-20":"","ios-icon-29":"","ios-icon-40":"","ios-icon-50":"","ios-icon-57":"","ios-icon-58":"","ios-icon-60":"","ios-icon-72":"","ios-icon-76":"","ios-icon-80":"","ios-icon-87":""},"loadingScreen":{"backgroundColor":0,"backgroundFadeInDuration":0.2,"backgroundImageResourceName":"","gdevelopLogoStyle":"light","logoAndProgressFadeInDuration":0.2,"logoAndProgressLogoFadeInDelay":0.0,"minDuration":1.5,"progressBarColor":16777215,"progressBarHeight":20.0,"progressBarMaxWidth":200.0,"progressBarMinWidth":40.0,"progressBarWidthPercent":30.0,"showGDevelopSplash":true,"showProgressBar":true},"watermark":{"placement":"bottom-left","showWatermark":true},"authorIds":[],"authorUsernames":[],"categories":[],"playableDevices":[],"extensionProperties":[],"platforms":[{"name":"GDevelop JS platform"}],"currentPlatform":"GDevelop JS platform"},"resources":{"resources":[{"file":"assets/03Idle25.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle25","smoothed":false,"userAdded":false},{"file":"assets/03Idle26.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle26","smoothed":false,"userAdded":false},{"file":"assets/03Idle27.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle27","smoothed":false,"userAdded":false},{"file":"assets/03Idle28.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle28","smoothed":false,"userAdded":false},{"file":"assets/03Idle29.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle29","smoothed":false,"userAdded":false},{"file":"assets/03Idle30.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle30","smoothed":false,"userAdded":false},{"file":"assets/03Idle31.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle31","smoothed":false,"userAdded":false},{"file":"assets/03Idle32.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle32","smoothed":false,"userAdded":false},{"file":"assets/03Idle33.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle33","smoothed":false,"userAdded":false},{"file":"assets/03Idle34.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle34","smoothed":false,"userAdded":false},{"file":"assets/03Idle35.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle35","smoothed":false,"userAdded":false},{"file":"assets/03Idle36.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Idle36","smoothed":false,"userAdded":false},{"file":"assets/03Walk.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk","smoothed":false,"userAdded":false},{"file":"assets/03Walk2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk2","smoothed":false,"userAdded":false},{"file":"assets/03Walk3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk3","smoothed":false,"userAdded":false},{"file":"assets/03Walk4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk4","smoothed":false,"userAdded":false},{"file":"assets/03Walk5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk5","smoothed":false,"userAdded":false},{"file":"assets/03Walk6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk6","smoothed":false,"userAdded":false},{"file":"assets/03Walk7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk7","smoothed":false,"userAdded":false},{"file":"assets/03Walk8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk8","smoothed":false,"userAdded":false},{"file":"assets/03Walk9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk9","smoothed":false,"userAdded":false},{"file":"assets/03Walk10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Walk10","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\"}","name":"NewSprite5","smoothed":false,"userAdded":false},{"file":"assets/NewSprite6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite6","smoothed":false,"userAdded":false},{"file":"assets/NewSprite7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite7","smoothed":false,"userAdded":false},{"file":"assets/TestRoom4Way.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoom4Way","smoothed":false,"userAdded":false},{"file":"assets/TestRoomLR.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomLR","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadU.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadU","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadD.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadD","smoothed":false,"userAdded":false},{"file":"assets/TestRoomUD.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomUD","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadL.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadL","smoothed":false,"userAdded":false},{"file":"assets/TestRoomDeadR.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"TestRoomDeadR","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite2","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite3","smoothed":false,"userAdded":false},{"file":"assets/NewSprite8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite8","smoothed":false,"userAdded":false},{"file":"assets/NewSprite9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite9","smoothed":false,"userAdded":false},{"file":"assets/NewSprite10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite10","smoothed":false,"userAdded":false},{"file":"assets/NewSprite11.png","kind":"image","metadata":"{\"extension\":\".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/NewSprite14.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite14","smoothed":false,"userAdded":false},{"file":"assets/NewSprite15.png","kind":"image","metadata":"{\"extension\":\".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/NewSprite25.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite25","smoothed":false,"userAdded":false},{"file":"assets/NewSprite26.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite26","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/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},{"file":"assets/NewSprite32.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite32","smoothed":false,"userAdded":false},{"file":"assets/NewSprite33.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite33","smoothed":false,"userAdded":false},{"file":"assets/NewSprite34.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite34","smoothed":false,"userAdded":false},{"file":"assets/NewSprite35.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite35","smoothed":false,"userAdded":false},{"file":"assets/NewSprite36.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite36","smoothed":false,"userAdded":false},{"file":"assets/NewSprite37.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite37","smoothed":false,"userAdded":false},{"file":"assets/NewSprite38.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite38","smoothed":false,"userAdded":false},{"file":"assets/NewSprite39.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"NewSprite39","smoothed":false,"userAdded":false},{"file":"assets/03Attack.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack","smoothed":false,"userAdded":false},{"file":"assets/03Attack2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack2","smoothed":false,"userAdded":false},{"file":"assets/03Attack3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack3","smoothed":false,"userAdded":false},{"file":"assets/03Attack4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack4","smoothed":false,"userAdded":false},{"file":"assets/03Attack5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack5","smoothed":false,"userAdded":false},{"file":"assets/03Attack6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"03Attack6","smoothed":false,"userAdded":false},{"file":"assets/01Idle.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle","smoothed":false,"userAdded":false},{"file":"assets/01Idle2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle2","smoothed":false,"userAdded":false},{"file":"assets/01Idle3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle3","smoothed":false,"userAdded":false},{"file":"assets/01Idle4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle4","smoothed":false,"userAdded":false},{"file":"assets/01Idle5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle5","smoothed":false,"userAdded":false},{"file":"assets/01Idle6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle6","smoothed":false,"userAdded":false},{"file":"assets/01Idle7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle7","smoothed":false,"userAdded":false},{"file":"assets/01Idle8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle8","smoothed":false,"userAdded":false},{"file":"assets/01Idle9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle9","smoothed":false,"userAdded":false},{"file":"assets/01Idle10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle10","smoothed":false,"userAdded":false},{"file":"assets/01Idle11.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle11","smoothed":false,"userAdded":false},{"file":"assets/01Idle12.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"01Idle12","smoothed":false,"userAdded":false},{"file":"assets/02Walk.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk","smoothed":false,"userAdded":false},{"file":"assets/02Walk2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk2","smoothed":false,"userAdded":false},{"file":"assets/02Walk3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk3","smoothed":false,"userAdded":false},{"file":"assets/02Walk4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk4","smoothed":false,"userAdded":false},{"file":"assets/02Walk5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk5","smoothed":false,"userAdded":false},{"file":"assets/02Attack.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack","smoothed":false,"userAdded":false},{"file":"assets/02Attack2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack2","smoothed":false,"userAdded":false},{"file":"assets/02Attack3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack3","smoothed":false,"userAdded":false},{"file":"assets/02Attack4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack4","smoothed":false,"userAdded":false},{"file":"assets/02Attack5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack5","smoothed":false,"userAdded":false},{"file":"assets/02Attack6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack6","smoothed":false,"userAdded":false},{"file":"assets/02Attack7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack7","smoothed":false,"userAdded":false},{"file":"assets/02Attack8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack8","smoothed":false,"userAdded":false},{"file":"assets/02Attack9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack9","smoothed":false,"userAdded":false},{"file":"assets/02Attack10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack10","smoothed":false,"userAdded":false},{"file":"assets/02Attack11.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack11","smoothed":false,"userAdded":false},{"file":"assets/02Attack12.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack12","smoothed":false,"userAdded":false},{"file":"assets/02Idle.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle","smoothed":false,"userAdded":false},{"file":"assets/02Idle2.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle2","smoothed":false,"userAdded":false},{"file":"assets/02Idle3.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle3","smoothed":false,"userAdded":false},{"file":"assets/02Idle4.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle4","smoothed":false,"userAdded":false},{"file":"assets/02Idle5.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle5","smoothed":false,"userAdded":false},{"file":"assets/02Idle6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle6","smoothed":false,"userAdded":false},{"file":"assets/02Idle7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle7","smoothed":false,"userAdded":false},{"file":"assets/02Idle8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle8","smoothed":false,"userAdded":false},{"file":"assets/02Idle9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle9","smoothed":false,"userAdded":false},{"file":"assets/02Idle10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle10","smoothed":false,"userAdded":false},{"file":"assets/02Idle11.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle11","smoothed":false,"userAdded":false},{"file":"assets/02Idle12.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Idle12","smoothed":false,"userAdded":false},{"file":"assets/02Walk6.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk6","smoothed":false,"userAdded":false},{"file":"assets/02Walk7.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk7","smoothed":false,"userAdded":false},{"file":"assets/02Walk8.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk8","smoothed":false,"userAdded":false},{"file":"assets/02Walk9.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk9","smoothed":false,"userAdded":false},{"file":"assets/02Walk10.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk10","smoothed":false,"userAdded":false},{"file":"assets/02Walk11.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk11","smoothed":false,"userAdded":false},{"file":"assets/02Walk12.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk12","smoothed":false,"userAdded":false},{"file":"assets/02Walk13.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk13","smoothed":false,"userAdded":false},{"file":"assets/02Walk14.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk14","smoothed":false,"userAdded":false},{"file":"assets/02Walk15.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Walk15","smoothed":false,"userAdded":false},{"file":"assets/02Attack13.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack13","smoothed":false,"userAdded":false},{"file":"assets/02Attack14.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack14","smoothed":false,"userAdded":false},{"file":"assets/02Attack15.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack15","smoothed":false,"userAdded":false},{"file":"assets/02Attack16.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack16","smoothed":false,"userAdded":false},{"file":"assets/02Attack17.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack17","smoothed":false,"userAdded":false},{"file":"assets/02Attack18.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack18","smoothed":false,"userAdded":false},{"file":"assets/02Attack19.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack19","smoothed":false,"userAdded":false},{"file":"assets/02Attack20.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack20","smoothed":false,"userAdded":false},{"file":"assets/02Attack21.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack21","smoothed":false,"userAdded":false},{"file":"assets/02Attack22.png","kind":"image","metadata":"{\"extension\":\".png\"}","name":"02Attack22","smoothed":false,"userAdded":false}]},"objects":[],"objectsFolderStructure":{"folderName":"__ROOT"},"objectsGroups":[],"variables":[],"layouts":[{"b":255,"disableInputWhenNotFocused":true,"mangledName":"Game","name":"Game","r":247,"standardSortMethod":true,"stopSoundsOnStartup":true,"title":"","v":249,"uiSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":1.134371579716097,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"},"objectsGroups":[{"name":"Rooms","objects":[{"name":"spr_4Way"},{"name":"spr_LR"},{"name":"spr_UD"},{"name":"spr_DeadL"},{"name":"spr_DeadR"},{"name":"spr_DeadUp"},{"name":"spr_DeadDown"}]},{"name":"Checker","objects":[{"name":"spr_right"},{"name":"spr_left"},{"name":"spr_up"},{"name":"spr_down"}]}],"variables":[{"name":"var_roomCount","persistentUuid":"c143876b-6251-4aec-a302-41a096a13d9d","type":"number","value":1.0}],"instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_player","persistentUuid":"168f7870-38ea-449a-b480-8a38e037e176","width":0.0,"x":288.0,"y":256.0,"zOrder":30,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_4Way","persistentUuid":"346c6f81-2757-45a8-a096-c776d3ab76bc","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"e34ef6cd-0335-48e6-8d19-d84d325b8591","width":0.0,"x":640.0,"y":0.0,"zOrder":31,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"a02511d0-68fd-4f90-afe7-4326ed28fd87","width":0.0,"x":-640.0,"y":0.0,"zOrder":32,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"bfc88395-d3c8-47c3-bb4e-c2a8d1950bb8","width":0.0,"x":0.0,"y":-480.0,"zOrder":33,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"03b1aa00-32fd-48b7-aaea-14d1e7e1196b","width":0.0,"x":0.0,"y":480.0,"zOrder":34,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b49413c4-39f9-41f9-9c64-b4ae76cd2ad9","width":0.0,"x":352.0,"y":0.0,"zOrder":35,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"baf49daf-10df-4608-b6e4-359b0f395cac","width":0.0,"x":256.0,"y":0.0,"zOrder":36,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"95fcb59f-88a5-4137-ade0-1788226b3252","width":0.0,"x":352.0,"y":448.0,"zOrder":37,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"2a116ece-9265-456a-b2aa-6399354e0b4b","width":0.0,"x":256.0,"y":448.0,"zOrder":38,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3a816cd3-f87f-47d4-98e0-2943a9dcaaa4","width":256.0,"x":352.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"390c640e-d2ae-494e-b3ba-eaa7a737d262","width":256.0,"x":32.0,"y":32.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"94ab7ace-3ea6-4466-a8bb-ab408aaf2656","width":256.0,"x":32.0,"y":416.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1b5b4a92-a874-4ce0-99d5-fb066071eb17","width":256.0,"x":352.0,"y":416.0,"zOrder":39,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"915cea7d-00dc-48e6-b658-1a679dabb35a","width":32.0,"x":608.0,"y":64.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"7e61f02d-9158-4a01-a137-a7a4a12678da","width":32.0,"x":608.0,"y":288.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c333414c-b787-464f-b406-46358a49f085","width":32.0,"x":0.0,"y":288.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c5ae41a4-8993-4917-ab04-e7db150e2d14","width":32.0,"x":0.0,"y":64.0,"zOrder":40,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"objects":[{"adaptCollisionMaskAutomatically":false,"assetStoreId":"","name":"spr_player","persistentUuid":"15baac05-8645-4485-b856-649122e1892c","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_sprite","persistentUuid":"815f23c1-63b9-424b-b968-4232f6355a8e","type":"string","value":"01"}],"effects":[],"behaviors":[{"name":"TopDownMovement","type":"TopDownMovementBehavior::TopDownMovementBehavior","acceleration":9999.0,"allowDiagonals":true,"angleOffset":0.0,"angularMaxSpeed":180.0,"customIsometryAngle":30.0,"deceleration":9999.0,"ignoreDefaultControls":false,"maxSpeed":200.0,"movementAngleOffset":0.0,"rotateObject":false,"useLegacyTurnBack":false,"viewpoint":"TopDown"}],"animations":[{"name":"03Idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"03Idle25","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle26","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle27","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle28","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle29","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle30","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle31","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle32","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle33","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle34","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle35","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Idle36","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"03Walk","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"03Walk","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Walk10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"03Attack","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"03Attack","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Attack2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Attack3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Attack4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Attack5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"03Attack6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"01Idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"01Idle","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle11","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"01Idle12","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"01Walk","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"02Walk","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"01Attack","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"02Attack","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack11","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack12","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"02Idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"02Idle","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle2","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle3","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle4","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle5","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle11","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Idle12","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"02Walk","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"02Walk6","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk7","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk8","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk9","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk10","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk11","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk12","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk13","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk14","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Walk15","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]},{"name":"02Attack","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"02Attack13","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack14","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack15","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack16","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack17","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack18","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack19","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack20","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack21","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]},{"hasCustomCollisionMask":true,"image":"02Attack22","points":[],"originPoint":{"name":"origine","x":0.0,"y":40.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":28.0},{"x":32.0,"y":28.0},{"x":32.0,"y":40.0},{"x":0.0,"y":40.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_4Way","persistentUuid":"0e24c193-6010-4988-84e4-84247e4111a6","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoom4Way","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoom4Way","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_right","persistentUuid":"1e631ce1-545f-451f-9f16-36ae35076ff7","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"22df5395-a194-44b8-bc37-bb550d070d01","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite4","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_LR","persistentUuid":"216f1ec8-083e-4ddc-8ecc-19dfe2b3e31d","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomLR","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomLR","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_UD","persistentUuid":"63a7090f-a6d8-4eb9-93ee-9e076596ce88","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomUD","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomUD","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadL","persistentUuid":"cc600b8e-3783-4703-abe3-426832db2a92","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadL","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadL","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadR","persistentUuid":"49f00013-44d6-443c-9ffe-0330d4559935","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadR","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadR","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadUp","persistentUuid":"76f7a08f-18f4-4bf4-a4d2-9db38bad7409","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadU","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadU","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_DeadDown","persistentUuid":"24006229-fc36-4f86-8b51-c78029706d67","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"TestRoomDeadD","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"TestRoomDeadD","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":640.0,"y":0.0},{"x":640.0,"y":480.0},{"x":0.0,"y":480.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_left","persistentUuid":"975b00e7-0480-4497-baaf-2030a83377fb","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"ce81a637-0f6f-41db-a57b-8decaed70174","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite5","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_up","persistentUuid":"64de8436-160b-4de7-af7c-2e25f8e83b8b","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"297f1f68-b1b2-42fd-90e3-ed8b0e5f8335","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite6","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_down","persistentUuid":"11b66a89-0299-4709-97bb-fbfd0e05d9ab","type":"Sprite","updateIfNotVisible":false,"variables":[{"name":"var_Random","persistentUuid":"01025634-8159-420e-b49c-09c609ea3e6a","type":"number","value":0.0}],"effects":[],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite7","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_skelly01","persistentUuid":"a50eed58-da79-4406-ad04-ae846f10346a","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[],"behaviors":[],"animations":[{"name":"skel_idle","useMultipleDirections":false,"directions":[{"looping":true,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite2","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite3","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite8","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite9","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite10","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite11","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite12","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite13","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite14","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite15","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite16","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]},{"name":"skel_die","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite17","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite18","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite19","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite20","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite21","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite22","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite23","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite24","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite25","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite26","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite27","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite28","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite29","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite30","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]},{"name":"skel_attack","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite31","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite32","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite33","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite34","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite35","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite36","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite37","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]},{"hasCustomCollisionMask":true,"image":"NewSprite38","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":4.0,"y":4.0},{"x":36.0,"y":4.0},{"x":36.0,"y":34.0},{"x":4.0,"y":34.0}]]}]}]}]},{"adaptCollisionMaskAutomatically":true,"assetStoreId":"","name":"spr_wall","persistentUuid":"b3e8803e-3284-4865-a2d2-f0cf1d2c2de8","type":"Sprite","updateIfNotVisible":false,"variables":[],"effects":[{"effectType":"Adjustment","name":"Effect","doubleParameters":{"alpha":0.0,"blue":1.0,"brightness":1.0,"contrast":1.0,"gamma":1.0,"green":1.0,"red":1.0,"saturation":1.0},"stringParameters":{},"booleanParameters":{}}],"behaviors":[],"animations":[{"name":"NewSprite","useMultipleDirections":false,"directions":[{"looping":false,"metadata":"{\"pskl\":{}}","timeBetweenFrames":0.08,"sprites":[{"hasCustomCollisionMask":true,"image":"NewSprite39","points":[],"originPoint":{"name":"origine","x":0.0,"y":0.0},"centerPoint":{"automatic":true,"name":"centre","x":0.0,"y":0.0},"customCollisionMask":[[{"x":0.0,"y":0.0},{"x":32.0,"y":0.0},{"x":32.0,"y":32.0},{"x":0.0,"y":32.0}]]}]}]}]}],"objectsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"Enemies","children":[{"objectName":"spr_skelly01"}]},{"folderName":"Players","children":[{"objectName":"spr_player"}]},{"folderName":"Rooms","children":[{"folderName":"DeadUp","children":[{"objectName":"spr_DeadUp"}]},{"folderName":"4Way","children":[{"objectName":"spr_4Way"}]},{"objectName":"spr_DeadR"},{"objectName":"spr_DeadL"},{"objectName":"spr_UD"},{"objectName":"spr_DeadDown"},{"objectName":"spr_LR"}]},{"folderName":"Checkers","children":[{"objectName":"spr_down"},{"objectName":"spr_up"},{"objectName":"spr_left"},{"objectName":"spr_right"},{"objectName":"spr_wall"}]}]},"events":[{"type":"BuiltinCommonInstructions::Link","include":{"includeConfig":0},"target":"Functions"}],"layers":[{"ambientLightColorB":200,"ambientLightColorG":200,"ambientLightColorR":200,"camera2DPlaneMaxDrawingDistance":5000.0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":3.0,"cameraType":"","followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"","renderingType":"","visibility":true,"cameras":[{"defaultSize":true,"defaultViewport":true,"height":0.0,"viewportBottom":1.0,"viewportLeft":0.0,"viewportRight":1.0,"viewportTop":0.0,"width":0.0}],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Ambient Hemisphere Light","doubleParameters":{"elevation":40.0,"intensity":0.33,"rotation":300.0},"stringParameters":{"groundColor":"127;127;127","skyColor":"255;255;255","top":"Z+"},"booleanParameters":{}},{"effectType":"Scene3D::DirectionalLight","name":"3D Sun Light","doubleParameters":{"distanceFromCamera":1500.0,"elevation":40.0,"frustumSize":4000.0,"intensity":0.75,"minimumShadowBias":0.0,"rotation":300.0},"stringParameters":{"color":"255;255;255","shadowQuality":"medium","top":"Z+"},"booleanParameters":{"isCastingShadow":true}}]},{"ambientLightColorB":200,"ambientLightColorG":200,"ambientLightColorR":200,"camera2DPlaneMaxDrawingDistance":5000.0,"camera3DFarPlaneDistance":10000.0,"camera3DFieldOfView":45.0,"camera3DNearPlaneDistance":3.0,"cameraType":"","followBaseLayerCamera":false,"isLightingLayer":false,"isLocked":false,"name":"UI","renderingType":"","visibility":true,"cameras":[],"effects":[{"effectType":"Scene3D::HemisphereLight","name":"3D Ambient Hemisphere Light","doubleParameters":{"elevation":40.0,"intensity":0.33,"rotation":300.0},"stringParameters":{"groundColor":"127;127;127","skyColor":"255;255;255","top":"Z+"},"booleanParameters":{}},{"effectType":"Scene3D::DirectionalLight","name":"3D Sun Light","doubleParameters":{"distanceFromCamera":1500.0,"elevation":40.0,"frustumSize":4000.0,"intensity":0.75,"minimumShadowBias":0.0,"rotation":300.0},"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":"TopDownMovement","type":"TopDownMovementBehavior::TopDownMovementBehavior"}]}],"externalEvents":[{"associatedLayout":"Game","name":"Functions","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Scene Start","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneJustBegins"},"parameters":[""]}],"actions":[{"type":{"value":"ZoomCamera"},"parameters":["","0","",""]},{"type":{"value":"Hide"},"parameters":["spr_wall"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Generate Rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Right"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_right","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_right"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_right","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_right","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_right.X()","spr_right.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadR\"","spr_right.X()","spr_right.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_left","spr_right.X()","spr_right.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_left",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_right",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Left"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_left","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_left"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_left","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"LR\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadL\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_left","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_left.X()","spr_left.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadL\"","spr_left.X()","spr_left.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_right","spr_left.X()","spr_left.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_right",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_left",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Up"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_up","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_up"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_up","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"UD\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadUp\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_up","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_up.X()","spr_up.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadUp\"","spr_up.X()","spr_up.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_down","spr_up.X()","spr_up.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_down",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_up",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Down"},{"folded":true,"type":"BuiltinCommonInstructions::ForEach","object":"spr_down","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","spr_down"]}],"actions":[{"type":{"value":"SetNumberObjectVariable"},"parameters":["spr_down","var_Random","=","RandomInRange(1,6)"]}],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount","<=","8"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random",">=","1"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","<=","3"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"UD\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random",">=","4"]},{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","<=","5"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadDown\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberObjectVariable"},"parameters":["spr_down","var_Random","=","6"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"4Way\"","spr_down.X()","spr_down.Y()",""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NumberVariable"},"parameters":["var_roomCount",">","8"]}],"actions":[{"type":{"value":"BuiltinExternalLayouts::CreateObjectsFromExternalLayout"},"parameters":["","\"DeadDown\"","spr_down.X()","spr_down.Y()",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["spr_up","spr_down.X()","spr_down.Y()",""]}],"actions":[{"type":{"value":"Delete"},"parameters":["spr_up",""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["spr_down",""]},{"type":{"value":"SetNumberVariable"},"parameters":["var_roomCount","+","1"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["Rooms","Rooms","","","yes"]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Game\"",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Movement/Sprite Control","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsUsingControl"},"parameters":["spr_player","TopDownMovement","\"Right\""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","0","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["spr_player","Flippable","no"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","spr_player.var_sprite+\"Walk\""]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","180","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"FlippableCapability::FlippableBehavior::FlipX"},"parameters":["spr_player","Flippable","yes"]},{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","spr_player.var_sprite+\"Walk\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","90","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","spr_player.var_sprite+\"Walk\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"TopDownMovementBehavior::TopDownMovementBehavior::IsMovementAngleAround"},"parameters":["spr_player","TopDownMovement","270","45"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","spr_player.var_sprite+\"Walk\""]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"TopDownMovementBehavior::IsMoving"},"parameters":["spr_player","TopDownMovement"]},{"type":{"value":"BuiltinCommonInstructions::Once"},"parameters":[]}],"actions":[{"type":{"value":"AnimatableCapability::AnimatableBehavior::SetName"},"parameters":["spr_player","Animation","=","spr_player.var_sprite+\"Idle\""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Camera Control","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["spr_player","Rooms","","",""]}],"actions":[{"type":{"value":"RoomBasedCameraMovement::MoveCameraToActiveRoom"},"parameters":["","Rooms","spr_player","","","0","","","0",""]}]}],"parameters":[]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"KeyFromTextReleased"},"parameters":["","\"Space\""]}],"actions":[{"type":{"value":"Scene"},"parameters":["","\"Game\"",""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Collision","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["spr_player","spr_wall","","",""]}],"actions":[{"type":{"value":"SeparateFromObjects"},"parameters":["spr_player","spr_wall",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Controls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[]}],"parameters":[]}]}],"eventsFunctionsExtensions":[{"author":"","category":"Camera","dimension":"2D","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.5","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":[],"eventsFunctionsFolderStructure":{"folderName":"__ROOT"},"eventsBasedBehaviors":[{"description":"Smoothly scroll to follow an object.","fullName":"Smooth Camera","helpPath":"","iconUrl":"","name":"SmoothCamera","objectType":"","previewIconUrl":"","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":"CameraCenterX"},"parameters":["",">","Object.Behavior::FreeAreaRight()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterX"},"parameters":["","<","OldX - LeftwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","OldX - LeftwardSpeedMax * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraCenterX"},"parameters":["","<","Object.Behavior::FreeAreaLeft()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterX"},"parameters":["",">","OldX + RightwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"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":"CameraCenterY"},"parameters":["",">","Object.Behavior::FreeAreaBottom()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"CameraCenterY"},"parameters":["","<","OldY - UpwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","OldY - UpwardSpeedMax * TimeDelta()","Object.Layer()","0"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CameraCenterY"},"parameters":["","<","Object.Behavior::FreeAreaTop()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"CameraCenterY"},"parameters":["",">","OldY + DownwardSpeedMax * TimeDelta()","Object.Layer()","0"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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","group":"Camera configuration","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","group":"Camera configuration","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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(ForecastHistoryVarianceX)","<","1"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["abs(ForecastHistoryVarianceX)",">=","1"]},{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":"BuiltinCommonInstructions::CompareNumbers"},"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":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"onCreated"},{"functionName":"doStepPreEvents"},{"functionName":"MoveCameraCloser"},{"functionName":"DoMoveCameraCloser"},{"functionName":"WaitAndCatchUp"},{"functionName":"DrawDebug"},{"folderName":"Camera configuration","children":[{"functionName":"SetFollowOnX"},{"functionName":"SetFollowOnY"},{"functionName":"SetFollowFreeAreaRight"},{"functionName":"SetFollowFreeAreaLeft"},{"functionName":"SetFollowFreeAreaTop"},{"functionName":"SetFollowFreeAreaBottom"},{"functionName":"SetLeftwardSpeedMax"},{"functionName":"SetRightwardSpeedMax"},{"functionName":"SetUpwardSpeedMax"},{"functionName":"SetDownwardSpeedMax"},{"functionName":"SetLeftwardSpeed"},{"functionName":"SetRightwardSpeed"},{"functionName":"SetDownwardSpeed"},{"functionName":"SetUpwardSpeed"},{"functionName":"OffsetX"},{"functionName":"SetOffsetXOp"},{"functionName":"SetOffsetX"},{"functionName":"OffsetY"},{"functionName":"SetOffsetYOp"},{"functionName":"SetOffsetY"},{"functionName":"SetForecastTime"},{"functionName":"SetCameraDelay"}]},{"folderName":"Private","children":[{"functionName":"FreeAreaLeft"},{"functionName":"FreeAreaRight"},{"functionName":"FreeAreaBottom"},{"functionName":"FreeAreaTop"},{"functionName":"UpdateDelayedPosition"},{"functionName":"AddForecastHistoryPosition"},{"functionName":"UpdateForecastedPosition"},{"functionName":"ProjectHistoryEnds"},{"functionName":"ForecastTimeRatio"}]},{"functionName":"IsDelayed"},{"functionName":"CurrentDelay"},{"functionName":"IsWaiting"}]},"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","helpPath":"","iconUrl":"","name":"SmoothPlatformerCamera","objectType":"","previewIconUrl":"","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":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"doStepPreEvents"}]},"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":"","category":"Camera","dimension":"2D","extensionNamespace":"","fullName":"Room-based camera movement","gdevelopVersion":">=5.5.222","helpPath":"https://victrisgames.itch.io/room-based-camera-movement","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyMy4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iSWNvbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzIgMzIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KCS5zdDB7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9DQo8L3N0eWxlPg0KPGc+DQoJPHBhdGggZD0iTTE0LDNINEMzLjQsMywzLDMuNCwzLDR2MTBjMCwwLjYsMC40LDEsMSwxaDEwYzAuNiwwLDEtMC40LDEtMVY0QzE1LDMuNCwxNC42LDMsMTQsM3oiLz4NCgk8cGF0aCBkPSJNMTQsMTdINGMtMC42LDAtMSwwLjQtMSwxdjEwYzAsMC42LDAuNCwxLDEsMWgxMGMwLjYsMCwxLTAuNCwxLTFWMThDMTUsMTcuNCwxNC42LDE3LDE0LDE3eiIvPg0KCTxwYXRoIGQ9Ik0yOCwzSDE4Yy0wLjYsMC0xLDAuNC0xLDF2MTBjMCwwLjYsMC40LDEsMSwxaDEwYzAuNiwwLDEtMC40LDEtMVY0QzI5LDMuNCwyOC42LDMsMjgsM3oiLz4NCgk8cGF0aCBkPSJNMjgsMTdIMThjLTAuNiwwLTEsMC40LTEsMXYxMGMwLDAuNiwwLjQsMSwxLDFoMTBjMC42LDAsMS0wLjQsMS0xVjE4QzI5LDE3LjQsMjguNiwxNywyOCwxN3oiLz4NCjwvZz4NCjwvc3ZnPg0K","name":"RoomBasedCameraMovement","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/Glyphster Pack/Master/SVG/Applications and Programming/Applications and Programming_app_apps_applications_tiles.svg","shortDescription":"Move/zoom camera to frame the room object containing the player.","version":"1.0.5","description":["Move camera to the room that contains the trigger object (usually the player). If desired, change zoom to show the entire room or keep zoom static.","","How to use:","- Place room objects on scene","- Select camera zoom limits, how fast the camera should move, and the visible buffer around each room","- Run the \"Move and zoom camera\" action on every frame","- Move the trigger object (player) between rooms and the camera will center on the room that contains the trigger object.","","Tips:","- Use these conditions for custom logic when changing rooms : \"Camera moving\", \"Camera zooming\", and \"Room changed\"","- Set \"Lerp Speed\" to \"1\" to change the camera instantly"],"origin":{"identifier":"RoomBasedCameraMovement","name":"gdevelop-extension-store"},"tags":["camera","follow","room","trigger","zoom","move","smooth"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","8Ih1aa8f5gWUp4UB2BdhQ2iXWxJ3","dt0tRnf2kHWJnjkrpnzTzNj9Yc63"],"dependencies":[],"globalVariables":[],"sceneVariables":[],"eventsFunctions":[{"description":"Move and zoom camera to the room object that contains the trigger object (usually the player).","fullName":"Move and zoom camera to the room object that contains the trigger object (player)","functionType":"Action","group":"Layers and cameras","name":"MoveCameraToActiveRoom","sentence":"Move camera to room object _PARAM1_ that contains trigger object _PARAM2_ (Layer: _PARAM3_, Lerp speed: _PARAM4_, Max zoom: _PARAM5_, Min zoom: _PARAM6_, Border buffer: _PARAM7_px)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save input values"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","=","MaxZoom"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","=","LerpSpeed"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set default values if none provided"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","<=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxZoom","=","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","<=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.LerpSpeed","=","0.1"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Main","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Identify the current room","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Detect which room is the current one"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["RoomObject","TriggerObject.CenterX()","TriggerObject.CenterY()"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Room has NOT changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Room has changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","!=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","True"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update CurrentRoomID variable"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["TriggerObject","__RoomBasedCameraMovement.CurrentRoomID","=","RoomObject.Variable(__RoomBasedCameraMovement.RoomID)"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move camera","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"RoomObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Assign each room a unique ID if they don't have one yet"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.MaxRoomID","+","1"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","Variable(__RoomBasedCameraMovement.MaxRoomID)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Check if this room is the current room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__RoomBasedCameraMovement.RoomID","=","TriggerObject.Variable(__RoomBasedCameraMovement.CurrentRoomID)"]}],"actions":[],"events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Change zoom","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the camera dimensions"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth","=","RoomObject.Width()+2*OutsideBuffer"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight","=","RoomObject.Height()+2*OutsideBuffer"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraZoom","=","min(SceneWindowHeight() / Variable(__RoomBasedCameraMovement.CameraHeight), SceneWindowWidth() / Variable(__RoomBasedCameraMovement.CameraWidth))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust zoom to stay within min/max values"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.CameraZoom","=","clamp(Variable(__RoomBasedCameraMovement.CameraZoom),MinZoom,Variable(__RoomBasedCameraMovement.MaxZoom))"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change camera zoom"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ZoomCamera"},"parameters":["","ceil(lerp(CameraZoom(Layer,Camera),Variable(__RoomBasedCameraMovement.CameraZoom),Variable(__RoomBasedCameraMovement.LerpSpeed))*1000)/1000","Layer","Camera"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Move camera position","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"For rooms smaller than the viewable screen, center the camera on the center of the room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth","<=","SceneWindowWidth()"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","ceil(lerp(CameraX(Layer,Camera), RoomObject.CenterX(), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight","<=","SceneWindowHeight()"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","ceil(lerp(CameraY(Layer,Camera), RoomObject.CenterY(), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"For rooms larger than the viewable screen, center the camera on the TriggerObject and clamp camera so it only shows the room + buffer"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraWidth",">","SceneWindowWidth()"]}],"actions":[{"type":{"value":"SetCameraCenterX"},"parameters":["","=","ceil(lerp(CameraX(Layer,Camera), clamp(TriggerObject.CenterX(), \nRoomObject.CenterX() - RoomObject.Width()/2 + SceneWindowWidth()/2 - OutsideBuffer, RoomObject.CenterX() + RoomObject.Width()/2 - SceneWindowWidth()/2 + OutsideBuffer), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.CameraHeight",">","SceneWindowHeight()"]}],"actions":[{"type":{"value":"SetCameraCenterY"},"parameters":["","=","ceil(lerp(CameraY(Layer,Camera), clamp(TriggerObject.CenterY(), \nRoomObject.CenterY() - RoomObject.Height()/2 + SceneWindowHeight()/2 - OutsideBuffer, RoomObject.CenterY() + RoomObject.Height()/2 - SceneWindowHeight()/2 + OutsideBuffer), Variable(__RoomBasedCameraMovement.LerpSpeed))*100)/100","Layer","Camera"]}]}],"parameters":[]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate \"IsCameraMoving\" condition","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","0"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer, Camera)"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer, Camera)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check if camera position changed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera has NOT moved"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer,Camera)"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera has moved"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","!=","CameraX(Layer,Camera)"]},{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","!=","CameraY(Layer,Camera)"]}]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update with current camera position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraX","=","CameraX(Layer, Camera)"]},{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PrevCameraY","=","CameraY(Layer, Camera)"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate \"IsCameraZooming\" condition","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Initialize","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer, Camera)"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Check if camera zoom changed","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera zoom has NOT changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Camera zoom has changed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","!=","CameraZoom(Layer,Camera)"]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Update with current camera zoom"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__RoomBasedCameraMovement.PreviousZoom","=","CameraZoom(Layer, Camera)"]}]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Room object","longDescription":"Room objects are used to mark areas that should be seen by the camera.","name":"RoomObject","type":"objectList"},{"description":"Trigger object (player)","longDescription":"When the Trigger Object touches a new Room Object, the camera will move to the new room","name":"TriggerObject","type":"objectList"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Lerp speed","longDescription":"Range: 0 to 1","name":"LerpSpeed","type":"expression"},{"description":"Maximum zoom","name":"MaxZoom","type":"expression"},{"description":"Minimum zoom","name":"MinZoom","type":"expression"},{"description":"Outside buffer (pixels)","longDescription":"Minimum extra space displayed around each side the room","name":"OutsideBuffer","type":"expression"},{"description":"Camera","name":"Camera","type":"expression"}],"objectGroups":[]},{"description":"Check if trigger object (usually the player) has entered a new room on this frame.","fullName":"Check if trigger object (player) has entered a new room","functionType":"Condition","name":"ActiveRoomChanged","sentence":"_PARAM1_ has just entered a new room","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["TriggerObject","__RoomBasedCameraMovement.RoomChanged","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Trigger object (player)","name":"TriggerObject","type":"objectList"}],"objectGroups":[]},{"description":"Check if camera is zooming (requires the use of \"Move and zoom camera\" action in this extension).","fullName":"Check if camera is zooming","functionType":"Condition","name":"IsCameraZooming","sentence":"Camera is zooming","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraZooming","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[],"objectGroups":[]},{"description":"Check if camera is moving (requires the use of \"Move and zoom camera\" action in this extension).","fullName":"Check if camera is moving","functionType":"Condition","name":"IsCameraMoving","sentence":"Camera is moving","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__RoomBasedCameraMovement.CameraMoving","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[],"objectGroups":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"folderName":"Layers and cameras","children":[{"functionName":"MoveCameraToActiveRoom"}]},{"functionName":"ActiveRoomChanged"},{"functionName":"IsCameraZooming"},{"functionName":"IsCameraMoving"}]},"eventsBasedBehaviors":[],"eventsBasedObjects":[]},{"author":"@oscuridad6661, Tristan Rhodes (@VictrisGames)","category":"Game mechanic","dimension":"","extensionNamespace":"","fullName":"Dungeon generator","gdevelopVersion":">=5.5.222","helpPath":"https://victrisgames.itch.io/extension-dungeon-generator","iconUrl":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0ibWRpLXNpdGVtYXAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOSwyVjhIMTFWMTFINUMzLjg5LDExIDMsMTEuODkgMywxM1YxNkgxVjIySDdWMTZINVYxM0gxMVYxNkg5VjIySDE1VjE2SDEzVjEzSDE5VjE2SDE3VjIySDIzVjE2SDIxVjEzQzIxLDExLjg5IDIwLjExLDExIDE5LDExSDEzVjhIMTVWMkg5WiIgLz48L3N2Zz4=","name":"DungeonGenerator","previewIconUrl":"https://resources.gdevelop-app.com/assets/Icons/sitemap.svg","shortDescription":"Create a procedurally generated dungeon. Includes two layouts: \"rooms and hallways\" and \"dungeon cave\".","version":"1.2.1","description":["How to use:","- Run the \"Generate Dungeon Cave\" or \"Generate Dungeon with Rooms\" action at the beginning of a scene.","","Tips:","- Keep the amount of space used by room objects to less than ~25% of the total map. If you add too many rooms, they will not be placed correctly and might collide with other rooms.","- Try using top-down controls combined with physics behavior (with no gravity) on the player and wall objects","- Use external layouts to place pre-designed rooms on randomly created room objects","- Use \"Delete Unused Terrain\" option to reduce resources used","- Use \"RoomID(object)\" expression to determine the starting and ending room","- Use \"NeighborCount(object)\" expression to find good places to place treasure. A high amount of neighbors means that the tile is a nook or cranny.","- Use \"IsRoomEntrance\" condition to identify hallway objects that are adjacent to a room","","An example shows how to procedurally generate dungeons or caves ([open the project online](https://editor.gdevelop.io/?project=example://dungeon-generator))."],"origin":{"identifier":"DungeonGenerator","name":"gdevelop-extension-store"},"tags":["dungeon","generator","procedural","generation","automatic","build","create","rogue","roguelike","hallway","entrance","floor","room","cave"],"authorIds":["gqDaZjCfevOOxBYkK6zlhtZnXCg1","5iOtaj8yEsam4mIj7TEUDk4LSAe2"],"dependencies":[],"globalVariables":[],"sceneVariables":[],"eventsFunctions":[{"description":"Set the size of hallway objects to be placed on the path created by the pathfinding object.","fullName":"Set size of hallway objects","functionType":"Action","name":"AdjustHallwaySizes","private":true,"sentence":"Set the size of hallway objects _PARAM1_ to be placed on the path created by _PARAM2_ (Tile size: _PARAM4_ pixels, Hallway width: _PARAM5_ tiles)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Adjust size of hallway objects","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the default size of hallway object to the tilesize"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize "]},{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Skip the first step in the path (so this function doesn't try to evaluate step 0)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.PathCounter",">","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Vertical move (previous frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter)-1)"]}],"actions":[{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change in direction (this frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter)+1)"]}],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Horizontal move (previous frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter)-1)"]}],"actions":[{"type":{"value":"ChangeHeight"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change in direction (this frame)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","=","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter)+1)"]}],"actions":[{"type":{"value":"ChangeWidth"},"parameters":["HallwayObject","=","TileSize * max(1,HallwayWidth)"]}]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","+","1"]}]}],"parameters":[]}],"parameters":[{"description":"Hallway object","name":"HallwayObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinder object","name":"PathfinderObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinding behavior","name":"PathfindingBehavior","supplementaryInformation":"PathfindingBehavior::PathfindingBehavior","type":"behavior"},{"description":"Tile size (pixels)","name":"TileSize","type":"expression"},{"description":"Hallway width (tiles)","name":"HallwayWidth","type":"expression"}],"objectGroups":[]},{"description":"Fill world with terrain","fullName":"Fill world with terrain","functionType":"Action","name":"FillWorld","private":true,"sentence":"Fill world with terrain (Tile size: _PARAM1_ pixels, Columns: _PARAM2_ tiles, Rows: _PARAM3_ tiles, Fill object: _PARAM4_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Populate map with terrain objects everywhere","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","=","0"]}]},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapHeight","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapWidth","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","TerrainObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","+","1"]}]}]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","name":"TileSize","type":"expression"},{"description":"Map width (number of colums)","name":"MapWidth","type":"expression"},{"description":"Map height (number of rows)","name":"MapHeight","type":"expression"},{"description":"Terrain object","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Generate a dungeon cave using a random walk algorithm. When the walker touches an edge of the map, it is moved back to the center of map.","fullName":"Generate a dungeon cave","functionType":"Action","name":"GenerateDungeonCave","sentence":"Generate a dungeon cave that has _PARAM8_ percent floor objects (Tile size: _PARAM1_ pixels, Map width: _PARAM2_ tiles, Map height: _PARAM3_ tiles, Terrain object: _PARAM4_, Floor object: _PARAM5_, Wall object: _PARAM12_, Walker object: _PARAM7_, Walker width/height: _PARAM9_ tiles, Minimum border: _PARAM10_ tiles, Create objects on layer: _PARAM6_, Delete unused terrain: _PARAM11_, Calculate neighbors: _PARAM13_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Random walk","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the number of floor objects to be created. Don't include border in calculation. Multiply border by 2 because it needs to exist on both sides (top+bottom, left+right)."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorGoal","=","round((MapWidth - 2 * MinBorder) * (MapHeight - 2 * MinBorder) * FloorPercentage)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initialize counters"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.StepsTaken","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorCreated","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerRestarts","=","0"]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Walk until complete (using a 2D array)","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Start with an empty map (array)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"VariableRemoveChild"},"parameters":["__DungeonGenerator","\"WalkerMap\""]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create walkers","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initialize walker offsets (these are used to make the walker take up more than one tile)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetY","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create (WalkerSize^2) quantity of objects (1x1=1, 2x2=4, 3x3=9, etc0"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"max(1,WalkerSize)","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"max(1,WalkerSize)","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create virtual walker objects. Walker objects are ONLY used to store variables and to perform ForEach() loops. Position, size, and appearance DO NOT matter. \nTODO: These could be replaced by structure variables."},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","WalkerObject","0","0","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate the starting position (in the 2D array) and save it so it can be used for restarts"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","=","round(MapWidth/2 + Variable(__DungeonGenerator.WalkerOffsetX))"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","=","round(MapHeight/2 + Variable(__DungeonGenerator.WalkerOffsetY))"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.StartXpos","=","WalkerObject.Variable(__DungeonGenerator.Xpos)"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.StartYpos","=","WalkerObject.Variable(__DungeonGenerator.Ypos)"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerOffsetY","+","1"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Process walker movements","source":"","type":"BuiltinCommonInstructions::Group","events":[{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.FloorCreated","<","Variable(__DungeonGenerator.FloorGoal)"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset variables"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","False"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Calculate chance to go in each direction based on the ratio of width to height"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoRight","=","0.5 * (MapWidth / (MapWidth + MapHeight))"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoLeft","=","Variable(__DungeonGenerator.ChanceToGoRight)"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoUp","=","0.5 * (MapHeight / (MapWidth + MapHeight))"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ChanceToGoDown","=","Variable(__DungeonGenerator.ChanceToGoUp)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Generate a random number between 0 and 1"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.RandomNumber","=","RandomFloatInRange(0,1)"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move LEFT"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","0"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move RIGHT"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move UP"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight) + Variable(__DungeonGenerator.ChanceToGoUp)"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","-","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move DOWN"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber",">=","Variable(__DungeonGenerator.ChanceToGoLeft) + Variable(__DungeonGenerator.ChanceToGoRight) + Variable(__DungeonGenerator.ChanceToGoUp)"]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.RandomNumber","<=","1"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If ANY Walker is outside map boundries, reset ALL of them to their starting positions"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","<","MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos",">=","MapWidth - MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","<","MinBorder"]},{"type":{"value":"VarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos",">=","MapHeight - MinBorder"]}]}],"actions":[{"type":{"value":"SetSceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","True"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerRestarts","+","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Check all Walkers if they are on top of terrain"},{"type":"BuiltinCommonInstructions::ForEach","object":"WalkerObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"SceneVariableAsBoolean"},"parameters":["__DungeonGenerator.InitiateRestart","True"]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move back to starting position"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Xpos","=","WalkerObject.Variable(__DungeonGenerator.StartXpos)"]},{"type":{"value":"ModVarObjet"},"parameters":["WalkerObject","__DungeonGenerator.Ypos","=","WalkerObject.Variable(__DungeonGenerator.StartYpos)"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If Walker is on Terrain, delete it"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[WalkerObject.Variable(__DungeonGenerator.Xpos)][WalkerObject.Variable(__DungeonGenerator.Ypos)]","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.WalkerMap[WalkerObject.Variable(__DungeonGenerator.Xpos)][WalkerObject.Variable(__DungeonGenerator.Ypos)]","=","1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.FloorCreated","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Track how many steps were taken"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.StepsTaken","+","1"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Draw map based on 2D array","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Loop through every tile in the map"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapHeight","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"MapWidth","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create terrain objects when array value is 0"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[Variable(__DungeonGenerator.CounterX)][Variable(__DungeonGenerator.CounterY)]","=","0"]}],"actions":[{"type":{"value":"Create"},"parameters":["","TerrainObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["TerrainObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["TerrainObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create floor objects when array value is 1"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.WalkerMap[Variable(__DungeonGenerator.CounterX)][Variable(__DungeonGenerator.CounterY)]","=","1"]}],"actions":[{"type":{"value":"Create"},"parameters":["","FloorObject","Variable(__DungeonGenerator.CounterX) * TileSize","Variable(__DungeonGenerator.CounterY) * TileSize","Layer"]},{"type":{"value":"ChangeWidth"},"parameters":["FloorObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["FloorObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterX","=","0"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CounterY","+","1"]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Add walls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Add walls"},{"type":"BuiltinCommonInstructions::ForEach","object":"TerrainObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches floor"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","FloorObject","","","no"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Calculate neighbors","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["CalculateNeighbors","True",""]}],"actions":[{"type":{"value":"DungeonGenerator::CalculateGridNeighbors"},"parameters":["","FloorObject","WallObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete walkers"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["WalkerObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete unused terrain (if desired)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["DeleteUnused","True",""]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","FloorObject","","","no"]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","longDescription":"All objects are based on this size","name":"TileSize","type":"expression"},{"description":"Map width (tiles)","name":"MapWidth","type":"expression"},{"description":"Map height (tiles)","name":"MapHeight","type":"expression"},{"description":"Terrain object","longDescription":"Terrain object is used to fill the map that is not covered by floors, hallways, or walls.","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Floor object","longDescription":"Floor objects are created on every tile that a walker has travelled to.","name":"FloorObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Walker object","longDescription":"Use a random walk algorithm to turn terrain objects into floor objects","name":"WalkerObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Floor percentage (Range: 0-1)","longDescription":"Percentage of map that will be convered by floor objects","name":"FloorPercentage","type":"expression"},{"description":"Size of walker sides (tiles)","longDescription":"The number of tiles for each side of the square walker object. For example, 2=2x2, 3=3x3, 4=4x4.","name":"WalkerSize","type":"expression"},{"description":"Minimum border","longDescription":"Can be used to provide a border of terrain around the map","name":"MinBorder","type":"expression"},{"description":"Delete unused terrain objects","name":"DeleteUnused","type":"trueorfalse"},{"description":"Wall object","longDescription":"Wall objects are placed between floor and terrain objects.","name":"WallObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Calculate neighbors","longDescription":"May take a few seconds to calculate neighbors on a large map, so disable this if you are not using it.","name":"CalculateNeighbors","type":"yesorno"}],"objectGroups":[]},{"description":"Generate a dungeon by placing rooms in random locations and moving them if they collide with each other. Rooms are connected with hallways.","fullName":"Generate a dungeon with room and hallways","functionType":"Action","name":"GenerateDungeonRooms","sentence":"Generate a dungeon with rooms (Room Qty: _PARAM7_, Tile size: _PARAM1_ pixels, Map width: _PARAM2_ tiles, Map height: _PARAM3_ tiles, Terrain object: _PARAM4_, Room object: _PARAM5_, Wall object: _PARAM20_, Hallway object: _PARAM6_, Pathfinding object: _PARAM13_, Min room width: _PARAM9_ tiles, Max room width: _PARAM10_ tiles, Min room height: _PARAM11_ tiles, Max room height: _PARAM12_ tiles, Hallway width: _PARAM17_ tiles, Create objects on layer: _PARAM8_, Max separation attempts: _PARAM15_, Connect rooms in a loop: _PARAM16_, Additional paths: _PARAM18_, Delete unused terrain: _PARAM19_)","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Populate map with terrain objects everywhere","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::FillWorld"},"parameters":["","TileSize","MapWidth","MapHeight","TerrainObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Create rooms at random locations","source":"","type":"BuiltinCommonInstructions::Group","events":[{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"NbObjet"},"parameters":["RoomObject","<","RoomQty"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a new room in a random location on map"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","RoomObject","RandomInRange(HallwayWidth, MapWidth - MaxRoomWidth - HallwayWidth) * TileSize","RandomInRange(HallwayWidth, MapHeight - MaxRoomHeight - HallwayWidth) * TileSize","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Change the room to a random size"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomWidth","=","RandomInRange(MinRoomWidth, MaxRoomWidth) * TileSize"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomHeight","=","RandomInRange(MinRoomHeight, MaxRoomHeight) * TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["RoomObject","=","RoomObject.Variable(__DungeonGenerator.RoomWidth)"]},{"type":{"value":"ChangeHeight"},"parameters":["RoomObject","=","RoomObject.Variable(__DungeonGenerator.RoomHeight)"]}]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Separate rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Estimate starting distance between rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MinSeparationDistance","=","ceil((sqrt(pow(MaxRoomWidth,2) + pow(MaxRoomHeight,2)))) * TileSize"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.SeparationCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set a default value for separation attempts"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["MaxSeparationAttempts","!=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MaxSeparationAttempts","=","MaxSeparationAttempts"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::CompareNumbers"},"parameters":["MaxSeparationAttempts","=","0"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.MaxSeparationAttempts","=","10000"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If rooms are close to each other, move them to a new random location"},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"Distance"},"parameters":["RoomObject","RoomObject","Variable(__DungeonGenerator.MinSeparationDistance)",""]},{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.SeparationCounter","<","Variable(__DungeonGenerator.MaxSeparationAttempts)"]}],"conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.SeparationCounter","+","1"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move in a random direction the distance of a room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["RoomObject","+","RandomWithStep(-MaxRoomWidth/2,MaxRoomWidth/2,MaxRoomWidth) * TileSize","+","RandomWithStep(-MaxRoomHeight/2,MaxRoomHeight/2,MaxRoomHeight) * TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move object back into the usable part of map"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["RoomObject",">","(MapHeight - MaxRoomWidth - HallwayWidth)*TileSize"]}],"actions":[{"type":{"value":"SetY"},"parameters":["RoomObject","=","(MapHeight - MaxRoomWidth - HallwayWidth)*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["RoomObject",">","(MapWidth - MaxRoomWidth - HallwayWidth)*TileSize"]}],"actions":[{"type":{"value":"SetX"},"parameters":["RoomObject","=","(MapWidth - MaxRoomWidth - HallwayWidth)*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosX"},"parameters":["RoomObject","<","HallwayWidth*TileSize"]}],"actions":[{"type":{"value":"SetX"},"parameters":["RoomObject","=","HallwayWidth*TileSize"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PosY"},"parameters":["RoomObject","<","HallwayWidth*TileSize"]}],"actions":[{"type":{"value":"SetY"},"parameters":["RoomObject","=","HallwayWidth*TileSize"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Draw paths between rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create pathfinder object if one doesn't exist"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"NbObjet"},"parameters":["PathfinderObject","<","1"]}],"actions":[{"type":{"value":"Create"},"parameters":["","PathfinderObject","0","0","Layer"]},{"type":{"value":"PathfindingBehavior::AllowDiagonals"},"parameters":["PathfinderObject","PathfindingBehavior","no"]},{"type":{"value":"ChangeHeight"},"parameters":["PathfinderObject","=","TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["PathfinderObject","=","TileSize"]},{"type":{"value":"SetZOrder"},"parameters":["PathfinderObject","=","100"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Make sure pathfinding cell size matches tile size"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PathfindingBehavior::CellWidth"},"parameters":["PathfinderObject","PathfindingBehavior","!=","TileSize "]}],"actions":[{"type":{"value":"PathfindingBehavior::CellWidth"},"parameters":["PathfinderObject","PathfindingBehavior","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PathfindingBehavior::CellHeight"},"parameters":["PathfinderObject","PathfindingBehavior","!=","TileSize "]}],"actions":[{"type":{"value":"PathfindingBehavior::CellHeight"},"parameters":["PathfinderObject","PathfindingBehavior","=","TileSize "]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to a random starting room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["","RoomObject"]}],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","True"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Reset counter (used to assign RoomID to rooms)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","=","1"]},{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","Variable(__DungeonGenerator.CurrentRoomID)"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Cycle through all rooms, always going to the nearest unvisited room"},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","False"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickNearest"},"parameters":["RoomObject","PathfinderObject.X()","PathfinderObject.Y()",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Assign path order if one does not exist"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","0"]}],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","Variable(__DungeonGenerator.CurrentRoomID)"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.CurrentRoomID","+","1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the next room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["RoomObject","__DungeonGenerator.Visited","True"]}]}]}]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Close loop","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If desired, connect a hallway from the last room to the first room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["CloseLoop","True",""]}],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the starting room"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"VarObjet"},"parameters":["RoomObject","__DungeonGenerator.RoomID","=","1"]}],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]}]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Add additional paths between rooms","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"If desired, make additional random connections between rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","=","0"]}]},{"infiniteLoopWarning":true,"type":"BuiltinCommonInstructions::While","whileConditions":[{"type":{"value":"VarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","<","AdditionalPaths"]}],"conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set the destination of the pathfinder to the next room (don't select the room that already has the pathfinder)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"PickRandomInstance"},"parameters":["RoomObject","RoomObject"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["PathfinderObject","RoomObject","","",""]}],"actions":[{"type":{"value":"PathfindingBehavior::SetDestination"},"parameters":["PathfinderObject","PathfindingBehavior","","RoomObject.CenterX()","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.PathCounter","=","0"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create a hallway object at every cell along the path to the destination"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"PathfinderObject.PathfindingBehavior::NodeCount()","conditions":[],"actions":[{"type":{"value":"Create"},"parameters":["","HallwayObject","PathfinderObject.PathfindingBehavior::GetNodeX(Variable(__DungeonGenerator.PathCounter))","PathfinderObject.PathfindingBehavior::GetNodeY(Variable(__DungeonGenerator.PathCounter))","Layer"]}],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Adjust size of hallway objects"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"DungeonGenerator::AdjustHallwaySizes"},"parameters":["","HallwayObject","PathfinderObject","PathfindingBehavior","TileSize","HallwayWidth",""]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Move the pathfinder object to the room that was just connected with a hallway"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetXY"},"parameters":["PathfinderObject","=","RoomObject.CenterX()","=","RoomObject.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.AdditionalPathCounter","+","1"]}]}]}]}],"parameters":[]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Remove terrain from rooms and hallways.","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove terrain from inside rooms and hallways."},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BuiltinCommonInstructions::Or"},"parameters":[],"subInstructions":[{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]}]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Place walls","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"TerrainObject","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches hallways but not rooms"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["HallwayObject","Deleted","False"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Create walls where terrain touches rooms but not hallways"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","yes"]},{"type":{"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","yes"]}],"actions":[{"type":{"value":"Create"},"parameters":["","WallObject","TerrainObject.X()","TerrainObject.Y()","Layer"]},{"type":{"value":"Delete"},"parameters":["TerrainObject",""]},{"type":{"value":"ChangeWidth"},"parameters":["WallObject","=","TileSize"]},{"type":{"value":"ChangeHeight"},"parameters":["WallObject","=","TileSize"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Delete hallways that are at least partially inside of rooms "},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["HallwayObject","RoomObject","","","yes"]}],"actions":[{"type":{"value":"Delete"},"parameters":["HallwayObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Set boolean flag for hallways that are doorways (adjacent to room but not touching)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionNP"},"parameters":["HallwayObject","RoomObject","","","no"]}],"actions":[{"type":{"value":"SetObjectVariableAsBoolean"},"parameters":["HallwayObject","__DungeonGenerator.IsRoomEntrance","True"]}]}],"parameters":[]},{"colorB":228,"colorG":176,"colorR":74,"creationTime":0,"name":"Cleanup","source":"","type":"BuiltinCommonInstructions::Group","events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Remove extra terrain, if needed"},{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"BooleanVariable"},"parameters":["DeleteUnused","True",""]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","RoomObject","","","no"]},{"type":{"inverted":true,"value":"CollisionNP"},"parameters":["TerrainObject","HallwayObject","","","no"]}],"actions":[{"type":{"value":"Delete"},"parameters":["TerrainObject",""]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Cleanup pathfinder object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"Delete"},"parameters":["PathfinderObject",""]}]}],"parameters":[]}],"parameters":[]}],"parameters":[{"description":"Tile size (pixels)","longDescription":"All objects are based on this size","name":"TileSize","type":"expression"},{"description":"Map width (number of colums)","name":"MapWidth","type":"expression"},{"description":"Map height (number of rows)","name":"MapHeight","type":"expression"},{"description":"Terrain object","longDescription":"Used to fill the map that is not covered by floors, hallways, or walls.","name":"TerrainObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Room object","longDescription":"Rooms are placed in random locations and will try to not overlap with other rooms. ","name":"RoomObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Hallway object","longDescription":"Used to connect room objects. They follow the path made by the pathfinder object.","name":"HallwayObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Number of rooms","longDescription":"Rooms should take less than ~25% of map to ensure non-overlapping rooms. If there are too many rooms, they may end up overlapping each other.","name":"RoomQty","type":"expression"},{"description":"Layer","name":"Layer","type":"layer"},{"description":"Min room width (tiles)","name":"MinRoomWidth","type":"expression"},{"description":"Max room width (tiles)","name":"MaxRoomWidth","type":"expression"},{"description":"Min room height (tiles)","name":"MinRoomHeight","type":"expression"},{"description":"Max room height (tiles)","name":"MaxRoomHeight","type":"expression"},{"description":"Pathfinder object","longDescription":"Used to identify where hallways are placed between rooms","name":"PathfinderObject","supplementaryInformation":"Sprite","type":"objectList"},{"description":"Pathfinding behavior (required)","name":"PathfindingBehavior","supplementaryInformation":"PathfindingBehavior::PathfindingBehavior","type":"behavior"},{"description":"Max separation attempts","longDescription":"Number of attempts to separate overalapping rooms. When this number is reached, rooms are left in current position. (Default: 10,000)","name":"MaxSeparationAttempts","type":"expression"},{"description":"Connect rooms in a loop","name":"CloseLoop","type":"yesorno"},{"description":"Hallway width (tiles)","name":"HallwayWidth","type":"expression"},{"description":"Additional paths between connect rooms","name":"AdditionalPaths","type":"expression"},{"description":"Delete unused terrain","name":"DeleteUnused","type":"trueorfalse"},{"description":"Wall object","name":"WallObject","supplementaryInformation":"Sprite","type":"objectList"}],"objectGroups":[]},{"description":"Calculate the number of grid neighbors around an object. Use \"NeighborCount(Object)\" expression to retrieve this value.","fullName":"Calculate the number of grid neighbors around an object","functionType":"Action","name":"CalculateGridNeighbors","sentence":"Calculate the number of grid neighbors (_PARAM2_) around _PARAM1_","events":[{"type":"BuiltinCommonInstructions::ForEach","object":"Object","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save center point and size as scene variables (since we can't compare instances of the same object)"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisCenterX","=","Object.CenterX()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisCenterY","=","Object.CenterY()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisObjectWidth","=","Object.Width()"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisNeighborCount","=","0"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Initiate offset to start looking for the top-left neighbor"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","=","-1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetY","=","-1"]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Search for neighbors (but don't consider the center object)"},{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"3","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Repeat","repeatExpression":"3","conditions":[],"actions":[],"events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"CollisionPoint"},"parameters":["Neighbor","Variable(__DungeonGenerator.ThisCenterX) + (Variable(__DungeonGenerator.NeighborOffsetX) * Variable(__DungeonGenerator.ThisObjectWidth))","Variable(__DungeonGenerator.ThisCenterY) + (Variable(__DungeonGenerator.NeighborOffsetY) * Variable(__DungeonGenerator.ThisObjectWidth))"]}],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.ThisNeighborCount","+","1"]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetX","=","-1"]},{"type":{"value":"ModVarScene"},"parameters":["__DungeonGenerator.NeighborOffsetY","+","1"]}]}]},{"type":"BuiltinCommonInstructions::Comment","color":{"b":109,"g":230,"r":255,"textB":0,"textG":0,"textR":0},"comment":"Save neighbor count in real object"},{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"ModVarObjet"},"parameters":["Object","__DungeonGenerator.Neighbors","=","Variable(__DungeonGenerator.ThisNeighborCount)"]}]}]}],"parameters":[{"description":"Primary object (or object group)","name":"Object","type":"objectList"},{"description":"Neighbor object (or object group)","name":"Neighbor","type":"objectList"}],"objectGroups":[]},{"description":"The numerical order this room was created. (Range: 1 to total number of rooms).","fullName":"Creation order of room","functionType":"Expression","name":"RoomID","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["RoomObject.Variable(__DungeonGenerator.RoomID)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Room object","name":"RoomObject","type":"objectList"}],"objectGroups":[]},{"description":"Number of grid neighbors of an object. Requires running the \"CalculateGridNeighbors\" action before using this expression.","fullName":"Number of grid neighbors of an object","functionType":"Expression","name":"NeighborCount","sentence":"","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[],"actions":[{"type":{"value":"SetReturnNumber"},"parameters":["Object.Variable(__DungeonGenerator.Neighbors)"]}]}],"expressionType":{"type":"expression"},"parameters":[{"description":"Object","name":"Object","type":"objectList"}],"objectGroups":[]},{"description":"Check if hallway is a room entrance.","fullName":"Hallway is a room entrance","functionType":"Condition","name":"IsRoomEntrance","sentence":"_PARAM1_ is a room entrance","events":[{"type":"BuiltinCommonInstructions::Standard","conditions":[{"type":{"value":"ObjectVariableAsBoolean"},"parameters":["Object","__DungeonGenerator.IsRoomEntrance","True"]}],"actions":[{"type":{"value":"SetReturnBoolean"},"parameters":["True"]}]}],"parameters":[{"description":"Hallway object","name":"Object","type":"objectList"}],"objectGroups":[]}],"eventsFunctionsFolderStructure":{"folderName":"__ROOT","children":[{"functionName":"AdjustHallwaySizes"},{"functionName":"FillWorld"},{"functionName":"GenerateDungeonCave"},{"functionName":"GenerateDungeonRooms"},{"functionName":"CalculateGridNeighbors"},{"functionName":"RoomID"},{"functionName":"NeighborCount"},{"functionName":"IsRoomEntrance"}]},"eventsBasedBehaviors":[],"eventsBasedObjects":[]}],"externalLayouts":[{"associatedLayout":"Game","name":"4Way","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_4Way","persistentUuid":"f7878de8-d621-4629-afc8-5fcbb25d688d","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"c6ec3658-b64e-4cab-8a8b-98903a65fd27","width":0.0,"x":640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"5a72b7c8-fd61-40c0-884e-b69731807160","width":0.0,"x":-640.0,"y":0.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"60748f83-5456-40c3-b8d2-4c527981e015","width":0.0,"x":0.0,"y":-480.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"e779ea46-1b9a-4892-8196-1c9d194e2c41","width":0.0,"x":0.0,"y":480.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"93ca46b9-87ee-4e70-850c-38e9617605a3","width":0.0,"x":352.0,"y":0.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"bea3a627-abec-44dc-89d3-5df9fbeab374","width":0.0,"x":256.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"d8c9f7bf-925d-4217-a90b-1d9ebe41031d","width":0.0,"x":352.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1994f7b8-51f5-4ee0-b488-0209937688f9","width":0.0,"x":256.0,"y":448.0,"zOrder":9,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b4d80a60-fece-437d-b347-dc1fbc953eff","width":32.0,"x":608.0,"y":288.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1366481c-9a22-4235-8166-8b8e93a5ed57","width":32.0,"x":608.0,"y":64.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f6c9c4e5-1083-4ef9-a17d-f3cba6d22d4d","width":32.0,"x":0.0,"y":64.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"27fae954-5c19-4172-9b74-c529557aaa45","width":32.0,"x":0.0,"y":288.0,"zOrder":10,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1c9a1e75-a0c5-4ab1-9d7c-c1da725434f9","width":256.0,"x":352.0,"y":32.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"ea088ace-7e31-460c-9f3c-93de2deca165","width":256.0,"x":32.0,"y":32.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"50fbe774-75cd-48e4-bff7-970e897cd1ac","width":256.0,"x":32.0,"y":416.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"98289955-8a5a-41b3-b107-7279e92d3174","width":256.0,"x":352.0,"y":416.0,"zOrder":11,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":1.168756882148187,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"LR","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_LR","persistentUuid":"f69d2e29-2b65-4e41-93b2-56269c88fba4","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"e1e1e2da-9a5f-4db8-a33a-e6478e381d46","width":0.0,"x":640.0,"y":0.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"114e4509-29d9-4811-b71f-45fa7072dbef","width":0.0,"x":-640.0,"y":0.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"9464a17e-8582-4fa0-96cb-21fe7416dbcf","width":32.0,"x":608.0,"y":64.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"534a854e-870e-405a-aafe-90e4ea34ac6d","width":32.0,"x":608.0,"y":288.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1c1ed84d-fabc-4b62-aa04-aa2404bf37e5","width":32.0,"x":0.0,"y":288.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"365e571f-966b-4c50-b2dc-41a460ea4f81","width":32.0,"x":0.0,"y":64.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"8a32e300-81a4-4b6e-974a-f543901f3266","width":576.0,"x":32.0,"y":32.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"2ac92215-360c-4c46-a49c-13b82240fd2a","width":576.0,"x":32.0,"y":416.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"UD","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_UD","persistentUuid":"5e458a16-7f67-4530-87d5-c46cf1c70a3a","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"3b375ba4-cfd5-4918-9c40-366331322c8f","width":0.0,"x":0.0,"y":-480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"a2d2d1ca-ef1a-402a-92ab-4658aaf19d79","width":0.0,"x":0.0,"y":480.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"92301df8-aa43-4b2f-bb7c-3d6cfc821c47","width":32.0,"x":608.0,"y":64.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f7c82eb1-5746-41fe-a9cc-3bac809230d3","width":32.0,"x":0.0,"y":64.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"6ba432e4-a0cd-47f5-965a-612871f65f40","width":256.0,"x":352.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c1e0e2e3-b4d4-4ca7-969b-0ba68078cd0a","width":256.0,"x":32.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"c0a51d16-e7fa-482a-a6da-6540113cf26a","width":256.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"82302b03-5c21-401c-b809-15fc60d1ca98","width":256.0,"x":352.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f77e09f4-055b-4a15-ad4b-c6b165b86153","width":0.0,"x":352.0,"y":0.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"95d8477e-82f7-431f-925b-2083fc7e501b","width":0.0,"x":256.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"9bf2e926-e0a5-43a3-9d5f-39f90ba7dca8","width":0.0,"x":352.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"06ceaa29-1c7a-49b4-9142-48b979d23440","width":0.0,"x":256.0,"y":448.0,"zOrder":9,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.926622364902796,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadL","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadL","persistentUuid":"37237183-4a66-4f3a-a60d-0c54a8ca4d90","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_right","persistentUuid":"7030b988-29fe-410d-989a-7d0c936f4c11","width":0.0,"x":640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"e1b91469-3e8b-4eef-99e3-0434499e2e54","width":32.0,"x":608.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"8476a995-bde7-4d1c-ac6e-57160597b043","width":32.0,"x":608.0,"y":288.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"5cd7cfb8-cb14-423e-818d-2276aab60696","width":576.0,"x":32.0,"y":416.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"a60a2c5d-3577-4aee-a1de-114c71f2abef","width":576.0,"x":32.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"73cc79a0-9706-4cba-bcec-c8f3221c849f","width":32.0,"x":0.0,"y":64.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadR","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadR","persistentUuid":"d251265b-16fb-4e8b-8721-1a08ff078396","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_left","persistentUuid":"bd898bf7-4f86-492c-ba74-098d55f1d43e","width":0.0,"x":-640.0,"y":0.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_skelly01","persistentUuid":"12a0189a-4e93-4750-a313-4598eb2edfa9","width":0.0,"x":445.0,"y":158.0,"zOrder":20,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"6aba8a3b-2776-464b-bc9a-3e012acb894b","width":32.0,"x":608.0,"y":64.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"adb9f59f-d690-4bba-846a-1dec7956fa73","width":32.0,"x":0.0,"y":64.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":128.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1549b163-c089-44e8-aa7a-a84c7e810524","width":32.0,"x":0.0,"y":288.0,"zOrder":21,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"4ec087d5-64e4-4f69-b032-60113e3be4f5","width":576.0,"x":32.0,"y":32.0,"zOrder":22,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"1d2ee646-a75d-4d0f-83a6-4e34cfcfb84e","width":576.0,"x":32.0,"y":416.0,"zOrder":22,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":1.058071480431368,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadUp","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadUp","persistentUuid":"d1a66cb2-ae2e-4f1d-8766-d9992d6d18ad","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_down","persistentUuid":"eddf7615-92c4-4b04-940b-6515e299e940","width":0.0,"x":0.0,"y":480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"11cc0725-6ebc-44e5-a90a-0259be053c45","width":32.0,"x":608.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":352.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3c206b90-e596-4938-93c9-4f65f7fbe377","width":32.0,"x":0.0,"y":64.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"ce6f4701-3ae8-4050-9e7c-9172fb9e5800","width":576.0,"x":32.0,"y":32.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b83cb5df-bc17-49f1-ac0b-3518becffbba","width":256.0,"x":352.0,"y":416.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"fce2158f-0f90-46a7-8dca-4bbc529a6cad","width":256.0,"x":32.0,"y":416.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"b7f850a5-0c39-4367-b7ed-80cd697d9f78","width":0.0,"x":352.0,"y":448.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"f0fb7690-c7aa-45aa-aeef-c7dc178fb6f4","width":0.0,"x":256.0,"y":448.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9578683769070499,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}},{"associatedLayout":"Game","name":"DeadDown","instances":[{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_DeadDown","persistentUuid":"552c6a78-2267-41c0-9d12-e4d0e1da2ef8","width":0.0,"x":0.0,"y":0.0,"zOrder":1,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_up","persistentUuid":"1635740f-8b55-4918-afdf-bfd9de2db35d","width":0.0,"x":0.0,"y":-480.0,"zOrder":2,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3794d543-64de-4d10-933d-8fca25ef70ff","width":32.0,"x":608.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":384.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"84b9b04c-8e2f-4a8f-9295-2ea3fcc98da0","width":32.0,"x":0.0,"y":32.0,"zOrder":3,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"d70088b3-6953-4e77-b220-6862298fc7f8","width":576.0,"x":32.0,"y":416.0,"zOrder":4,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"4c47fd50-16f6-4865-a12c-f9a3ca90ffa5","width":256.0,"x":352.0,"y":32.0,"zOrder":5,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":true,"depth":1.0,"height":32.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"675e179d-f323-489c-b7df-d6986db1c80f","width":256.0,"x":32.0,"y":32.0,"zOrder":6,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"3c942658-08bb-455d-a15a-4e1961a4dc92","width":0.0,"x":352.0,"y":0.0,"zOrder":7,"numberProperties":[],"stringProperties":[],"initialVariables":[]},{"angle":0.0,"customSize":false,"height":0.0,"keepRatio":true,"layer":"","name":"spr_wall","persistentUuid":"5f2795e3-6b64-49cd-956e-5d3da83e41e7","width":0.0,"x":256.0,"y":0.0,"zOrder":8,"numberProperties":[],"stringProperties":[],"initialVariables":[]}],"editionSettings":{"grid":true,"gridType":"rectangular","gridWidth":32.0,"gridHeight":32.0,"gridDepth":32.0,"gridOffsetX":0.0,"gridOffsetY":0.0,"gridOffsetZ":0.0,"gridColor":10401023.0,"gridAlpha":0.8,"snap":true,"zoomFactor":0.9901680147497778,"windowMask":false,"selectedLayer":"","gameEditorMode":"instances-editor"}}]} \ No newline at end of file diff --git a/assets/01Idle.png b/assets/01Idle.png new file mode 100644 index 0000000000000000000000000000000000000000..fb57ce2c0ce62cd5706f59f5e8ab6af65fc2b501 GIT binary patch literal 411 zcmV;M0c8G(P)Px$RY^oaR9Hu2WEfz;IKcKZj5=U61V%%E=n(KFV=jc9yc@O6Ed)G3+LP}aQz%+~>u+0=DBsRu) zVD&7{5EwKLfO!KwB;X-Xh&@*XNVifa1P06jFpFVPfy*Hqo>rsylvtm`G!e`N1MUFy zVvmr6U}@w2i>CxVM^bG_Y?RQ<0k|q9LM0)t{7-ZmfGMQA0|*sF=xGBM61YlEs+WXx za{#XVk6tIBtHYHx&_jY?T`*t{fLYANBMGh*#d(;BY6-yyta4*q!^2X+?^QKos)S9WNUc3IEF;H zC#Ogx9I!a>&A7)Z!Gy)l8AfolHT<6>`+s9-#5p|~jYHkjZ5TfLPgfBz5sp-LJlcGX z@x?+WZoweurZ)l$W-}*<&HSdru$)zslXKB6gY$8F6tsK=cp4eY85HNoYk9hH3hte^ zQ{zvsp9{xtBH#?Oac1>NerNNkmt(WlzEJC z#9t@$*bA02?y_bOV{Iv7-encT=gKd*=rY4y*#k$FJ1+?dJx@Fo#l7#(Cw?7254mMO zZ%==&G4Gfp6Z1QU8Qm9UokEfsx|K@iAD$wxhCAae1B3eB9jdC%wxPfPWbkzLb6Mw< G&;$TS)r7AA literal 0 HcmV?d00001 diff --git a/assets/01Idle11.png b/assets/01Idle11.png new file mode 100644 index 0000000000000000000000000000000000000000..5e71aaf0a140a0462181098026e555cae641332e GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yF!3HE>yta4*q!^2X+?^QKos)S9WLtW=IEF;H zC#Ogx9I!a>&A7)Z!Gy)l8B8?15t#Ai(SiCWNi`oQu_wHHIf-S`85K{%O|2#64gV*} zYS_80KQbrQ;(*hVHkONu1_^u$DTeD_{khpK?y{7#Nzvc|pTXNmhQ4Y|PR=#+_J&OA zQCfH1SiE(=;W6g*>YQx{8mt+@MGn-|y^mtMaoj7)_<%`|{D!krR!mTkU}Ap8;L4d< zaA)yx%`?#-1T>D!Gh|DQF`Ur*R9hk|M0J6U!vge(^ zmqQG;DG8a(YJP>5AU93nxaiDu_xX!YDa#pSI{WiLB8693cO1Fs-1I2M!I-_^qsO8x z4M!?xY`E5@zyA+&xA3I)%zxjWT6Qfj1UvFsQc3%REJi^gcc68)2X9Td#>c>Ly=Ir{ UdDZ2`zz}8dboFyt=akR{07Z$JOaK4? literal 0 HcmV?d00001 diff --git a/assets/01Idle12.png b/assets/01Idle12.png new file mode 100644 index 0000000000000000000000000000000000000000..58bed3032f62964fc5ff5dba5fb965f4b0398bc2 GIT binary patch literal 397 zcmV;80doF{P)Px$M@d9MR9Hu2WEfz;IKcKZj5=U61V%$(Gz5qa0skdC{v#J!&Mq7%W!T~+55WA> zB?&~E2~tnA;sJ92y2ZGPZdizr8WIFUV9+?=*^3uo&r3;25LJJ{)Dub*M2EnDIl#1M z0XX&J^7*BbWRwum>zRwfClnF{LtwxhpeP{?_BpzbVBUlI{NA+;u#l403@{Dj2W&G% z35ks{9#}n#GXw^W17O}j4+(e(6k^X60n)A134sA~0L)@oRN!*RhNsmiJ|))YFiiw= z!GJpe=2BRZOeo*OPx$Pf0{UR9Hu2WEfz;IKcKZj5=U61V%%EUTo24#1WA(Mv>h zb-2omIabdS%moAH0GP$--bN1z zm``zq5TTI383F_D0Q59KQUbuDnBp`*D+d4oJ)+ztqeQy!00000NkvXXu0mjfFY2Bz literal 0 HcmV?d00001 diff --git a/assets/01Idle3.png b/assets/01Idle3.png new file mode 100644 index 0000000000000000000000000000000000000000..f825de9dbf0dddf4b0252bcd263f4e6c9c0eef24 GIT binary patch literal 392 zcmV;30eAk1P)Px$LPk1k&F0L(vKl0eW?$QlVMMh^kHI{;=OE{C8yh}4iE7y^UF0j50*z_~$6 zLV~D7{_MpIqS6G>AuwPLAY}2Sl4O(+(d(Iu!Y33G1VdoJ9H1y64UThkAHlo_^ZC7N z8DJqLtr=h%#t+zLiV_mIN>H33FlZbA^9FiIz(b%Ad#(tOZlz8L444C87Q>-p-@ZIY@ifj57;p!`T#W7z mqMAck6ruZ^=#r4u4gdhUsLmxM>)DzB0000yta4*q!^2X+?^QKos)S9WNUi5IEF;H zC#Ogx9I!a>&A7)Z!Gy)l8AfolHT<6>`+s9-#5p|~jYHkjZ5TfLPgfBz5sp-LJlcGX z@x?+WZoweurZ)l$W-}*<&HSdru$)zslXKB6gY$8F6tsK=cp4eY85HNoYk9hH3hte^ zQ{zvsp@|t<2VLZlA+HWb;lRtZ~Y0OyJ;|!7QS>9`45K)*HpH4JF!vnT+WiJW}in(yP7*-2AXb%9V51`NT;(ikJ@yNEEOy_&p|^csU)Wgx!Tx@E;N1~JzccI}#q5#kqaF*3;2?ohSgI&UE`1Q|SC{an^L HB{Ts5q{oDv literal 0 HcmV?d00001 diff --git a/assets/01Idle5.png b/assets/01Idle5.png new file mode 100644 index 0000000000000000000000000000000000000000..5e71aaf0a140a0462181098026e555cae641332e GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yF!3HE>yta4*q!^2X+?^QKos)S9WLtW=IEF;H zC#Ogx9I!a>&A7)Z!Gy)l8B8?15t#Ai(SiCWNi`oQu_wHHIf-S`85K{%O|2#64gV*} zYS_80KQbrQ;(*hVHkONu1_^u$DTeD_{khpK?y{7#Nzvc|pTXNmhQ4Y|PR=#+_J&OA zQCfH1SiE(=;W6g*>YQx{8mt+@MGn-|y^mtMaoj7)_<%`|{D!krR!mTkU}Ap8;L4d< zaA)yx%`?#-1T>D!Gh|DQF`Ur*R9hk|M0J6U!vge(^ zmqQG;DG8a(YJP>5AU93nxaiDu_xX!YDa#pSI{WiLB8693cO1Fs-1I2M!I-_^qsO8x z4M!?xY`E5@zyA+&xA3I)%zxjWT6Qfj1UvFsQc3%REJi^gcc68)2X9Td#>c>Ly=Ir{ UdDZ2`zz}8dboFyt=akR{07Z$JOaK4? literal 0 HcmV?d00001 diff --git a/assets/01Idle6.png b/assets/01Idle6.png new file mode 100644 index 0000000000000000000000000000000000000000..58bed3032f62964fc5ff5dba5fb965f4b0398bc2 GIT binary patch literal 397 zcmV;80doF{P)Px$M@d9MR9Hu2WEfz;IKcKZj5=U61V%$(Gz5qa0skdC{v#J!&Mq7%W!T~+55WA> zB?&~E2~tnA;sJ92y2ZGPZdizr8WIFUV9+?=*^3uo&r3;25LJJ{)Dub*M2EnDIl#1M z0XX&J^7*BbWRwum>zRwfClnF{LtwxhpeP{?_BpzbVBUlI{NA+;u#l403@{Dj2W&G% z35ks{9#}n#GXw^W17O}j4+(e(6k^X60n)A134sA~0L)@oRN!*RhNsmiJ|))YFiiw= z!GJpe=2BRZOeo*OPx$RY^oaR9Hu2WEfz;IKcKZj5=U61V%%E=n(KFV=jc9yc@O6Ed)G3+LP}aQz%+~>u+0=DBsRu) zVD&7{5EwKLfO!KwB;X-Xh&@*XNVifa1P06jFpFVPfy*Hqo>rsylvtm`G!e`N1MUFy zVvmr6U}@w2i>CxVM^bG_Y?RQ<0k|q9LM0)t{7-ZmfGMQA0|*sF=xGBM61YlEs+WXx za{#XVk6tIBtHYHx&_jY?T`*t{fLYANBMGh*#d(;BY6-yPx$Pf0{UR9Hu2WEfz;IKcKZj5=U61V%%EUTo24#1WA(Mv>h zb-2omIabdS%moAH0GP$--bN1z zm``zq5TTI383F_D0Q59KQUbuDnBp`*D+d4oJ)+ztqeQy!00000NkvXXu0mjfFY2Bz literal 0 HcmV?d00001 diff --git a/assets/01Idle9.png b/assets/01Idle9.png new file mode 100644 index 0000000000000000000000000000000000000000..f825de9dbf0dddf4b0252bcd263f4e6c9c0eef24 GIT binary patch literal 392 zcmV;30eAk1P)Px$LPk1k&F0L(vKl0eW?$QlVMMh^kHI{;=OE{C8yh}4iE7y^UF0j50*z_~$6 zLV~D7{_MpIqS6G>AuwPLAY}2Sl4O(+(d(Iu!Y33G1VdoJ9H1y64UThkAHlo_^ZC7N z8DJqLtr=h%#t+zLiV_mIN>H33FlZbA^9FiIz(b%Ad#(tOZlz8L444C87Q>-p-@ZIY@ifj57;p!`T#W7z mqMAck6ruZ^=#r4u4gdhUsLmxM>)DzB0000Px$U`a$lR9HvtmcI@GK@i4KiRc|FN`>y8fI`OuC?p!KM5oqy0F6Y#1JHoCHq)$07*qoM6N<$f?Tq+G5`Po literal 0 HcmV?d00001 diff --git a/assets/02Attack10.png b/assets/02Attack10.png new file mode 100644 index 0000000000000000000000000000000000000000..60e637f4ceea8dba02202b8a6ddb57a58f88cd4e GIT binary patch literal 409 zcmV;K0cQS*P)Px$Q%OWYR9Hu2WEfz;IKcKZj5=U61aO9c|B@a5u_aJv7Y-ER#Y-N5`KL<~$O_G& z=K%CjfrSXUAwhBo(9Hobi%feKfYXAMgalD#*0UEcNJY@QTW7$1V#u9xC0a=q``5H?jxA@U_M{w_6;l)wTlZ(!}uL;%TYpNV~hvhXvUBn za0kGgkINyj5V%)}Jy!%sw}Ooz_xa5frfkEQ{m`@0mi0JBYr4?M|0?v|f zz#M>{ieXVgRAYdFf#Lp(rvwu=vRMQb54Z!+3nUmH=2LVBQauC)%mG|Hl34o%#HIz9 zx^G{elhz)9X&f*IP|ITUkir!b7{N2(4jAw#ptl160WRVt#0gWs00000NkvXXu0mjf DvA&wF literal 0 HcmV?d00001 diff --git a/assets/02Attack11.png b/assets/02Attack11.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1af4caea8373d85adc039c0fa96474fda9c4f1 GIT binary patch literal 446 zcmV;v0YUzWP)Px$cu7P-R9Hu2WEfz;IKcKZj5>f|2>37A@gF&wHpX}m)I& zk1k&F0L(vKl0eW?$QlVMMh}5O;{fz{hJ^^JAwhNs(9Hobi%feKfOCVCgalEE{Mm~a zM5PIWAuwPLfcY5a09-!5RFaGmB6>Y@QTT*H0%r&exC0a=q``5H?jxA@U_QThEdwm1 zq%{Lf!}tN)Oi@AtR|$$U1P0szFz4fP2s{J|vFC~a=~l22gz650xnRH@Kqw?OJgr8F zYhry4(?l=?28{#I9RlN{=Mq@jxc}lQQJy185po#A(gfWdfU8<2R1#903t&E_y8{Rn zMCer_EF^H1oK!Cf>E-}ji4DC@Kv#z=ZJ>t)!Mb3;9Dp9g=-H1@vxw^Dz<@b`i$@Zr zXC%(UgyQ*^U;cslxWr+KzkPX*HM$9wgahUPbc@mB9Oh$K2*BiViQ@_hoFOpa4uH9s okV6RN2CAn4Vl6~hhbs{R03o#UC1aMg2LJ#707*qoM6N<$f{}!+;{X5v literal 0 HcmV?d00001 diff --git a/assets/02Attack12.png b/assets/02Attack12.png new file mode 100644 index 0000000000000000000000000000000000000000..fb57ce2c0ce62cd5706f59f5e8ab6af65fc2b501 GIT binary patch literal 411 zcmV;M0c8G(P)Px$RY^oaR9Hu2WEfz;IKcKZj5=U61V%%E=n(KFV=jc9yc@O6Ed)G3+LP}aQz%+~>u+0=DBsRu) zVD&7{5EwKLfO!KwB;X-Xh&@*XNVifa1P06jFpFVPfy*Hqo>rsylvtm`G!e`N1MUFy zVvmr6U}@w2i>CxVM^bG_Y?RQ<0k|q9LM0)t{7-ZmfGMQA0|*sF=xGBM61YlEs+WXx za{#XVk6tIBtHYHx&_jY?T`*t{fLYANBMGh*#d(;BY6-yPx${7FPXR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fIV9zQYTY}>0dsZ9P;Zcbcq%9vCS6xuFNa2{n1OJvanm zd|a9s2h3uai%wjLMQL#qul$77u}55kz~VN$*P+NCZQcm>F)Zp*_U-}8`lI+9CJyr{dN7<6g7}OOu+UkIQdnV>TmxpYqJ%Wq$5N>#D4xLOV^~>@?qgV4 zjxNq<7Z3IeFF!}p0o}#2`hAVO?T46qg3F54s2Fzku2?TQ?dVa(u zkE;lVg$O|()6HTo9!YR&7Uy9?iJO;S{-N**$$x#61y&C$xt1s10`tFpd5%3F)7@fR z7Q(zq$j9jFBIm1tgPx$?@2^KR9Hu2WEdd8I6(F?;I#OEQ2BpkM=`GJq^ctakHvS)qQE{?mXXC83)J#C zhL1-rMh|bg1+~(#B`9{^vx-6Clj{(IaZERhVct=ckOrr2bRXg>a7gtz&U{Qai=Vk# zf_*5t(hKaVyB^oUGRc&BeDXa>@ho*L7fqx_;L$~_#7TEm9lpan4TMY z5Nno&3&Qd(-7P+GB^I2Ti&uUEyY$)YGho_jvI>e%VLn7p5ObVeAaM-M9k4`;%ja+( z517T)wf-n=ESQguxCUWO?I(pGaY!t%&{>QU*Kp2&Sqw{DQmG~=p1|c}Sc!$p$FPzO zU7pb{9_(3+R84n_VJ?IDoY=U#cP#@YHN*7%KeQ0FT@LjrOdcb1)7@e&9!anZ#d(-e z@-NJV%M)*bnYiR(`IuX78j3oY{`)VUVo%j{w;0_*^tgTbZ4-WCG@3u!1aQv3kK00000NkvXXu0mjf D*JJ`u literal 0 HcmV?d00001 diff --git a/assets/02Attack15.png b/assets/02Attack15.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3d2b41ad60d449d132f524c06f893c6657a4ff GIT binary patch literal 499 zcmVPx$tw}^dR9Hu2WEdd8I6(F?j9N^$kRLoj{XeMuKeD$O*LBjwaTtaU8jE4Rr?$@t z`k3Yx-!Y2<$E~uAEY_4wGanBciaHIo!u|xA_0NX0T7)tagGuHJwimOrxjnb$8F9csfYgh@v=W959PvK^*^> z8O6si?_B)(8q5?7kOb3?&dy+3DXa=5Esz@5j00vd%x8)c(%`sWzQ+kHB$D(OOv8K} zG#ND?!y|aYH3)MK57vaAvUd+yd~WDLl;RoAp}WN=uEc_UTD959QmYyDAL95C-4aSg)i)00AwI3pKW=qv_@ z4C8=V3`vw#UlxhYjGYXVm$*^ckfyTnC6z7 zhE?C!Z5=4$jCS#mI36&I3HkKpmwzZO#uXwkpQC$QNoxjJ2xiW=FV7)99x#j1gPNoW pCP6XGr!XxTaZG|)Bq>F=7yy-!?B%oS5Geov002ovPDHLkV1gM})?EMq literal 0 HcmV?d00001 diff --git a/assets/02Attack16.png b/assets/02Attack16.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c47c18d78b58a1630dc7a80ca4098a7c88dcc6 GIT binary patch literal 482 zcmV<80UiE{P)Px$oJmAMR9Hu2WEdd8I6(F?j9N^$kRJ`|feY&YLFNCEZD(B9Nt5WnFqG~V-!Y2< z`&3y*7He=*+vji}4;qV=jx9m)`8}%`6h5UPfYZlxx7hX3L9oxzeTXZck?V5|AJfg^ z|L>Z?soBkHC)iWd`Q*Sfdg@+x_Z*6+gOrUZigU&Rv-p{-CD_ODkC{bT{mVb%9_TL)_Dw~L3w@qk%O z$fqyA{6ldut`I>F0hlHwtr=h@%$#puo*U>2hXHBk{vh9a0xVOlZbm<%(C(t>U= Y0D6()<@zcS(*OVf07*qoM6N<$f{f1D!~g&Q literal 0 HcmV?d00001 diff --git a/assets/02Attack17.png b/assets/02Attack17.png new file mode 100644 index 0000000000000000000000000000000000000000..1aafb6c65e3a0ee794daabce9b9a6a0f70712437 GIT binary patch literal 479 zcmV<50U-W~P)Px$nMp)JR9Hu2WEdd8I6(F?j9N^$kRJ`|(V(VT2w)_x|3T&dvDwDBu9K<>ao{b! zV-^MWsj`eL*uzT4mY{h2o>dGApVAP3`*^@Dc71dZ>@##9;!0)Y`W(Z@bhG&XyJm3Q zx>@Z6dulqL9GHg1HO!~$?w&*Obda(UMRCqJU=}}fwFLV({xLI(k73@q`13WGDHtFL zrX8J~A*nvB3MDO&8rO^iW--iXiW1UbpD*9z1QrrW`U|FEJ`S3UnvdZTJmDIIIfn;p z!cW<|2P{4}^dL%M1?SM+;uBY5!9Fcs`3dYY4ZRN#4~Qp$>6DlAQ220f={!R5A)`<& z*0LOyc+q{%IA9iA*ZQN>Mn_zOu*TI%AxK#~SC@ts~0|1?2 V+U3IYAh-Yk002ovPDHLkV1hnb(!2lw literal 0 HcmV?d00001 diff --git a/assets/02Attack18.png b/assets/02Attack18.png new file mode 100644 index 0000000000000000000000000000000000000000..1aafb6c65e3a0ee794daabce9b9a6a0f70712437 GIT binary patch literal 479 zcmV<50U-W~P)Px$nMp)JR9Hu2WEdd8I6(F?j9N^$kRJ`|(V(VT2w)_x|3T&dvDwDBu9K<>ao{b! zV-^MWsj`eL*uzT4mY{h2o>dGApVAP3`*^@Dc71dZ>@##9;!0)Y`W(Z@bhG&XyJm3Q zx>@Z6dulqL9GHg1HO!~$?w&*Obda(UMRCqJU=}}fwFLV({xLI(k73@q`13WGDHtFL zrX8J~A*nvB3MDO&8rO^iW--iXiW1UbpD*9z1QrrW`U|FEJ`S3UnvdZTJmDIIIfn;p z!cW<|2P{4}^dL%M1?SM+;uBY5!9Fcs`3dYY4ZRN#4~Qp$>6DlAQ220f={!R5A)`<& z*0LOyc+q{%IA9iA*ZQN>Mn_zOu*TI%AxK#~SC@ts~0|1?2 V+U3IYAh-Yk002ovPDHLkV1hnb(!2lw literal 0 HcmV?d00001 diff --git a/assets/02Attack19.png b/assets/02Attack19.png new file mode 100644 index 0000000000000000000000000000000000000000..c641bf6da1f1fd44ecae675d845183534af8828e GIT binary patch literal 494 zcmVPx$s7XXYR9Hu2WEdd8I6(F?j9N^$kRJ`|(V(VT2w)_x|3T&dvDwDBu9K<>aqwBJ zbZiNV$M0FipztXT0h~Ujo5jyuEx~bXefbgCXXrk}mCDHVIo!u|xA_0NX0T7)tagGu zHJwimOe@RCqIh!M-E%1XAY~(p;+%27EQSSf{9|SmAH%$J@#kwWv*hJ9NZhY#1Jg=j zRVZlz7S}M3r0m@TmY*AX5NrNt959PvK2wyC2FLaCJx*XDk)*$18s_7m$*B1l9>EhJ zA%X5=Mxk1;Pm@>MgUvV|QS6q=xjqsKYpfLUx^>yJ_!9dQl9>I0Y$(IpA__~f%&C|WFZ7K5XgalkBw zB`T>@NSxsEF)ZK0oDWlvHF!Ygz~cA{q$ETKj00vd%q3hrlHj-&=V8L-2^8^{U;g1$ z_w`X0L>|q@jCS#mI36&I3HcP=XXqhPx$gh@m}R9HvNm#t0%K@^2s6e0C2RDnd``UFMb=mS)cV6Y^0)wn(YhJ=JZKrw`O zz#%G2O=0m35=bUF&CW@0&MevN-I`{0XLi1G?$7MDTh70>^ZqRfa4~)PEkZsG&*hpj zqU6IG2LN^bv)xGO<8&FuucJ#Ts<=>2W(OJrz;T8nWu5r91GNEQqu%5pRKsDGB_;Vs zo+ssmbifS&iUD9Le;Zvzj+{>Jqp@rpvm(fY^2Pi*Tsl6v3;!4oo_moK zRtGg5a0dXs1+sDAW_wi(y0_sG>g zOPW;l7&+kvz{j)I303x&&H*fN1F&99xHEE2C?}G0pmqS&iut7gxnP|gm7fK*0a)e6 zvFCZI)gezqHvqPn8xY^;apj%R4PdWx5Pci&cXlGNU+bSRwytCH_xf{dxMd%31K^E0 z#!w6gaNoLaIbk~B4gg{WqN<_t97x@e=UGYk2h6YlG}NRiTmS$707*qoM6N<$f`6FC ACIA2c literal 0 HcmV?d00001 diff --git a/assets/02Attack20.png b/assets/02Attack20.png new file mode 100644 index 0000000000000000000000000000000000000000..d8637d818c66046ed76de37bde539543a9f153a3 GIT binary patch literal 525 zcmV+o0`mQdP)Px$$4Nv%R9Hu2WEdd8I6(F?j9N^$kRJ`|(V(VT2;fXy|AWf^W3!cUT_;r%8dsZD_?fFE*r(q*@&z-XB;q#VL=@Km>H{&VS*Qb zz6LW(US5O5{i-%dst>C|O$&2)!2FcGd%*PE(1TdBEaQM#4D*qqgfuv=m+x^x@wrIS zUoao$+#ka55)hPjN3M-m*@;yg@P;}~7=<(Ge0)qQ=G1s3O)n+B%8ZtFl%$7mN1iQ@sY zn2=A=eTE()xO|RF-M25#AwC{3i_wFcs0b!Q5zMDBtr&4khM7cZLAMwHAdd|6rdzzz P00000NkvXXu0mjf=Yi^V literal 0 HcmV?d00001 diff --git a/assets/02Attack21.png b/assets/02Attack21.png new file mode 100644 index 0000000000000000000000000000000000000000..b0118d50624edf3231c8b83c11b21579bf2a666f GIT binary patch literal 560 zcmV-00?+-4P)Px$>PbXFR9Hu2WEdd8I6(F?j9N^$kRNW4c)k^Nyl~G&ru&eTXZglj?JvshVyU zKXbJN`!N17GuTtp`Q*Sfdg@+x_Z*6+gOrWPigUP+>2C4=cg@Z+aXHM#Fu{vI zUxS$?FRy{=d#l>Ov{G0Vgbz*a#Ktw_fLRO+V(ZI~P<*_6j}w?LlJpl$!+abx88sin zHBEqo1j8I2FqN`*515`CdJt;@W*jh!VJ?PcADB;J;xHe#mp+AfNIVH8WKv$v1M_cO z5&+Xj3QfQ?qfjl_r^&1B!D$HH=kQ>lyTvE2#DZN^yz&#+rO#%c0n<*CRZx5g^BIbF zkvO<~3`@M|an3kk7F*Z)qqH<&o;czfgw=B=g&?UF7DDKXU~z2I4+**6a6S|z7CMW; z(aShs7Q+&iR4ODj67n&uq=KnG+Po1ZpTgo4=3`tT$2edX!+glaBMFXcaULdI2^XvQ z%P;>>#J@hu0`s}$rh)0N+d5F>8SUaBaXera6Y?p#k8p(uOdZU}N?J2edPx$@JU2LR9Hu2WEdd8I6(F?j9Ls2`Ts%X|FJ~_f z1p82Or5D&!cRj9yY4p^+?(R7hPX{R*krn4~AJg69|L>Z?K4lcD1v|o3!v@Ts&L@ZB zlZ!uJgZU*duYu`%tJ=V{Qdkv)4^8dF#x>)BSquwe>&uU@CfMC__F!?CkAo(o=3}^~ z36PK=+Q$QCF?zmTzQ+m0=ORge!Tk2pr(k-HcoK?y%FB5W@#Pi}@i{zTDrN5;Fg-W) zAl57k7lh?ox?6nWN-Q`v7q9#TcImU(XTY@6WEB*j!hDFHAm%u`K;jshJ79?xm(Sro z9x#ioYyGjdIF7gmVNLBPg&=WAEU?g7j1t#y&VX4AOI%W^CMcf3zgZZ4;xV!)2DcJGoMeqMZ3sKSx%%?DOF)}yZE#~5p1iMh2hY2PB z!d$pK@fMhgOCFYwx#gyzsDtT;g$#y|>25K)h3Ikn^2fjNNK)J&>6m``!WF{uU;s~+8A0LEr0GUb@bPXGV_07*qoM6N<$ Eg6Sy*^#A|> literal 0 HcmV?d00001 diff --git a/assets/02Attack3.png b/assets/02Attack3.png new file mode 100644 index 0000000000000000000000000000000000000000..30a4bbb1c12a0b098dfa218a53de99e94bc4374f GIT binary patch literal 456 zcmV;(0XP1MP)Px$f=NU{R9Hu2WFP?im+bhDtYl-12O}Xpq{tIAY|uFX<~wH>4it|rUh)9UKV6bQ z&{N172`WYpfkEQ{^mvAa2&o}Kb_meT0Wgb9dlrCmgOr2>QHlK7ix)(t34$RoU=D!! z80G+6KEG6wj1nSxJ#$g`ghB#m2n@Ib6eXm=agOdInD<~lzjrMIETp7015CsC0ozPb zLIPI_iZcX;jsps@=ZXO7Ryu_MtsDSzJ}fF=eDpN2;b}FBPl@$8OcTL!V89)KUhENa z5G;4xfAN%{=Rjr?r3l#(1MUFy>KRu_NNmfAe))$I3%JC;eR+;G!4u2{1Lgo+7UN2E y#EPSb1kMl`a0kGAL@kFPx$aY;l$R9Hu2WEfz;IKcKZ5Oje5k{$oCInvpM14Vf8k_TY^>5>G3W+H1OsCdvi z06kP-Awp_MkR1Yaa{$aD)1C$3v>+uRK~%bZ_TmLmX@Xz~444C8K885}m(MSiB%_3g zUe8<dIde!wGL@iS;?rAuwnhfbI|&A3c}A z(#HK4PYFgZ$PA(sA%`(6P0-8%xDp*KHKSM0xJp7osUK$=7_<%`R0YCv11uMytB1)m zmY+q5c8oMYs07625UM$VP`1P6GnhDf2%wh}1VdoZH~?3^CzKXoPx$Y)M2xR9Hu2WEfz;IKcKZ5Oje5k{$oCInvpM14Vf8k_TY^>5>G3W+H1OsCd8} zfXiZBQ3eYUQbPh~2n@Ib(0yv!vjChHq$DJWO1IBmydWw~5KIFw+vx59n1wJ0;PUyU zl4O(+(d(Iu!Y33GI748-9iS*74UThkAHlo_^ZC7N8DJqLtr=h%#t+zLiV_kVV?3~W z7H0?y9S0O*&lLgEt#k?jS~&pbd_qyN;b}FBPl@$8OcTL!V89)K9unxqAbKu=<&OI= zo)YvN$Sk51ffT|*V!#{#vlzXS!c`LD%J=9VAUXu-<^V#84p&tO%MIwc0Hz)$&scsI z#nTueFyIa#Hvgmh48}(f0rYZ$UPx$QAtEWR9HvtmOl;wQ4q%IL>ypIQ7Uv!K%wIR3W-K5*-ou<0F6Xq4?rXCpi?N( zU=JW#l9znqO?J#K8>3i_yxHfy@B7W4l};&t(#rRz5&;Q;gn&q(<*n~Qty*tntnl1B zn)Sx*if6w5P~7~t0w@&_iAv&Q0zVUgi)!PUsfB{$gqq%G-w#z2A^|l4a0~&Q^R3&n zh*ZZ@Yb}vr38)JwIYpCm>InAWe820PP`NTO-&nU-HH*Zu(+o7r5>OWa`J9j^fkALr zw2LEi1m_&*i(Q~DKq9d?4Xs?mIpSE;;eqEO0W|>Px$R7pfZR9Hu2WEfz;IKcKZj5=U61V%#uX9)N&+3_Dai*AhZph;*A9S1nOaG;b~ zijsDB_Tmnef8|c3$oG#&Jdux z17H@yyo<}{mr9aRLPW1;E()L2kbsB4fIC1@LK+qTj zwj3oSh%GtcAu!+$fH@zRLtr6ruMm5#2#{_C8$qnkVfJCGL@VLpe6 z!}#ch2TY!^{49#6ah3zPLW1TFK)0AszQ^StSO}oY6AXbt=Kx$40j`k2C5|h15SCCbiU!vFvP07*qoM6N<$ Eg3`OC`2YX_ literal 0 HcmV?d00001 diff --git a/assets/02Attack8.png b/assets/02Attack8.png new file mode 100644 index 0000000000000000000000000000000000000000..fcc2f3a8c86c4b0f3e5da8a48a7582b0ce7da7fd GIT binary patch literal 422 zcmV;X0a^ZuP)Px$U`a$lR9Hu2WEfz;IKcKZj5=U61aO9c|B@a5krU{~7!R6+*5Gphy3d_mI8bux z;w2Bj{L>`~R0$CbLk67#&rs8HO%KQaTp)H z@PNrPmY>C1cVGzO3JJP90Np3(xdfMkVEWMINe%(JJAhDjL@yU$d|1ffDk%x&4uZJ= zJtS~hM6mPx$Ur9tkR9Hu2WEfz;IKcKZj5+`#1pJrm_>UYd8)H0Z8cKuT0nRQQDCu5>GhgbcwD7;p!mXH%Gis1*_fLxAoMFzs0Y&IM8u5=50z&tANsC{1950Not`vk>N8 zTt2^4l8h1}dOdSd_~eEJFV=jc9yc@O6EWp3ZVLQ%W8z%-2C;kFzlBuFhe z83)_}Fz4fP2rLBd6=Kg70n)8tBS`f*%wBjd7;py=3W*I*t5M<_=5v@hjE`P;z~mXr z&tk1RFa&Xh1kD|QZZV;JkIO-@5I~nF7y^UN0k|pxTp@!?oKWr{mPx${7FPXR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fIV9zQYTY}>0dsZ9P;Zcbcq%9vCS6xuFNa2{n1OJvanm zd|a9s2h3uai%wjLMQL#qul$77u}55kz~VN$*P+NCZQcm>F)Zp*_U-}8`lI+9CJyr{dN7<6g7}OOu+UkIQdnV>TmxpYqJ%Wq$5N>#D4xLOV^~>@?qgV4 zjxNq<7Z3IeFF!}p0o}#2`hAVO?T46qg3F54s2Fzku2?TQ?dVa(u zkE;lVg$O|()6HTo9!YR&7Uy9?iJO;S{-N**$$x#61y&C$xt1s10`tFpd5%3F)7@fR z7Q(zq$j9jFBIm1tgPx$%Sl8*R9Hu2WEdd8I6(F?j9Ls2`Ts%X|B<7Caa|`>LkFi}gT`W*@2TZ;qJ2zr zi|?34f#X(LMiy&MqnVEfjm1jGmZ13jo>dGApWG0@h+}jg)7;``u9o1qm0als_K}j- z3^0xELtI5HsXmAMnC=$;f7cB5DWgy=*b%N8HemjAJ~^=G&{OxiyXR0m9i(hTR-7{q zn8mOlmfC$BtB+ycx%l%nm|61j8YJ#lwL#KCSQScIAU3WU2h3uaj}#@OQEH>*dz`>h zB1wP2G|b0AlTq_AJc1`cLV{=?4;qVMK7~05=HvF#r(mHu;z=l}IOXL$i1=~~Fr5;4 z0!+^hJ&3pdhD*YNn(h{#xDtyJ$Hgl@fnEM=_8BnkG+713$1tD5ybtpsEPJNx-GkTX za32qt#W0s!*ZQOQ943CmH3%hcVH{XKMvo$xyoJtUtZ|JYIA9jT5}8!035pL1`52}c zR-&N?52IZ?iYGCAOm~a9cqGAbE6&4&H7;=p!czP4#9Lq`U$=FjDCPF50Q0|nd5+!3 zbhnt0g)hJSL-7Hw5P_+K$)oFo83OY;Px$+DSw~R9Hu2WEdd8I6(F?j9N^$kRN) zEF%l{u+p(5C?3CO6@$VjHv}+zJm40)J~{~Y8M+T~C3{kRj?>2jW--iXu(*ct*WEpb z;^`n|BeLQgr;q7o@iSLTaB7xZ=>@j)uE%v0pIrR;8q6m za39m%;{WfO!9G>ent?UJ?v}F$i^F^zG#ND?!!=ESgapw(9x#hxL2P~b5!l7c_c)>W zTqNl)nBQLd6im+%PePGTc{vXvzT5&#r$n9r({n=);w{q|2h3ua^G{rfMX8O7SAGIZ zJ)3<7Ogl|hLGdxnr!f66AHt$8W$zxmK8FX#fLRQ4xpl2S)_VAeYY^5{e^LnIGhDzz zXED~e#t3t%2y+152t<;+ z|Kcgw6R=dxa77M9E6k@bL7bVKZWeR#NP^>5oQDY|-@;tDJnPx$Mcg{<^#8P&^%^ zY(!R^6FM5V0v!oLA+%;Q4$md`1XZ=qyHw zbBqKqU=}M%NP~SWm1=_G30yvgm0ajPhLvpS;*56jV9#Rsc)%=%xe(?6LU9L^zyIPX z*b}f+&2U8yMJvpwFhQJ|e84PDUTu$(y3tD_T=KYzU|5I{^fBEm=HihA`%s*R2_}M{P)Px$@<~KNR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fISfh?+J{~j{D;-;c;`4h}F(`a;LjWU=(S1xei(%eTl#m9;HM$RRO zv{G0Vgbz*a#Ktw;$8@*&|GQ?ePnEQ0U`?>QAkte|P+|Yw~>u<&Zvl!<5 z6IWtUS{%hIKY^v5%{~LBohGZG_!#C>n0}ZKVNsW|cMo2l!-HeMEQYzaj zu0dE+{YfE+&jt077vGlfVDsDcBRRRLyWj4n-@>r!YZ+^)cNoPF`(~lDg4LB3$ygieOlX5cDzK zEau{o1p82&hY2NgUw-+A!Y3sE^-&gBJ*?zfo_Gt)|MulM_Iylti*Z>9^Clr5qpORY zuLc%^`4l~I!hFs+U>3t%1aknf*@skh1ml=g1Bq3SZZQCD!b&oZ3wyKx0000 literal 0 HcmV?d00001 diff --git a/assets/02Idle3.png b/assets/02Idle3.png new file mode 100644 index 0000000000000000000000000000000000000000..f4720cd7edac28b47ac5849d9482e569dd8e14e0 GIT binary patch literal 551 zcmV+?0@(eDP)Px$;Ymb6R9Hu2WEdd8I6(F?;I#OEQ2BpkM=`GJq^ctakHvS)qQE{?mXXC83)J#C zhL1-rMh|bg1+~(#B`9{^vx-6Clj{(IaZERhVct=ckOrr2bRXg>a7gtz&U{Qai=Vk# zf_*5t(hKaVyB^oUGRc&BeDXa>@ho*L7fqx_;L#{of3HhOwSEHh`0WR zOTzLk-7P+GB^IT{QM~dK*yYb=p8?ZOlT}cB4D%_>`!FBE5^KudJ$QW%_wj&P40E}4 ztv`y-Vd6(zgRrLhlR^-m;Q|&qi?PNvhTwo%3`=BEsU|3%z~y6D$pupkE78zHfYB}< z#giC59x#j1^EKWGM3TJ!;wjh@{|_xhZI7e*6sCn>eN1zUxp*YOE*0ltLdmx&?aOoQaZGoM(Je#|T9}Jr;xHfMQWrU24J-uPx$&q+iLkFi}gT`W*@2TZ;qJ2zr zi|?34f#X(LMiy&MqnVEfjm1jGmZ13jo>dGApWG0@h+}jg)7;``u9o1qm0als_K}j- z3^0xELtI5HsXmAMnC=$;f7cB5DWgy=*b%N8HemjAJ~^=G&{OxiyXR0m9i(hTR-7{q zn8mOlmfC$BtB+ycx%l%nm?;<_38o#Lox$|}y?Y`2%Mfv5G}Hd?;N z2`nX&^cPISd>k|xH6Ozxc)~T(d^~6@hWQlcAefKaOP_*;=7=Yuq~es9^C05OEx>e2 z3t%Ze8n-;&Yhz5!WD;xP@_)!m7Yb^eBSKTj(st8rK+t17GK_ZdD4xXdG2JcZ;*kW$tvC-8Ru|(Egr)Z7iMPN?zHaM4QOfOA0p@@E z@*KO5>25J03txWuhvEZVAp%nelSkJFGX&;y#sRY!<`S3#NQz(*6cdbN63ik=DZ0e~ Xxa$-$b|-F<00000NkvXXu0mjf2gmWt literal 0 HcmV?d00001 diff --git a/assets/02Idle5.png b/assets/02Idle5.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbe7e5008653878b082926fd7d068a7b50ec524 GIT binary patch literal 544 zcmV+*0^j|KP)Px$+DSw~R9Hu2WEdd8I6(F?j9N^$kRN) zEF%l{u+p(5C?3CO6@$VjHv}+zJm40)J~{~Y8M+T~C3{kRj?>2jW--iXu(*ct*WEpb z;^`n|BeLQgr;q7o@iSLTaB7xZ=>@j)uE%v0pIrR;8q6m za39m%;{WfO!9G>ent?UJ?v}F$i^F^zG#ND?!!=ESgapw(9x#hxL2P~b5!l7c_c)>W zTqNl)nBQLd6im+%PePGTc{vXvzT5&#r$n9r({n=);w{q|2h3ua^G{rfMX8O7SAGIZ zJ)3<7Ogl|hLGdxnr!f66AHt$8W$zxmK8FX#fLRQ4xpl2S)_VAeYY^5{e^LnIGhDzz zXED~e#t3t%2y+152t<;+ z|Kcgw6R=dxa77M9E6k@bL7bVKZWeR#NP^>5oQDY|-@;tDJnPx$Mcg{<^#8P&^%^ zY(!R^6FM5V0v!oLA+%;Q4$md`1XZ=qyHw zbBqKqU=}M%NP~SWm1=_G30yvgm0ajPhLvpS;*56jV9#Rsc)%=%xe(?6LU9L^zyIPX z*b}f+&2U8yMJvpwFhQJ|e84PDUTu$(y3tD_T=KYzU|5I{^fBEm=HihA`%s*R2_Px${7FPXR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fIV9zQYTY}>0dsZ9P;Zcbcq%9vCS6xuFNa2{n1OJvanm zd|a9s2h3uai%wjLMQL#qul$77u}55kz~VN$*P+NCZQcm>F)Zp*_U-}8`lI+9CJyr{dN7<6g7}OOu+UkIQdnV>TmxpYqJ%Wq$5N>#D4xLOV^~>@?qgV4 zjxNq<7Z3IeFF!}p0o}#2`hAVO?T46qg3F54s2Fzku2?TQ?dVa(u zkE;lVg$O|()6HTo9!YR&7Uy9?iJO;S{-N**$$x#61y&C$xt1s10`tFpd5%3F)7@fR z7Q(zq$j9jFBIm1tg}M{P)Px$@<~KNR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fISfh?+J{~j{D;-;c;`4h}F(`a;LjWU=(S1xei(%eTl#m9;HM$RRO zv{G0Vgbz*a#Ktw;$8@*&|GQ?ePnEQ0U`?>QAkte|P+|Yw~>u<&Zvl!<5 z6IWtUS{%hIKY^v5%{~LBohGZG_!#C>n0}ZKVNsW|cMo2l!-HeMEQYzaj zu0dE+{YfE+&jt077vGlfVDsDcBRRRLyWj4n-@>r!YZ+^)cNoPF`(~lDg4LB3$ygieOlX5cDzK zEau{o1p82&hY2NgUw-+A!Y3sE^-&gBJ*?zfo_Gt)|MulM_Iylti*Z>9^Clr5qpORY zuLc%^`4l~I!hFs+U>3t%1aknf*@skh1ml=g1Bq3SZZQCD!b&oZ3wyKx0000 literal 0 HcmV?d00001 diff --git a/assets/02Idle9.png b/assets/02Idle9.png new file mode 100644 index 0000000000000000000000000000000000000000..f4720cd7edac28b47ac5849d9482e569dd8e14e0 GIT binary patch literal 551 zcmV+?0@(eDP)Px$;Ymb6R9Hu2WEdd8I6(F?;I#OEQ2BpkM=`GJq^ctakHvS)qQE{?mXXC83)J#C zhL1-rMh|bg1+~(#B`9{^vx-6Clj{(IaZERhVct=ckOrr2bRXg>a7gtz&U{Qai=Vk# zf_*5t(hKaVyB^oUGRc&BeDXa>@ho*L7fqx_;L#{of3HhOwSEHh`0WR zOTzLk-7P+GB^IT{QM~dK*yYb=p8?ZOlT}cB4D%_>`!FBE5^KudJ$QW%_wj&P40E}4 ztv`y-Vd6(zgRrLhlR^-m;Q|&qi?PNvhTwo%3`=BEsU|3%z~y6D$pupkE78zHfYB}< z#giC59x#j1^EKWGM3TJ!;wjh@{|_xhZI7e*6sCn>eN1zUxp*YOE*0ltLdmx&?aOoQaZGoM(Je#|T9}Jr;xHfMQWrU24J-uPx$RY^oaR9Hu2WEfz;IKcKZj5=U61V%%E=n(KFV=jc9yc@O6Ed)G3+LP}aQz%+~>u+0=DBsRu) zVD&7{5EwKLfO!KwB;X-Xh&@*XNVifa1P06jFpFVPfy*Hqo>rsylvtm`G!e`N1MUFy zVvmr6U}@w2i>CxVM^bG_Y?RQ<0k|q9LM0)t{7-ZmfGMQA0|*sF=xGBM61YlEs+WXx za{#XVk6tIBtHYHx&_jY?T`*t{fLYANBMGh*#d(;BY6-yPx$>PbXFR9Hu2WEdd8I6(F?;I#OEQ2Bpsj$&NbNfpNq9*fa^s&s4#ipTF+#h~!X z4FL=v517Sw%%Z??>-y***k|ZI#FZFH^*M%*2i#(q&y;0kQ9QZs?l}~Gkg^e3agNi+ zbhG%Gt0g#YC0BZZ?Y!%89mOXXf4&CuOI}`s#Qmx^Fs&3;g_0JCjcd4%>2C4=cg;o%tnyi8~4ZsBFh8_eb)a2FnU~^!6 zT$=y!cJW}(V)%H# zEQYxd<^V!*2a~`5;wjh@up*e@iX4hom``DXI9r*6#$xo63s?R`uXJD`ff3iZf)d@w zG_#nCM-prPg*i-|hY7`vFTec5>gLG#YGCo@iMLSXzkPX*Js;EEVnP<;@-a*tm(OuU yA90000Px%0!c(cR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7AhTEg5sfjRxv1iazg^c z#{*{Z9kVEK+`2wG2=*De4{^mOsXoW>@qk+l^O>@YEQ%-B-93lG4^lQFE6#EHc)%@& zIpE^Y*I;JJ%WIIhU)2VtmBOk}(gLw@P0+_QxA>W>B{(%puJnTVL~90^-YsVjreQt~ znv9x{;SoFm5)vf)nC=$;f7cB5Da?oH`4r~k_R^ph80LKIT7MLu!^B}eMGuCP zLJ*%30v0-pQ3@-Jl54;$R+Nwi`&cT~1jQ4$d<-kA(R~an%hAOd?c%|n#qjZfSqyU_ z%mIYr4kmy9#Z#12&2U8yMJvpwFhQKH%mK3)<}z4G1moYhB!J?RXS2_M`RG1IFZ*Hg z1bsYU7Nh$V<`7s(gdP>>J|?>4LQh0=vzUuV5~aiv=V3x|%gZnSh)Up*^VPuWmM7jq zQUC4BbL=G--7QA95avvDAH&3n^*OHKf%%+qz$}Kj43`6lidZ5P5go@wm_?Ejbc+G6 W_fRtBl-?Nt0000= literal 0 HcmV?d00001 diff --git a/assets/02Walk12.png b/assets/02Walk12.png new file mode 100644 index 0000000000000000000000000000000000000000..26a6f05d28f62f52cb98c71a4312bf857d31aea0 GIT binary patch literal 601 zcmV-f0;c_mP)Px%6G=otR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fIV9zQYTY}>0dsZ)H8l{ZhEoTq*5zNOylTq_AJXj_`LV{=?517TUAhy2z z2qjLJ?{Nb2MUwu4>Gsm6V0w;t5{kN%m-8Uv%PqikO5_PJJva0q-r9_Dz$}J29~QST zpBAtDgyJ&|y$>iphWQkx27k7;Hx7mp-3PQ`hcP~6}&Sq02r zo_GsI+_2CL%!m0DCW%Y^w=d7Jmt1tW7-k{N#pphUiNE~vk5G;xN*?BO#sRY!=1g=4 n5aoOl6cLPL63ik=DZ0e~I>Amdf#~Z900000NkvXXu0mjfxV#P= literal 0 HcmV?d00001 diff --git a/assets/02Walk13.png b/assets/02Walk13.png new file mode 100644 index 0000000000000000000000000000000000000000..4f57f693802b781d737491d5903c547cf71294db GIT binary patch literal 570 zcmV-A0>%A_P)Px$^hrcPR9Hu2WEdd8I6(F?;I#OEQ2BpkM=`GJq^ctakHzRdMUM(<`5eQ?17`6Z zvnX)fD$B@%J*#wV35uuhS;e66$qfMv9}k$tFz+ZzNP~Tj?n7MJk5r%IOw|KsF?x{0 ze7f%LITTL^DI1X$=Qw>#H;bRST7u(La-|p82X{TLqxj_F&(~mn$;)eC`rfKGNU9I3 zg7BfKo!GdB`%KE!YvR8a815oe%fHKG`j252j&04w{UbkKw^G0TL2K z`*^@Ch6Sm7h?2rlI!%#m6w8q9_9S+}Q=<^SyiU`Wzk{17`7wE3x3zjP6sI zkB+zop?eO@KPd$986jYyvlu1L;hX`p7(K3~QcX}ify>9Rk_+9(u#yd3oY5{G>{*N? z4~uKMTa4~=LU9L^zyIPX*b}ePLowo?1Ys>*0ug9 z?QL|29VvvQ4JEA^C{nNx!SL~*vv_&pEv%t!SZIb-9Oh$K$pzE@?aOoQ`52dvX=X7O zk0jnWBb2zrd6-a?z|saT2g7{MIA9jToJ*+#2!#yJIHtG70H|LoGUx}`cK`qY07*qo IM6N<$g2KTBZvX%Q literal 0 HcmV?d00001 diff --git a/assets/02Walk14.png b/assets/02Walk14.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7f6ce27d82ab460f3682b31aaf27de851f79bd GIT binary patch literal 550 zcmV+>0@?kEP)Px$;7LS5R9Hu2WEdd8I6(F?j9Ls2`Ts%X|B<7Caa|`>LkFi}bhjAYLiEH(EuUlf zc)%>aV-^LDTV)wpuxFKyEkW`0J*yZLKDi-);o||f*!9stu+Pwah^xRM)#o^UOm~Z6 zK0*(2nE1N8=TJNyq-;c1oa4;LbhG%Gt0g!!ORn?+`{1s}brhdm{P`NpFL`+l68Edx zAgMmA3MDNN8`p3j)7|3#@0!6rRnnS)HNozdvj>aAd>k|xH6Oz@O@M?1(LNq9i(x@* zefbgC#mo0Nq4-=R=`WbyUiuVF&k;{TkxzL!56qt%dJr6K$*b+bAqeAR4MtGN44B0* z7oE5gi&Fm z`Q;yq`mc|&zcyIpcs?4092w o4j?v!VCo3QF{uU;s~+8A0O!CYGHXSf`~Uy|07*qoM6N<$g0Y|XR{#J2 literal 0 HcmV?d00001 diff --git a/assets/02Walk15.png b/assets/02Walk15.png new file mode 100644 index 0000000000000000000000000000000000000000..9a583c6b08885598f861328dfd85f7916ccfc4f5 GIT binary patch literal 565 zcmV-50?Pe~P)Px$?@2^KR9Hu2WEdd8I6(F?;I#OEQ2BpkM=`GJq^ctakHzRdRXVl=B{uF^#h~!X z4G9b%517Sw%%Z??>-y***k|ZI#FZFH^*M%*2i#(q&y;0kQ9QZs?l}~Gkg^e3agNi+ zbhj90AuPyY{EI(dgPA2SuR-E|RU4RA3adg%3&h4X&U{Qai=Vk#f>X2PN-u~{v}SEhJAwjZ_>2C4=cg3uI*!uD#u#1=PaYFG?q{}`q-)XW6dSIaN=Y}2xC)DKC_TUhN@o{Nl959Pv zE;?}~7N!0zUik^DV~@B7fyHfhuS1bP+Po3$V_4Ls?A-&F$K`W)J{~ZOVa~U%^+)kJ zOdRG@^k6tC1o0UmV4<@ZrLe*%xdzN)MG0xJkEK#gP&|Rl$FQ;*-N&%999^8zE*|Vz z3?C1e#V{Ab96%`UVDk50JVi;>3|Hh(w8DG}6U13N4VcB~K8KZDH!cZa&A%`~TtzS} zLc_4%P)Px$S4l)cR9Hu2WEfz;IKcKZj5=U61V%%EUqid>oFOpa4uH8FmqSQR5EQ2YQY|DD^e}kPx$MM*?KR9Hu2WEfz;IKcKZj5=U61V%$(Gz18Sfd7&m|B(x;jWHes^^j7y5j1Sj zIRNH6XBQ3>k1k&F0L(vKl0eW?$QlVMMh^kHI{;=OE{C8yh}4iE7y^UF0j50*z_~$6 zLV~D7{_MpIqS6G>AuwPLAY}2Sl4O(+(d(Iu!Y33G1VdoJ9H1y64UThkAHlo_^ZC7N z8DJqLtr=h%#t+zLiV_mIN>H33FlZbA^9FiIz(b%Ad#(tOZlz8L444C87Q>4V3O$S(B;uX0%r&e pxC3B5LU#zEIL9SVb{e3y0|3W_)Fqk*%(4Ig002ovPDHLkV1m;Elkxxn literal 0 HcmV?d00001 diff --git a/assets/02Walk4.png b/assets/02Walk4.png new file mode 100644 index 0000000000000000000000000000000000000000..f19c8d21fcd6755ff00beda7d889c0cb6bfa6817 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yF!3HE>yta4*q!^2X+?^QKos)S9WIKDhIEF;H zC#Ogx9I!a>&A7)Z!Gy)l8B8?15t#Ai(SiCWNi`oQu_wHHIf-S`85K{%O|2#64gV*} zYS_80KQbrQ;(*hVHkONu1_^u$DTeD_{khpK?y{7#Nzvc|pTXNmhQ4Y|PR=#+_J&OA zQCfH1SiE(=;W6g*>YQx{8mt+@MGn-|y^mtMaoj7)_<%`|{D!krR!mTkU}Ap8;L4d< zaA)yx%`?#-1T>D!Gh|DQF`Ur*R9hk|M0J6U!vge(^ zmqQG;DG8a(YJP>5AU93nxLC}*aD|dJ?*p$IlX8YCsRm1yy>IG&K9!GHX~8c%L(SAz zK!@|<;-);l2ahJQOm8umzi@fojPr?)c3e65B=Ob$+RDC1nR7t?Y1k?AOkhnfqY%r* iTE5F(2D}$;F*5MR98j&;Fij2^whW%GelF{r5}E)SCz*l( literal 0 HcmV?d00001 diff --git a/assets/02Walk5.png b/assets/02Walk5.png new file mode 100644 index 0000000000000000000000000000000000000000..d94c332720798deda1abb8193e4179185e07362d GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yF!3HE>yta4*q!^2X+?^QKos)S9WP5qKIEF;H zC#Ogx9I!a>&A7)Z!Gy)l8Ax>SG5%Mz{--P+bxu!4BlX53RsI8iE~|37%;pU8-|~pD zm|@q^9bI`59TTL4Sez3sSUkAdEuL`R+tWiJwEo}~VJ~5q_5%%;2eza$T6}%{>F3f( zDN_V4zMk2ANL>V^;egBn4MpB>mb>~B?lu4Xb8joph6$6d@fh$vX3sHpQ&L-7|4VDaP zhT{DyJNyKmCmy=RSMl?ye1uG_oEqQdFKS~3G&tegP6h7)z4*}Q$iB}T#lJH literal 0 HcmV?d00001 diff --git a/assets/02Walk6.png b/assets/02Walk6.png new file mode 100644 index 0000000000000000000000000000000000000000..03341604745bca5b4e896a3ff3c820481d776687 GIT binary patch literal 579 zcmV-J0=)f+P)Px${YgYYR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7AhTEg5sfjRxv1iazg^c z#{*{Z9kVEK+`2wG2=*De4{^mOsXoW>@qk+l^O>@YEQ%-B-93lG4^lQFE6#EHnC=$C zEQAF)jDPXxYcR9qAh5X2?sX{gN1Hc-eGH4bl)Zbv^0<5s&&LC1G0geawf-nRhl#^{ ziXIFng&;m71T1tGqZC#cCD(vitSBK3_OVo|35q9h`50DKqx%?EmZOU^+QoxCi{aw| zvl!+=m;(sK9ZdfIi>D~5n&FBZidL9UVS+eorvbAVJ(X+deZcB@^n8k|2!@3SK_3qq zi=WLt19l6n%*ItBkz8`&N<^@HO*4zRcqFlwSmHcPSl#sU%Rj8*k@MBS;>#0np~!#x z@*I1~MR$vFSqO73x{q=Bl-T?Z^Eu;ySqyV2AqNoaBV6i8j$=wKgy~1O7yu~GMl$N} RwH5#X002ovPDHLkV1iX!0mlFU literal 0 HcmV?d00001 diff --git a/assets/02Walk7.png b/assets/02Walk7.png new file mode 100644 index 0000000000000000000000000000000000000000..c76a4f000163c33edf8d9d3a285b191418dc386d GIT binary patch literal 577 zcmV-H0>1r;P)Px$`$0dsZaAd>k|xH6Oz@O@M?1(LNq9i(x@*efbgC#mo0N zq4-=R=`WbyUiuVF&k;{TkxzL!4QeUZ!RvE)a15BmFqd1``lI+9CVs><2y3c8DFpEuAz-1i z7$wdz62O32tSBK3_OVo|35q9h`50Dmq5BwCvZ0GJ+QoxCi{aw|vl!+=m;(sK9ZdfI zi>F{uz*05C6*&~GFrUH%ac1%Xvlu;*9c|u-;>hIH_9&?zJs+c&{jd-r=wrHDj4N@W z`xrec(Bqisk_$aip=T$WSPx$|4BqaR9Hu2WWWLb2bKRvmSSAj$%soWIpR1Cqr1iE7NYxxT0Y0{@qk%;$1DmQ zx5_fISfh?+J{~j{D;-;c;`4h}F(`a;LjWU=(S1xei(%eTl#m9;HM$RRaNFiFpZwN*WEpb;^`n|BeLQg?qj-J{Qq4u*r$v_wO~iMYS@7J z)A{63d~)&UYcRj$9=)&#p-&K@id^KsB* z)O-xrGyxJ4MEiKaEJn|_%l9~;_*^9EFPPt6`V>sh5l=#qPkA{HBEH-LOs7Pi0Mm0r z58|!A;gYa?OLvP;T!}?#aTKrogyJ&|y$>iphWQkx2 z^+)kJO#Fyz5Y|+GQV8NRLcl_2F-n|cB!B_47?#MSQcX}ify>9Rk_+9(u#yd3oY5{G z>{$#S517U1`I=DN!Q}71cnbCeELAgHK`rZHK82|#SRd2eVptHvEJBatqs<#p9GSe@ z9&75KDgjLJSFaJ=)VLoRZFpFW%p_T)1g%r*>rnkia>2oeJ Ty{rMS00000NkvXXu0mjfz-kFs literal 0 HcmV?d00001 diff --git a/assets/02Walk9.png b/assets/02Walk9.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2e26ff384c0666543c78daa3cf6c8abe8dd93f GIT binary patch literal 555 zcmV+`0@VG9P)Px$LkFi}bhjAYLiEH(EuUlf zc)%>aV-^LDTV)wpuxFKyEkW`0J*yZLKDi-);o||b80H;C32Cs;(S3-kz#-M=I8!y< zEPm!{3HG7nN-wad?s{AY)3CUP`E=dgb10q;QZ^zh&fz|$yT$+CHG_T1C{zn}gsX-P zm_MCQ4#g)If4&CuOI}_B)Av@jK~jBK6@(8>?Zn14m?D@DVTmTIEQYz< zy4D}X=P>aju0dE+JuDxiM-jSW3!TL%agLDy2FzkuB9lrrL2)!8AEWyaRPx$)k#D_R9Hu2WEiA?age%;Vbo!y#>{AljfNPhAwa5nqSKh7g!F%648Q;4DbZ%) zGmmIP2A#u*br8DmDGfP-AvWk7M#w>3mZIQ5Dm(rfOr!H@7Gi_WVZ=IUNpJ@^q+-@q zfN2>2Qb{t_%y!Qz21T54T_@gTgdsWP9R^EVxXL2*5UMdN0|z(Q0D zu_5cQE6>lO1dfiRF_<6DYJwsT3o-QEi5}7&k2exmR}u=b0dpA4hcE}ieBRW*9BYXm z6rqM9-Yl1nH{{R_A=F;O2+l$4FqqF^#fQ9M1d3;q}M{P)Px$@<~KNR9Hu2WEiA?age%;Vbo!y#>{AljfNPhAwa5nf@w@qLi#^3hTebil%QF} zm;+No(6B-0Fk&5q9tzY7Ih-Lj8{ zwH06*#=lgO4Ccc^43|0gtYX0G7}s^;&3G7+gU(@u5<7Yn5-O9fJUCJJxWNxLI@@}chN>LbJ?F`SVJsN;}uw3YWH!hxf3op=pBY0 zQZVo0N<-)&1mizEzXHre4{2B$BRRwdt;1kGGB$aLk~V&XO~P7q!P1h&l{+Z%D}SG% zZio#zhfV$Aj5Wm2LkgydP>6Lr-bh?s3CoqZLTtbs2J>l!tUuN^{&j}GC?R&~_j#-# zNUR{Cb{j@;4qAu7dk)3w)qFG!_a+$?odJ@29qb0 zrqJyn7-ECQVT2ltFo(YU@(;z$u7bv3KB3$S)A#MmbK=S|^h8f6+tbZqTs)HC@=KhD ziIAJX^5_mDS0ApBg9qoJbr>v|U=AcI*eFm$avB>f4g&z$(0DktNtaOo0000Px$)k#D_R9Hu2WEiA?age%;0jI;h{(tcw+0opL5_I*%&~w=0<%dv0EGR+^9Dwu+ zIh-LjXdMPiUjyYpf(d%iIZRPP8l1-D4I{vTmmKF0reSGKN75Ljq`Cj%DM3$?QZ(T- zY|uFj<{+5w&_fI+4hy+$K^|bCvg5D8G_^twBgBS`!-x$zSem0-hz+>I(4!DN2N6nZ zAKd~`v`Fnf4o)U8bMINjfaMw2brO|(;fjWg!;b38p@e|-K8Uj>j7*3$a1xFmwl@r!`o}!Nj{PMX?s>uyPG%-lQ91l!e%kaTt0Cg|nKV zgpjex!+{C00e2Y8+vvpxdI+Hh56wet&^rv~zzSJ^lr}%1w$#esXRs=vI9H;ZI%pjR zOKXJE7%ZgF)xpH69%6&mVYo5_p|plep44_4!3vd7tAkjFQq5s72kEgI;Hi<2ND%*6euD& djSUuu0RR(dPB?PL^UDAL002ovPDHLkV1mcO<}m;O literal 0 HcmV?d00001 diff --git a/assets/03Attack4.png b/assets/03Attack4.png new file mode 100644 index 0000000000000000000000000000000000000000..1c935e1692c155952890ffb590cead6c09926347 GIT binary patch literal 531 zcmV+u0_^>XP)Px$%}GQ-R9Hu2WEiA?age%;0mETm|G)T;>{xC_i2-r^&~ez}<%dv0EGR+^9Dwu= zIgAh+v<`!%uYqwhU=D%> zhrD3~n3){sk2U1B1$ltQ%Z|SW)6@z%j1U_#4kI??U}=tSAvWL+LytmSl{=v{_t7m7 ztW|3Fad0yEA5;#`-HhuxNy@cw#Y4tnM|I^;0?qpJBNRS*$ki1_g5_c256`av^I_(| zLXg;I7S0eGbPhvz5V{Z1Lk=e2WhsiH6jrWLEyRY5!_Y%0oYe$tGBGxJNZ$|}aEHOX zi(YKt3L#v%3l?%zOJjrHVK4_)$oiwS{Rx#nD}SHCs)XWPiEiqkbr>wI5lUmQkV01n z6Q_EJ4O)lc$_#|k8ZLQK+i3)wBE+^j2sxN)4ud&JkJS*botJ)}2g~D9xAE~7f}Y1_ z0l{9 z$O4!=%^b$XBMGh>#d(+r<$SO_dWey$4_C;+Lu}AG3>Hi<2ND%*6euD&jSUuu0RUps VG&r+{7>xh`002ovPDHLkV1nD1;4%OJ literal 0 HcmV?d00001 diff --git a/assets/03Attack5.png b/assets/03Attack5.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0b5c4ceff26e1251f08215140fb994d83b7f99 GIT binary patch literal 490 zcmVPx$q)9|UR9Hu2WEiA?age%;Vbo!y#>{Al(JjQj{(tcwn`PXL5>$x=vJDxu4ugdj zE(fBACaEDwc8Co+hbc-(V@+FEo}VQueG?mUB!}3baTqR#;0hjUg&e^U8*~mM)6B}Z%5XY6~aE92Ra~P=(nsuEA?D;g!FJKzR-*9~mMY$9s#D#eg}C*aqUuFaPj{h^wG6 zSpL%Q^LW+WfAJJ=M+h!C>>Vb~!$edXgN6LJFVC@t9MwaN>JEc>lZ!_ZYaK~cFp!`K gS4iP3`3H-`09qW?0prP~EC2ui07*qoM6N<$f-Abva{vGU literal 0 HcmV?d00001 diff --git a/assets/03Attack6.png b/assets/03Attack6.png new file mode 100644 index 0000000000000000000000000000000000000000..8f141cc67244c48d8d83a461669693604670173f GIT binary patch literal 539 zcmV+$0_6RPP)Px$)k#D_R9Hu2WEiA?age%;Vbo!y#>{AljfNPhAwa5nqSKh7g!F%648Q;4DbZ%) zGmmIP2A#u*br8DmDGfP-AvWk7M#w>3mZIQ5Dm(rfOr!H@7Gi_WVZ=IUNpJ@^q+-@q zfN2>2Qb{t_%y!Qz21T54T_@gTgdsWP9R^EVxXL2*5UMdN0|z(Q0D zu_5cQE6>lO1dfiRF_<6DYJwsT3o-QEi5}7&k2exmR}u=b0dpA4hcE}ieBRW*9BYXm z6rqM9-Yl1nH{{R_A=F;O2+l$4FqqF^#fQ9M1d3;q