From 38f5f95827e6e5c9f47e0050203be088f41c98f2 Mon Sep 17 00:00:00 2001 From: John Doty Date: Wed, 23 Aug 2023 19:55:34 -0700 Subject: [PATCH] [game] Collision detection --- game/actor.ts | 99 ++++++++- game/level.ts | 204 +++++++++++++------ game/main.ts | 20 +- game/overworld.aseprite | Bin 1068 -> 1251 bytes game/overworld.ldtk | 430 +++++++++++++++++++++++++--------------- game/overworld.png | Bin 543 -> 703 bytes 6 files changed, 511 insertions(+), 242 deletions(-) diff --git a/game/actor.ts b/game/actor.ts index afa775a3..e3d58d0f 100644 --- a/game/actor.ts +++ b/game/actor.ts @@ -2,20 +2,42 @@ import { load_texture } from "./assets"; import { btn, Button } from "./input"; import { Vec2, new_v2, vadd, vsub, vnorm, vmul } from "./vector"; import { spr, use_texture, Texture } from "./graphics"; +import { has_collision, Level } from "./level"; export interface ActorProps { + id: string; + + cx: number; + cy: number; + xr: number; + yr: number; + position: Vec2; velocity: Vec2; friction: number; - id: string; + collide_radius: number; } -export function new_actor_props(id: string, position: Vec2): ActorProps { +export function new_actor_props( + id: string, + position: Vec2, + collide_radius: number +): ActorProps { + const cx = Math.trunc(position.x / 16); + const cy = Math.trunc(position.y / 16); + const xr = (position.x - cx * 16) / 16; + const yr = (position.y - cy * 16) / 16; + return { + cx, + cy, + xr, + yr, velocity: new_v2(0), - friction: 0.6, + friction: 0.7, id, position, + collide_radius, }; } @@ -30,9 +52,15 @@ export class Actor { update() {} - update_physics() { - const velocity = vmul(this.props.velocity, this.props.friction); - // Zero if we're smaller than some epsilon. + // IDEAS: Make gameplay logic at 30fps and render updates at 60fps? Does + // this mean we do some "update" in render? + // + // TODO: Update physics in a better kind of way rather than an object call. + update_physics(level: Level | undefined) { + // This is very nice: https://deepnight.net/tutorial/a-simple-platformer-engine-part-1-basics/ + // Apply friction to velocity and zero if we're close enough to zero. + const props = this.props; + const velocity = vmul(props.velocity, props.friction); if (Math.abs(velocity.x) < 0.01) { velocity.x = 0; } @@ -40,13 +68,62 @@ export class Actor { velocity.y = 0; } - const new_position = vadd(this.props.position, velocity); + let cx = props.cx; + let cy = props.cy; + + // Adjust xr with velocity, check for collisions, etc. + let xr = props.xr + velocity.x; + do { + // TODO: Cap velocity to 1 tile/frame? Then we wouldn't need this loop... + if (xr >= 0.7 && has_collision(level, cx + 1, cy)) { + xr = 0.7; + velocity.x = 0; + } + if (xr <= 0.3 && has_collision(level, cx - 1, cy)) { + xr = 0.3; + velocity.x = 0; + } + if (xr > 1) { + cx += 1; + xr -= 1; + } + if (xr < 0) { + cx -= 1; + xr += 1; + } + } while (xr > 1 || xr < 0); + + let yr = props.yr + velocity.y; + do { + if (yr >= 0.4 && has_collision(level, cx, cy + 1)) { + yr = 0.4; + velocity.y = 0; + } + if (yr <= 0.1 && has_collision(level, cx, cy - 1)) { + yr = 0.1; + velocity.y = 0; + } + if (yr > 1) { + cy += 1; + yr -= 1; + } + if (yr < 0) { + cy -= 1; + yr += 1; + } + } while (yr > 1 || yr < 0); // TODO: Collision detection // const { w, h } = this.bounds; - this.props.velocity = velocity; - this.props.position = new_position; + const new_position = new_v2((cx + xr) * 16, (cy + yr) * 16); + + props.cx = cx; + props.cy = cy; + props.xr = xr; + props.yr = yr; + props.velocity = velocity; + props.position = new_position; } draw(_clock: number) {} @@ -55,7 +132,7 @@ export class Actor { } const robo_info = { - anchor: new_v2(16, 24), // Distance from upper-left of sprite. + anchor: new_v2(16, 16), // Distance from upper-left of sprite. bounds: new_v2(32), // Width/height of sprite. sprite: "./bot.png", animations: [ @@ -90,7 +167,7 @@ export class Robo extends Actor { a.x += 1; } vnorm(a); - this.props.velocity = vadd(this.props.velocity, vmul(a, 1.5)); + this.props.velocity = vadd(this.props.velocity, vmul(a, 0.06)); } draw(clock: number) { diff --git a/game/level.ts b/game/level.ts index dfedf755..f6376f1e 100644 --- a/game/level.ts +++ b/game/level.ts @@ -7,52 +7,65 @@ import { load_string } from "./io"; // TODO: Use io-ts? YIKES. -export type Tile = { +export interface Tile { px: [number, number]; src: [number, number]; f: number; t: number; a: number; -}; +} -export type TileLayer = { - type: "tile"; +export interface TileSet { + id: number; texture: Texture; + tags: Map; +} + +export interface TileLayer { + type: "tile"; + tileset: TileSet; grid_size: number; offset: [number, number]; tiles: Tile[]; -}; +} -export type Entity = { +export interface Entity { type: string; id: string; px: [number, number]; bounds: [number, number]; // TODO: More props here. -}; +} -export type EntityLayer = { +export interface EntityLayer { type: "entity"; entities: Entity[]; -}; +} -export type Level = { +export interface Level { world_x: number; world_y: number; width: number; height: number; + cw: number; + ch: number; tile_layers: TileLayer[]; - entity_layers: EntityLayer[]; -}; + entities: Entity[]; + values: number[]; +} -export type TileSet = { id: number; texture: Texture }; +export interface World { + levels: Level[]; + tilesets: Map; +} -export type World = { levels: Level[]; tilesets: Map }; - -async function load_tileset(def: { +interface LDTKTilesetDef { uid: number; relPath: string; -}): Promise { + enumTags: { enumValueId: string; tileIds: number[] }[]; +} + +async function load_tileset(def: LDTKTilesetDef): Promise { let relPath = def.relPath as string; if (relPath.endsWith(".aseprite")) { // Whoops let's load the export instead? @@ -60,11 +73,16 @@ async function load_tileset(def: { } let texture = await load_texture(relPath); + let tags = new Map(); + for (const et of def.enumTags) { + tags.set(et.enumValueId, et.tileIds); + } + print("Loaded tileset", def.uid, "from", relPath, "as ID", texture.id()); - return { id: def.uid, texture }; + return { id: def.uid, texture, tags }; } -type TileLayerInstance = { +interface LDTKTileLayerInstance { __type: "Tiles"; __gridSize: number; __pxTotalOffsetX: number; @@ -77,11 +95,11 @@ type TileLayerInstance = { t: number; a: number; }[]; -}; +} function load_tile_layer_instance( tile_sets: Map, - li: TileLayerInstance + li: LDTKTileLayerInstance ): TileLayer { const tileset = tile_sets.get(li.__tilesetDefUid); if (!tileset) { @@ -90,14 +108,14 @@ function load_tile_layer_instance( return { type: "tile", - texture: tileset.texture, + tileset, grid_size: li.__gridSize, offset: [li.__pxTotalOffsetX, li.__pxTotalOffsetY], tiles: li.gridTiles, }; } -type EntityLayerInstance = { +interface LDTKEntityLayerInstance { __type: "Entities"; entityInstances: { __identifier: string; @@ -106,72 +124,135 @@ type EntityLayerInstance = { height: number; px: [number, number]; }[]; -}; - -function load_entity_layer_instance(li: EntityLayerInstance): EntityLayer { - return { - type: "entity", - entities: li.entityInstances.map((ei) => { - return { - type: ei.__identifier, - id: ei.iid, - px: ei.px, - bounds: [ei.width, ei.height], - }; - }), - }; } -type LayerInstance = TileLayerInstance | EntityLayerInstance; +function load_entity_layer_instance(li: LDTKEntityLayerInstance): Entity[] { + return li.entityInstances.map((ei) => { + return { + type: ei.__identifier, + id: ei.iid, + px: ei.px, + bounds: [ei.width, ei.height], + }; + }); +} -function is_tile_layer_instance(x: LayerInstance): x is TileLayerInstance { +interface LDTKIntGridLayerInstance { + __type: "IntGrid"; + __cWid: number; + __cHei: number; + intGridCsv: number[]; +} + +type LDTKLayerInstance = + | LDTKTileLayerInstance + | LDTKEntityLayerInstance + | LDTKIntGridLayerInstance; + +function is_tile_layer_instance( + x: LDTKLayerInstance +): x is LDTKTileLayerInstance { return x.__type == "Tiles"; } -function is_entity_layer_instance(x: LayerInstance): x is EntityLayerInstance { +function is_entity_layer_instance( + x: LDTKLayerInstance +): x is LDTKEntityLayerInstance { return x.__type == "Entities"; } -function load_level( - tile_sets: Map, - def: { - worldX: number; - worldY: number; - pxWid: number; - pxHei: number; - layerInstances: LayerInstance[]; - } -): Level { +function is_intgrid_layer_instance( + x: LDTKLayerInstance +): x is LDTKIntGridLayerInstance { + return x.__type == "IntGrid"; +} + +type LDTKLevel = { + worldX: number; + worldY: number; + pxWid: number; + pxHei: number; + layerInstances: LDTKLayerInstance[]; +}; + +function load_level(tile_sets: Map, def: LDTKLevel): Level { const result: Level = { world_x: def.worldX, world_y: def.worldY, width: def.pxWid, height: def.pxHei, + cw: 0, + ch: 0, tile_layers: [], - entity_layers: [], + entities: [], + values: [], }; for (const li of def.layerInstances) { if (is_tile_layer_instance(li)) { - result.tile_layers.push(load_tile_layer_instance(tile_sets, li)); + const tli = load_tile_layer_instance(tile_sets, li); + + result.tile_layers.push(tli); } else if (is_entity_layer_instance(li)) { - result.entity_layers.push(load_entity_layer_instance(li)); + // TODO: Why would I support multiple entity layers? + result.entities = load_entity_layer_instance(li); + } else if (is_intgrid_layer_instance(li)) { + result.cw = li.__cWid; + result.ch = li.__cHei; + result.values = li.intGridCsv; // ? + } else { + print("WARNING: Unknown layer type"); } } return result; } +interface LDTKMap { + __header__: { + fileType: "LDtk Project JSON"; + app: "LDtk"; + doc: "https://ldtk.io/json"; + schema: "https://ldtk.io/files/JSON_SCHEMA.json"; + appAuthor: "Sebastien 'deepnight' Benard"; + appVersion: "1.3.3"; + url: "https://ldtk.io"; + }; + defs: { + tilesets: LDTKTilesetDef[]; + }; + levels: LDTKLevel[]; +} + +function is_ldtk_map(map: unknown): map is LDTKMap { + if ( + map instanceof Object && + "__header__" in map && + map.__header__ instanceof Object + ) { + const header = map.__header__; + if ("fileType" in header && header.fileType == "LDtk Project JSON") { + return true; + } + } + + return false; +} + export async function load_world(path: string): Promise { print("Loading map:", path); const blob = await load_string(path); const map = JSON.parse(blob); + if (!is_ldtk_map(map)) { + throw new Error("Map does not appear to be an LDTK level"); + } + const tilesets = new Map(); let loaded_tilesets = await Promise.all( map.defs.tilesets - .filter((def: any) => def.relPath != null) - .map((def: any) => load_tileset(def)) + .filter((def) => def.relPath != null) + .map((def) => load_tileset(def)) ); for (const ts of loaded_tilesets) { tilesets.set(ts.id, ts); @@ -181,13 +262,24 @@ export async function load_world(path: string): Promise { return { levels, tilesets }; } +export function has_collision( + level: Level | undefined, + cx: number, + cy: number +): boolean { + if (!level) return true; + if (cx < 0 || cx >= level.cw) return false; + if (cy < 0 || cy >= level.ch) return false; + return level.values[cy * level.cw + cx] == 1; // TODO: MAGIC NUMBER? +} + export function draw_level( level: Level, offset_x: number = 0, offset_y: number = 0 ) { for (const layer of level.tile_layers) { - use_texture(layer.texture); + use_texture(layer.tileset.texture); let [ofx, ofy] = layer.offset; ofx += offset_x; diff --git a/game/main.ts b/game/main.ts index 4cd8d5ba..cb314da9 100644 --- a/game/main.ts +++ b/game/main.ts @@ -36,16 +36,14 @@ function load_assets() { // TODO: SPAWN ACTORS BASED ON LEVEL. actors.length = 0; - for (const entity_layer of level.entity_layers) { - for (const entity of entity_layer.entities) { - if (is_actor_type(entity.type)) { - const [x, y] = entity.px; - const [w, h] = entity.bounds; - const props = new_actor_props(entity.id, new_v2(x, y), new_v2(w, h)); - actors.push(spawn_actor(entity.type, props)); - } else { - print("WARNING: Ignoring entity of type", entity.type); - } + for (const entity of level.entities) { + if (is_actor_type(entity.type)) { + const [x, y] = entity.px; + const [w, _] = entity.bounds; + const props = new_actor_props(entity.id, new_v2(x, y), w); + actors.push(spawn_actor(entity.type, props)); + } else { + print("WARNING: Ignoring entity of type", entity.type); } } }); @@ -91,7 +89,7 @@ export function update() { } for (const actor of actors) { - actor.update_physics(); + actor.update_physics(level); } // TODO: Bonks diff --git a/game/overworld.aseprite b/game/overworld.aseprite index b7804aaab5b3764b2d43e1839ca99df1c14770ef..823dbb41b725f0898bca920e02790174e1706cbb 100644 GIT binary patch delta 303 zcmV+~0nq-e2;&I>0%HWRf<*&=9033T1t0+c000gE{{jF200000004df5&(Fd z?U+#x!XONWcNF6ZeDG3o$X#uw4uG=I-up1xIZ^T+d{%Pr=eV}?cFmm=)^nMXJ|7dMb?LFUCBBo6%FB!( Bnyml; delta 118 zcmaFNxrT#LXCh-g(;DWDO|HzTsSFGZtO|?_2@HG;|CxXsFpy&qVyKvtoUnlZ#I5uX z^ZmjW-rzhu<;Br9&x`IWV~^};jHo`jwL50}#nW~v)h~0OYsej4Jfp}apt4-ylvdTW V(*~b21K9;1o2M`^TweCv8vq=mE%E>W diff --git a/game/overworld.ldtk b/game/overworld.ldtk index ec24255d..40cf4406 100644 --- a/game/overworld.ldtk +++ b/game/overworld.ldtk @@ -5,13 +5,13 @@ "doc": "https://ldtk.io/json", "schema": "https://ldtk.io/files/JSON_SCHEMA.json", "appAuthor": "Sebastien 'deepnight' Benard", - "appVersion": "1.3.3", + "appVersion": "1.3.4", "url": "https://ldtk.io" }, "iid": "315bbfe0-1460-11ee-be24-3324961fe10c", - "jsonVersion": "1.3.3", - "appBuildId": 467698, - "nextUid": 11, + "jsonVersion": "1.3.4", + "appBuildId": 470178, + "nextUid": 17, "identifierStyle": "Lowercase", "toc": [], "worldLayout": "GridVania", @@ -22,6 +22,8 @@ "defaultPivotX": 0, "defaultPivotY": 0, "defaultGridSize": 16, + "defaultEntityWidth": 16, + "defaultEntityHeight": 16, "bgColor": "#40465B", "defaultLevelBgColor": "#696A79", "minifyJson": false, @@ -69,6 +71,36 @@ "tilePivotX": 0, "tilePivotY": 0 }, + { + "__type": "IntGrid", + "identifier": "values", + "type": "IntGrid", + "uid": 16, + "doc": null, + "uiColor": null, + "gridSize": 16, + "guideGridWid": 0, + "guideGridHei": 0, + "displayOpacity": 0.51, + "inactiveOpacity": 0.35, + "hideInList": false, + "hideFieldsWhenInactive": false, + "canSelectWhenInactive": true, + "renderInWorldView": true, + "pxOffsetX": 0, + "pxOffsetY": 0, + "parallaxFactorX": 0, + "parallaxFactorY": 0, + "parallaxScaling": true, + "requiredTags": [], + "excludedTags": [], + "intGridValues": [{ "value": 1, "identifier": "solid", "color": "#000000", "tile": null }], + "autoRuleGroups": [], + "autoSourceLayerDefUid": null, + "tilesetDefUid": null, + "tilePivotX": 0, + "tilePivotY": 0 + }, { "__type": "Tiles", "identifier": "base", @@ -116,11 +148,11 @@ "maxHeight": null, "keepAspectRatio": false, "tileOpacity": 1, - "fillOpacity": 1, + "fillOpacity": 0.45, "lineOpacity": 1, - "hollow": true, - "color": "#000000", - "renderMode": "Rectangle", + "hollow": false, + "color": "#2D1CC7", + "renderMode": "Ellipse", "showName": true, "tilesetId": null, "tileRenderMode": "FitInside", @@ -129,6 +161,39 @@ "maxCount": 1, "limitScope": "PerLevel", "limitBehavior": "MoveLastOne", + "pivotX": 0.5, + "pivotY": 0.5, + "fieldDefs": [] + }, + { + "identifier": "solid", + "uid": 11, + "tags": ["solid"], + "exportToToc": false, + "doc": "Your basic solid block, no special behaviors.", + "width": 16, + "height": 16, + "resizableX": true, + "resizableY": true, + "minWidth": null, + "maxWidth": null, + "minHeight": null, + "maxHeight": null, + "keepAspectRatio": false, + "tileOpacity": 1, + "fillOpacity": 1, + "lineOpacity": 1, + "hollow": true, + "color": "#B66DFF", + "renderMode": "Rectangle", + "showName": true, + "tilesetId": null, + "tileRenderMode": "FitInside", + "tileRect": null, + "nineSliceBorders": [], + "maxCount": 0, + "limitScope": "PerLevel", + "limitBehavior": "MoveLastOne", "pivotX": 0, "pivotY": 0, "fieldDefs": [] @@ -147,13 +212,13 @@ "spacing": 0, "padding": 0, "tags": [], - "tagsSourceEnumUid": 8, - "enumTags": [{ "enumValueId": "collide", "tileIds": [] }], + "tagsSourceEnumUid": null, + "enumTags": [], "customData": [], "savedSelections": [], "cachedPixelData": { - "opaqueTiles": "1111111100000011000000000000000000000000000000000000000000000000", - "averageColors": "f6b4f6b4f6b4f6b3f6b3f6b3f6b3f6b3000000000000000000000000f6b3f6b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "opaqueTiles": "1111111110000011000000000000000000000000000000000000000000000000", + "averageColors": "f6b4f6b4f6b4f6b3f6b3f6b3f6b3f6b3f55500000000000000000000f6b3f6b3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } }, { @@ -178,7 +243,7 @@ "averageColors": "00004b344233459b423349a959a9379c688769758ca4bc9489aab9aa58cc58bc42d74d2244ce428f4c7e4fb34abb45564ffe7dda78880000000000000000000069a969a97a99999999989a85998699767a7579667ccc7ccc7bcb7caa7ccc7ccc22d72d2224ce228f2c7e2fb32abb25562ffe000000000000000000000000000059764b97599868ac679a69ab4a84477756787688475347532a932a934a837a83f2b6fb22f3acf15afa6cfc93f899f334fccc000000000000000000000000000059aa49aa59996999699969aa489949995999799a499949992999299948997889a385a823a379a248a749a864a667a223a8880000000000000000000000000000189919991999199939994778166727772889289948993aaa389949a959a959a932b63b2233ad315a395c3c83389933343ccc00000000000000000000000000008aaa8aaa8aaa8aaa8aaa7bbb8aaa7bbb8bcb7aaa8bcb7bcb69aa8aaa8aaa69aa6abb6abb6abb6abb6a226a226a226a2261a661a661a661a600000000000000006c526c426c926c91659b649c66a566a46a7b6a7b667766776aba6abb676367636b746b746b746b74616c616c616c616c8abb8abb8abb8abb00000000000000006ba5579a6689598658875cb66abb9aa989aa98ac7abc6678968a88877c87cba952755823536952475648586354455223599900000000000000000000000000003ec63da76db79dc7554885498969b4377fa29e8289cdb9ce5ade5ade49ce49ce82a68a22839b8259885b8b73855683238aab00000000000000000000000000005d745d867da87e75448c458b86ad76ae68ac679c779b78ce3c9378867ca6adb784858933847a844788498963854584348989000000000000000000000000000057a668b899b8449396534493858364836853697769436667755667776c73498800000000000000000000000000000000000000000000000000000000000000006bba79b87d9679ad776a7b988abc8abc4aceaace4bba4bba6b8c4c9c4cac5b7c000000000000000000000000000000000000000000000000000000000000000059aaada7a9bdcdbd59aaada7a9bdcdbd8cb8a9b98ac889b8aabaacc79ea498bd000000000000000000000000000000000000000000000000000000000000000057ac596b55946abb5abb8ca65d8677ac437b5a3368886934547a595897a57b230000000000000000000000000000000000000000000000000000000000000000799a5c817b9b3a886abb8464676a7a967a857a857977898889882a954a956b950000000000000000000000000000000000000000000000000000000000000000499977997868799579875a6465995a8957a66a735ba53a935969479a576a467700000000000000000000000000000000000000000000000000000000000000005744985596659b747a659a76768a7a5676754777388735665976987794459465000000000000000000000000000000000000000000000000000000000000000088668a66868a9b8577666a4467846987778a7789797a87888b8676667a767ca50000000000000000000000000000000000000000000000000000000000000000449374934c957c9574847a438475a3958695768565956853b9447a777493a493000000000000000000000000000000000000000000000000000000000000000079547a838394689a49547a6357636975786383848997b384655873748974588400000000000000000000000000000000000000000000000000000000000000007da48ca769768b554b976cba3a824a82696259526a758c986963694268478b850000000000000000000000000000000000000000000000000000000000000000696559555579557458598674573353635677575579667a8758538b848a44838b0000000000000000000000000000000000000000000000000000000000000000385437883b95534549555a855877997598772b953b9529a939a95aa84b949a840000000000000000000000000000000000000000000000000000000000000000897687898776878578998485878b789a847b8b6579998a55886998788a879b9700000000000000000000000000000000000000000000000000000000000000006ba97988897469646b987a876a997a987b987955766777765c958a858777867700000000000000000000000000000000000000000000000000000000000000005a747b947b967866a855788928884566578879a98864a579233433343334633400000000000000000000000000000000000000000000000000000000000000006a747b846a844997598669987bb8b8aabaa96ba67cba9854687669864a864b86000000000000000000000000000000000000000000000000000000000000000038ab389b48ab47ac49ab48ac579b48ac49ab38ab58bc4b8659aa5c8457ac586a0000000000000000000000000000000000000000000000000000000000000000299b2999389a379b38893955589a79bc8c9588bc7a8c599a689a5b8558ac597a00000000000000000000000000000000000000000000000000000000000000002888378936773975579b389a579b488938884b74469a465747785b75568b586a000000000000000000000000000000000000000000000000000000000000000038553865285428444755566455763a64356746743779397445674c63469b585a0000000000000000000000000000000000000000000000000000000000000000284437643a7629641555297938874879385438664665355536775a85569a785a00000000000000000000000000000000000000000000000000000000000000005789789b779b6a75668a897b64558555876576798855845694749b74a68a986a000000000000000000000000000000000000000000000000000000000000000047776766678867667799798698768866976685673755387638763b74358b387a00000000000000000000000000000000000000000000000000000000000000005777686569874944498846774677685568646987677778775a456a65ab66ca550000000000000000000000000000000000000000000000000000000000000000355656666656455546455345634558655854aa749854775577737b64777a7a7900000000000000000000000000000000000000000000000000000000000000005955895598546c758c75ba76b88797749b75a98967888789978857888788a78800000000000000000000000000000000000000000000000000000000000000006977897799776a748a749a747987ba97aa998ba8a78bab75a87ab89cbb74b97b000000000000000000000000000000000000000000000000000000000000000059645788598858546a7569996a767a766887649c767476797a54766977667976000000000000000000000000000000000000000000000000000000000000000078887a75796577777a869976987799865777667787668a53857a885a98659546000000000000000000000000000000000000000000000000000000000000000087559877a96586779788b9769866888899877576777879647759a8659888a7440000000000000000000000000000000000000000000000000000000000000000785477887a55747b7585795b7999a9667456878889aa58997888797b56776855000000000000000000000000000000000000000000000000000000000000000048545854617b644557448744537b85565899899a39994a7a58998999a5558988000000000000000000000000000000000000000000000000000000000000000089659744a6559555a55698889486a57aab43a96b9556a665a854a579a744a5550000000000000000000000000000000000000000000000000000000000000000596587556677777777778578876687778974867787668876988897779876a744000000000000000000000000000000000000000000000000000000000000000067536556875448225922415851595456654587459456947b48997a86764585560000000000000000000000000000000000000000000000000000000000000000a854a89989998556a7559766a7779976a975997596749a64968a9779a55595450000000000000000000000000000000000000000000000000000000000000000674487549854885594558445a777a7778373579b5a32675584456975958b9944000000000000000000000000000000000000000000000000000000000000000077449754b674b469b964b658a766a864a777a975a566a754a677a875b777b9650000000000000000000000000000000000000000000000000000000000000000775577547445755676558744697377637766785334556566577859755877887600000000000000000000000000000000000000000000000000000000000000002789287328772a7436793a9457795a84368a3334323364555a757b856aaa9a5500000000000000000000000000000000000000000000000000000000000000005888516b5a3349a95964797778987a5375696a536668796577887a847a74797500000000000000000000000000000000000000000000000000000000000000007b537a53767b6769748775767a9a7988759c768a7b957a847775776478647854000000000000000000000000000000000000000000000000000000000000000098999788988998889b879a869a869a86696565676965667767446854677877880000000000000000000000000000000000000000000000000000000000000000678a77997ba647887a7589999ca59ba889aa9999655667bd6ba979a967bc6c7300000000000000000000000000000000000000000000000000000000000000006aaa6556518566775965485438985888576546854ca547775999699989997a9900000000000000000000000000000000000000000000000000000000000000006678526466335644769c5a7888547a785c4454a658885c946285627b6c54674a000000000000000000000000000000000000000000000000000000000000000033843b33359c337c395c3b853899355653745a33558b536b585b5a7557885445000000000000000000000000000000000000000000000000000000000000000026551566274525664a85486546564656377756664655465545454656516a656700000000000000000000000000000000000000000000000000000000000000004964696468553a86485437443645896588548856895477446a7569547a757954000000000000000000000000000000000000000000000000000000000000000036678566399988993b968b955ba658995566588859645a986ca7796477887ca6000000000000000000000000000000000000000000000000000000000000000019562a554c665c55156a256a468c557b1a8429744a845a83196b285a496b595b00000000000000000000000000000000000000000000000000000000000000001486248645a7549615782578469a5689187629764a875a861a692a694b7a5b79000000000000000000000000000000000000000000000000000000000000000017772777489858881555255546665556199528854884588411122112411251120000000000000000000000000000000000000000000000000000000000000000" } } - ], "enums": [{ "identifier": "tile_flag", "uid": 8, "values": [{ "id": "collide", "tileRect": null, "tileId": -1, "color": 12470831, "__tileSrcRect": null }], "iconTilesetUid": null, "externalRelPath": null, "externalFileChecksum": null, "tags": [] }], "externalEnums": [], "levelFields": [] }, + ], "enums": [{ "identifier": "tile_flag", "uid": 8, "values": [{ "id": "solid", "tileRect": null, "tileId": -1, "color": 12470831, "__tileSrcRect": null }], "iconTilesetUid": null, "externalRelPath": null, "externalFileChecksum": null, "tags": [] }], "externalEnums": [], "levelFields": [] }, "levels": [ { "identifier": "level_0", @@ -227,20 +292,57 @@ "entityInstances": [ { "__identifier": "robo", - "__grid": [17,12], - "__pivot": [0,0], + "__grid": [11,8], + "__pivot": [0.5,0.5], "__tags": [], "__tile": null, - "__smartColor": "#000000", - "iid": "ab3eeac0-3b70-11ee-bcfe-2f66db6f9ef4", + "__smartColor": "#2D1CC7", + "__worldX": 184, + "__worldY": 136, + "iid": "68b89650-3b70-11ee-bcfe-bdb068146b9b", "width": 32, "height": 32, "defUid": 9, - "px": [272,192], + "px": [184,136], "fieldInstances": [] } ] }, + { + "__identifier": "values", + "__type": "IntGrid", + "__cWid": 20, + "__cHei": 15, + "__gridSize": 16, + "__opacity": 0.51, + "__pxTotalOffsetX": 0, + "__pxTotalOffsetY": 0, + "__tilesetDefUid": null, + "__tilesetRelPath": null, + "iid": "5f019530-3b70-11ee-b554-b1ba87ba9cba", + "levelId": 0, + "layerDefUid": 16, + "pxOffsetX": 0, + "pxOffsetY": 0, + "visible": true, + "optionalRules": [], + "intGridCsv": [ + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + ], + "autoLayerTiles": [], + "seed": 2926338, + "overrideTilesetUid": null, + "gridTiles": [], + "entityInstances": [] + }, { "__identifier": "base", "__type": "Tiles", @@ -264,75 +366,75 @@ "seed": 9347475, "overrideTilesetUid": null, "gridTiles": [ - { "px": [0,0], "src": [16,0], "f": 0, "t": 1, "d": [0], "a": 1 }, - { "px": [16,0], "src": [64,0], "f": 0, "t": 4, "d": [1], "a": 1 }, - { "px": [32,0], "src": [16,0], "f": 0, "t": 1, "d": [2], "a": 1 }, - { "px": [48,0], "src": [16,0], "f": 0, "t": 1, "d": [3], "a": 1 }, - { "px": [64,0], "src": [48,0], "f": 0, "t": 3, "d": [4], "a": 1 }, - { "px": [80,0], "src": [48,0], "f": 0, "t": 3, "d": [5], "a": 1 }, - { "px": [96,0], "src": [48,0], "f": 0, "t": 3, "d": [6], "a": 1 }, - { "px": [112,0], "src": [48,0], "f": 0, "t": 3, "d": [7], "a": 1 }, - { "px": [128,0], "src": [64,0], "f": 0, "t": 4, "d": [8], "a": 1 }, + { "px": [0,0], "src": [80,0], "f": 0, "t": 5, "d": [0], "a": 1 }, + { "px": [16,0], "src": [16,0], "f": 0, "t": 1, "d": [1], "a": 1 }, + { "px": [32,0], "src": [64,0], "f": 0, "t": 4, "d": [2], "a": 1 }, + { "px": [48,0], "src": [0,0], "f": 0, "t": 0, "d": [3], "a": 1 }, + { "px": [64,0], "src": [0,0], "f": 0, "t": 0, "d": [4], "a": 1 }, + { "px": [80,0], "src": [16,0], "f": 0, "t": 1, "d": [5], "a": 1 }, + { "px": [96,0], "src": [64,0], "f": 0, "t": 4, "d": [6], "a": 1 }, + { "px": [112,0], "src": [32,0], "f": 0, "t": 2, "d": [7], "a": 1 }, + { "px": [128,0], "src": [0,0], "f": 0, "t": 0, "d": [8], "a": 1 }, { "px": [144,0], "src": [16,0], "f": 0, "t": 1, "d": [9], "a": 1 }, { "px": [160,0], "src": [16,0], "f": 0, "t": 1, "d": [10], "a": 1 }, - { "px": [176,0], "src": [32,0], "f": 0, "t": 2, "d": [11], "a": 1 }, + { "px": [176,0], "src": [48,0], "f": 0, "t": 3, "d": [11], "a": 1 }, { "px": [192,0], "src": [16,0], "f": 0, "t": 1, "d": [12], "a": 1 }, - { "px": [208,0], "src": [0,0], "f": 0, "t": 0, "d": [13], "a": 1 }, + { "px": [208,0], "src": [16,0], "f": 0, "t": 1, "d": [13], "a": 1 }, { "px": [224,0], "src": [48,0], "f": 0, "t": 3, "d": [14], "a": 1 }, { "px": [240,0], "src": [16,0], "f": 0, "t": 1, "d": [15], "a": 1 }, - { "px": [256,0], "src": [80,0], "f": 0, "t": 5, "d": [16], "a": 1 }, - { "px": [272,0], "src": [16,0], "f": 0, "t": 1, "d": [17], "a": 1 }, - { "px": [288,0], "src": [0,0], "f": 0, "t": 0, "d": [18], "a": 1 }, - { "px": [304,0], "src": [0,0], "f": 0, "t": 0, "d": [19], "a": 1 }, + { "px": [256,0], "src": [16,0], "f": 0, "t": 1, "d": [16], "a": 1 }, + { "px": [272,0], "src": [80,0], "f": 0, "t": 5, "d": [17], "a": 1 }, + { "px": [288,0], "src": [80,0], "f": 0, "t": 5, "d": [18], "a": 1 }, + { "px": [304,0], "src": [48,0], "f": 0, "t": 3, "d": [19], "a": 1 }, { "px": [0,16], "src": [48,0], "f": 0, "t": 3, "d": [20], "a": 1 }, - { "px": [16,16], "src": [32,0], "f": 0, "t": 2, "d": [21], "a": 1 }, - { "px": [32,16], "src": [48,0], "f": 0, "t": 3, "d": [22], "a": 1 }, - { "px": [48,16], "src": [64,0], "f": 0, "t": 4, "d": [23], "a": 1 }, - { "px": [64,16], "src": [64,0], "f": 0, "t": 4, "d": [24], "a": 1 }, - { "px": [80,16], "src": [16,0], "f": 0, "t": 1, "d": [25], "a": 1 }, - { "px": [96,16], "src": [64,0], "f": 0, "t": 4, "d": [26], "a": 1 }, - { "px": [112,16], "src": [64,0], "f": 0, "t": 4, "d": [27], "a": 1 }, - { "px": [128,16], "src": [64,0], "f": 0, "t": 4, "d": [28], "a": 1 }, - { "px": [144,16], "src": [48,0], "f": 0, "t": 3, "d": [29], "a": 1 }, - { "px": [160,16], "src": [48,0], "f": 0, "t": 3, "d": [30], "a": 1 }, + { "px": [16,16], "src": [80,0], "f": 0, "t": 5, "d": [21], "a": 1 }, + { "px": [32,16], "src": [80,0], "f": 0, "t": 5, "d": [22], "a": 1 }, + { "px": [48,16], "src": [48,0], "f": 0, "t": 3, "d": [23], "a": 1 }, + { "px": [64,16], "src": [0,0], "f": 0, "t": 0, "d": [24], "a": 1 }, + { "px": [80,16], "src": [0,0], "f": 0, "t": 0, "d": [25], "a": 1 }, + { "px": [96,16], "src": [80,0], "f": 0, "t": 5, "d": [26], "a": 1 }, + { "px": [112,16], "src": [48,0], "f": 0, "t": 3, "d": [27], "a": 1 }, + { "px": [128,16], "src": [32,0], "f": 0, "t": 2, "d": [28], "a": 1 }, + { "px": [144,16], "src": [0,0], "f": 0, "t": 0, "d": [29], "a": 1 }, + { "px": [160,16], "src": [16,0], "f": 0, "t": 1, "d": [30], "a": 1 }, { "px": [176,16], "src": [48,0], "f": 0, "t": 3, "d": [31], "a": 1 }, { "px": [192,16], "src": [0,0], "f": 0, "t": 0, "d": [32], "a": 1 }, - { "px": [208,16], "src": [0,0], "f": 0, "t": 0, "d": [33], "a": 1 }, - { "px": [224,16], "src": [32,0], "f": 0, "t": 2, "d": [34], "a": 1 }, + { "px": [208,16], "src": [48,0], "f": 0, "t": 3, "d": [33], "a": 1 }, + { "px": [224,16], "src": [0,0], "f": 0, "t": 0, "d": [34], "a": 1 }, { "px": [240,16], "src": [48,0], "f": 0, "t": 3, "d": [35], "a": 1 }, - { "px": [256,16], "src": [0,0], "f": 0, "t": 0, "d": [36], "a": 1 }, - { "px": [272,16], "src": [64,0], "f": 0, "t": 4, "d": [37], "a": 1 }, - { "px": [288,16], "src": [64,0], "f": 0, "t": 4, "d": [38], "a": 1 }, - { "px": [304,16], "src": [32,0], "f": 0, "t": 2, "d": [39], "a": 1 }, - { "px": [0,32], "src": [48,0], "f": 0, "t": 3, "d": [40], "a": 1 }, - { "px": [16,32], "src": [0,0], "f": 0, "t": 0, "d": [41], "a": 1 }, - { "px": [32,32], "src": [80,0], "f": 0, "t": 5, "d": [42], "a": 1 }, - { "px": [48,32], "src": [64,0], "f": 0, "t": 4, "d": [43], "a": 1 }, - { "px": [64,32], "src": [32,0], "f": 0, "t": 2, "d": [44], "a": 1 }, - { "px": [80,32], "src": [32,0], "f": 0, "t": 2, "d": [45], "a": 1 }, - { "px": [96,32], "src": [64,0], "f": 0, "t": 4, "d": [46], "a": 1 }, - { "px": [112,32], "src": [32,0], "f": 0, "t": 2, "d": [47], "a": 1 }, + { "px": [256,16], "src": [32,0], "f": 0, "t": 2, "d": [36], "a": 1 }, + { "px": [272,16], "src": [32,0], "f": 0, "t": 2, "d": [37], "a": 1 }, + { "px": [288,16], "src": [16,0], "f": 0, "t": 1, "d": [38], "a": 1 }, + { "px": [304,16], "src": [48,0], "f": 0, "t": 3, "d": [39], "a": 1 }, + { "px": [0,32], "src": [16,0], "f": 0, "t": 1, "d": [40], "a": 1 }, + { "px": [16,32], "src": [64,0], "f": 0, "t": 4, "d": [41], "a": 1 }, + { "px": [32,32], "src": [32,0], "f": 0, "t": 2, "d": [42], "a": 1 }, + { "px": [48,32], "src": [32,0], "f": 0, "t": 2, "d": [43], "a": 1 }, + { "px": [64,32], "src": [64,0], "f": 0, "t": 4, "d": [44], "a": 1 }, + { "px": [80,32], "src": [0,0], "f": 0, "t": 0, "d": [45], "a": 1 }, + { "px": [96,32], "src": [32,0], "f": 0, "t": 2, "d": [46], "a": 1 }, + { "px": [112,32], "src": [48,0], "f": 0, "t": 3, "d": [47], "a": 1 }, { "px": [128,32], "src": [64,0], "f": 0, "t": 4, "d": [48], "a": 1 }, - { "px": [144,32], "src": [64,0], "f": 0, "t": 4, "d": [49], "a": 1 }, + { "px": [144,32], "src": [16,0], "f": 0, "t": 1, "d": [49], "a": 1 }, { "px": [160,32], "src": [64,0], "f": 0, "t": 4, "d": [50], "a": 1 }, - { "px": [176,32], "src": [48,0], "f": 0, "t": 3, "d": [51], "a": 1 }, + { "px": [176,32], "src": [64,0], "f": 0, "t": 4, "d": [51], "a": 1 }, { "px": [192,32], "src": [16,0], "f": 0, "t": 1, "d": [52], "a": 1 }, { "px": [208,32], "src": [32,0], "f": 0, "t": 2, "d": [53], "a": 1 }, { "px": [224,32], "src": [64,0], "f": 0, "t": 4, "d": [54], "a": 1 }, { "px": [240,32], "src": [0,0], "f": 0, "t": 0, "d": [55], "a": 1 }, - { "px": [256,32], "src": [32,0], "f": 0, "t": 2, "d": [56], "a": 1 }, - { "px": [272,32], "src": [16,0], "f": 0, "t": 1, "d": [57], "a": 1 }, - { "px": [288,32], "src": [80,0], "f": 0, "t": 5, "d": [58], "a": 1 }, - { "px": [304,32], "src": [48,0], "f": 0, "t": 3, "d": [59], "a": 1 }, - { "px": [0,48], "src": [48,0], "f": 0, "t": 3, "d": [60], "a": 1 }, + { "px": [256,32], "src": [16,0], "f": 0, "t": 1, "d": [56], "a": 1 }, + { "px": [272,32], "src": [0,0], "f": 0, "t": 0, "d": [57], "a": 1 }, + { "px": [288,32], "src": [64,0], "f": 0, "t": 4, "d": [58], "a": 1 }, + { "px": [304,32], "src": [0,0], "f": 0, "t": 0, "d": [59], "a": 1 }, + { "px": [0,48], "src": [64,0], "f": 0, "t": 4, "d": [60], "a": 1 }, { "px": [16,48], "src": [16,0], "f": 0, "t": 1, "d": [61], "a": 1 }, - { "px": [32,48], "src": [48,0], "f": 0, "t": 3, "d": [62], "a": 1 }, + { "px": [32,48], "src": [0,0], "f": 0, "t": 0, "d": [62], "a": 1 }, { "px": [48,48], "src": [80,0], "f": 0, "t": 5, "d": [63], "a": 1 }, { "px": [64,48], "src": [80,0], "f": 0, "t": 5, "d": [64], "a": 1 }, { "px": [80,48], "src": [48,0], "f": 0, "t": 3, "d": [65], "a": 1 }, { "px": [96,48], "src": [48,0], "f": 0, "t": 3, "d": [66], "a": 1 }, { "px": [112,48], "src": [64,0], "f": 0, "t": 4, "d": [67], "a": 1 }, - { "px": [128,48], "src": [32,0], "f": 0, "t": 2, "d": [68], "a": 1 }, + { "px": [128,48], "src": [16,0], "f": 0, "t": 1, "d": [68], "a": 1 }, { "px": [144,48], "src": [80,0], "f": 0, "t": 5, "d": [69], "a": 1 }, { "px": [160,48], "src": [16,0], "f": 0, "t": 1, "d": [70], "a": 1 }, { "px": [176,48], "src": [0,0], "f": 0, "t": 0, "d": [71], "a": 1 }, @@ -342,16 +444,16 @@ { "px": [240,48], "src": [0,0], "f": 0, "t": 0, "d": [75], "a": 1 }, { "px": [256,48], "src": [80,0], "f": 0, "t": 5, "d": [76], "a": 1 }, { "px": [272,48], "src": [0,0], "f": 0, "t": 0, "d": [77], "a": 1 }, - { "px": [288,48], "src": [32,0], "f": 0, "t": 2, "d": [78], "a": 1 }, + { "px": [288,48], "src": [64,0], "f": 0, "t": 4, "d": [78], "a": 1 }, { "px": [304,48], "src": [32,0], "f": 0, "t": 2, "d": [79], "a": 1 }, - { "px": [0,64], "src": [64,0], "f": 0, "t": 4, "d": [80], "a": 1 }, - { "px": [16,64], "src": [48,0], "f": 0, "t": 3, "d": [81], "a": 1 }, - { "px": [32,64], "src": [48,0], "f": 0, "t": 3, "d": [82], "a": 1 }, - { "px": [48,64], "src": [0,0], "f": 0, "t": 0, "d": [83], "a": 1 }, - { "px": [64,64], "src": [48,0], "f": 0, "t": 3, "d": [84], "a": 1 }, - { "px": [80,64], "src": [64,0], "f": 0, "t": 4, "d": [85], "a": 1 }, - { "px": [96,64], "src": [48,0], "f": 0, "t": 3, "d": [86], "a": 1 }, - { "px": [112,64], "src": [80,0], "f": 0, "t": 5, "d": [87], "a": 1 }, + { "px": [0,64], "src": [48,0], "f": 0, "t": 3, "d": [80], "a": 1 }, + { "px": [16,64], "src": [32,0], "f": 0, "t": 2, "d": [81], "a": 1 }, + { "px": [32,64], "src": [0,0], "f": 0, "t": 0, "d": [82], "a": 1 }, + { "px": [48,64], "src": [64,0], "f": 0, "t": 4, "d": [83], "a": 1 }, + { "px": [64,64], "src": [32,0], "f": 0, "t": 2, "d": [84], "a": 1 }, + { "px": [80,64], "src": [0,0], "f": 0, "t": 0, "d": [85], "a": 1 }, + { "px": [96,64], "src": [32,0], "f": 0, "t": 2, "d": [86], "a": 1 }, + { "px": [112,64], "src": [32,0], "f": 0, "t": 2, "d": [87], "a": 1 }, { "px": [128,64], "src": [16,0], "f": 0, "t": 1, "d": [88], "a": 1 }, { "px": [144,64], "src": [48,0], "f": 0, "t": 3, "d": [89], "a": 1 }, { "px": [160,64], "src": [0,0], "f": 0, "t": 0, "d": [90], "a": 1 }, @@ -361,10 +463,10 @@ { "px": [224,64], "src": [16,0], "f": 0, "t": 1, "d": [94], "a": 1 }, { "px": [240,64], "src": [48,0], "f": 0, "t": 3, "d": [95], "a": 1 }, { "px": [256,64], "src": [64,0], "f": 0, "t": 4, "d": [96], "a": 1 }, - { "px": [272,64], "src": [0,0], "f": 0, "t": 0, "d": [97], "a": 1 }, - { "px": [288,64], "src": [0,0], "f": 0, "t": 0, "d": [98], "a": 1 }, + { "px": [272,64], "src": [48,0], "f": 0, "t": 3, "d": [97], "a": 1 }, + { "px": [288,64], "src": [64,0], "f": 0, "t": 4, "d": [98], "a": 1 }, { "px": [304,64], "src": [32,0], "f": 0, "t": 2, "d": [99], "a": 1 }, - { "px": [0,80], "src": [48,0], "f": 0, "t": 3, "d": [100], "a": 1 }, + { "px": [0,80], "src": [16,0], "f": 0, "t": 1, "d": [100], "a": 1 }, { "px": [16,80], "src": [64,0], "f": 0, "t": 4, "d": [101], "a": 1 }, { "px": [32,80], "src": [80,0], "f": 0, "t": 5, "d": [102], "a": 1 }, { "px": [48,80], "src": [64,0], "f": 0, "t": 4, "d": [103], "a": 1 }, @@ -373,61 +475,61 @@ { "px": [96,80], "src": [48,0], "f": 0, "t": 3, "d": [106], "a": 1 }, { "px": [112,80], "src": [64,0], "f": 0, "t": 4, "d": [107], "a": 1 }, { "px": [128,80], "src": [80,0], "f": 0, "t": 5, "d": [108], "a": 1 }, - { "px": [144,80], "src": [80,0], "f": 0, "t": 5, "d": [109], "a": 1 }, - { "px": [160,80], "src": [64,0], "f": 0, "t": 4, "d": [110], "a": 1 }, + { "px": [144,80], "src": [64,0], "f": 0, "t": 4, "d": [109], "a": 1 }, + { "px": [160,80], "src": [0,16], "f": 0, "t": 8, "d": [110], "a": 1 }, { "px": [176,80], "src": [64,0], "f": 0, "t": 4, "d": [111], "a": 1 }, { "px": [192,80], "src": [64,0], "f": 0, "t": 4, "d": [112], "a": 1 }, { "px": [208,80], "src": [48,0], "f": 0, "t": 3, "d": [113], "a": 1 }, { "px": [224,80], "src": [48,0], "f": 0, "t": 3, "d": [114], "a": 1 }, - { "px": [240,80], "src": [16,0], "f": 0, "t": 1, "d": [115], "a": 1 }, - { "px": [256,80], "src": [48,0], "f": 0, "t": 3, "d": [116], "a": 1 }, + { "px": [240,80], "src": [0,0], "f": 0, "t": 0, "d": [115], "a": 1 }, + { "px": [256,80], "src": [32,0], "f": 0, "t": 2, "d": [116], "a": 1 }, { "px": [272,80], "src": [64,0], "f": 0, "t": 4, "d": [117], "a": 1 }, - { "px": [288,80], "src": [80,0], "f": 0, "t": 5, "d": [118], "a": 1 }, - { "px": [304,80], "src": [64,0], "f": 0, "t": 4, "d": [119], "a": 1 }, - { "px": [0,96], "src": [64,0], "f": 0, "t": 4, "d": [120], "a": 1 }, - { "px": [16,96], "src": [48,0], "f": 0, "t": 3, "d": [121], "a": 1 }, - { "px": [32,96], "src": [64,0], "f": 0, "t": 4, "d": [122], "a": 1 }, - { "px": [48,96], "src": [48,0], "f": 0, "t": 3, "d": [123], "a": 1 }, + { "px": [288,80], "src": [0,0], "f": 0, "t": 0, "d": [118], "a": 1 }, + { "px": [304,80], "src": [32,0], "f": 0, "t": 2, "d": [119], "a": 1 }, + { "px": [0,96], "src": [16,0], "f": 0, "t": 1, "d": [120], "a": 1 }, + { "px": [16,96], "src": [80,0], "f": 0, "t": 5, "d": [121], "a": 1 }, + { "px": [32,96], "src": [80,0], "f": 0, "t": 5, "d": [122], "a": 1 }, + { "px": [48,96], "src": [32,0], "f": 0, "t": 2, "d": [123], "a": 1 }, { "px": [64,96], "src": [0,0], "f": 0, "t": 0, "d": [124], "a": 1 }, { "px": [80,96], "src": [80,0], "f": 0, "t": 5, "d": [125], "a": 1 }, - { "px": [96,96], "src": [64,0], "f": 0, "t": 4, "d": [126], "a": 1 }, - { "px": [112,96], "src": [0,0], "f": 0, "t": 0, "d": [127], "a": 1 }, + { "px": [96,96], "src": [16,0], "f": 0, "t": 1, "d": [126], "a": 1 }, + { "px": [112,96], "src": [48,0], "f": 0, "t": 3, "d": [127], "a": 1 }, { "px": [128,96], "src": [64,0], "f": 0, "t": 4, "d": [128], "a": 1 }, - { "px": [144,96], "src": [80,0], "f": 0, "t": 5, "d": [129], "a": 1 }, - { "px": [160,96], "src": [48,0], "f": 0, "t": 3, "d": [130], "a": 1 }, - { "px": [176,96], "src": [48,0], "f": 0, "t": 3, "d": [131], "a": 1 }, + { "px": [144,96], "src": [0,16], "f": 0, "t": 8, "d": [129], "a": 1 }, + { "px": [160,96], "src": [0,16], "f": 0, "t": 8, "d": [130], "a": 1 }, + { "px": [176,96], "src": [0,16], "f": 0, "t": 8, "d": [131], "a": 1 }, { "px": [192,96], "src": [80,0], "f": 0, "t": 5, "d": [132], "a": 1 }, { "px": [208,96], "src": [32,0], "f": 0, "t": 2, "d": [133], "a": 1 }, - { "px": [224,96], "src": [16,0], "f": 0, "t": 1, "d": [134], "a": 1 }, + { "px": [224,96], "src": [48,0], "f": 0, "t": 3, "d": [134], "a": 1 }, { "px": [240,96], "src": [48,0], "f": 0, "t": 3, "d": [135], "a": 1 }, { "px": [256,96], "src": [0,0], "f": 0, "t": 0, "d": [136], "a": 1 }, - { "px": [272,96], "src": [48,0], "f": 0, "t": 3, "d": [137], "a": 1 }, - { "px": [288,96], "src": [48,0], "f": 0, "t": 3, "d": [138], "a": 1 }, - { "px": [304,96], "src": [80,0], "f": 0, "t": 5, "d": [139], "a": 1 }, - { "px": [0,112], "src": [48,0], "f": 0, "t": 3, "d": [140], "a": 1 }, + { "px": [272,96], "src": [0,0], "f": 0, "t": 0, "d": [137], "a": 1 }, + { "px": [288,96], "src": [0,0], "f": 0, "t": 0, "d": [138], "a": 1 }, + { "px": [304,96], "src": [32,0], "f": 0, "t": 2, "d": [139], "a": 1 }, + { "px": [0,112], "src": [64,0], "f": 0, "t": 4, "d": [140], "a": 1 }, { "px": [16,112], "src": [16,0], "f": 0, "t": 1, "d": [141], "a": 1 }, { "px": [32,112], "src": [48,0], "f": 0, "t": 3, "d": [142], "a": 1 }, { "px": [48,112], "src": [0,0], "f": 0, "t": 0, "d": [143], "a": 1 }, { "px": [64,112], "src": [48,0], "f": 0, "t": 3, "d": [144], "a": 1 }, - { "px": [80,112], "src": [16,0], "f": 0, "t": 1, "d": [145], "a": 1 }, - { "px": [96,112], "src": [80,0], "f": 0, "t": 5, "d": [146], "a": 1 }, + { "px": [80,112], "src": [64,0], "f": 0, "t": 4, "d": [145], "a": 1 }, + { "px": [96,112], "src": [64,0], "f": 0, "t": 4, "d": [146], "a": 1 }, { "px": [112,112], "src": [32,0], "f": 0, "t": 2, "d": [147], "a": 1 }, { "px": [128,112], "src": [0,0], "f": 0, "t": 0, "d": [148], "a": 1 }, { "px": [144,112], "src": [32,0], "f": 0, "t": 2, "d": [149], "a": 1 }, - { "px": [160,112], "src": [64,0], "f": 0, "t": 4, "d": [150], "a": 1 }, - { "px": [176,112], "src": [48,0], "f": 0, "t": 3, "d": [151], "a": 1 }, + { "px": [160,112], "src": [0,16], "f": 0, "t": 8, "d": [150], "a": 1 }, + { "px": [176,112], "src": [0,16], "f": 0, "t": 8, "d": [151], "a": 1 }, { "px": [192,112], "src": [16,0], "f": 0, "t": 1, "d": [152], "a": 1 }, { "px": [208,112], "src": [64,0], "f": 0, "t": 4, "d": [153], "a": 1 }, { "px": [224,112], "src": [16,0], "f": 0, "t": 1, "d": [154], "a": 1 }, - { "px": [240,112], "src": [80,0], "f": 0, "t": 5, "d": [155], "a": 1 }, - { "px": [256,112], "src": [80,0], "f": 0, "t": 5, "d": [156], "a": 1 }, - { "px": [272,112], "src": [16,0], "f": 0, "t": 1, "d": [157], "a": 1 }, - { "px": [288,112], "src": [48,0], "f": 0, "t": 3, "d": [158], "a": 1 }, - { "px": [304,112], "src": [48,0], "f": 0, "t": 3, "d": [159], "a": 1 }, - { "px": [0,128], "src": [48,0], "f": 0, "t": 3, "d": [160], "a": 1 }, - { "px": [16,128], "src": [48,0], "f": 0, "t": 3, "d": [161], "a": 1 }, + { "px": [240,112], "src": [16,0], "f": 0, "t": 1, "d": [155], "a": 1 }, + { "px": [256,112], "src": [0,0], "f": 0, "t": 0, "d": [156], "a": 1 }, + { "px": [272,112], "src": [64,0], "f": 0, "t": 4, "d": [157], "a": 1 }, + { "px": [288,112], "src": [80,0], "f": 0, "t": 5, "d": [158], "a": 1 }, + { "px": [304,112], "src": [0,0], "f": 0, "t": 0, "d": [159], "a": 1 }, + { "px": [0,128], "src": [80,0], "f": 0, "t": 5, "d": [160], "a": 1 }, + { "px": [16,128], "src": [80,0], "f": 0, "t": 5, "d": [161], "a": 1 }, { "px": [32,128], "src": [0,0], "f": 0, "t": 0, "d": [162], "a": 1 }, - { "px": [48,128], "src": [64,0], "f": 0, "t": 4, "d": [163], "a": 1 }, + { "px": [48,128], "src": [80,0], "f": 0, "t": 5, "d": [163], "a": 1 }, { "px": [64,128], "src": [0,0], "f": 0, "t": 0, "d": [164], "a": 1 }, { "px": [80,128], "src": [48,0], "f": 0, "t": 3, "d": [165], "a": 1 }, { "px": [96,128], "src": [80,0], "f": 0, "t": 5, "d": [166], "a": 1 }, @@ -441,15 +543,15 @@ { "px": [224,128], "src": [16,0], "f": 0, "t": 1, "d": [174], "a": 1 }, { "px": [240,128], "src": [48,0], "f": 0, "t": 3, "d": [175], "a": 1 }, { "px": [256,128], "src": [80,0], "f": 0, "t": 5, "d": [176], "a": 1 }, - { "px": [272,128], "src": [64,0], "f": 0, "t": 4, "d": [177], "a": 1 }, + { "px": [272,128], "src": [16,0], "f": 0, "t": 1, "d": [177], "a": 1 }, { "px": [288,128], "src": [80,0], "f": 0, "t": 5, "d": [178], "a": 1 }, { "px": [304,128], "src": [32,0], "f": 0, "t": 2, "d": [179], "a": 1 }, - { "px": [0,144], "src": [16,0], "f": 0, "t": 1, "d": [180], "a": 1 }, + { "px": [0,144], "src": [32,0], "f": 0, "t": 2, "d": [180], "a": 1 }, { "px": [16,144], "src": [80,0], "f": 0, "t": 5, "d": [181], "a": 1 }, - { "px": [32,144], "src": [48,0], "f": 0, "t": 3, "d": [182], "a": 1 }, + { "px": [32,144], "src": [16,0], "f": 0, "t": 1, "d": [182], "a": 1 }, { "px": [48,144], "src": [16,0], "f": 0, "t": 1, "d": [183], "a": 1 }, { "px": [64,144], "src": [64,0], "f": 0, "t": 4, "d": [184], "a": 1 }, - { "px": [80,144], "src": [32,0], "f": 0, "t": 2, "d": [185], "a": 1 }, + { "px": [80,144], "src": [16,0], "f": 0, "t": 1, "d": [185], "a": 1 }, { "px": [96,144], "src": [48,0], "f": 0, "t": 3, "d": [186], "a": 1 }, { "px": [112,144], "src": [32,0], "f": 0, "t": 2, "d": [187], "a": 1 }, { "px": [128,144], "src": [64,0], "f": 0, "t": 4, "d": [188], "a": 1 }, @@ -460,15 +562,15 @@ { "px": [208,144], "src": [0,0], "f": 0, "t": 0, "d": [193], "a": 1 }, { "px": [224,144], "src": [64,0], "f": 0, "t": 4, "d": [194], "a": 1 }, { "px": [240,144], "src": [32,0], "f": 0, "t": 2, "d": [195], "a": 1 }, - { "px": [256,144], "src": [32,0], "f": 0, "t": 2, "d": [196], "a": 1 }, - { "px": [272,144], "src": [0,0], "f": 0, "t": 0, "d": [197], "a": 1 }, + { "px": [256,144], "src": [80,0], "f": 0, "t": 5, "d": [196], "a": 1 }, + { "px": [272,144], "src": [48,0], "f": 0, "t": 3, "d": [197], "a": 1 }, { "px": [288,144], "src": [64,0], "f": 0, "t": 4, "d": [198], "a": 1 }, { "px": [304,144], "src": [64,0], "f": 0, "t": 4, "d": [199], "a": 1 }, { "px": [0,160], "src": [32,0], "f": 0, "t": 2, "d": [200], "a": 1 }, - { "px": [16,160], "src": [0,0], "f": 0, "t": 0, "d": [201], "a": 1 }, - { "px": [32,160], "src": [80,0], "f": 0, "t": 5, "d": [202], "a": 1 }, - { "px": [48,160], "src": [64,0], "f": 0, "t": 4, "d": [203], "a": 1 }, - { "px": [64,160], "src": [32,0], "f": 0, "t": 2, "d": [204], "a": 1 }, + { "px": [16,160], "src": [48,0], "f": 0, "t": 3, "d": [201], "a": 1 }, + { "px": [32,160], "src": [32,0], "f": 0, "t": 2, "d": [202], "a": 1 }, + { "px": [48,160], "src": [0,0], "f": 0, "t": 0, "d": [203], "a": 1 }, + { "px": [64,160], "src": [16,0], "f": 0, "t": 1, "d": [204], "a": 1 }, { "px": [80,160], "src": [64,0], "f": 0, "t": 4, "d": [205], "a": 1 }, { "px": [96,160], "src": [0,0], "f": 0, "t": 0, "d": [206], "a": 1 }, { "px": [112,160], "src": [0,0], "f": 0, "t": 0, "d": [207], "a": 1 }, @@ -479,18 +581,18 @@ { "px": [192,160], "src": [80,0], "f": 0, "t": 5, "d": [212], "a": 1 }, { "px": [208,160], "src": [64,0], "f": 0, "t": 4, "d": [213], "a": 1 }, { "px": [224,160], "src": [16,0], "f": 0, "t": 1, "d": [214], "a": 1 }, - { "px": [240,160], "src": [80,0], "f": 0, "t": 5, "d": [215], "a": 1 }, + { "px": [240,160], "src": [0,0], "f": 0, "t": 0, "d": [215], "a": 1 }, { "px": [256,160], "src": [16,0], "f": 0, "t": 1, "d": [216], "a": 1 }, - { "px": [272,160], "src": [32,0], "f": 0, "t": 2, "d": [217], "a": 1 }, - { "px": [288,160], "src": [64,0], "f": 0, "t": 4, "d": [218], "a": 1 }, - { "px": [304,160], "src": [32,0], "f": 0, "t": 2, "d": [219], "a": 1 }, - { "px": [0,176], "src": [0,0], "f": 0, "t": 0, "d": [220], "a": 1 }, + { "px": [272,160], "src": [64,0], "f": 0, "t": 4, "d": [217], "a": 1 }, + { "px": [288,160], "src": [32,0], "f": 0, "t": 2, "d": [218], "a": 1 }, + { "px": [304,160], "src": [0,0], "f": 0, "t": 0, "d": [219], "a": 1 }, + { "px": [0,176], "src": [16,0], "f": 0, "t": 1, "d": [220], "a": 1 }, { "px": [16,176], "src": [64,0], "f": 0, "t": 4, "d": [221], "a": 1 }, { "px": [32,176], "src": [80,0], "f": 0, "t": 5, "d": [222], "a": 1 }, { "px": [48,176], "src": [48,0], "f": 0, "t": 3, "d": [223], "a": 1 }, { "px": [64,176], "src": [48,0], "f": 0, "t": 3, "d": [224], "a": 1 }, - { "px": [80,176], "src": [64,0], "f": 0, "t": 4, "d": [225], "a": 1 }, - { "px": [96,176], "src": [64,0], "f": 0, "t": 4, "d": [226], "a": 1 }, + { "px": [80,176], "src": [0,0], "f": 0, "t": 0, "d": [225], "a": 1 }, + { "px": [96,176], "src": [16,0], "f": 0, "t": 1, "d": [226], "a": 1 }, { "px": [112,176], "src": [64,0], "f": 0, "t": 4, "d": [227], "a": 1 }, { "px": [128,176], "src": [48,0], "f": 0, "t": 3, "d": [228], "a": 1 }, { "px": [144,176], "src": [0,0], "f": 0, "t": 0, "d": [229], "a": 1 }, @@ -499,70 +601,70 @@ { "px": [192,176], "src": [80,0], "f": 0, "t": 5, "d": [232], "a": 1 }, { "px": [208,176], "src": [48,0], "f": 0, "t": 3, "d": [233], "a": 1 }, { "px": [224,176], "src": [32,0], "f": 0, "t": 2, "d": [234], "a": 1 }, - { "px": [240,176], "src": [16,0], "f": 0, "t": 1, "d": [235], "a": 1 }, + { "px": [240,176], "src": [80,0], "f": 0, "t": 5, "d": [235], "a": 1 }, { "px": [256,176], "src": [32,0], "f": 0, "t": 2, "d": [236], "a": 1 }, { "px": [272,176], "src": [48,0], "f": 0, "t": 3, "d": [237], "a": 1 }, { "px": [288,176], "src": [32,0], "f": 0, "t": 2, "d": [238], "a": 1 }, - { "px": [304,176], "src": [32,0], "f": 0, "t": 2, "d": [239], "a": 1 }, - { "px": [0,192], "src": [32,0], "f": 0, "t": 2, "d": [240], "a": 1 }, - { "px": [16,192], "src": [32,0], "f": 0, "t": 2, "d": [241], "a": 1 }, + { "px": [304,176], "src": [64,0], "f": 0, "t": 4, "d": [239], "a": 1 }, + { "px": [0,192], "src": [80,0], "f": 0, "t": 5, "d": [240], "a": 1 }, + { "px": [16,192], "src": [80,0], "f": 0, "t": 5, "d": [241], "a": 1 }, { "px": [32,192], "src": [64,0], "f": 0, "t": 4, "d": [242], "a": 1 }, { "px": [48,192], "src": [32,0], "f": 0, "t": 2, "d": [243], "a": 1 }, { "px": [64,192], "src": [64,0], "f": 0, "t": 4, "d": [244], "a": 1 }, - { "px": [80,192], "src": [64,0], "f": 0, "t": 4, "d": [245], "a": 1 }, + { "px": [80,192], "src": [48,0], "f": 0, "t": 3, "d": [245], "a": 1 }, { "px": [96,192], "src": [48,0], "f": 0, "t": 3, "d": [246], "a": 1 }, { "px": [112,192], "src": [48,0], "f": 0, "t": 3, "d": [247], "a": 1 }, - { "px": [128,192], "src": [32,0], "f": 0, "t": 2, "d": [248], "a": 1 }, - { "px": [144,192], "src": [0,0], "f": 0, "t": 0, "d": [249], "a": 1 }, - { "px": [160,192], "src": [64,0], "f": 0, "t": 4, "d": [250], "a": 1 }, - { "px": [176,192], "src": [64,0], "f": 0, "t": 4, "d": [251], "a": 1 }, - { "px": [192,192], "src": [16,0], "f": 0, "t": 1, "d": [252], "a": 1 }, - { "px": [208,192], "src": [80,0], "f": 0, "t": 5, "d": [253], "a": 1 }, - { "px": [224,192], "src": [0,0], "f": 0, "t": 0, "d": [254], "a": 1 }, + { "px": [128,192], "src": [16,0], "f": 0, "t": 1, "d": [248], "a": 1 }, + { "px": [144,192], "src": [48,0], "f": 0, "t": 3, "d": [249], "a": 1 }, + { "px": [160,192], "src": [16,0], "f": 0, "t": 1, "d": [250], "a": 1 }, + { "px": [176,192], "src": [16,0], "f": 0, "t": 1, "d": [251], "a": 1 }, + { "px": [192,192], "src": [0,0], "f": 0, "t": 0, "d": [252], "a": 1 }, + { "px": [208,192], "src": [32,0], "f": 0, "t": 2, "d": [253], "a": 1 }, + { "px": [224,192], "src": [80,0], "f": 0, "t": 5, "d": [254], "a": 1 }, { "px": [240,192], "src": [32,0], "f": 0, "t": 2, "d": [255], "a": 1 }, - { "px": [256,192], "src": [64,0], "f": 0, "t": 4, "d": [256], "a": 1 }, - { "px": [272,192], "src": [32,0], "f": 0, "t": 2, "d": [257], "a": 1 }, + { "px": [256,192], "src": [0,0], "f": 0, "t": 0, "d": [256], "a": 1 }, + { "px": [272,192], "src": [16,0], "f": 0, "t": 1, "d": [257], "a": 1 }, { "px": [288,192], "src": [80,0], "f": 0, "t": 5, "d": [258], "a": 1 }, - { "px": [304,192], "src": [32,0], "f": 0, "t": 2, "d": [259], "a": 1 }, - { "px": [0,208], "src": [16,0], "f": 0, "t": 1, "d": [260], "a": 1 }, + { "px": [304,192], "src": [48,0], "f": 0, "t": 3, "d": [259], "a": 1 }, + { "px": [0,208], "src": [0,0], "f": 0, "t": 0, "d": [260], "a": 1 }, { "px": [16,208], "src": [80,0], "f": 0, "t": 5, "d": [261], "a": 1 }, { "px": [32,208], "src": [80,0], "f": 0, "t": 5, "d": [262], "a": 1 }, { "px": [48,208], "src": [32,0], "f": 0, "t": 2, "d": [263], "a": 1 }, - { "px": [64,208], "src": [80,0], "f": 0, "t": 5, "d": [264], "a": 1 }, + { "px": [64,208], "src": [48,0], "f": 0, "t": 3, "d": [264], "a": 1 }, { "px": [80,208], "src": [16,0], "f": 0, "t": 1, "d": [265], "a": 1 }, { "px": [96,208], "src": [48,0], "f": 0, "t": 3, "d": [266], "a": 1 }, { "px": [112,208], "src": [48,0], "f": 0, "t": 3, "d": [267], "a": 1 }, - { "px": [128,208], "src": [16,0], "f": 0, "t": 1, "d": [268], "a": 1 }, - { "px": [144,208], "src": [48,0], "f": 0, "t": 3, "d": [269], "a": 1 }, + { "px": [128,208], "src": [64,0], "f": 0, "t": 4, "d": [268], "a": 1 }, + { "px": [144,208], "src": [32,0], "f": 0, "t": 2, "d": [269], "a": 1 }, { "px": [160,208], "src": [64,0], "f": 0, "t": 4, "d": [270], "a": 1 }, { "px": [176,208], "src": [48,0], "f": 0, "t": 3, "d": [271], "a": 1 }, { "px": [192,208], "src": [48,0], "f": 0, "t": 3, "d": [272], "a": 1 }, - { "px": [208,208], "src": [16,0], "f": 0, "t": 1, "d": [273], "a": 1 }, + { "px": [208,208], "src": [80,0], "f": 0, "t": 5, "d": [273], "a": 1 }, { "px": [224,208], "src": [48,0], "f": 0, "t": 3, "d": [274], "a": 1 }, { "px": [240,208], "src": [32,0], "f": 0, "t": 2, "d": [275], "a": 1 }, - { "px": [256,208], "src": [0,0], "f": 0, "t": 0, "d": [276], "a": 1 }, - { "px": [272,208], "src": [80,0], "f": 0, "t": 5, "d": [277], "a": 1 }, - { "px": [288,208], "src": [64,0], "f": 0, "t": 4, "d": [278], "a": 1 }, + { "px": [256,208], "src": [48,0], "f": 0, "t": 3, "d": [276], "a": 1 }, + { "px": [272,208], "src": [16,0], "f": 0, "t": 1, "d": [277], "a": 1 }, + { "px": [288,208], "src": [32,0], "f": 0, "t": 2, "d": [278], "a": 1 }, { "px": [304,208], "src": [0,0], "f": 0, "t": 0, "d": [279], "a": 1 }, { "px": [0,224], "src": [64,0], "f": 0, "t": 4, "d": [280], "a": 1 }, - { "px": [16,224], "src": [48,0], "f": 0, "t": 3, "d": [281], "a": 1 }, - { "px": [32,224], "src": [48,0], "f": 0, "t": 3, "d": [282], "a": 1 }, - { "px": [48,224], "src": [0,0], "f": 0, "t": 0, "d": [283], "a": 1 }, - { "px": [64,224], "src": [16,0], "f": 0, "t": 1, "d": [284], "a": 1 }, - { "px": [80,224], "src": [80,0], "f": 0, "t": 5, "d": [285], "a": 1 }, - { "px": [96,224], "src": [0,0], "f": 0, "t": 0, "d": [286], "a": 1 }, - { "px": [112,224], "src": [80,0], "f": 0, "t": 5, "d": [287], "a": 1 }, + { "px": [16,224], "src": [32,0], "f": 0, "t": 2, "d": [281], "a": 1 }, + { "px": [32,224], "src": [32,0], "f": 0, "t": 2, "d": [282], "a": 1 }, + { "px": [48,224], "src": [48,0], "f": 0, "t": 3, "d": [283], "a": 1 }, + { "px": [64,224], "src": [64,0], "f": 0, "t": 4, "d": [284], "a": 1 }, + { "px": [80,224], "src": [32,0], "f": 0, "t": 2, "d": [285], "a": 1 }, + { "px": [96,224], "src": [32,0], "f": 0, "t": 2, "d": [286], "a": 1 }, + { "px": [112,224], "src": [32,0], "f": 0, "t": 2, "d": [287], "a": 1 }, { "px": [128,224], "src": [48,0], "f": 0, "t": 3, "d": [288], "a": 1 }, - { "px": [144,224], "src": [64,0], "f": 0, "t": 4, "d": [289], "a": 1 }, - { "px": [160,224], "src": [0,0], "f": 0, "t": 0, "d": [290], "a": 1 }, - { "px": [176,224], "src": [64,0], "f": 0, "t": 4, "d": [291], "a": 1 }, + { "px": [144,224], "src": [80,0], "f": 0, "t": 5, "d": [289], "a": 1 }, + { "px": [160,224], "src": [48,0], "f": 0, "t": 3, "d": [290], "a": 1 }, + { "px": [176,224], "src": [0,0], "f": 0, "t": 0, "d": [291], "a": 1 }, { "px": [192,224], "src": [0,0], "f": 0, "t": 0, "d": [292], "a": 1 }, { "px": [208,224], "src": [16,0], "f": 0, "t": 1, "d": [293], "a": 1 }, - { "px": [224,224], "src": [48,0], "f": 0, "t": 3, "d": [294], "a": 1 }, - { "px": [240,224], "src": [0,0], "f": 0, "t": 0, "d": [295], "a": 1 }, - { "px": [256,224], "src": [64,0], "f": 0, "t": 4, "d": [296], "a": 1 }, + { "px": [224,224], "src": [32,0], "f": 0, "t": 2, "d": [294], "a": 1 }, + { "px": [240,224], "src": [16,0], "f": 0, "t": 1, "d": [295], "a": 1 }, + { "px": [256,224], "src": [32,0], "f": 0, "t": 2, "d": [296], "a": 1 }, { "px": [272,224], "src": [32,0], "f": 0, "t": 2, "d": [297], "a": 1 }, - { "px": [288,224], "src": [32,0], "f": 0, "t": 2, "d": [298], "a": 1 }, + { "px": [288,224], "src": [16,0], "f": 0, "t": 1, "d": [298], "a": 1 }, { "px": [304,224], "src": [16,0], "f": 0, "t": 1, "d": [299], "a": 1 } ], "entityInstances": [] diff --git a/game/overworld.png b/game/overworld.png index 0aa560f87970bb9455346e5b2a694f2531d4136b..7707502673a849db32dfde3a8e2bf50b997098f0 100644 GIT binary patch delta 628 zcmV-)0*n2h1iuB4FncAqdslCqkn_zrN4CS@g=D$K$`q` z9y>uUHrlF^?Fb0s?fILWAaPY zdl9%Tb;(+$L#`X2f7bkYC(JK)!~9}*rO$ZprXe)1h-1TbHQ=UK6)(ix_@ii;?wV2W$W1%zih`iI=HT0rJD9#5jQ3JE#lj@p38Ou+D$`Pzq}0{ z-y|LJo0=9%GfPkMZBu^3x zA0>Gsr{{g<;i2Or$!|C5dK#FEjlb%=J#;*adUb#}J%1QY<(a+w{2Hz|&B8Hd zXzT!K!cWhRtBR1m$M{V{XdcmN;^TSUU&d<|=kvT1Nbbil4dHd9_f5LBKsgqk1+>lY zd9o$H3``3hAe|2Cwt98jMaHeR0_4Zm1Lc~9(4K6gylgZ3`j4&J1=O+HFJI%0pu95Z z1ZA3hJ3oKvdKwr)bBFLWa6Lmm4Q!kO>XILiRRfdZ0Vk920SFjiO#T35A$rNnRIM5S O00007te3^-&Kd@?M?Id=Hs*LR?bj8^v1OF z*W0Iq9(?Zgxmd(AKswr&w>LXSecX5tckiPgdhYc(X=Z@9^MAv22tg_|+P;lnh7N(62SX=Hs*ZoRVF$&{XxI^K&(L5jd4yoi!$qht{Xx zwfefMRh*fB?>KdJRkg2(L&Nno;IUWabB_2}-0``t7wXXXeIaPOr>}n3yO_#)jl zr3WVK?bE2vn!7$d%rZ0l)tm#Qd;YGec1S18T^}6lEFf3SHZUC}X(PwiL*B!4*9SVk z+oJE+z*K1bec#)2*Yn$;0EE|r(UhOX-2Xu7#?HXUb}Mp6!Awg43MT-C6M(`AK;Z