├── LICENSE ├── README.md ├── assets ├── abilities.png ├── absorb_01.mp3 ├── absorb_01.ogg ├── antler-knight-0.png ├── antler-knight-1.png ├── antler-knight-2.png ├── antler-knight.json ├── blades.png ├── block_01.mp3 ├── block_01.ogg ├── breakout.json ├── breakout.png ├── button.json ├── button.png ├── clash_01.mp3 ├── clash_01.ogg ├── coins25.png ├── combust.json ├── combust.png ├── crit_01.mp3 ├── crit_01.ogg ├── dungeon_01.json ├── dungeon_ambient_1.mp3 ├── dungeon_ambient_1.ogg ├── foom_0.mp3 ├── foom_0.ogg ├── freeze.mp3 ├── freeze.ogg ├── heal.json ├── heal.png ├── miss_01.mp3 ├── miss_01.ogg ├── paddle_01.mp3 ├── paddle_01.ogg ├── screenshot.png ├── shield.json ├── shield.png ├── skeleton.png ├── star.png ├── tileset_cave_1.png ├── water_01.mp3 └── water_01.ogg ├── build └── project.bundle.js ├── index.html ├── items.json ├── package-lock.json ├── package.json ├── spells.js ├── src ├── Actions.js ├── Items.js ├── animations.js ├── helpers.js ├── index.js ├── scenes │ ├── BootScene.js │ ├── BreakOutScene.js │ ├── GameScene.js │ ├── StartScene.js │ └── UIScene.js └── sprites │ ├── ArcherSkeleton.js │ ├── CharacterSheet.js │ ├── Loot.js │ ├── Player.js │ └── Skeleton.js └── webpack.config.js /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Richard Davey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![alt text](https://raw.githubusercontent.com/Jesse989/breakoutRPG/master/assets/screenshot.png) 2 | 3 | 4 | # breakoutRPG, a Hybrid game using Phaser3 5 | BreakoutRPG is an adventure RPG game where the combat is decided 6 | by playing breakout. Level up and raise your character stats, kill 7 | skeletons and loot awesome weapons, and fight through unique dungeons. 8 | 9 | TODO (so far, more will be added): 10 | - Finish map, so it is a smooth experience to walk through, with no collisions. 11 | - Work on the Breakout mechanics: 12 | come up with combos and maybe a way to preset the way the bricks are layed out. 13 | - Loot and inventory system. 14 | - Pointer support for touch. 15 | - Use IPFS and blockchain for some stuff 16 | 17 | 18 | ### Requirements 19 | 20 | We need [Node.js](https://nodejs.org) to install and run scripts. 21 | 22 | ## Install and run 23 | 24 | Run next commands in your terminal: 25 | 26 | | Command | Description | 27 | |---------|-------------| 28 | | `npm install` | Install dependencies and launch browser with examples.| 29 | | `npm start` | Launch browser to show the examples.
Press `Ctrl + c` to kill **http-server** process. | 30 | ======= 31 | -------------------------------------------------------------------------------- /assets/abilities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/abilities.png -------------------------------------------------------------------------------- /assets/absorb_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/absorb_01.mp3 -------------------------------------------------------------------------------- /assets/absorb_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/absorb_01.ogg -------------------------------------------------------------------------------- /assets/antler-knight-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/antler-knight-0.png -------------------------------------------------------------------------------- /assets/antler-knight-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/antler-knight-1.png -------------------------------------------------------------------------------- /assets/antler-knight-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/antler-knight-2.png -------------------------------------------------------------------------------- /assets/antler-knight.json: -------------------------------------------------------------------------------- 1 | {"textures":[{"image":"antler-knight-0.png","format":"RGBA8888","size":{"w":2048,"h":1977},"scale":1,"frames":[{"filename":"knight_west_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":12,"y":145,"w":209,"h":132},"frame":{"x":1,"y":1,"w":209,"h":132}},{"filename":"knight_west_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":7,"y":143,"w":202,"h":135},"frame":{"x":212,"y":1,"w":202,"h":135}},{"filename":"knight_west_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":32,"y":140,"w":212,"h":136},"frame":{"x":416,"y":1,"w":212,"h":136}},{"filename":"knight_southWest_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":148,"w":158,"h":138},"frame":{"x":630,"y":1,"w":158,"h":138}},{"filename":"knight_west_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":139,"w":208,"h":140},"frame":{"x":790,"y":1,"w":208,"h":140}},{"filename":"knight_west_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":67,"y":135,"w":200,"h":143},"frame":{"x":1000,"y":1,"w":200,"h":143}},{"filename":"knight_east_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":27,"y":134,"w":187,"h":144},"frame":{"x":1202,"y":1,"w":187,"h":144}},{"filename":"knight_west_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":0,"y":135,"w":204,"h":144},"frame":{"x":1391,"y":1,"w":204,"h":144}},{"filename":"knight_southWest_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":58,"y":181,"w":161,"h":145},"frame":{"x":1597,"y":1,"w":161,"h":145}},{"filename":"knight_west_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":186,"y":131,"w":190,"h":145},"frame":{"x":1760,"y":1,"w":190,"h":145}},{"filename":"knight_south_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":96,"w":95,"h":164},"frame":{"x":1952,"y":1,"w":95,"h":164}},{"filename":"knight_southWest_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":84,"y":157,"w":170,"h":148},"frame":{"x":1,"y":135,"w":170,"h":148}},{"filename":"knight_southWest_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":180,"w":161,"h":148},"frame":{"x":173,"y":138,"w":161,"h":148}},{"filename":"knight_west_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":64,"y":132,"w":180,"h":148},"frame":{"x":336,"y":139,"w":180,"h":148}},{"filename":"knight_west_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":43,"y":132,"w":206,"h":148},"frame":{"x":518,"y":141,"w":206,"h":148}},{"filename":"knight_west_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":39,"y":132,"w":207,"h":148},"frame":{"x":726,"y":143,"w":207,"h":148}},{"filename":"knight_west_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":186,"y":131,"w":187,"h":148},"frame":{"x":935,"y":146,"w":187,"h":148}},{"filename":"knight_east_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":131,"w":206,"h":149},"frame":{"x":1124,"y":147,"w":206,"h":149}},{"filename":"knight_east_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":131,"w":209,"h":149},"frame":{"x":1332,"y":147,"w":209,"h":149}},{"filename":"knight_southEast_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":64,"y":109,"w":163,"h":149},"frame":{"x":1543,"y":148,"w":163,"h":149}},{"filename":"knight_southEast_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":109,"w":156,"h":149},"frame":{"x":1708,"y":148,"w":156,"h":149}},{"filename":"knight_northEast_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":125,"w":177,"h":151},"frame":{"x":1866,"y":167,"w":177,"h":151}},{"filename":"knight_southEast_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":74,"y":106,"w":153,"h":152},"frame":{"x":1,"y":285,"w":153,"h":152}},{"filename":"knight_northEast_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":125,"w":177,"h":151},"frame":{"x":156,"y":288,"w":177,"h":151}},{"filename":"knight_northEast_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":125,"w":177,"h":151},"frame":{"x":335,"y":289,"w":177,"h":151}},{"filename":"knight_east_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":179,"y":133,"w":210,"h":151},"frame":{"x":514,"y":291,"w":210,"h":151}},{"filename":"knight_east_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":181,"y":130,"w":207,"h":151},"frame":{"x":726,"y":293,"w":207,"h":151}},{"filename":"knight_west_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":57,"y":130,"w":185,"h":151},"frame":{"x":935,"y":296,"w":185,"h":151}},{"filename":"knight_east_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":129,"w":204,"h":151},"frame":{"x":1122,"y":298,"w":204,"h":151}},{"filename":"knight_west_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":129,"w":190,"h":151},"frame":{"x":1328,"y":298,"w":190,"h":151}},{"filename":"knight_west_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":129,"w":206,"h":151},"frame":{"x":1520,"y":299,"w":206,"h":151}},{"filename":"knight_northWest_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":108,"y":118,"w":135,"h":156},"frame":{"x":1728,"y":299,"w":135,"h":156}},{"filename":"knight_northEast_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":124,"w":180,"h":152},"frame":{"x":1865,"y":320,"w":180,"h":152}},{"filename":"knight_northWest_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":66,"y":109,"w":151,"h":154},"frame":{"x":1,"y":439,"w":151,"h":154}},{"filename":"knight_east_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":47,"y":128,"w":172,"h":153},"frame":{"x":154,"y":441,"w":172,"h":153}},{"filename":"knight_southWest_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":143,"w":161,"h":153},"frame":{"x":328,"y":442,"w":161,"h":153}},{"filename":"knight_east_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":126,"w":194,"h":153},"frame":{"x":491,"y":444,"w":194,"h":153}},{"filename":"knight_west_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":63,"y":128,"w":181,"h":153},"frame":{"x":687,"y":446,"w":181,"h":153}},{"filename":"knight_west_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":66,"y":128,"w":180,"h":153},"frame":{"x":870,"y":449,"w":180,"h":153}},{"filename":"knight_west_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":61,"y":128,"w":183,"h":153},"frame":{"x":1052,"y":451,"w":183,"h":153}},{"filename":"knight_west_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":64,"y":128,"w":180,"h":153},"frame":{"x":1237,"y":451,"w":180,"h":153}},{"filename":"knight_west_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":54,"y":128,"w":186,"h":153},"frame":{"x":1419,"y":452,"w":186,"h":153}},{"filename":"knight_northWest_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":127,"y":117,"w":119,"h":158},"frame":{"x":1607,"y":452,"w":119,"h":158}},{"filename":"knight_northWest_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":111,"y":118,"w":129,"h":157},"frame":{"x":1728,"y":457,"w":129,"h":157}},{"filename":"knight_northWest_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":63,"y":113,"w":167,"h":155},"frame":{"x":1859,"y":474,"w":167,"h":155}},{"filename":"knight_west_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":126,"w":195,"h":155},"frame":{"x":1,"y":596,"w":195,"h":155}},{"filename":"knight_west_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":56,"y":126,"w":193,"h":155},"frame":{"x":198,"y":597,"w":193,"h":155}},{"filename":"knight_west_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":56,"y":126,"w":193,"h":155},"frame":{"x":393,"y":599,"w":193,"h":155}},{"filename":"knight_northEast_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":121,"w":180,"h":155},"frame":{"x":588,"y":601,"w":180,"h":155}},{"filename":"knight_northEast_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":121,"w":180,"h":155},"frame":{"x":770,"y":604,"w":180,"h":155}},{"filename":"knight_northEast_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":121,"w":180,"h":155},"frame":{"x":952,"y":606,"w":180,"h":155}},{"filename":"knight_northEast_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":121,"w":180,"h":155},"frame":{"x":1134,"y":606,"w":180,"h":155}},{"filename":"knight_northEast_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":121,"w":180,"h":155},"frame":{"x":1316,"y":607,"w":180,"h":155}},{"filename":"knight_north_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":106,"h":160},"frame":{"x":1498,"y":607,"w":106,"h":160}},{"filename":"knight_northWest_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":127,"y":117,"w":119,"h":158},"frame":{"x":1606,"y":612,"w":119,"h":158}},{"filename":"knight_northWest_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":117,"y":121,"w":129,"h":158},"frame":{"x":1727,"y":616,"w":129,"h":158}},{"filename":"knight_northEast_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":116,"w":154,"h":157},"frame":{"x":1858,"y":631,"w":154,"h":157}},{"filename":"knight_northEast_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":181,"y":105,"w":161,"h":157},"frame":{"x":1,"y":753,"w":161,"h":157}},{"filename":"knight_east_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":123,"w":185,"h":158},"frame":{"x":164,"y":754,"w":185,"h":158}},{"filename":"knight_east_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":123,"w":190,"h":158},"frame":{"x":351,"y":756,"w":190,"h":158}},{"filename":"knight_east_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":124,"w":183,"h":158},"frame":{"x":543,"y":758,"w":183,"h":158}},{"filename":"knight_southEast_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":183,"y":172,"w":151,"h":158},"frame":{"x":728,"y":761,"w":151,"h":158}},{"filename":"knight_southWest_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":147,"w":177,"h":158},"frame":{"x":881,"y":763,"w":177,"h":158}},{"filename":"knight_southWest_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":42,"y":168,"w":174,"h":158},"frame":{"x":1060,"y":763,"w":174,"h":158}},{"filename":"knight_northWest_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":120,"y":121,"w":126,"h":158},"frame":{"x":1236,"y":764,"w":126,"h":158}},{"filename":"knight_northWest_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":117,"y":121,"w":129,"h":158},"frame":{"x":1364,"y":764,"w":129,"h":158}},{"filename":"knight_north_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":116,"w":108,"h":160},"frame":{"x":1495,"y":769,"w":108,"h":160}},{"filename":"knight_south_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":158,"w":108,"h":161},"frame":{"x":1605,"y":772,"w":108,"h":161}},{"filename":"knight_southWest_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":190,"y":108,"w":128,"h":160},"frame":{"x":1715,"y":776,"w":128,"h":160}},{"filename":"knight_northEast_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":119,"w":158,"h":159},"frame":{"x":1845,"y":790,"w":158,"h":159}},{"filename":"knight_southWest_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":140,"w":158,"h":160},"frame":{"x":1,"y":912,"w":158,"h":160}},{"filename":"knight_east_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":124,"w":181,"h":160},"frame":{"x":161,"y":914,"w":181,"h":160}},{"filename":"knight_east_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":125,"w":178,"h":160},"frame":{"x":344,"y":916,"w":178,"h":160}},{"filename":"knight_east_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":124,"w":180,"h":160},"frame":{"x":524,"y":918,"w":180,"h":160}},{"filename":"knight_southWest_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":142,"w":158,"h":160},"frame":{"x":706,"y":921,"w":158,"h":160}},{"filename":"knight_southWest_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":145,"w":154,"h":160},"frame":{"x":866,"y":923,"w":154,"h":160}},{"filename":"knight_southWest_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":147,"w":177,"h":160},"frame":{"x":1022,"y":923,"w":177,"h":160}},{"filename":"knight_southWest_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":147,"w":180,"h":160},"frame":{"x":1201,"y":924,"w":180,"h":160}},{"filename":"knight_north_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":101,"h":161},"frame":{"x":1383,"y":924,"w":101,"h":161}},{"filename":"knight_north_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":102,"h":161},"frame":{"x":1486,"y":931,"w":102,"h":161}},{"filename":"knight_southWest_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":190,"y":106,"w":122,"h":162},"frame":{"x":1590,"y":935,"w":122,"h":162}},{"filename":"knight_north_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":104,"h":162},"frame":{"x":1714,"y":938,"w":104,"h":162}},{"filename":"knight_southWest_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":143,"w":180,"h":162},"frame":{"x":1820,"y":951,"w":180,"h":162}},{"filename":"knight_north_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":95,"w":101,"h":162},"frame":{"x":1,"y":1074,"w":101,"h":162}},{"filename":"knight_southWest_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":143,"w":180,"h":162},"frame":{"x":104,"y":1076,"w":180,"h":162}},{"filename":"knight_southWest_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":143,"w":180,"h":162},"frame":{"x":286,"y":1078,"w":180,"h":162}},{"filename":"knight_southWest_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":143,"w":177,"h":162},"frame":{"x":468,"y":1080,"w":177,"h":162}},{"filename":"knight_northEast_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":165,"y":114,"w":158,"h":162},"frame":{"x":647,"y":1083,"w":158,"h":162}},{"filename":"knight_northEast_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":111,"w":173,"h":162},"frame":{"x":807,"y":1085,"w":173,"h":162}},{"filename":"knight_southEast_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":153,"w":148,"h":163},"frame":{"x":982,"y":1085,"w":148,"h":163}},{"filename":"knight_northWest_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":172,"y":130,"w":141,"h":163},"frame":{"x":1132,"y":1086,"w":141,"h":163}},{"filename":"knight_north_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":114,"w":104,"h":163},"frame":{"x":1275,"y":1086,"w":104,"h":163}},{"filename":"knight_north_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":113,"w":102,"h":163},"frame":{"x":1381,"y":1087,"w":102,"h":163}},{"filename":"knight_south_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":93,"w":94,"h":167},"frame":{"x":1485,"y":1094,"w":94,"h":167}},{"filename":"knight_south_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":141,"y":158,"w":109,"h":166},"frame":{"x":1581,"y":1099,"w":109,"h":166}},{"filename":"knight_north_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":112,"w":101,"h":167},"frame":{"x":1692,"y":1102,"w":101,"h":167}},{"filename":"knight_southWest_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":140,"w":155,"h":167},"frame":{"x":1795,"y":1115,"w":155,"h":167}},{"filename":"knight_south_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":76,"w":94,"h":187},"frame":{"x":1952,"y":1115,"w":94,"h":187}},{"filename":"knight_south_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":157,"w":98,"h":168},"frame":{"x":1,"y":1238,"w":98,"h":168}},{"filename":"knight_northWest_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":173,"y":151,"w":156,"h":167},"frame":{"x":101,"y":1240,"w":156,"h":167}},{"filename":"knight_northEast_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":75,"y":155,"w":135,"h":167},"frame":{"x":259,"y":1242,"w":135,"h":167}},{"filename":"knight_east_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":70,"y":112,"w":151,"h":168},"frame":{"x":396,"y":1244,"w":151,"h":168}},{"filename":"knight_southEast_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":148,"h":168},"frame":{"x":549,"y":1247,"w":148,"h":168}},{"filename":"knight_south_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":158,"w":104,"h":169},"frame":{"x":699,"y":1247,"w":104,"h":169}},{"filename":"knight_southWest_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":139,"w":158,"h":168},"frame":{"x":805,"y":1249,"w":158,"h":168}},{"filename":"knight_northWest_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":114,"w":148,"h":168},"frame":{"x":965,"y":1250,"w":148,"h":168}},{"filename":"knight_northWest_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":173,"y":146,"w":163,"h":168},"frame":{"x":1115,"y":1251,"w":163,"h":168}},{"filename":"knight_northWest_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":76,"y":102,"w":148,"h":168},"frame":{"x":1280,"y":1252,"w":148,"h":168}},{"filename":"knight_south_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":159,"w":99,"h":172},"frame":{"x":1430,"y":1263,"w":99,"h":172}},{"filename":"knight_southEast_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":150,"w":145,"h":173},"frame":{"x":1531,"y":1267,"w":145,"h":173}},{"filename":"knight_north_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":105,"w":99,"h":173},"frame":{"x":1678,"y":1271,"w":99,"h":173}},{"filename":"knight_southEast_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":137,"w":148,"h":174},"frame":{"x":1779,"y":1284,"w":148,"h":174}},{"filename":"knight_south_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":141,"y":153,"w":111,"h":174},"frame":{"x":1929,"y":1304,"w":111,"h":174}},{"filename":"knight_south_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":152,"w":108,"h":174},"frame":{"x":1,"y":1409,"w":108,"h":174}},{"filename":"knight_north_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":104,"w":99,"h":174},"frame":{"x":111,"y":1409,"w":99,"h":174}},{"filename":"knight_southEast_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":136,"w":145,"h":175},"frame":{"x":212,"y":1411,"w":145,"h":175}},{"filename":"knight_southEast_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":136,"w":142,"h":175},"frame":{"x":359,"y":1414,"w":142,"h":175}},{"filename":"knight_southEast_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":138,"w":129,"h":175},"frame":{"x":503,"y":1417,"w":129,"h":175}},{"filename":"knight_southEast_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":148,"w":142,"h":175},"frame":{"x":634,"y":1418,"w":142,"h":175}},{"filename":"knight_southEast_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":148,"w":142,"h":175},"frame":{"x":778,"y":1419,"w":142,"h":175}},{"filename":"knight_south_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":153,"w":108,"h":175},"frame":{"x":922,"y":1420,"w":108,"h":175}},{"filename":"knight_south_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":153,"w":108,"h":175},"frame":{"x":1032,"y":1421,"w":108,"h":175}},{"filename":"knight_south_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":158,"w":99,"h":175},"frame":{"x":1142,"y":1421,"w":99,"h":175}},{"filename":"knight_south_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":158,"w":102,"h":175},"frame":{"x":1243,"y":1422,"w":102,"h":175}},{"filename":"knight_southEast_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":136,"w":129,"h":177},"frame":{"x":1347,"y":1437,"w":129,"h":177}},{"filename":"knight_southEast_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":176,"y":155,"w":148,"h":177},"frame":{"x":1478,"y":1442,"w":148,"h":177}},{"filename":"knight_south_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":150,"w":104,"h":178},"frame":{"x":1628,"y":1446,"w":104,"h":178}},{"filename":"knight_southEast_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":146,"w":142,"h":179},"frame":{"x":1734,"y":1460,"w":142,"h":179}},{"filename":"knight_southEast_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":145,"w":142,"h":180},"frame":{"x":1878,"y":1480,"w":142,"h":180}},{"filename":"knight_southEast_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":164,"y":145,"w":141,"h":180},"frame":{"x":1,"y":1585,"w":141,"h":180}},{"filename":"knight_south_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":150,"w":102,"h":180},"frame":{"x":144,"y":1588,"w":102,"h":180}},{"filename":"knight_south_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":157,"w":101,"h":180},"frame":{"x":248,"y":1588,"w":101,"h":180}},{"filename":"knight_south_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":159,"w":99,"h":180},"frame":{"x":351,"y":1591,"w":99,"h":180}},{"filename":"knight_south_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":161,"w":100,"h":180},"frame":{"x":452,"y":1594,"w":100,"h":180}},{"filename":"knight_north_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":99,"w":99,"h":180},"frame":{"x":554,"y":1595,"w":99,"h":180}},{"filename":"knight_north_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":99,"w":99,"h":180},"frame":{"x":655,"y":1595,"w":99,"h":180}},{"filename":"knight_southEast_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":144,"w":139,"h":181},"frame":{"x":756,"y":1596,"w":139,"h":181}},{"filename":"knight_south_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":149,"w":104,"h":181},"frame":{"x":897,"y":1597,"w":104,"h":181}},{"filename":"knight_southEast_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":144,"w":139,"h":181},"frame":{"x":1003,"y":1598,"w":139,"h":181}},{"filename":"knight_south_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":160,"w":100,"h":181},"frame":{"x":1144,"y":1599,"w":100,"h":181}},{"filename":"knight_north_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":97,"w":99,"h":181},"frame":{"x":1246,"y":1599,"w":99,"h":181}},{"filename":"knight_north_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":99,"w":101,"h":182},"frame":{"x":1347,"y":1616,"w":101,"h":182}},{"filename":"knight_south_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":157,"w":100,"h":183},"frame":{"x":1450,"y":1621,"w":100,"h":183}},{"filename":"knight_south_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":156,"w":98,"h":184},"frame":{"x":1552,"y":1626,"w":98,"h":184}},{"filename":"knight_north_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":94,"w":98,"h":184},"frame":{"x":1652,"y":1641,"w":98,"h":184}},{"filename":"knight_north_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":95,"w":98,"h":184},"frame":{"x":1752,"y":1641,"w":98,"h":184}},{"filename":"knight_northWest_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":76,"y":91,"w":167,"h":186},"frame":{"x":1852,"y":1662,"w":167,"h":186}},{"filename":"knight_northEast_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":114,"y":139,"w":103,"h":186},"frame":{"x":1,"y":1767,"w":103,"h":186}},{"filename":"knight_northEast_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":162,"y":90,"w":145,"h":186},"frame":{"x":106,"y":1770,"w":145,"h":186}},{"filename":"knight_north_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":160,"w":94,"h":188},"frame":{"x":253,"y":1770,"w":94,"h":188}},{"filename":"knight_north_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":90,"w":99,"h":187},"frame":{"x":349,"y":1773,"w":99,"h":187}},{"filename":"knight_north_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":98,"w":99,"h":188},"frame":{"x":450,"y":1776,"w":99,"h":188}},{"filename":"knight_northEast_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":89,"w":161,"h":187},"frame":{"x":551,"y":1777,"w":161,"h":187}},{"filename":"knight_north_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":136,"w":94,"h":188},"frame":{"x":714,"y":1779,"w":94,"h":188}},{"filename":"knight_north_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":90,"w":96,"h":188},"frame":{"x":810,"y":1780,"w":96,"h":188}},{"filename":"knight_north_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":160,"w":95,"h":189},"frame":{"x":908,"y":1781,"w":95,"h":189}},{"filename":"knight_west_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":179,"y":85,"w":151,"h":192},"frame":{"x":1005,"y":1782,"w":151,"h":192}},{"filename":"knight_southEast_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":135,"y":79,"w":105,"h":194},"frame":{"x":1158,"y":1782,"w":105,"h":194}}]},{"image":"antler-knight-1.png","format":"RGBA8888","size":{"w":2048,"h":2019},"scale":1,"frames":[{"filename":"knight_west_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":134,"w":210,"h":146},"frame":{"x":1,"y":1,"w":210,"h":146}},{"filename":"knight_west_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":186,"y":130,"w":185,"h":146},"frame":{"x":213,"y":1,"w":185,"h":146}},{"filename":"knight_east_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":133,"w":208,"h":147},"frame":{"x":400,"y":1,"w":208,"h":147}},{"filename":"knight_east_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":133,"w":206,"h":147},"frame":{"x":610,"y":1,"w":206,"h":147}},{"filename":"knight_east_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":133,"w":207,"h":147},"frame":{"x":818,"y":1,"w":207,"h":147}},{"filename":"knight_east_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":140,"y":134,"w":208,"h":147},"frame":{"x":1027,"y":1,"w":208,"h":147}},{"filename":"knight_east_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":29,"y":133,"w":185,"h":147},"frame":{"x":1237,"y":1,"w":185,"h":147}},{"filename":"knight_southEast_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":61,"y":110,"w":166,"h":147},"frame":{"x":1424,"y":1,"w":166,"h":147}},{"filename":"knight_southWest_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":84,"y":149,"w":157,"h":147},"frame":{"x":1592,"y":1,"w":157,"h":147}},{"filename":"knight_west_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":133,"w":207,"h":147},"frame":{"x":1751,"y":1,"w":207,"h":147}},{"filename":"knight_southWest_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":149,"w":164,"h":149},"frame":{"x":1,"y":149,"w":164,"h":149}},{"filename":"knight_west_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":79,"y":132,"w":163,"h":149},"frame":{"x":167,"y":149,"w":163,"h":149}},{"filename":"knight_west_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":43,"y":131,"w":206,"h":149},"frame":{"x":332,"y":150,"w":206,"h":149}},{"filename":"knight_west_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":39,"y":131,"w":207,"h":149},"frame":{"x":540,"y":150,"w":207,"h":149}},{"filename":"knight_west_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":36,"y":130,"w":203,"h":149},"frame":{"x":749,"y":150,"w":203,"h":149}},{"filename":"knight_east_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":128,"w":177,"h":150},"frame":{"x":954,"y":150,"w":177,"h":150}},{"filename":"knight_east_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":130,"w":208,"h":150},"frame":{"x":1133,"y":150,"w":208,"h":150}},{"filename":"knight_east_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":130,"w":207,"h":150},"frame":{"x":1343,"y":150,"w":207,"h":150}},{"filename":"knight_east_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":131,"w":210,"h":150},"frame":{"x":1552,"y":150,"w":210,"h":150}},{"filename":"knight_east_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":33,"y":131,"w":181,"h":150},"frame":{"x":1764,"y":150,"w":181,"h":150}},{"filename":"knight_north_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":112,"w":100,"h":164},"frame":{"x":1947,"y":150,"w":100,"h":164}},{"filename":"knight_west_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":129,"w":205,"h":151},"frame":{"x":1,"y":300,"w":205,"h":151}},{"filename":"knight_northEast_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":125,"w":177,"h":151},"frame":{"x":208,"y":301,"w":177,"h":151}},{"filename":"knight_east_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":127,"w":195,"h":152},"frame":{"x":387,"y":301,"w":195,"h":152}},{"filename":"knight_east_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":126,"w":186,"h":152},"frame":{"x":584,"y":301,"w":186,"h":152}},{"filename":"knight_west_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":66,"y":129,"w":179,"h":152},"frame":{"x":772,"y":301,"w":179,"h":152}},{"filename":"knight_east_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":128,"w":208,"h":152},"frame":{"x":953,"y":302,"w":208,"h":152}},{"filename":"knight_east_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":128,"w":205,"h":152},"frame":{"x":1163,"y":302,"w":205,"h":152}},{"filename":"knight_east_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":128,"w":208,"h":152},"frame":{"x":1370,"y":302,"w":208,"h":152}},{"filename":"knight_east_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":130,"w":214,"h":152},"frame":{"x":1580,"y":302,"w":214,"h":152}},{"filename":"knight_northWest_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":66,"y":108,"w":148,"h":153},"frame":{"x":1796,"y":302,"w":148,"h":153}},{"filename":"knight_north_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":97,"w":101,"h":158},"frame":{"x":1946,"y":316,"w":101,"h":158}},{"filename":"knight_west_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":58,"y":128,"w":181,"h":153},"frame":{"x":1,"y":453,"w":181,"h":153}},{"filename":"knight_northEast_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":123,"w":180,"h":153},"frame":{"x":184,"y":454,"w":180,"h":153}},{"filename":"knight_northEast_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":123,"w":180,"h":153},"frame":{"x":366,"y":455,"w":180,"h":153}},{"filename":"knight_northEast_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":168,"y":113,"w":177,"h":153},"frame":{"x":548,"y":455,"w":177,"h":153}},{"filename":"knight_east_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":125,"w":195,"h":154},"frame":{"x":727,"y":455,"w":195,"h":154}},{"filename":"knight_east_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":125,"w":195,"h":154},"frame":{"x":924,"y":456,"w":195,"h":154}},{"filename":"knight_east_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":158,"y":126,"w":188,"h":154},"frame":{"x":1121,"y":456,"w":188,"h":154}},{"filename":"knight_southEast_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":67,"y":108,"w":168,"h":154},"frame":{"x":1311,"y":456,"w":168,"h":154}},{"filename":"knight_southWest_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":142,"w":161,"h":154},"frame":{"x":1481,"y":456,"w":161,"h":154}},{"filename":"knight_west_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":59,"y":127,"w":187,"h":154},"frame":{"x":1644,"y":457,"w":187,"h":154}},{"filename":"knight_north_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":108,"h":160},"frame":{"x":1833,"y":457,"w":108,"h":160}},{"filename":"knight_south_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":197,"w":101,"h":161},"frame":{"x":1943,"y":476,"w":101,"h":161}},{"filename":"knight_northEast_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":121,"w":177,"h":155},"frame":{"x":1,"y":608,"w":177,"h":155}},{"filename":"knight_east_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":126,"w":180,"h":156},"frame":{"x":180,"y":609,"w":180,"h":156}},{"filename":"knight_east_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":124,"w":193,"h":156},"frame":{"x":362,"y":610,"w":193,"h":156}},{"filename":"knight_southWest_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":142,"w":161,"h":156},"frame":{"x":557,"y":610,"w":161,"h":156}},{"filename":"knight_east_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":124,"w":187,"h":156},"frame":{"x":720,"y":611,"w":187,"h":156}},{"filename":"knight_east_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":162,"y":124,"w":192,"h":156},"frame":{"x":909,"y":612,"w":192,"h":156}},{"filename":"knight_southWest_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":142,"w":161,"h":156},"frame":{"x":1103,"y":612,"w":161,"h":156}},{"filename":"knight_southWest_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":81,"y":147,"w":157,"h":156},"frame":{"x":1266,"y":612,"w":157,"h":156}},{"filename":"knight_west_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":54,"y":125,"w":192,"h":156},"frame":{"x":1425,"y":612,"w":192,"h":156}},{"filename":"knight_northEast_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":118,"w":158,"h":156},"frame":{"x":1619,"y":613,"w":158,"h":156}},{"filename":"knight_northEast_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":117,"w":157,"h":157},"frame":{"x":1779,"y":619,"w":157,"h":157}},{"filename":"knight_north_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":109,"h":160},"frame":{"x":1938,"y":639,"w":109,"h":160}},{"filename":"knight_northWest_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":108,"y":119,"w":138,"h":158},"frame":{"x":1,"y":765,"w":138,"h":158}},{"filename":"knight_northWest_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":119,"w":142,"h":158},"frame":{"x":141,"y":767,"w":142,"h":158}},{"filename":"knight_northWest_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":119,"w":145,"h":158},"frame":{"x":285,"y":768,"w":145,"h":158}},{"filename":"knight_northWest_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":114,"w":142,"h":158},"frame":{"x":432,"y":768,"w":142,"h":158}},{"filename":"knight_southWest_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":100,"y":146,"w":138,"h":159},"frame":{"x":576,"y":768,"w":138,"h":159}},{"filename":"knight_northEast_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":118,"w":158,"h":158},"frame":{"x":716,"y":769,"w":158,"h":158}},{"filename":"knight_northEast_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":120,"w":158,"h":158},"frame":{"x":876,"y":770,"w":158,"h":158}},{"filename":"knight_northEast_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":118,"w":155,"h":158},"frame":{"x":1036,"y":770,"w":155,"h":158}},{"filename":"knight_northEast_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":118,"w":155,"h":158},"frame":{"x":1193,"y":770,"w":155,"h":158}},{"filename":"knight_northEast_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":124,"w":170,"h":158},"frame":{"x":1350,"y":770,"w":170,"h":158}},{"filename":"knight_southWest_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":146,"w":177,"h":159},"frame":{"x":1522,"y":771,"w":177,"h":159}},{"filename":"knight_northEast_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":161,"h":159},"frame":{"x":1701,"y":778,"w":161,"h":159}},{"filename":"knight_northEast_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":161,"h":159},"frame":{"x":1864,"y":801,"w":161,"h":159}},{"filename":"knight_northWest_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":114,"y":119,"w":129,"h":160},"frame":{"x":1,"y":925,"w":129,"h":160}},{"filename":"knight_northWest_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":98,"y":119,"w":145,"h":160},"frame":{"x":132,"y":927,"w":145,"h":160}},{"filename":"knight_northWest_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":119,"w":142,"h":160},"frame":{"x":279,"y":928,"w":142,"h":160}},{"filename":"knight_northWest_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":119,"w":142,"h":160},"frame":{"x":423,"y":928,"w":142,"h":160}},{"filename":"knight_northWest_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":119,"w":142,"h":160},"frame":{"x":567,"y":929,"w":142,"h":160}},{"filename":"knight_northWest_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":119,"w":142,"h":160},"frame":{"x":711,"y":929,"w":142,"h":160}},{"filename":"knight_northEast_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":116,"w":158,"h":160},"frame":{"x":855,"y":930,"w":158,"h":160}},{"filename":"knight_northEast_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":118,"w":158,"h":160},"frame":{"x":1015,"y":930,"w":158,"h":160}},{"filename":"knight_northEast_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":114,"w":154,"h":160},"frame":{"x":1175,"y":930,"w":154,"h":160}},{"filename":"knight_east_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":124,"w":170,"h":161},"frame":{"x":1331,"y":930,"w":170,"h":161}},{"filename":"knight_southWest_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":144,"w":180,"h":161},"frame":{"x":1503,"y":932,"w":180,"h":161}},{"filename":"knight_southWest_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":77,"y":145,"w":158,"h":162},"frame":{"x":1685,"y":939,"w":158,"h":162}},{"filename":"knight_southWest_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":143,"w":180,"h":162},"frame":{"x":1845,"y":962,"w":180,"h":162}},{"filename":"knight_north_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":112,"w":104,"h":163},"frame":{"x":1,"y":1087,"w":104,"h":163}},{"filename":"knight_south_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":192,"w":101,"h":164},"frame":{"x":107,"y":1089,"w":101,"h":164}},{"filename":"knight_southWest_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":139,"w":155,"h":164},"frame":{"x":210,"y":1090,"w":155,"h":164}},{"filename":"knight_southWest_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":141,"w":155,"h":164},"frame":{"x":367,"y":1090,"w":155,"h":164}},{"filename":"knight_southWest_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":55,"y":157,"w":177,"h":164},"frame":{"x":524,"y":1091,"w":177,"h":164}},{"filename":"knight_northWest_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":95,"y":115,"w":148,"h":164},"frame":{"x":703,"y":1091,"w":148,"h":164}},{"filename":"knight_southWest_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":146,"w":173,"h":164},"frame":{"x":853,"y":1092,"w":173,"h":164}},{"filename":"knight_northWest_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":115,"w":139,"h":164},"frame":{"x":1028,"y":1092,"w":139,"h":164}},{"filename":"knight_north_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":111,"w":108,"h":164},"frame":{"x":1169,"y":1092,"w":108,"h":164}},{"filename":"knight_north_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":111,"w":109,"h":164},"frame":{"x":1279,"y":1093,"w":109,"h":164}},{"filename":"knight_north_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":100,"w":102,"h":165},"frame":{"x":1390,"y":1093,"w":102,"h":165}},{"filename":"knight_southWest_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":145,"w":145,"h":165},"frame":{"x":1494,"y":1095,"w":145,"h":165}},{"filename":"knight_northWest_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":173,"y":141,"w":166,"h":166},"frame":{"x":1641,"y":1103,"w":166,"h":166}},{"filename":"knight_northWest_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":112,"w":139,"h":167},"frame":{"x":1809,"y":1126,"w":139,"h":167}},{"filename":"knight_south_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":172,"w":97,"h":173},"frame":{"x":1950,"y":1126,"w":97,"h":173}},{"filename":"knight_south_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":159,"w":101,"h":169},"frame":{"x":1,"y":1252,"w":101,"h":169}},{"filename":"knight_southWest_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":140,"w":161,"h":169},"frame":{"x":104,"y":1256,"w":161,"h":169}},{"filename":"knight_southWest_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":141,"w":158,"h":169},"frame":{"x":267,"y":1256,"w":158,"h":169}},{"filename":"knight_northWest_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":110,"w":139,"h":169},"frame":{"x":427,"y":1257,"w":139,"h":169}},{"filename":"knight_northWest_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":110,"w":139,"h":169},"frame":{"x":568,"y":1257,"w":139,"h":169}},{"filename":"knight_northEast_attack08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":82,"y":155,"w":128,"h":169},"frame":{"x":709,"y":1257,"w":128,"h":169}},{"filename":"knight_southWest_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":140,"w":155,"h":170},"frame":{"x":839,"y":1258,"w":155,"h":170}},{"filename":"knight_southWest_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":93,"y":139,"w":155,"h":170},"frame":{"x":996,"y":1258,"w":155,"h":170}},{"filename":"knight_northWest_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":98,"y":111,"w":148,"h":170},"frame":{"x":1153,"y":1259,"w":148,"h":170}},{"filename":"knight_northWest_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":173,"y":151,"w":153,"h":170},"frame":{"x":1303,"y":1260,"w":153,"h":170}},{"filename":"knight_northEast_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":143,"y":113,"w":164,"h":170},"frame":{"x":1458,"y":1262,"w":164,"h":170}},{"filename":"knight_southEast_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":139,"w":148,"h":174},"frame":{"x":1624,"y":1271,"w":148,"h":174}},{"filename":"knight_southEast_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":141,"w":119,"h":174},"frame":{"x":1774,"y":1295,"w":119,"h":174}},{"filename":"knight_southEast_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":186,"y":165,"w":148,"h":174},"frame":{"x":1895,"y":1301,"w":148,"h":174}},{"filename":"knight_north_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":103,"w":99,"h":175},"frame":{"x":1,"y":1423,"w":99,"h":175}},{"filename":"knight_south_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":165,"w":102,"h":175},"frame":{"x":102,"y":1427,"w":102,"h":175}},{"filename":"knight_southEast_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":139,"w":126,"h":176},"frame":{"x":206,"y":1427,"w":126,"h":176}},{"filename":"knight_southEast_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":139,"w":145,"h":176},"frame":{"x":334,"y":1428,"w":145,"h":176}},{"filename":"knight_southEast_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":142,"w":135,"h":176},"frame":{"x":481,"y":1428,"w":135,"h":176}},{"filename":"knight_southEast_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":147,"w":139,"h":176},"frame":{"x":618,"y":1428,"w":139,"h":176}},{"filename":"knight_southEast_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":147,"w":142,"h":176},"frame":{"x":759,"y":1430,"w":142,"h":176}},{"filename":"knight_south_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":158,"w":100,"h":176},"frame":{"x":903,"y":1430,"w":100,"h":176}},{"filename":"knight_northWest_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":98,"w":139,"h":176},"frame":{"x":1005,"y":1430,"w":139,"h":176}},{"filename":"knight_north_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":102,"w":99,"h":176},"frame":{"x":1146,"y":1431,"w":99,"h":176}},{"filename":"knight_north_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":102,"w":100,"h":176},"frame":{"x":1247,"y":1432,"w":100,"h":176}},{"filename":"knight_south_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":152,"w":107,"h":177},"frame":{"x":1349,"y":1432,"w":107,"h":177}},{"filename":"knight_southEast_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":138,"w":129,"h":177},"frame":{"x":1458,"y":1434,"w":129,"h":177}},{"filename":"knight_south_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":161,"w":98,"h":178},"frame":{"x":1589,"y":1447,"w":98,"h":178}},{"filename":"knight_south_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":161,"w":99,"h":179},"frame":{"x":1689,"y":1471,"w":99,"h":179}},{"filename":"knight_south_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":161,"w":98,"h":179},"frame":{"x":1790,"y":1471,"w":98,"h":179}},{"filename":"knight_northEast_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":162,"y":97,"w":138,"h":179},"frame":{"x":1890,"y":1477,"w":138,"h":179}},{"filename":"knight_south_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":152,"w":99,"h":182},"frame":{"x":1,"y":1600,"w":99,"h":182}},{"filename":"knight_south_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":149,"w":102,"h":182},"frame":{"x":102,"y":1604,"w":102,"h":182}},{"filename":"knight_east_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":129,"y":100,"w":117,"h":182},"frame":{"x":206,"y":1605,"w":117,"h":182}},{"filename":"knight_northWest_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":95,"y":94,"w":141,"h":181},"frame":{"x":325,"y":1606,"w":141,"h":181}},{"filename":"knight_southEast_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":139,"h":182},"frame":{"x":468,"y":1606,"w":139,"h":182}},{"filename":"knight_southEast_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":139,"h":182},"frame":{"x":609,"y":1606,"w":139,"h":182}},{"filename":"knight_southEast_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":139,"h":182},"frame":{"x":750,"y":1608,"w":139,"h":182}},{"filename":"knight_southEast_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":139,"h":182},"frame":{"x":891,"y":1608,"w":139,"h":182}},{"filename":"knight_south_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":149,"w":102,"h":182},"frame":{"x":1032,"y":1608,"w":102,"h":182}},{"filename":"knight_south_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":159,"w":99,"h":182},"frame":{"x":1136,"y":1609,"w":99,"h":182}},{"filename":"knight_south_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":160,"w":97,"h":182},"frame":{"x":1237,"y":1610,"w":97,"h":182}},{"filename":"knight_north_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":147,"y":94,"w":101,"h":182},"frame":{"x":1336,"y":1611,"w":101,"h":182}},{"filename":"knight_southEast_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":143,"w":139,"h":182},"frame":{"x":1439,"y":1613,"w":139,"h":182}},{"filename":"knight_south_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":156,"w":98,"h":184},"frame":{"x":1580,"y":1627,"w":98,"h":184}},{"filename":"knight_north_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":95,"w":99,"h":184},"frame":{"x":1680,"y":1652,"w":99,"h":184}},{"filename":"knight_northEast_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":145,"w":106,"h":184},"frame":{"x":1781,"y":1652,"w":106,"h":184}},{"filename":"knight_northWest_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":117,"y":98,"w":139,"h":186},"frame":{"x":1889,"y":1658,"w":139,"h":186}},{"filename":"knight_north_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":78,"w":99,"h":196},"frame":{"x":1,"y":1784,"w":99,"h":196}},{"filename":"knight_north_attack16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":78,"w":96,"h":196},"frame":{"x":102,"y":1788,"w":96,"h":196}},{"filename":"knight_northWest_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":90,"w":105,"h":196},"frame":{"x":200,"y":1789,"w":105,"h":196}},{"filename":"knight_north_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":147,"w":97,"h":197},"frame":{"x":307,"y":1789,"w":97,"h":197}},{"filename":"knight_north_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":139,"w":95,"h":198},"frame":{"x":406,"y":1790,"w":95,"h":198}},{"filename":"knight_north_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":86,"w":98,"h":203},"frame":{"x":503,"y":1790,"w":98,"h":203}},{"filename":"knight_north_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":147,"y":70,"w":100,"h":204},"frame":{"x":603,"y":1790,"w":100,"h":204}},{"filename":"knight_southEast_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":66,"w":141,"h":205},"frame":{"x":705,"y":1792,"w":141,"h":205}},{"filename":"knight_west_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":69,"w":117,"h":208},"frame":{"x":848,"y":1792,"w":117,"h":208}},{"filename":"knight_north_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":64,"w":98,"h":213},"frame":{"x":967,"y":1792,"w":98,"h":213}},{"filename":"knight_south_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":59,"w":100,"h":219},"frame":{"x":1067,"y":1793,"w":100,"h":219}},{"filename":"knight_southWest_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":164,"y":54,"w":97,"h":221},"frame":{"x":1169,"y":1794,"w":97,"h":221}},{"filename":"knight_southWest_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":167,"y":45,"w":106,"h":223},"frame":{"x":1268,"y":1795,"w":106,"h":223}}]},{"image":"antler-knight-2.png","format":"RGBA8888","size":{"w":2030,"h":1914},"scale":1,"frames":[{"filename":"knight_west_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":40,"y":128,"w":209,"h":152},"frame":{"x":1,"y":1,"w":209,"h":152}},{"filename":"knight_west_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":128,"w":208,"h":152},"frame":{"x":1,"y":155,"w":208,"h":152}},{"filename":"knight_west_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":40,"y":130,"w":208,"h":150},"frame":{"x":212,"y":1,"w":208,"h":150}},{"filename":"knight_west_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":38,"y":130,"w":208,"h":150},"frame":{"x":1,"y":309,"w":208,"h":150}},{"filename":"knight_east_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":128,"w":206,"h":152},"frame":{"x":1,"y":461,"w":206,"h":152}},{"filename":"knight_west_idle12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":128,"w":206,"h":152},"frame":{"x":1,"y":615,"w":206,"h":152}},{"filename":"knight_east_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":129,"w":206,"h":151},"frame":{"x":1,"y":769,"w":206,"h":151}},{"filename":"knight_east_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":132,"w":208,"h":148},"frame":{"x":422,"y":1,"w":208,"h":148}},{"filename":"knight_west_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":129,"w":206,"h":150},"frame":{"x":1,"y":922,"w":206,"h":150}},{"filename":"knight_east_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":129,"w":205,"h":151},"frame":{"x":1,"y":1074,"w":205,"h":151}},{"filename":"knight_west_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":11,"y":132,"w":208,"h":147},"frame":{"x":632,"y":1,"w":208,"h":147}},{"filename":"knight_west_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":133,"w":206,"h":147},"frame":{"x":842,"y":1,"w":206,"h":147}},{"filename":"knight_east_idle04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":132,"w":206,"h":148},"frame":{"x":1,"y":1227,"w":206,"h":148}},{"filename":"knight_east_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":197,"y":132,"w":203,"h":150},"frame":{"x":1,"y":1377,"w":203,"h":150}},{"filename":"knight_west_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":41,"y":133,"w":205,"h":147},"frame":{"x":1050,"y":1,"w":205,"h":147}},{"filename":"knight_west_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":125,"w":195,"h":156},"frame":{"x":1,"y":1529,"w":195,"h":156}},{"filename":"knight_west_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":126,"w":194,"h":155},"frame":{"x":1,"y":1687,"w":194,"h":155}},{"filename":"knight_east_attack13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":192,"y":134,"w":201,"h":148},"frame":{"x":1257,"y":1,"w":201,"h":148}},{"filename":"knight_east_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":133,"y":133,"w":199,"h":148},"frame":{"x":1460,"y":1,"w":199,"h":148}},{"filename":"knight_west_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":52,"y":127,"w":194,"h":154},"frame":{"x":1661,"y":1,"w":194,"h":154}},{"filename":"knight_west_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":181,"y":124,"w":172,"h":152},"frame":{"x":1857,"y":1,"w":172,"h":152}},{"filename":"knight_south_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":37,"w":94,"h":227},"frame":{"x":209,"y":461,"w":94,"h":227}},{"filename":"knight_north_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":155,"w":92,"h":191},"frame":{"x":209,"y":690,"w":92,"h":191}},{"filename":"knight_southWest_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":183,"y":86,"w":103,"h":186},"frame":{"x":209,"y":883,"w":103,"h":186}},{"filename":"knight_west_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":45,"y":127,"w":193,"h":154},"frame":{"x":422,"y":151,"w":193,"h":154}},{"filename":"knight_northWest_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":140,"y":121,"w":106,"h":156},"frame":{"x":314,"y":153,"w":106,"h":156}},{"filename":"knight_south_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":146,"y":187,"w":101,"h":178},"frame":{"x":211,"y":155,"w":101,"h":178}},{"filename":"knight_east_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":156,"y":127,"w":192,"h":151},"frame":{"x":422,"y":307,"w":192,"h":151}},{"filename":"knight_southWest_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":193,"y":96,"w":106,"h":172},"frame":{"x":314,"y":311,"w":106,"h":172}},{"filename":"knight_northWest_run09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":95,"y":92,"w":148,"h":182},"frame":{"x":305,"y":485,"w":148,"h":182}},{"filename":"knight_southWest_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":140,"w":161,"h":167},"frame":{"x":455,"y":460,"w":161,"h":167}},{"filename":"knight_east_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":24,"y":133,"w":190,"h":148},"frame":{"x":455,"y":629,"w":190,"h":148}},{"filename":"knight_northEast_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":162,"y":117,"w":148,"h":157},"frame":{"x":305,"y":669,"w":148,"h":157}},{"filename":"knight_southEast_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":137,"w":142,"h":178},"frame":{"x":314,"y":828,"w":142,"h":178}},{"filename":"knight_east_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":123,"w":192,"h":157},"frame":{"x":458,"y":779,"w":192,"h":157}},{"filename":"knight_east_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":123,"w":192,"h":157},"frame":{"x":458,"y":938,"w":192,"h":157}},{"filename":"knight_northWest_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":117,"w":142,"h":162},"frame":{"x":314,"y":1008,"w":142,"h":162}},{"filename":"knight_west_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":53,"y":126,"w":191,"h":155},"frame":{"x":458,"y":1097,"w":191,"h":155}},{"filename":"knight_east_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":158,"y":125,"w":190,"h":155},"frame":{"x":632,"y":150,"w":190,"h":155}},{"filename":"knight_west_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":59,"y":126,"w":190,"h":155},"frame":{"x":824,"y":150,"w":190,"h":155}},{"filename":"knight_west_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":63,"y":127,"w":186,"h":154},"frame":{"x":1016,"y":150,"w":186,"h":154}},{"filename":"knight_east_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":158,"y":128,"w":185,"h":151},"frame":{"x":616,"y":307,"w":185,"h":151}},{"filename":"knight_southWest_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":145,"w":180,"h":162},"frame":{"x":618,"y":460,"w":180,"h":162}},{"filename":"knight_west_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":55,"y":129,"w":187,"h":152},"frame":{"x":803,"y":307,"w":187,"h":152}},{"filename":"knight_southWest_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":146,"w":180,"h":161},"frame":{"x":800,"y":461,"w":180,"h":161}},{"filename":"knight_west_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":186,"y":127,"w":181,"h":150},"frame":{"x":647,"y":624,"w":181,"h":150}},{"filename":"knight_southWest_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":68,"y":144,"w":180,"h":161},"frame":{"x":652,"y":776,"w":180,"h":161}},{"filename":"knight_east_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":161,"y":124,"w":180,"h":157},"frame":{"x":652,"y":939,"w":180,"h":157}},{"filename":"knight_northEast_idle10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":122,"w":180,"h":154},"frame":{"x":651,"y":1098,"w":180,"h":154}},{"filename":"knight_southWest_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":145,"w":154,"h":148},"frame":{"x":830,"y":624,"w":154,"h":148}},{"filename":"knight_southEast_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":139,"w":148,"h":174},"frame":{"x":834,"y":774,"w":148,"h":174}},{"filename":"knight_southWest_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":145,"w":154,"h":148},"frame":{"x":834,"y":950,"w":154,"h":148}},{"filename":"knight_west_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":70,"y":128,"w":170,"h":152},"frame":{"x":833,"y":1100,"w":170,"h":152}},{"filename":"knight_southWest_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":152,"w":180,"h":155},"frame":{"x":1204,"y":151,"w":180,"h":155}},{"filename":"knight_northEast_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":121,"w":180,"h":157},"frame":{"x":1386,"y":151,"w":180,"h":157}},{"filename":"knight_east_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":124,"w":180,"h":159},"frame":{"x":1568,"y":157,"w":180,"h":159}},{"filename":"knight_north_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":110,"h":160},"frame":{"x":1750,"y":157,"w":110,"h":160}},{"filename":"knight_southEast_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":154,"w":167,"h":162},"frame":{"x":1862,"y":155,"w":167,"h":162}},{"filename":"knight_southEast_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":137,"w":139,"h":174},"frame":{"x":984,"y":774,"w":139,"h":174}},{"filename":"knight_west_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":63,"y":130,"w":177,"h":152},"frame":{"x":1016,"y":306,"w":177,"h":152}},{"filename":"knight_northEast_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":124,"w":177,"h":152},"frame":{"x":1195,"y":308,"w":177,"h":152}},{"filename":"knight_southWest_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":148,"w":177,"h":159},"frame":{"x":1374,"y":310,"w":177,"h":159}},{"filename":"knight_southWest_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":71,"y":148,"w":177,"h":159},"frame":{"x":1553,"y":318,"w":177,"h":159}},{"filename":"knight_northEast_attack14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":184,"y":106,"w":174,"h":154},"frame":{"x":1732,"y":319,"w":174,"h":154}},{"filename":"knight_northWest_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":120,"y":120,"w":120,"h":155},"frame":{"x":1908,"y":319,"w":120,"h":155}},{"filename":"knight_north_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":108,"h":161},"frame":{"x":982,"y":461,"w":108,"h":161}},{"filename":"knight_north_walk13.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":117,"w":101,"h":162},"frame":{"x":1092,"y":460,"w":101,"h":162}},{"filename":"knight_east_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":124,"w":170,"h":161},"frame":{"x":1195,"y":462,"w":170,"h":161}},{"filename":"knight_west_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":70,"y":128,"w":170,"h":152},"frame":{"x":1367,"y":471,"w":170,"h":152}},{"filename":"knight_northWest_attack05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":165,"y":135,"w":168,"h":165},"frame":{"x":1539,"y":479,"w":168,"h":165}},{"filename":"knight_south_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":95,"w":92,"h":165},"frame":{"x":1709,"y":479,"w":92,"h":165}},{"filename":"knight_north_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":96,"w":102,"h":177},"frame":{"x":1803,"y":475,"w":102,"h":177}},{"filename":"knight_northEast_attack07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":88,"y":151,"w":122,"h":176},"frame":{"x":1907,"y":476,"w":122,"h":176}},{"filename":"knight_northEast_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":114,"w":161,"h":164},"frame":{"x":209,"y":1172,"w":161,"h":164}},{"filename":"knight_east_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":158,"y":127,"w":162,"h":157},"frame":{"x":209,"y":1338,"w":162,"h":157}},{"filename":"knight_southEast_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":170,"y":168,"w":167,"h":157},"frame":{"x":206,"y":1497,"w":167,"h":157}},{"filename":"knight_southWest_attack11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":84,"y":164,"w":161,"h":157},"frame":{"x":198,"y":1656,"w":161,"h":157}},{"filename":"knight_southWest_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":145,"w":154,"h":157},"frame":{"x":361,"y":1656,"w":154,"h":157}},{"filename":"knight_northEast_walk01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":161,"h":159},"frame":{"x":517,"y":1254,"w":161,"h":159}},{"filename":"knight_northEast_walk02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":161,"h":159},"frame":{"x":680,"y":1254,"w":161,"h":159}},{"filename":"knight_northEast_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":161,"h":159},"frame":{"x":843,"y":1254,"w":161,"h":159}},{"filename":"knight_southEast_run08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":142,"w":142,"h":178},"frame":{"x":373,"y":1254,"w":142,"h":178}},{"filename":"knight_southEast_idle08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":147,"w":142,"h":178},"frame":{"x":375,"y":1434,"w":142,"h":178}},{"filename":"knight_southWest_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":87,"y":139,"w":158,"h":166},"frame":{"x":519,"y":1415,"w":158,"h":166}},{"filename":"knight_northEast_attack12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":171,"y":108,"w":161,"h":161},"frame":{"x":679,"y":1415,"w":161,"h":161}},{"filename":"knight_northEast_run07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":162,"y":115,"w":157,"h":161},"frame":{"x":842,"y":1415,"w":157,"h":161}},{"filename":"knight_northEast_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":120,"w":155,"h":156},"frame":{"x":519,"y":1583,"w":155,"h":156}},{"filename":"knight_northEast_walk12.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":119,"w":155,"h":157},"frame":{"x":517,"y":1741,"w":155,"h":157}},{"filename":"knight_southWest_attack09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":190,"y":107,"w":135,"h":161},"frame":{"x":1001,"y":1415,"w":135,"h":161}},{"filename":"knight_northEast_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":119,"w":155,"h":159},"frame":{"x":679,"y":1578,"w":155,"h":159}},{"filename":"knight_northEast_run04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":113,"w":154,"h":165},"frame":{"x":836,"y":1578,"w":154,"h":165}},{"filename":"knight_northWest_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":114,"w":145,"h":165},"frame":{"x":992,"y":1578,"w":145,"h":165}},{"filename":"knight_southWest_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":90,"y":146,"w":148,"h":159},"frame":{"x":674,"y":1741,"w":148,"h":159}},{"filename":"knight_northEast_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":159,"y":113,"w":154,"h":165},"frame":{"x":824,"y":1745,"w":154,"h":165}},{"filename":"knight_northWest_attack01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":114,"w":145,"h":167},"frame":{"x":980,"y":1745,"w":145,"h":167}},{"filename":"knight_southEast_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":146,"w":136,"h":167},"frame":{"x":1127,"y":1745,"w":136,"h":167}},{"filename":"knight_northWest_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":95,"y":120,"w":148,"h":159},"frame":{"x":1265,"y":625,"w":148,"h":159}},{"filename":"knight_southEast_run06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":143,"w":119,"h":173},"frame":{"x":1415,"y":625,"w":119,"h":173}},{"filename":"knight_southEast_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":138,"w":145,"h":177},"frame":{"x":1536,"y":646,"w":145,"h":177}},{"filename":"knight_northEast_attack10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":127,"y":137,"w":106,"h":178},"frame":{"x":1683,"y":646,"w":106,"h":178}},{"filename":"knight_northWest_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":108,"w":139,"h":171},"frame":{"x":1791,"y":654,"w":139,"h":171}},{"filename":"knight_northEast_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":139,"y":111,"w":97,"h":177},"frame":{"x":1932,"y":654,"w":97,"h":177}},{"filename":"knight_southEast_walk05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":136,"w":138,"h":177},"frame":{"x":1125,"y":625,"w":138,"h":177}},{"filename":"knight_northWest_walk14.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":120,"w":139,"h":159},"frame":{"x":1125,"y":804,"w":139,"h":159}},{"filename":"knight_southEast_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":146,"w":139,"h":177},"frame":{"x":1266,"y":786,"w":139,"h":177}},{"filename":"knight_southEast_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":138,"w":126,"h":177},"frame":{"x":1407,"y":800,"w":126,"h":177}},{"filename":"knight_northWest_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":114,"w":142,"h":165},"frame":{"x":1535,"y":825,"w":142,"h":165}},{"filename":"knight_south_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":142,"y":158,"w":108,"h":166},"frame":{"x":1679,"y":826,"w":108,"h":166}},{"filename":"knight_southEast_attack03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":144,"y":146,"w":139,"h":165},"frame":{"x":1789,"y":827,"w":139,"h":165}},{"filename":"knight_north_attack04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":155,"y":107,"w":99,"h":185},"frame":{"x":1930,"y":833,"w":99,"h":185}},{"filename":"knight_northWest_idle05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":101,"y":113,"w":142,"h":166},"frame":{"x":1138,"y":965,"w":142,"h":166}},{"filename":"knight_southEast_idle-2.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":141,"w":119,"h":174},"frame":{"x":1282,"y":965,"w":119,"h":174}},{"filename":"knight_southEast_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":160,"y":141,"w":129,"h":174},"frame":{"x":1403,"y":979,"w":129,"h":174}},{"filename":"knight_southEast_run10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":157,"y":146,"w":139,"h":162},"frame":{"x":1534,"y":992,"w":139,"h":162}},{"filename":"knight_northWest_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":107,"w":139,"h":172},"frame":{"x":1675,"y":994,"w":139,"h":172}},{"filename":"knight_southEast_run05.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":142,"w":106,"h":173},"frame":{"x":1816,"y":994,"w":106,"h":173}},{"filename":"knight_north_walk04.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":147,"y":117,"w":105,"h":162},"frame":{"x":1924,"y":1020,"w":105,"h":162}},{"filename":"knight_northWest_idle01.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":107,"w":139,"h":172},"frame":{"x":1138,"y":1133,"w":139,"h":172}},{"filename":"knight_south_idle-3.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":157,"w":104,"h":173},"frame":{"x":1279,"y":1141,"w":104,"h":173}},{"filename":"knight_northWest_attack00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":107,"w":139,"h":172},"frame":{"x":1385,"y":1155,"w":139,"h":172}},{"filename":"knight_northWest_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":104,"w":139,"h":173},"frame":{"x":1526,"y":1156,"w":139,"h":173}},{"filename":"knight_northWest_idle-5.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":113,"w":136,"h":161},"frame":{"x":1667,"y":1168,"w":136,"h":161}},{"filename":"knight_south_walk06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":149,"w":102,"h":183},"frame":{"x":1805,"y":1169,"w":102,"h":183}},{"filename":"knight_north_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":105,"w":100,"h":173},"frame":{"x":1909,"y":1184,"w":100,"h":173}},{"filename":"knight_southEast_walk16.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":154,"y":138,"w":129,"h":177},"frame":{"x":1138,"y":1307,"w":129,"h":177}},{"filename":"knight_north_idle09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":105,"w":100,"h":173},"frame":{"x":1269,"y":1316,"w":100,"h":173}},{"filename":"knight_southEast_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":164,"y":143,"w":132,"h":172},"frame":{"x":1371,"y":1329,"w":132,"h":172}},{"filename":"knight_northWest_idle-4.5.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":104,"y":119,"w":132,"h":156},"frame":{"x":1505,"y":1331,"w":132,"h":156}},{"filename":"knight_northWest_walk15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":111,"y":120,"w":129,"h":159},"frame":{"x":1639,"y":1331,"w":129,"h":159}},{"filename":"knight_northWest_walk03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":120,"y":120,"w":126,"h":159},"frame":{"x":1770,"y":1354,"w":126,"h":159}},{"filename":"knight_south_walk11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":152,"y":150,"w":100,"h":184},"frame":{"x":1898,"y":1359,"w":100,"h":184}},{"filename":"knight_south_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":156,"w":99,"h":184},"frame":{"x":1139,"y":1486,"w":99,"h":184}},{"filename":"knight_south_idle07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":161,"w":99,"h":179},"frame":{"x":1240,"y":1491,"w":99,"h":179}},{"filename":"knight_south_attack02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":165,"w":99,"h":168},"frame":{"x":1341,"y":1503,"w":99,"h":168}},{"filename":"knight_north_idle06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":150,"y":100,"w":99,"h":178},"frame":{"x":1442,"y":1503,"w":99,"h":178}},{"filename":"knight_north_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":94,"w":99,"h":184},"frame":{"x":1543,"y":1492,"w":99,"h":184}},{"filename":"knight_north_walk10.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":148,"y":94,"w":99,"h":184},"frame":{"x":1644,"y":1492,"w":99,"h":184}},{"filename":"knight_north_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":81,"w":99,"h":182},"frame":{"x":1745,"y":1515,"w":99,"h":182}},{"filename":"knight_south_walk07.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":150,"w":99,"h":183},"frame":{"x":1846,"y":1545,"w":99,"h":183}},{"filename":"knight_north_idle03.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":97,"w":98,"h":182},"frame":{"x":1265,"y":1730,"w":98,"h":182}},{"filename":"knight_south_walk08.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":151,"w":99,"h":183},"frame":{"x":1365,"y":1730,"w":99,"h":183}},{"filename":"knight_north_idle00.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":95,"w":98,"h":184},"frame":{"x":1466,"y":1683,"w":98,"h":184}},{"filename":"knight_south_walk09.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":153,"y":151,"w":99,"h":183},"frame":{"x":1566,"y":1678,"w":99,"h":183}},{"filename":"knight_south_idle02.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":157,"w":99,"h":183},"frame":{"x":1667,"y":1699,"w":99,"h":183}},{"filename":"knight_south_idle11.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":157,"w":99,"h":183},"frame":{"x":1768,"y":1730,"w":99,"h":183}},{"filename":"knight_south_attack15.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":173,"w":99,"h":183},"frame":{"x":1869,"y":1730,"w":99,"h":183}},{"filename":"knight_south_attack17.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":151,"y":157,"w":96,"h":183},"frame":{"x":1005,"y":950,"w":96,"h":183}},{"filename":"knight_south_attack06.png","rotated":false,"trimmed":true,"sourceSize":{"w":400,"h":400},"spriteSourceSize":{"x":149,"y":81,"w":96,"h":179},"frame":{"x":1006,"y":1135,"w":96,"h":179}}]}],"meta":{"app":"https://www.codeandweb.com/texturepacker","version":"3.0","smartupdate":"$TexturePacker:SmartUpdate:362c1e7ecc64507a5268e5273ff1d256:484abce83f60fc051168b6c7fdc3c1a6:6d3baa6e40169c136762beaa361205c6$"}} 2 | -------------------------------------------------------------------------------- /assets/blades.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/blades.png -------------------------------------------------------------------------------- /assets/block_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/block_01.mp3 -------------------------------------------------------------------------------- /assets/block_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/block_01.ogg -------------------------------------------------------------------------------- /assets/breakout.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | { 4 | "image": "breakout.png", 5 | "format": "RGBA8888", 6 | "size": { 7 | "w": 132, 8 | "h": 128 9 | }, 10 | "scale": 1, 11 | "frames": [ 12 | { 13 | "filename": "blue1.png", 14 | "rotated": false, 15 | "trimmed": false, 16 | "sourceSize": { 17 | "w": 64, 18 | "h": 32 19 | }, 20 | "spriteSourceSize": { 21 | "x": 0, 22 | "y": 0, 23 | "w": 64, 24 | "h": 32 25 | }, 26 | "frame": { 27 | "x": 1, 28 | "y": 1, 29 | "w": 64, 30 | "h": 32 31 | } 32 | }, 33 | { 34 | "filename": "green1.png", 35 | "rotated": false, 36 | "trimmed": false, 37 | "sourceSize": { 38 | "w": 64, 39 | "h": 32 40 | }, 41 | "spriteSourceSize": { 42 | "x": 0, 43 | "y": 0, 44 | "w": 64, 45 | "h": 32 46 | }, 47 | "frame": { 48 | "x": 1, 49 | "y": 35, 50 | "w": 64, 51 | "h": 32 52 | } 53 | }, 54 | { 55 | "filename": "grey1.png", 56 | "rotated": false, 57 | "trimmed": false, 58 | "sourceSize": { 59 | "w": 64, 60 | "h": 32 61 | }, 62 | "spriteSourceSize": { 63 | "x": 0, 64 | "y": 0, 65 | "w": 64, 66 | "h": 32 67 | }, 68 | "frame": { 69 | "x": 1, 70 | "y": 69, 71 | "w": 64, 72 | "h": 32 73 | } 74 | }, 75 | { 76 | "filename": "paddle.png", 77 | "rotated": false, 78 | "trimmed": false, 79 | "sourceSize": { 80 | "w": 104, 81 | "h": 24 82 | }, 83 | "spriteSourceSize": { 84 | "x": 0, 85 | "y": 0, 86 | "w": 104, 87 | "h": 24 88 | }, 89 | "frame": { 90 | "x": 1, 91 | "y": 103, 92 | "w": 104, 93 | "h": 24 94 | } 95 | }, 96 | { 97 | "filename": "purple1.png", 98 | "rotated": false, 99 | "trimmed": false, 100 | "sourceSize": { 101 | "w": 64, 102 | "h": 32 103 | }, 104 | "spriteSourceSize": { 105 | "x": 0, 106 | "y": 0, 107 | "w": 64, 108 | "h": 32 109 | }, 110 | "frame": { 111 | "x": 67, 112 | "y": 1, 113 | "w": 64, 114 | "h": 32 115 | } 116 | }, 117 | { 118 | "filename": "red1.png", 119 | "rotated": false, 120 | "trimmed": false, 121 | "sourceSize": { 122 | "w": 64, 123 | "h": 32 124 | }, 125 | "spriteSourceSize": { 126 | "x": 0, 127 | "y": 0, 128 | "w": 64, 129 | "h": 32 130 | }, 131 | "frame": { 132 | "x": 67, 133 | "y": 35, 134 | "w": 64, 135 | "h": 32 136 | } 137 | }, 138 | { 139 | "filename": "yellow1.png", 140 | "rotated": false, 141 | "trimmed": false, 142 | "sourceSize": { 143 | "w": 64, 144 | "h": 32 145 | }, 146 | "spriteSourceSize": { 147 | "x": 0, 148 | "y": 0, 149 | "w": 64, 150 | "h": 32 151 | }, 152 | "frame": { 153 | "x": 67, 154 | "y": 69, 155 | "w": 64, 156 | "h": 32 157 | } 158 | }, 159 | { 160 | "filename": "ball.png", 161 | "rotated": false, 162 | "trimmed": false, 163 | "sourceSize": { 164 | "w": 22, 165 | "h": 22 166 | }, 167 | "spriteSourceSize": { 168 | "x": 0, 169 | "y": 0, 170 | "w": 22, 171 | "h": 22 172 | }, 173 | "frame": { 174 | "x": 107, 175 | "y": 103, 176 | "w": 22, 177 | "h": 22 178 | } 179 | } 180 | ] 181 | } 182 | ], 183 | "meta": { 184 | "app": "https://www.codeandweb.com/texturepacker", 185 | "version": "3.0", 186 | "smartupdate": "$TexturePacker:SmartUpdate:20212c36de3f3d5ba029e82d7812be55:2878841f5784a7af8b8f0c8eae07d14a:aa94e37632703bccd6a813800bf3159a$" 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /assets/breakout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/breakout.png -------------------------------------------------------------------------------- /assets/button.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | { 4 | "image": "button.png", 5 | "format": "RGBA8888", 6 | "size": { 7 | "w": 402, 8 | "h": 453 9 | }, 10 | "scale": 1, 11 | "frames": [ 12 | { 13 | "filename": "blue_panel_breakoutRPG.png", 14 | "rotated": false, 15 | "trimmed": false, 16 | "sourceSize": { 17 | "w": 400, 18 | "h": 400 19 | }, 20 | "spriteSourceSize": { 21 | "x": 0, 22 | "y": 0, 23 | "w": 400, 24 | "h": 400 25 | }, 26 | "frame": { 27 | "x": 1, 28 | "y": 1, 29 | "w": 400, 30 | "h": 400 31 | } 32 | }, 33 | { 34 | "filename": "blue_button00.png", 35 | "rotated": false, 36 | "trimmed": false, 37 | "sourceSize": { 38 | "w": 190, 39 | "h": 49 40 | }, 41 | "spriteSourceSize": { 42 | "x": 0, 43 | "y": 0, 44 | "w": 190, 45 | "h": 49 46 | }, 47 | "frame": { 48 | "x": 1, 49 | "y": 403, 50 | "w": 190, 51 | "h": 49 52 | } 53 | }, 54 | { 55 | "filename": "blue_button01.png", 56 | "rotated": false, 57 | "trimmed": false, 58 | "sourceSize": { 59 | "w": 190, 60 | "h": 45 61 | }, 62 | "spriteSourceSize": { 63 | "x": 0, 64 | "y": 0, 65 | "w": 190, 66 | "h": 45 67 | }, 68 | "frame": { 69 | "x": 193, 70 | "y": 403, 71 | "w": 190, 72 | "h": 45 73 | } 74 | } 75 | ] 76 | } 77 | ], 78 | "meta": { 79 | "app": "https://www.codeandweb.com/texturepacker", 80 | "version": "3.0", 81 | "smartupdate": "$TexturePacker:SmartUpdate:e13f6e98be1f086eef64929a0e69d074:50fa97118c94248833c5bd08e4f55c51:c39245c3a59c1712d97d26c862b4cbc5$" 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /assets/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/button.png -------------------------------------------------------------------------------- /assets/clash_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/clash_01.mp3 -------------------------------------------------------------------------------- /assets/clash_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/clash_01.ogg -------------------------------------------------------------------------------- /assets/coins25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/coins25.png -------------------------------------------------------------------------------- /assets/combust.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | { 4 | "image": "combust.png", 5 | "format": "RGBA8888", 6 | "size": { 7 | "w": 949, 8 | "h": 130 9 | }, 10 | "scale": 1, 11 | "frames": [ 12 | { 13 | "filename": "fire1_ 13.png", 14 | "rotated": false, 15 | "trimmed": true, 16 | "sourceSize": { 17 | "w": 128, 18 | "h": 128 19 | }, 20 | "spriteSourceSize": { 21 | "x": 37, 22 | "y": 14, 23 | "w": 49, 24 | "h": 113 25 | }, 26 | "frame": { 27 | "x": 1, 28 | "y": 1, 29 | "w": 49, 30 | "h": 113 31 | } 32 | }, 33 | { 34 | "filename": "fire1_ 07.png", 35 | "rotated": false, 36 | "trimmed": true, 37 | "sourceSize": { 38 | "w": 128, 39 | "h": 128 40 | }, 41 | "spriteSourceSize": { 42 | "x": 26, 43 | "y": 13, 44 | "w": 75, 45 | "h": 115 46 | }, 47 | "frame": { 48 | "x": 52, 49 | "y": 1, 50 | "w": 75, 51 | "h": 115 52 | } 53 | }, 54 | { 55 | "filename": "fire1_ 12.png", 56 | "rotated": false, 57 | "trimmed": true, 58 | "sourceSize": { 59 | "w": 128, 60 | "h": 128 61 | }, 62 | "spriteSourceSize": { 63 | "x": 26, 64 | "y": 11, 65 | "w": 72, 66 | "h": 117 67 | }, 68 | "frame": { 69 | "x": 129, 70 | "y": 1, 71 | "w": 72, 72 | "h": 117 73 | } 74 | }, 75 | { 76 | "filename": "fire1_ 10.png", 77 | "rotated": false, 78 | "trimmed": true, 79 | "sourceSize": { 80 | "w": 128, 81 | "h": 128 82 | }, 83 | "spriteSourceSize": { 84 | "x": 24, 85 | "y": 1, 86 | "w": 72, 87 | "h": 123 88 | }, 89 | "frame": { 90 | "x": 203, 91 | "y": 1, 92 | "w": 72, 93 | "h": 123 94 | } 95 | }, 96 | { 97 | "filename": "fire1_ 09.png", 98 | "rotated": false, 99 | "trimmed": true, 100 | "sourceSize": { 101 | "w": 128, 102 | "h": 128 103 | }, 104 | "spriteSourceSize": { 105 | "x": 28, 106 | "y": 0, 107 | "w": 72, 108 | "h": 125 109 | }, 110 | "frame": { 111 | "x": 277, 112 | "y": 1, 113 | "w": 72, 114 | "h": 125 115 | } 116 | }, 117 | { 118 | "filename": "fire1_ 05.png", 119 | "rotated": false, 120 | "trimmed": true, 121 | "sourceSize": { 122 | "w": 128, 123 | "h": 128 124 | }, 125 | "spriteSourceSize": { 126 | "x": 24, 127 | "y": 2, 128 | "w": 78, 129 | "h": 126 130 | }, 131 | "frame": { 132 | "x": 351, 133 | "y": 1, 134 | "w": 78, 135 | "h": 126 136 | } 137 | }, 138 | { 139 | "filename": "fire1_ 01.png", 140 | "rotated": false, 141 | "trimmed": true, 142 | "sourceSize": { 143 | "w": 128, 144 | "h": 128 145 | }, 146 | "spriteSourceSize": { 147 | "x": 25, 148 | "y": 1, 149 | "w": 70, 150 | "h": 127 151 | }, 152 | "frame": { 153 | "x": 431, 154 | "y": 1, 155 | "w": 70, 156 | "h": 127 157 | } 158 | }, 159 | { 160 | "filename": "fire1_ 02.png", 161 | "rotated": false, 162 | "trimmed": true, 163 | "sourceSize": { 164 | "w": 128, 165 | "h": 128 166 | }, 167 | "spriteSourceSize": { 168 | "x": 29, 169 | "y": 0, 170 | "w": 67, 171 | "h": 128 172 | }, 173 | "frame": { 174 | "x": 503, 175 | "y": 1, 176 | "w": 67, 177 | "h": 128 178 | } 179 | }, 180 | { 181 | "filename": "fire1_ 03.png", 182 | "rotated": false, 183 | "trimmed": true, 184 | "sourceSize": { 185 | "w": 128, 186 | "h": 128 187 | }, 188 | "spriteSourceSize": { 189 | "x": 25, 190 | "y": 0, 191 | "w": 74, 192 | "h": 128 193 | }, 194 | "frame": { 195 | "x": 572, 196 | "y": 1, 197 | "w": 74, 198 | "h": 128 199 | } 200 | }, 201 | { 202 | "filename": "fire1_ 04.png", 203 | "rotated": false, 204 | "trimmed": true, 205 | "sourceSize": { 206 | "w": 128, 207 | "h": 128 208 | }, 209 | "spriteSourceSize": { 210 | "x": 24, 211 | "y": 0, 212 | "w": 77, 213 | "h": 128 214 | }, 215 | "frame": { 216 | "x": 648, 217 | "y": 1, 218 | "w": 77, 219 | "h": 128 220 | } 221 | }, 222 | { 223 | "filename": "fire1_ 06.png", 224 | "rotated": false, 225 | "trimmed": true, 226 | "sourceSize": { 227 | "w": 128, 228 | "h": 128 229 | }, 230 | "spriteSourceSize": { 231 | "x": 27, 232 | "y": 0, 233 | "w": 72, 234 | "h": 128 235 | }, 236 | "frame": { 237 | "x": 727, 238 | "y": 1, 239 | "w": 72, 240 | "h": 128 241 | } 242 | }, 243 | { 244 | "filename": "fire1_ 08.png", 245 | "rotated": false, 246 | "trimmed": true, 247 | "sourceSize": { 248 | "w": 128, 249 | "h": 128 250 | }, 251 | "spriteSourceSize": { 252 | "x": 29, 253 | "y": 0, 254 | "w": 69, 255 | "h": 128 256 | }, 257 | "frame": { 258 | "x": 801, 259 | "y": 1, 260 | "w": 69, 261 | "h": 128 262 | } 263 | }, 264 | { 265 | "filename": "fire1_ 11.png", 266 | "rotated": false, 267 | "trimmed": true, 268 | "sourceSize": { 269 | "w": 128, 270 | "h": 128 271 | }, 272 | "spriteSourceSize": { 273 | "x": 22, 274 | "y": 0, 275 | "w": 76, 276 | "h": 128 277 | }, 278 | "frame": { 279 | "x": 872, 280 | "y": 1, 281 | "w": 76, 282 | "h": 128 283 | } 284 | } 285 | ] 286 | } 287 | ], 288 | "meta": { 289 | "app": "https://www.codeandweb.com/texturepacker", 290 | "version": "3.0", 291 | "smartupdate": "$TexturePacker:SmartUpdate:42a8150b876041fe656a435aec37f14f:480553a58173bf7cbe11aefc42a29fd6:9a5681ea6f59546aca97c903bfb5e52f$" 292 | } 293 | } 294 | -------------------------------------------------------------------------------- /assets/combust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/combust.png -------------------------------------------------------------------------------- /assets/crit_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/crit_01.mp3 -------------------------------------------------------------------------------- /assets/crit_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/crit_01.ogg -------------------------------------------------------------------------------- /assets/dungeon_ambient_1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/dungeon_ambient_1.mp3 -------------------------------------------------------------------------------- /assets/dungeon_ambient_1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/dungeon_ambient_1.ogg -------------------------------------------------------------------------------- /assets/foom_0.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/foom_0.mp3 -------------------------------------------------------------------------------- /assets/foom_0.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/foom_0.ogg -------------------------------------------------------------------------------- /assets/freeze.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/freeze.mp3 -------------------------------------------------------------------------------- /assets/freeze.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/freeze.ogg -------------------------------------------------------------------------------- /assets/heal.json: -------------------------------------------------------------------------------- 1 | 2 | { 3 | "textures": [ 4 | { 5 | "image": "heal.png", 6 | "format": "RGBA8888", 7 | "size": { 8 | "w": 703, 9 | "h": 879 10 | }, 11 | "scale": 1, 12 | "frames":[{"filename":"00","frame":{"x":0,"y":0,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"01","frame":{"x":0,"y":176,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"02","frame":{"x":176,"y":0,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"03","frame":{"x":176,"y":176,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"04","frame":{"x":0,"y":352,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"05","frame":{"x":176,"y":352,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"06","frame":{"x":352,"y":0,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"07","frame":{"x":352,"y":176,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"08","frame":{"x":352,"y":352,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"09","frame":{"x":0,"y":528,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"10","frame":{"x":176,"y":528,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"11","frame":{"x":352,"y":528,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"12","frame":{"x":528,"y":0,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"13","frame":{"x":528,"y":176,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"14","frame":{"x":528,"y":352,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"15","frame":{"x":528,"y":528,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"16","frame":{"x":0,"y":704,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"17","frame":{"x":176,"y":704,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}},{"filename":"18","frame":{"x":352,"y":704,"w":175,"h":175},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":175,"h":175},"sourceSize":{"w":175,"h":175}}],"meta":{"app":"https://www.leshylabs.com/apps/sstool/","version":"Leshy SpriteSheet Tool v0.8.4","image":"spritesheet.png","size":{"w":703,"h":879},"scale":1} 13 | 14 | } 15 | ], 16 | "meta": { 17 | "app": "https://www.codeandweb.com/texturepacker", 18 | "version": "3.0", 19 | "smartupdate": "$TexturePacker:SmartUpdate:42a8150b876041fe656a435aec37f14f:480553a58173bf7cbe11aefc42a29fd6:9a5681ea6f59546aca97c903bfb5e52f$" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /assets/heal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/heal.png -------------------------------------------------------------------------------- /assets/miss_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/miss_01.mp3 -------------------------------------------------------------------------------- /assets/miss_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/miss_01.ogg -------------------------------------------------------------------------------- /assets/paddle_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/paddle_01.mp3 -------------------------------------------------------------------------------- /assets/paddle_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/paddle_01.ogg -------------------------------------------------------------------------------- /assets/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/screenshot.png -------------------------------------------------------------------------------- /assets/shield.json: -------------------------------------------------------------------------------- 1 | { 2 | "textures": [ 3 | { 4 | "image": "shield.png", 5 | "format": "RGBA8888", 6 | "size": { 7 | "w": 2051, 8 | "h": 2051 9 | }, 10 | "scale": 1, 11 | "frames":[{"filename":"b_0001","frame":{"x":0,"y":0,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0002","frame":{"x":0,"y":513,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0003","frame":{"x":513,"y":0,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0004","frame":{"x":513,"y":513,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0005","frame":{"x":0,"y":1026,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0006","frame":{"x":513,"y":1026,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0007","frame":{"x":1026,"y":0,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0008","frame":{"x":1026,"y":513,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0009","frame":{"x":1026,"y":1026,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0010","frame":{"x":0,"y":1539,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0011","frame":{"x":513,"y":1539,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0012","frame":{"x":1026,"y":1539,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0013","frame":{"x":1539,"y":0,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0014","frame":{"x":1539,"y":513,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0015","frame":{"x":1539,"y":1026,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}},{"filename":"b_0016","frame":{"x":1539,"y":1539,"w":512,"h":512},"rotated":false,"trimmed":false,"spriteSourceSize":{"x":0,"y":0,"w":512,"h":512},"sourceSize":{"w":512,"h":512}}] 12 | } 13 | ], 14 | "meta": { 15 | "app": "https://www.codeandweb.com/texturepacker", 16 | "version": "3.0", 17 | "smartupdate": "$TexturePacker:SmartUpdate:7acd109ce6b3c27ee35cb6f42ec6bcc5:eeaeb2dfb1ef9d2eb0a3a0d6c6c819c5:de2262643e270aaf58b5d08b08daa083$" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/shield.png -------------------------------------------------------------------------------- /assets/skeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/skeleton.png -------------------------------------------------------------------------------- /assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/star.png -------------------------------------------------------------------------------- /assets/tileset_cave_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/tileset_cave_1.png -------------------------------------------------------------------------------- /assets/water_01.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/water_01.mp3 -------------------------------------------------------------------------------- /assets/water_01.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jneums/breakoutRPG/5cac03b68f330e6004f1d14ff1ae75a1a0ddbc94/assets/water_01.ogg -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /items.json: -------------------------------------------------------------------------------- 1 | { 2 | "weapons":{ 3 | "name":"Undead Revenger", 4 | "damage":50, 5 | "speed":0.8, 6 | "value":1000, 7 | "stats":{ 8 | "str":2, 9 | "agi":1, 10 | "sta":6, 11 | "crit":0.08 12 | } 13 | }, 14 | "armor":{ 15 | "slot":"chest", 16 | "type":"mail", 17 | "name":"Deaths Grasp", 18 | "armor":6, 19 | "value":1000, 20 | "stats":{ 21 | "str":3, 22 | "agi":2, 23 | "sta":14 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "phaser3-project-template", 3 | "version": "1.0.9", 4 | "description": "A Phaser 3 Project Template", 5 | "main": "src/index.js", 6 | "scripts": { 7 | "build": "webpack", 8 | "start": "npm run build && webpack-dev-server --port=8000" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/photonstorm/phaser3-project-template.git" 13 | }, 14 | "author": "Richard Davey (http://www.photonstorm.com)", 15 | "license": "MIT", 16 | "licenseUrl": "http://www.opensource.org/licenses/mit-license.php", 17 | "bugs": { 18 | "url": "https://github.com/photonstorm/phaser3-project-template/issues" 19 | }, 20 | "homepage": "https://github.com/photonstorm/phaser3-project-template#readme", 21 | "devDependencies": { 22 | "phaser": "^3.15.1", 23 | "raw-loader": "^0.5.1", 24 | "webpack": "^4.26.1", 25 | "webpack-dev-server": "^3.1.10" 26 | }, 27 | "dependencies": { 28 | "webpack-cli": "^3.1.2" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /spells.js: -------------------------------------------------------------------------------- 1 | function pad(n, width, z) { 2 | z = z || '0'; 3 | n = n + ''; 4 | return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n; 5 | } 6 | 7 | function renameMotions(number) { 8 | if (number < 204) { 9 | return 'walk'+ pad(((number-136)/4), 2, 0); 10 | } else if (number < 248) { 11 | return 'run'+ pad(((number-204)/4), 2, 0); 12 | } else if (number < 322) { 13 | return 'idle'+ pad(((number-270)/4), 2, 0); 14 | } else if (number < 402) { 15 | return 'attack'+ pad(((number-330)/4), 2, 0); 16 | } else { 17 | return; 18 | } 19 | } 20 | function reformat(string) { 21 | let translation; 22 | translateKeys.forEach((key) => { 23 | //console.log(translate[key]); 24 | if(string.includes(translate[key])) { 25 | translation = 'knight_'+ key +'_'+renameMotions(string.substring(string.length-8,string.length-4))+'.png'; 26 | return translation; 27 | } 28 | }) 29 | return translation; 30 | 31 | } 32 | var translate = { 33 | west: 'E_Left', 34 | northWest: 'F_BackLeft', 35 | north: 'G_Back', 36 | northEast: 'H_BackRight', 37 | east: 'A_right', 38 | southEast: 'B_F_right', 39 | south: 'C_Front', 40 | southWest: 'D_FrontLeft', 41 | } 42 | 43 | var translateKeys = Object.keys(translate); 44 | 45 | 46 | var newFrameArray = [[],[],[]]; 47 | for(let i=0; i<3; i++) { 48 | map.textures[i].frames.filter(key =>'filename').map((child) => { 49 | child.filename = reformat(child.filename); 50 | 51 | newFrameArray[i].push(child); 52 | 53 | //console.log(child); 54 | 55 | }) 56 | } 57 | var sortedAntler = { 58 | textures: [ Object.assign({}, map.textures[0], { frames: newFrameArray[0]}), 59 | Object.assign({}, map.textures[1], { frames: newFrameArray[1]}), 60 | Object.assign({}, map.textures[2], { frames: newFrameArray[2]}), 61 | ], 62 | meta: Object.assign({}, map.meta), 63 | }; 64 | console.log(sortedAntler); 65 | console.log(JSON.stringify(map)); 66 | -------------------------------------------------------------------------------- /src/Actions.js: -------------------------------------------------------------------------------- 1 | const Actions = { 2 | walking() { 3 | this.depth = this.y + 64; 4 | this.anims.play(this.name + '_walk_' + this.getFacing(), true); 5 | }, 6 | 7 | 8 | 9 | } 10 | 11 | export default Actions; 12 | -------------------------------------------------------------------------------- /src/Items.js: -------------------------------------------------------------------------------- 1 | const Items = { 2 | weapons: [{ 3 | type: 'twoHandedSword', 4 | name: 'Hand of Justice', 5 | damage: 1002, 6 | speed: 1.8, 7 | value: 10000, 8 | stats: { 9 | str: 3, 10 | agi: 2, 11 | sta: 10, 12 | crit: 1, 13 | }, 14 | }, { 15 | type: 'twoHandedSword', 16 | name: 'Hand of Fury', 17 | damage: 172, 18 | speed: 1.5, 19 | value: 20000, 20 | stats: { 21 | str: 5, 22 | agi: 5, 23 | sta: 10, 24 | crit: 1, 25 | }, 26 | }, { 27 | name: 'Undead Revenger', 28 | damage: 105, 29 | speed: .75, 30 | value: 1000, 31 | stats: { 32 | str: 2, 33 | agi: 1, 34 | sta: 6, 35 | crit: .08, 36 | } 37 | }], 38 | armor: [{ 39 | slot: 'chest', 40 | type: 'plate', 41 | name: 'Plate of the Abyss', 42 | armor: 10, 43 | value: 100000, 44 | stats: { 45 | str: 4, 46 | agi: 3, 47 | sta: 20, 48 | crit: 1, 49 | 50 | }, 51 | }, { 52 | name: 'Deaths Grasp', 53 | slot: 'chest', 54 | type: 'mail', 55 | armor: 6, 56 | value: 1000, 57 | stats: { 58 | str: 3, 59 | agi: 2, 60 | sta: 14, 61 | }, 62 | }], 63 | } 64 | 65 | export default Items; 66 | -------------------------------------------------------------------------------- /src/animations.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function createAnimations(scene) { 4 | //TODO refactor!! 5 | //use .map to create all anims at once 6 | scene.anims.create({ 7 | key: 'gold', 8 | frames: scene.anims.generateFrameNumbers('gold', { start: 0, end: 5 }), 9 | }); 10 | scene.anims.create({ 11 | key: 'button', 12 | frames: scene.anims.generateFrameNames('button', { 13 | prefix: 'blue_button', 14 | suffix: '.png', 15 | start: 1, 16 | end: 2, 17 | zeroPad: 2 18 | }), 19 | repeat: 0, 20 | duration: 500, 21 | yoyo: true, 22 | }); 23 | scene.anims.create({ 24 | key: 'combust', 25 | frames: scene.anims.generateFrameNames('combust', { 26 | prefix: 'fire1_ ', 27 | suffix: '.png', 28 | end: 13, 29 | zeroPad: 2 30 | }), 31 | repeat: 0, 32 | duration: 1500, 33 | }); 34 | scene.anims.create({ 35 | key: 'heal', 36 | frames: scene.anims.generateFrameNames('heal', { 37 | start: 0, 38 | end: 19, 39 | zeroPad: 2, 40 | }), 41 | repeat: 0, 42 | duration: 1000, 43 | }); 44 | scene.anims.create({ 45 | key: 'shield', 46 | frames: scene.anims.generateFrameNames('shield', { 47 | prefix: 'b_', 48 | start: 0, 49 | end: 16, 50 | zeroPad: 4 51 | }), 52 | repeat: 0, 53 | duration: 1500, 54 | }); 55 | 56 | for (let i = 0; i < 8; i++) { 57 | for (let j = 0; j < motions.length; j++) { 58 | scene.anims.create({ 59 | key: 'skeleton' + '_' + motions[j] + '_' + directionNames[i], 60 | frames: scene.anims.generateFrameNames('skeleton', 61 | { 62 | start: anims[motions[j]].startFrame + directions[directionNames[i]].offset, 63 | end: anims[motions[j]].endFrame + directions[directionNames[i]].offset, 64 | }), 65 | 66 | frameRate: anims[motions[j]].frameRate, 67 | repeat: anims[motions[j]].repeat, 68 | yoyo: anims[motions[j]].yoyo, 69 | }) 70 | } 71 | for (let j = 0; j < knightMotions.length; j++) { 72 | scene.anims.create({ 73 | key: 'knight' + '_' + knightMotions[j] + '_' + directionNames[i], 74 | frames: scene.anims.generateFrameNames('knight', { 75 | start: knightAnims[knightMotions[j]].startFrame, 76 | end: knightAnims[knightMotions[j]].endFrame, 77 | zeroPad: 2, 78 | prefix: 'knight_'+directionNames[i]+'_' + knightMotions[j], 79 | suffix: '.png', 80 | }), 81 | 82 | frameRate: anims[motions[j]].frameRate, 83 | repeat: anims[motions[j]].repeat, 84 | yoyo: anims[motions[j]].yoyo, 85 | }) 86 | } 87 | } 88 | } 89 | 90 | 91 | 92 | var knightAnims = { 93 | idle: { 94 | startFrame: 0, 95 | endFrame: 12, 96 | frameRate: 3, 97 | repeat: -1, 98 | yoyo: true, 99 | }, 100 | walk: { 101 | startFrame: 0, 102 | endFrame: 16, 103 | frameRate: 8, 104 | repeat: -1, 105 | }, 106 | attack: { 107 | startFrame: 0, 108 | endFrame: 17, 109 | frameRate: 20, 110 | repeat: 0, 111 | }, 112 | run: { 113 | startFrame: 0, 114 | endFrame: 10, 115 | frameRate: 10, 116 | repeat: 0, 117 | }, 118 | } 119 | 120 | 121 | var directions = { 122 | west: { offset: 0, x: -2, y: 0, opposite: 'east' }, 123 | northWest: { offset: 32, x: -2, y: -1, opposite: 'southEast' }, 124 | north: { offset: 64, x: 0, y: -2, opposite: 'south' }, 125 | northEast: { offset: 96, x: 2, y: -1, opposite: 'southWest' }, 126 | east: { offset: 128, x: 2, y: 0, opposite: 'west' }, 127 | southEast: { offset: 160, x: 2, y: 1, opposite: 'northWest' }, 128 | south: { offset: 192, x: 0, y: 2, opposite: 'north' }, 129 | southWest: { offset: 224, x: -2, y: 1, opposite: 'northEast' }, 130 | }; 131 | 132 | var anims = { 133 | idle: { 134 | startFrame: 0, 135 | endFrame: 3, 136 | frameRate: 3, 137 | repeat: -1, 138 | yoyo: true, 139 | 140 | }, 141 | walk: { 142 | startFrame: 4, 143 | endFrame: 11, 144 | frameRate: 8, 145 | repeat: -1, 146 | }, 147 | attack: { 148 | startFrame: 12, 149 | endFrame: 19, 150 | frameRate: 10, 151 | repeat: 0, 152 | yoyo: false 153 | }, 154 | die: { 155 | startFrame: 20, 156 | endFrame: 27, 157 | frameRate: 10, 158 | repeat: 0, 159 | }, 160 | shoot: { 161 | startFrame: 30, 162 | endFrame: 31, 163 | frameRate: 5, 164 | repeat: 0, 165 | yoyo: true, 166 | }, 167 | }; 168 | 169 | var directionNames = Object.keys(directions) 170 | var motions = Object.keys(anims); 171 | var knightMotions = Object.keys(knightAnims); 172 | 173 | export { createAnimations, directionNames, motions }; 174 | -------------------------------------------------------------------------------- /src/helpers.js: -------------------------------------------------------------------------------- 1 | function addRandomSkeleton(scene) { 2 | skeletons.push(scene.add.existing(new RandomSkeleton(scene))) 3 | } 4 | 5 | function changeCameraTarget() { 6 | if (cameraTarget === skeletons.length-1) { 7 | cameraTarget = 0; 8 | } 9 | cameraTarget++; 10 | active = skeletons[cameraTarget] 11 | scene.cameras.main.startFollow(active); 12 | } 13 | 14 | function transformCoordsX(x) { 15 | let newX = x; 16 | 17 | return newX; 18 | }; 19 | 20 | function transformCoordsY(y) { 21 | let newY = y; 22 | 23 | return newY; 24 | }; 25 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import 'phaser'; 2 | 3 | import BootScene from './scenes/BootScene.js'; 4 | import GameScene from './scenes/GameScene.js'; 5 | import BreakOutScene from './scenes/BreakOutScene.js'; 6 | import UIScene from './scenes/UIScene.js'; 7 | import StartScene from './scenes/StartScene.js'; 8 | 9 | //config file 10 | var config = { 11 | type: Phaser.AUTO, 12 | width: 1280, 13 | height: 720, 14 | backgroundColor: '#000000', 15 | parent: 'phaser-example', 16 | physics: { 17 | default: 'arcade', 18 | arcade: { 19 | debug: false, 20 | gravity: { y: 0 } 21 | } 22 | }, 23 | scene: [ BootScene, GameScene, BreakOutScene, UIScene, StartScene ] 24 | }; 25 | 26 | var game = new Phaser.Game(config); 27 | -------------------------------------------------------------------------------- /src/scenes/BootScene.js: -------------------------------------------------------------------------------- 1 | import { createAnimations } from '../animations.js'; 2 | 3 | export default class BootScene extends Phaser.Scene { 4 | constructor() { 5 | super({ 6 | key: 'BootScene', 7 | }); 8 | } 9 | 10 | //loading up all assets before starting GameScene 11 | preload() { 12 | this.load.audio('music', ['./assets/dungeon_ambient_1.mp3', './assets/dungeon_ambient_1.ogg']); 13 | this.load.audio('block', ['./assets/block_01.mp3', './assets/block_01.ogg']); 14 | this.load.audio('clash', ['./assets/clash_01.mp3', './assets/clash_01.ogg']); 15 | this.load.audio('heal', ['./assets/water_01.mp3', './assets/water_01.ogg']); 16 | this.load.audio('crit', ['./assets/crit_01.mp3', './assets/crit_01.ogg']); 17 | this.load.audio('absorb', ['./assets/absorb_01.mp3', './assets/absorb_01.ogg']); 18 | this.load.audio('miss', ['./assets/miss_01.mp3', './assets/miss_01.ogg']); 19 | this.load.audio('paddle', ['./assets/paddle_01.mp3', './assets/paddle_01.ogg']); 20 | this.load.audio('foom', ['./assets/foom_0.mp3', './assets/foom_0.ogg']); 21 | this.load.audio('freeze', ['./assets/freeze.mp3', './assets/freeze.ogg']); 22 | this.load.atlas('assets', 'assets/breakout.png', 'assets/breakout.json'); 23 | this.load.multiatlas('knight', 'assets/antler-knight.json', 'assets'); 24 | this.load.multiatlas('combust', 'assets/combust.json', 'assets'); 25 | this.load.multiatlas('heal', 'assets/heal.json', 'assets'); 26 | this.load.multiatlas('shield', 'assets/shield.json', 'assets'); 27 | this.load.multiatlas('button', 'assets/button.json', 'assets'); 28 | this.load.json('map', 'assets/dungeon_01.json'); 29 | this.load.spritesheet('tiles', 'assets/tileset_cave_1.png', { frameWidth: 64, frameHeight: 32 }); 30 | this.load.spritesheet('skeleton', 'assets/skeleton.png', { frameWidth: 128, frameHeight: 128 }); 31 | this.load.spritesheet('abilities', 'assets/abilities.png', { frameWidth: 128, frameHeight: 128 }); 32 | this.load.spritesheet('gold', 'assets/coins25.png', { frameWidth: 64, frameHeight: 128 }); 33 | this.load.image('star', 'assets/star.png'); 34 | this.load.on('complete', () => { 35 | createAnimations(this); 36 | this.scene.start('StartScene'); 37 | this.scene.start('BreakOutScene'); 38 | 39 | }) 40 | } 41 | 42 | create() { 43 | let game = this.game; 44 | this.registry.events.on('changedata', this.updateData, this); 45 | this.game.canvas.addEventListener('mousedown', function () { 46 | game.input.mouse.requestPointerLock(); 47 | }); 48 | } 49 | 50 | updateData(parent, key, data) { 51 | if(key === 'gameOver') { 52 | this.scene.stop('BreakOutScene'); 53 | this.game.input.mouse.releasePointerLock(); 54 | } else if (key === 'combat') { 55 | this.scene.resume('BreakOutScene').setVisible(true, 'BreakOutScene'); 56 | this.scene.sendToBack('GameScene') 57 | } else if (key === 'noCombat') { 58 | this.scene.pause('BreakOutScene').setVisible(false, 'BreakOutScene'); 59 | this.scene.sendToBack('BreakOutScene') 60 | this.game.input.mouse.releasePointerLock(); 61 | 62 | 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/scenes/BreakOutScene.js: -------------------------------------------------------------------------------- 1 | export default class BreakOutScene extends Phaser.Scene { 2 | constructor() { 3 | super({ key: 'BreakOutScene' }); 4 | this.bricks; 5 | this.paddle; 6 | this.ball; 7 | this.blockHitSound; 8 | this.paddleHitSound; 9 | this.width; 10 | this.height; 11 | } 12 | 13 | randomBricks() { 14 | var brickArray = [], 15 | index = 16 + 1; 16 | while(--index) { 17 | brickArray.push(Phaser.Math.Between(0, 5)); 18 | } 19 | return brickArray; 20 | } 21 | 22 | brickRandomizer() { 23 | this.bricks = this.physics.add.staticGroup({ 24 | key: 'abilities', 25 | frame: this.randomBricks(), 26 | frameQuantity: 1, 27 | gridAlign: { width: 8, height: 2, cellWidth: 128, cellHeight: 128, x: 188, y: 128 }, 28 | }); 29 | 30 | this.bricks.children.each((brick) => { 31 | brick.setAlpha(0.4) 32 | this.registry.set(brick.frame.name + '', brick.frame.name + ''); 33 | 34 | }); 35 | } 36 | 37 | create() { 38 | this.width = this.game.config.width; 39 | this.height = this.game.config.height; 40 | this.blockHitSound = this.scene.scene.sound.add('block'); 41 | this.paddleHitSound = this.scene.scene.sound.add('paddle'); 42 | this.physics.world.setBoundsCollision(true, true, true, false); 43 | 44 | this.brickRandomizer(); 45 | 46 | this.paddle = this.physics.add.image((this.width / 2), (this.height - 50), 'assets', 'paddle.png').setImmovable(); 47 | 48 | this.ball = this.physics.add.image(this.paddle.x, (this.height - 76), 'assets', 'ball.png').setCollideWorldBounds(true).setBounce(1); 49 | this.registry.set('ballDrop'); 50 | 51 | this.ball.setData('onPaddle', true); 52 | 53 | //setColliders 54 | this.physics.add.collider(this.ball, this.bricks, this.hitBrick, null, this); 55 | this.physics.add.collider(this.ball, this.paddle, this.hitPaddle, null, this); 56 | 57 | //input events 58 | this.input.on('pointermove', (pointer) => { 59 | this.paddle.x += pointer.movementX; 60 | 61 | // Force the sprite to stay on screen 62 | this.paddle.x = Phaser.Math.Clamp(this.paddle.x, 50, this.width - 50); 63 | if(this.ball.getData('onPaddle')) { 64 | this.ball.x = this.paddle.x; 65 | } 66 | }, this); 67 | 68 | this.input.on('pointerup', (pointer) => { 69 | if(this.ball.getData('onPaddle')) { 70 | this.ball.setVelocity(-75, -420); 71 | this.ball.setData('onPaddle', false); 72 | } 73 | }, this); 74 | 75 | } 76 | 77 | hitBrick(ball, brick) { 78 | this.paddleHitSound.play({ 79 | mute: false, 80 | volume: .6, 81 | rate: .8, 82 | detune: 0, 83 | loop: false, 84 | }) 85 | brick.disableBody(true, true); 86 | switch (brick.frame.name) { 87 | case 0: 88 | this.registry.set('0', '0'); 89 | break; 90 | case 2: 91 | this.registry.set('2', '2'); 92 | break; 93 | case 1: 94 | this.registry.set('1', '1'); 95 | break; 96 | case 5: 97 | this.registry.set('5', '5'); 98 | break; 99 | case 4: 100 | this.registry.set('4', '4'); 101 | break; 102 | case 3: 103 | this.registry.set('3', '3'); 104 | break; 105 | default: 106 | } 107 | if(this.bricks.countActive() === 0) { 108 | this.resetLevel(); 109 | } 110 | } 111 | 112 | 113 | resetBall() { 114 | this.ball.setVelocity(0); 115 | this.ball.setPosition(this.paddle.x, (this.height - 76)); 116 | this.ball.setData('onPaddle', true); 117 | } 118 | 119 | 120 | resetLevel() { 121 | this.bricks.children.each((brick) => { 122 | brick.enableBody(false, 0, 0, true, true); 123 | brick.setFrame(Phaser.Math.Between(0, 5)); 124 | }) 125 | this.resetBall(); 126 | 127 | } 128 | 129 | 130 | hitPaddle(ball, paddle) { 131 | this.blockHitSound.play({ 132 | mute: false, 133 | volume: .6, 134 | rate: .8, 135 | detune: 0, 136 | loop: false, 137 | }) 138 | var diff = 0; 139 | 140 | if(ball.x < paddle.x) { 141 | diff = paddle.x - ball.x; 142 | ball.setVelocityX(-10 * diff); 143 | 144 | } else if(ball.x > paddle.x) { 145 | diff = ball.x - paddle.x; 146 | ball.setVelocityX(10 * diff); 147 | 148 | } else { 149 | ball.setVelocityX(2 + Math.random() * 10) 150 | } 151 | } 152 | 153 | 154 | update(time, delta) { 155 | if(this.ball.y > (this.height)) { 156 | this.registry.set('ballDrop', this.ball); 157 | this.resetBall(); 158 | } 159 | } 160 | }; 161 | -------------------------------------------------------------------------------- /src/scenes/GameScene.js: -------------------------------------------------------------------------------- 1 | import Skeleton from '../sprites/Skeleton.js'; 2 | import ArcherSkeleton from '../sprites/ArcherSkeleton.js'; 3 | import Player from '../sprites/Player.js'; 4 | 5 | 6 | export default class GameScene extends Phaser.Scene { 7 | constructor() { 8 | super('GameScene'); 9 | //half of the tile width for isometric measurements 10 | this.tileWidthHalf; 11 | this.tileHeightHalf; 12 | //player object 13 | this.player; 14 | //array of enemies 15 | this.skeletons = []; 16 | //object used as movement bullseye 17 | this.moveTarget; 18 | this.background; 19 | 20 | this.d = 0; 21 | this.backgroundMusic; 22 | //number to countdown until new spawns 23 | this.enemyTimer = 3000; 24 | } 25 | 26 | //callback for the 'changedata' event listener 27 | updateData(parent, key, data) { 28 | if(key === 'ballDrop') { 29 | //on ball drop, what should punishment be? 30 | } 31 | } 32 | 33 | //create function 34 | create () { 35 | this.backgroundMusic = this.sound.add('music'); 36 | 37 | this.backgroundMusic.play({ 38 | mute: false, 39 | volume: .9, 40 | rate: 1, 41 | loop: true, 42 | }) 43 | 44 | 45 | this.addPlayer(); 46 | 47 | //set up scene 48 | this.buildMap(this.player); 49 | //set up click to move target 50 | this.moveTarget = this.physics.add.image(25, 25, 'star'); 51 | this.moveTarget.setCircle(20, 0, -5).setVisible(false).setScale(.75); 52 | 53 | //move target and start moving toward new pos 54 | this.input.on('pointerdown', function (pointer) { 55 | //scroll plus pointer.x to compensate for follow cam cooords 56 | let pointerPlusScrollX = pointer.x+this.cameras.cameras[0].scrollX; 57 | let pointerPlusScrollY = pointer.y+this.cameras.cameras[0].scrollY; 58 | let angle = Phaser.Math.Angle.BetweenY(this.player.x, this.player.y, pointerPlusScrollX, pointerPlusScrollY); 59 | 60 | this.player.setFacing(angle); 61 | this.moveTarget.setPosition(pointerPlusScrollX, pointerPlusScrollY ) 62 | 63 | this.physics.moveToObject(this.player, this.moveTarget, 100); 64 | this.player.isMoving = true; 65 | }, this); 66 | 67 | 68 | //stop the player at the moveTarget, or at the hitbox of the enemy 69 | this.physics.add.overlap(this.player, this.moveTarget, function (playerOnMoveTarget) { 70 | playerOnMoveTarget.isMoving = false; 71 | playerOnMoveTarget.body.stop(); 72 | }, null, this); 73 | 74 | //stops the skeletons from moving through the player 75 | this.physics.add.overlap(this.skeletons, this.player, function (playerOnEnemy) { 76 | playerOnEnemy.isMoving = false; 77 | this.player.isMoving = false; 78 | this.player.body.stop() 79 | playerOnEnemy.body.stop() 80 | //maybe get player to stop moving here 81 | }, null, this); 82 | 83 | 84 | } 85 | 86 | wallCollider(playerOnWall) { 87 | //find out which direction is touching 88 | //stop velocity in that direction only 89 | } 90 | 91 | //building a map 92 | buildMap (player) { 93 | var map = this.cache.json.get('map'); 94 | 95 | 96 | var tilewidth = map.tilewidth; 97 | var tileheight = map.tileheight; 98 | 99 | this.tileWidthHalf = tilewidth / 2; 100 | this.tileHeightHalf = tileheight / 2; 101 | 102 | for (let k = 0; k < map.layers.length; k++) { 103 | var data = map.layers[k].data; 104 | 105 | var mapwidth = map.layers[k].width; 106 | var mapheight = map.layers[k].height; 107 | 108 | var centerX = mapwidth * this.tileWidthHalf; 109 | var centerY = 16; 110 | 111 | var i = 0; 112 | 113 | for (let y = 0; y < mapheight; y++) { 114 | for (let x = 0; x < mapwidth; x++) { 115 | var id = data[i]; 116 | 117 | var tx = (x - y) * this.tileWidthHalf; 118 | var ty = (x + y) * this.tileHeightHalf; 119 | 120 | if (id !== 0) { 121 | if (k === 5) { 122 | this.addEnemies(centerX + tx, centerY + ty) 123 | } else { 124 | var tile = this.physics.add.staticImage(centerX + tx, centerY + ty, 'tiles', id - 1); 125 | tile.depth = (centerY + ty) + (32 * k); 126 | 127 | 128 | if (k === 1) { 129 | tile.setCircle(20, 0, -5); 130 | this.physics.add.collider(player, tile); 131 | } 132 | } 133 | } 134 | //keeps map behind objects 135 | i++; 136 | } 137 | } 138 | } 139 | 140 | } 141 | 142 | 143 | addPlayer() { 144 | this.player = new Player(this, 8050, 1970, 'knight') 145 | this.player.setScale(.50) 146 | this.player.setCircle(50, 160, 180) 147 | this.cameras.main.startFollow(this.player, false, .5, .5, 0, 50).setZoom(1) 148 | } 149 | 150 | addEnemies(x, y) { 151 | //add enemies 152 | var index = 0; 153 | this.skeletons.push(this.add.existing(new Skeleton(this, x, y, 'skeleton'))); 154 | this.skeletons[index].setCircle(30, 50, 50); 155 | index++; 156 | } 157 | 158 | update (time, delta) { 159 | this.enemyTimer--; 160 | //spawn enemies 161 | if (this.enemyTimer <= 0) { 162 | this.addEnemies(1); 163 | this.enemyTimer = Phaser.Math.Between(2000, 5000); 164 | } 165 | //check for game over and emit gameover to ui 166 | if (this.player.gameOver) { 167 | return this.registry.set('gameOver', this.player.xp); 168 | } 169 | 170 | // which scene to show in front while in combat 171 | if(this.player.isInCombat()) { 172 | this.registry.set('combat', this.player.xp); 173 | this.input.enabled = false; 174 | 175 | // which scene to show when not in combat 176 | } else if (!this.player.isInCombat()){ 177 | this.registry.set('noCombat', this.player.xp); 178 | this.input.enabled = true; 179 | } 180 | 181 | // update all the actors 182 | this.skeletons.forEach((skeleton) => { 183 | if(skeleton.getShouldUpdate()) { 184 | if(skeleton.isDead()) { 185 | skeleton.die(); 186 | } else { 187 | skeleton.update(); 188 | } 189 | } 190 | }) 191 | this.player.update(); 192 | 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /src/scenes/StartScene.js: -------------------------------------------------------------------------------- 1 | export default class StartScene extends Phaser.Scene { 2 | constructor() { 3 | super({ key: 'StartScene'}); 4 | //this scene needs to have a button that starts the GameScene 5 | //it needs to have instructions and an explanation 6 | this.instructionsText; 7 | this.startButton; 8 | 9 | } 10 | 11 | create() { 12 | this.scene.setVisible(false, 'BreakOutScene'); 13 | 14 | this.instructionsText = this.add.image(640, 260, 'button', 'blue_panel_breakoutRPG.png'); 15 | 16 | this.startButton = this.add.sprite(640, 520, 'button', 'blue_button00.png') 17 | this.startButton.setInteractive({useHandCursor: true}) 18 | .on('pointerup', this.onClick, this) 19 | .on('pointerover', this.onHover, this) 20 | .on('pointerout', this.onNotHover, this); 21 | } 22 | 23 | onClick() { 24 | this.startButton.anims.play('button') 25 | 26 | this.scene.start('GameScene'); 27 | this.scene.bringToTop('GameScene') 28 | 29 | } 30 | 31 | onHover() { 32 | this.startButton.setScale(1.1, 1.1) 33 | } 34 | 35 | onNotHover() { 36 | this.startButton.setScale(1, 1) 37 | } 38 | 39 | }; 40 | -------------------------------------------------------------------------------- /src/scenes/UIScene.js: -------------------------------------------------------------------------------- 1 | export default class UIScene extends Phaser.Scene { 2 | constructor() { 3 | super({ key: 'UIScene', active: true }); 4 | //player hps 5 | this.hpText; 6 | //player xp 7 | this.xpText; 8 | //target hp 9 | this.targetHpText; 10 | //yellow increases crit 11 | this.crit; 12 | 13 | 14 | } 15 | 16 | create() { 17 | this.hpText = this.add.text(30, 10); 18 | this.xpText = this.add.text(30, 30); 19 | this.targetHpText = this.add.text(1080, 10) 20 | this.crit = this.add.text(30, 50) 21 | this.registry.events.on('changedata', this.updateData, this); 22 | } 23 | 24 | updateData(parent, key, data) { 25 | switch (key) { 26 | case 'playerHps': 27 | this.hpText.setText('HP: ' + Math.round(data)); 28 | break; 29 | case 'playerXp': 30 | this.xpText.setText('Score: ' + data.toFixed(0)); 31 | break; 32 | case 'targetHps': 33 | this.targetHpText.setText(data.name + ' : ' + Math.round(data.currentHps)); 34 | break; 35 | case 'crit': 36 | this.crit.setText('Crit: ' + data.toFixed(0) + '%'); 37 | break; 38 | case 'gameOver': 39 | this.xpText.setPosition(350, 330); 40 | this.crit.setText("Game Over!").setPosition(250, 270).setScale(3) 41 | this.hpText.setText('(reload page to play again!)').setPosition(255, 380); 42 | this.registry.events.off('changedata'); 43 | this.scene.scene.cameras.main.setBackgroundColor('0x000000') 44 | this.scene.stop('GameScene') 45 | break; 46 | default: 47 | 48 | } 49 | 50 | } 51 | }; 52 | -------------------------------------------------------------------------------- /src/sprites/ArcherSkeleton.js: -------------------------------------------------------------------------------- 1 | import Skeleton from './Skeleton.js'; 2 | 3 | export default class ArcherSkeleton extends Skeleton { 4 | constructor(scene, x, y, texture) { 5 | super(scene, x, y, texture); 6 | this.weaponTimer = 200; 7 | } 8 | 9 | 10 | shoot(target) { 11 | this.anims.play(this.type+'_shoot_'+this.getFacing(), true); 12 | let dmg = Phaser.Math.Between(1,2) * this.getAttackPower(); 13 | 14 | if(!target.isInCombat()) { 15 | target.setInCombat(true); 16 | } 17 | if(Phaser.Math.Between(0, 100) < 34) { 18 | return; 19 | } else { 20 | if(this.willCrit()) { 21 | let crit = dmg * 2; 22 | target.setCurrentHp(crit, 'melee') 23 | 24 | } else { 25 | target.setCurrentHp(dmg, 'melee'); 26 | } 27 | } 28 | 29 | this.cooldowns.swing = this.weaponTimer; 30 | }; 31 | 32 | update() { 33 | this.cooldowns.swing--; 34 | 35 | if(this.cooldowns.swing <= 0) { 36 | this.shoot(this.scene.player); 37 | 38 | } else { 39 | //this.idle(); 40 | } 41 | 42 | 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/sprites/CharacterSheet.js: -------------------------------------------------------------------------------- 1 | import Loot from './Loot.js'; 2 | 3 | 4 | export default class CharacterSheet extends Phaser.Physics.Arcade.Sprite { 5 | constructor(scene, x, y, texture) { 6 | super(scene, x, y, texture); 7 | 8 | this.x = x; 9 | this.y = y; 10 | this.setTexture(texture); 11 | this.name = texture; 12 | this.depth = this.y + 64; 13 | this.absorbShield = 0; 14 | this.str; 15 | this.sta; 16 | this.agi; 17 | this.crit; 18 | this.currentHps = this.getMaxHp(); 19 | this.loot; 20 | 21 | 22 | this.nameText = scene.add.text(this.x - 30, this.y - 50); 23 | this.nameText.setText(this.name).setVisible(false); 24 | 25 | scene.add.existing(this); 26 | scene.physics.add.existing(this); 27 | 28 | this.motion = 'idle'; 29 | this.inCombat = false; 30 | 31 | this.cooldowns = { 32 | swing: 0, 33 | } 34 | 35 | this.currentTarget = undefined; 36 | 37 | this.facing = 'south'; 38 | this.shouldUpdate = true; 39 | 40 | //sounds 41 | this.missMeleeSwing = this.scene.sound.add('miss'); 42 | this.hitMeleeSwing = this.scene.sound.add('clash'); 43 | this.critMeleeSwing = this.scene.sound.add('crit'); 44 | 45 | this.on('animationcomplete', function (anim, frame) { 46 | const type = anim.key.split('_'); 47 | if (type[1] ==='attack' && this.getCurrentTarget()) { 48 | this.meleeSwing(this.getCurrentTarget()); 49 | this.idle() 50 | } else if (anim.key === 'combust') { 51 | this.idle(); 52 | this.setCurrentHp((this.getMaxHp()*.25), 'melee'); 53 | this.cooldowns.swing = this.weaponTimer; 54 | 55 | this.burnSound.play({ 56 | mute: false, 57 | volume: .3, 58 | rate: .8, 59 | detune: 0, 60 | loop: false, 61 | }) 62 | this.frostTintIndex = 0; 63 | this.clearTint(); 64 | } else if (type[1] === 'die') { 65 | this.lootCreator(); 66 | } 67 | }, this); 68 | 69 | }; 70 | 71 | lootCreator() { 72 | this.loot = new Loot(this.scene, this.x, this.y); 73 | this.loot.anims.play('gold', false); 74 | } 75 | 76 | 77 | 78 | calculateStats(equipped, stat) { 79 | //combine all the stat from equipped items 80 | return Object.keys(equipped) 81 | .map(child => equipped[child].stats[stat]) 82 | .reduce((acc, item) => acc + item) 83 | } 84 | 85 | running() { 86 | this.depth = this.y + 64; 87 | this.anims.play(this.name + '_run_' + this.getFacing(), true); 88 | } 89 | 90 | walking() { 91 | this.depth = this.y + 64; 92 | this.anims.play(this.name + '_walk_' + this.getFacing(), true); 93 | } 94 | 95 | idle() { 96 | this.anims.play(this.name + '_idle_' + this.getFacing(), true); 97 | } 98 | 99 | die() { 100 | if (this.name === 'skeleton') { 101 | this.depth = this.y + 46; 102 | this.nameText.setVisible(false); 103 | this.setVelocity(0) 104 | this.scene.registry.set('targetHps', this) 105 | if(this.getCurrentTarget()) { 106 | this.getCurrentTarget().clearCurrentTarget(); 107 | this.clearCurrentTarget(); 108 | } 109 | this.clearTint(); 110 | this.body.checkCollision.none = true; 111 | //this.removeInteractive(); 112 | this.setShouldUpdate(false); 113 | } 114 | //no player die animation yet 115 | this.anims.play('skeleton' + '_die_' + this.getFacing(), true) 116 | } 117 | 118 | getRadsToCurrentTarget() { 119 | if(this.currentTarget) { 120 | return Phaser.Math.Angle.BetweenY(this.x, this.y, this.currentTarget.x, this.currentTarget.y) 121 | } 122 | } 123 | 124 | setShouldUpdate(bool) { 125 | this.shouldUpdate = bool; 126 | } 127 | 128 | getShouldUpdate() { 129 | return this.shouldUpdate; 130 | } 131 | 132 | getFacing() { 133 | return this.facing; 134 | } 135 | 136 | setFacing(rads) { 137 | //use switch 138 | if(rads < -2.7475 || rads > 2.7475) { 139 | this.facing = 'north'; 140 | } else if(rads < 2.7475 && rads > 1.9625) { 141 | this.facing = 'northEast'; 142 | } else if(rads < 1.9625 && rads > 1.1775) { 143 | this.facing = 'east'; 144 | } else if(rads < 1.1175 && rads > 0.3925) { 145 | this.facing = 'southEast'; 146 | } else if(rads < 0.3925 && rads > -0.3925) { 147 | this.facing = 'south'; 148 | } else if(rads < -0.3925 && rads > -1.1775) { 149 | this.facing = 'southWest'; 150 | } else if(rads < -1.1775 && rads > -1.9625) { 151 | this.facing = 'west'; 152 | } else if(rads < -1.9625 && rads > -2.7475) { 153 | this.facing = 'northWest'; 154 | } 155 | } 156 | 157 | absorbShieldAmt(target, amt) { 158 | if(target.absorbShield) { 159 | target.absorbSound.play({ 160 | mute: false, 161 | volume: .9, 162 | rate: 2, 163 | detune: 0, 164 | loop: false, 165 | }); 166 | target.shieldAnchor.anims.play('shield', false); 167 | target.absorbShield--; 168 | amt = 0; 169 | } 170 | return amt; 171 | } 172 | 173 | 174 | meleeSwing(target) { 175 | let dmg = ((this.equipped.weapon.damage * this.getAttackPower()) + this.equipped.weapon.damage) /60; 176 | dmg = this.absorbShieldAmt(target, dmg); 177 | let miss = Phaser.Math.Between(0, 100) < 10; 178 | if(!target.getCurrentTarget()) { 179 | target.setCurrentTarget(this); 180 | } 181 | 182 | if(miss) { 183 | //miss melee swing 184 | this.cooldowns.swing = this.weaponTimer; 185 | return this.missMeleeSwing.play({ 186 | mute: false, 187 | volume: .3, 188 | rate: .8, 189 | }); 190 | 191 | } else if(!miss && dmg) { 192 | if(this.willCrit()) { 193 | let crit = dmg * 2; 194 | target.setCurrentHp(crit, 'melee') 195 | if(this.name === 'knight') { 196 | console.log('crit: ' + crit); 197 | 198 | this.critMeleeSwing.play({ 199 | mute: false, 200 | volume: .8, 201 | rate: 2, 202 | }); 203 | this.equipped.weapon.stats.crit = 0; 204 | this.reCalculateStats(); 205 | this.scene.cameras.main.shake(1000, 0.01, true); 206 | this.gainXp(crit) 207 | } 208 | } else { 209 | this.hitMeleeSwing.play({ 210 | mute: false, 211 | volume: .3, 212 | rate: .8, 213 | }); 214 | target.setCurrentHp(dmg, 'melee'); 215 | if(this.name === 'knight') { 216 | console.log('dmg: ' + dmg); 217 | 218 | this.gainXp(dmg) 219 | } 220 | } 221 | } 222 | this.cooldowns.swing = this.weaponTimer; 223 | }; 224 | 225 | willCrit() { 226 | return Phaser.Math.Between(0,100) < this.crit ? true : false; 227 | }; 228 | 229 | getAttackPower() { 230 | return this.str / 100; 231 | }; 232 | 233 | getMaxHp() { 234 | return this.sta; 235 | }; 236 | 237 | getCurrentHps() { 238 | return this.currentHps; 239 | }; 240 | 241 | 242 | setCurrentHp(val, type) { 243 | if (type === 'melee') { 244 | if( this.currentHps -= val < 0) { 245 | this.currentHps = 0; 246 | } 247 | this.currentHps -= val; 248 | } else if (type === 'heal') { 249 | this.currentHps += val; 250 | } 251 | }; 252 | 253 | 254 | setCurrentTarget(target) { 255 | this.currentTarget = target; 256 | if (this.name === 'knight') { 257 | this.scene.registry.set('targetHps', this.currentTarget) 258 | this.currentTarget.nameText.setVisible(true); 259 | } 260 | 261 | // 262 | }; 263 | 264 | getCurrentTarget() { 265 | return this.currentTarget; 266 | }; 267 | 268 | clearCurrentTarget() { 269 | this.currentTarget = undefined; 270 | }; 271 | 272 | setInCombat(bool) { 273 | this.inCombat = bool; 274 | }; 275 | 276 | isInCombat() { 277 | 278 | return this.inCombat; 279 | }; 280 | 281 | isDead() { 282 | if(this.getCurrentHps() <= 0) { 283 | return true; 284 | } else { 285 | return false; 286 | } 287 | }; 288 | } 289 | -------------------------------------------------------------------------------- /src/sprites/Loot.js: -------------------------------------------------------------------------------- 1 | export default class Loot extends Phaser.Physics.Arcade.Sprite{ 2 | constructor(scene, x, y) { 3 | super(scene, x, y); 4 | this.x = x; 5 | this.y = y; 6 | this.setTexture('gold', '0'); 7 | this.depth = this.y + 64; 8 | this.setInteractive({useHandCursor: true}) 9 | .on('pointerup', this.onClick, this) 10 | .on('pointerover', this.onHover, this) 11 | .on('pointerout', this.onNotHover, this); 12 | 13 | //TODO loot randomizere 14 | this.loot = { 15 | weaponsOrArmor: 'weapons', 16 | type: 'twoHandedSword', 17 | name: 'Hand of Fury', 18 | damage: 172, 19 | speed: 1.5, 20 | value: 20000, 21 | stats: { 22 | str: 5, 23 | agi: 5, 24 | sta: 10, 25 | crit: 1, 26 | }, 27 | } 28 | 29 | scene.add.existing(this); 30 | scene.physics.add.existing(this); 31 | 32 | } 33 | 34 | onClick() { 35 | let newArray = this.scene.player.inventory.items.weapons.slice(); 36 | newArray.push(this.loot); 37 | 38 | this.scene.player.inventory = { 39 | gold: (this.scene.player.inventory.gold += Phaser.Math.Between(1, 25)), 40 | ...this.scene.player.inventory 41 | } 42 | 43 | this.scene.player.inventory.items = { 44 | ...this.scene.player.inventory.items, 45 | weapons: newArray, 46 | } 47 | 48 | this.setVisible(false).removeInteractive(); 49 | console.log(this.scene.player.inventory); 50 | } 51 | 52 | onHover() { 53 | this.setTint('0x000000'); 54 | } 55 | 56 | onNotHover() { 57 | this.clearTint(); 58 | } 59 | 60 | 61 | //return interval 62 | goingTo(player) { 63 | return this.loot; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/sprites/Player.js: -------------------------------------------------------------------------------- 1 | import CharacterSheet from './CharacterSheet.js'; 2 | import Items from '../Items.js'; 3 | 4 | export default class Player extends CharacterSheet { 5 | constructor (scene, x, y, texture) { 6 | super(scene, x, y, texture); 7 | 8 | this.depth = this.y + 96; 9 | this.xp = 0; 10 | this.healAnchor; 11 | this.shieldAnchor; 12 | 13 | this.gameOver = false; 14 | 15 | this.inventory = { 16 | gold: 0, 17 | items:{ 18 | weapons: [Items.weapons[0]], 19 | armor: [Items.armor[0]], 20 | } 21 | } 22 | 23 | this.equipped = { 24 | weapon: this.inventory.items.weapons[0], 25 | armor: this.inventory.items.armor[0], 26 | } 27 | 28 | this.reCalculateStats(); 29 | scene.registry.set('crit', this.crit); 30 | 31 | this.currentHps = this.getMaxHp(); 32 | //add hp event watcher and sync ui with currenthp 33 | scene.registry.set('playerHps', this.currentHps); 34 | this.setCurrentHp(0, 'heal'); 35 | scene.registry.set('playerXp', this.xp); 36 | this.gainXp(1); 37 | 38 | this.chanceToMiss = .15; 39 | 40 | this.scene.registry.events.on('changedata', this.updateData, this); 41 | 42 | this.addAnimationAnchor(); 43 | this.healSound = this.scene.sound.add('heal'); 44 | this.absorbSound = this.scene.sound.add('absorb'); 45 | 46 | }; 47 | 48 | addAnimationAnchor() { 49 | this.healAnchor = this.scene.add.sprite(this.x, this.y, 'heal', '18'); 50 | this.healAnchor.setScale(.60); 51 | this.healAnchor.depth = this.depth+128; 52 | 53 | this.shieldAnchor = this.scene.add.sprite(this.x, this.y, 'shield', 'b_0016') 54 | this.shieldAnchor.setScale(.25); 55 | this.shieldAnchor.depth = this.depth+128; 56 | } 57 | 58 | updateData(parent, key, data) { 59 | if(data === 'destroy') { 60 | return; 61 | } else { 62 | switch (key) { 63 | case '0': 64 | if (this.getCurrentTarget()) { 65 | this.anims.play(this.name+'_attack_'+this.getFacing(), true); 66 | } 67 | break; 68 | case '5': 69 | this.absorbShield += 1; 70 | break; 71 | case '1': 72 | this.equipped.weapon.stats.crit += 10; 73 | this.reCalculateStats(); 74 | break; 75 | case '2': 76 | this.healSound.play({ 77 | mute: false, 78 | volume: .9, 79 | rate: 1.5, 80 | detune: 0, 81 | loop: false, 82 | }) 83 | this.healAnchor.anims.play('heal', false) 84 | this.setCurrentHp(20, 'heal') 85 | break; 86 | default: 87 | 88 | } 89 | } 90 | } 91 | 92 | reCalculateStats() { 93 | var stats = ['str', 'sta', 'agi', 'crit'] 94 | stats.forEach((el) => { 95 | this[el] = this.calculateStats(this.equipped, el); 96 | }) 97 | this.scene.registry.set('meleeDps', ((this.equipped.weapon.damage * this.getAttackPower()) + this.equipped.weapon.damage) /60) 98 | this.scene.registry.set('crit', this.crit) 99 | } 100 | 101 | changeWeapon(weapon) { 102 | this.equipped.weapon = Object.assign(weapon); 103 | this.reCalculateStats(); 104 | } 105 | 106 | gainXp(amt) { 107 | this.xp += amt; 108 | this.scene.registry.set('playerXp', this.xp); 109 | } 110 | 111 | //shadow the setCurrentHp in the CharacterSheet class 112 | setCurrentHp(val, type) { 113 | if (type === 'melee') { 114 | this.currentHps -= val; 115 | } else if (type === 'heal') { 116 | this.currentHps + val > this.getMaxHp() 117 | ? this.currentHps = this.getMaxHp() 118 | : this.currentHps += val; 119 | } 120 | this.scene.registry.set('playerHps', this.currentHps) 121 | }; 122 | 123 | enemyInRange() { 124 | const enemies = this.scene.skeletons.map((skeleton) => { 125 | return (!skeleton.isDead() && Phaser.Math.Distance.Between(this.x, this.y, skeleton.x, skeleton.y) < 125); 126 | }); 127 | if (enemies.includes(true)) { 128 | this.setInCombat(true) 129 | } else { 130 | this.setInCombat(false) 131 | } 132 | } 133 | 134 | update() { 135 | //keep the animations on top of moving player 136 | this.healAnchor.depth = this.depth + 2; 137 | this.healAnchor.setPosition(this.x, this.y) 138 | this.shieldAnchor.depth = this.depth + 2; 139 | this.shieldAnchor.setPosition(this.x, this.y) 140 | this.nameText.setPosition(this.x - 28, this.y - 56).depth = this.y + 128; 141 | if (!this.isDead()) { 142 | this.enemyInRange(); 143 | if(this.isMoving) { 144 | this.running(); 145 | } else if (this.isInCombat() && this.getCurrentTarget()) { 146 | this.setFacing(this.getRadsToCurrentTarget()); 147 | if (Phaser.Math.Distance.Between(this.x, this.y, this.getCurrentTarget().x, this.getCurrentTarget().y) < 100) { 148 | this.isMoving = false; 149 | } 150 | } else { 151 | this.idle(); 152 | } 153 | } else { 154 | this.die(); 155 | console.log("you died!"); 156 | this.gameOver = true; 157 | 158 | } 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /src/sprites/Skeleton.js: -------------------------------------------------------------------------------- 1 | import CharacterSheet from './CharacterSheet.js'; 2 | import Items from '../Items.js'; 3 | 4 | export default class Skeleton extends CharacterSheet { 5 | constructor (scene, x, y, texture) { 6 | super(scene, x, y, texture); 7 | 8 | scene.add.existing(this); 9 | scene.physics.add.existing(this); 10 | 11 | this.setInteractive(); 12 | this.weapon = Items.weapons[2]; 13 | this.armor = Items.armor[1]; 14 | 15 | this.equipped = { 16 | weapon: this.weapon, 17 | armor: this.armor, 18 | } 19 | 20 | this.reCalculateStats(); 21 | 22 | this.currentHps = this.getMaxHp(); 23 | this.scene.registry.set('targetHps', this) 24 | 25 | this.weaponDmg = this.equipped.weapon.damage; 26 | this.chanceToMiss = .15; 27 | this.crit = .15 + this.calculateStats(this.equipped, 'crit'); 28 | 29 | this.weaponTimer = this.equipped.weapon.speed * 60; 30 | 31 | this.scene.registry.events.on('changedata', this.updateData, this); 32 | this.frostTint = [ '0xCEEAFA', '0x75C7FA', '0x57B6F1','0x36A4E8', '0x1187D0', '0x116FA9', '0x0A5888', '0x043F63', '0x01253B' ]; 33 | this.frostTintIndex = -1; 34 | 35 | this.burnSound = this.scene.sound.add('foom'); 36 | this.freezeSound = this.scene.sound.add('freeze'); 37 | this.loot; 38 | }; 39 | 40 | 41 | updateData(parent, key, data) { 42 | if(data !== 'destroy') { 43 | switch (key) { 44 | case '4': 45 | if(this) { 46 | if(!this.isDead() && Phaser.Math.Distance.Between(this.x, this.y, this.scene.player.x, this.scene.player.y) < 75) { 47 | this.anims.play('combust', false) 48 | } 49 | } 50 | break; 51 | case '3': 52 | if(!this.isDead() && Phaser.Math.Distance.Between(this.x, this.y, this.scene.player.x, this.scene.player.y) < 75) { 53 | this.equipped.weapon.speed += (.25 * this.equipped.weapon.speed); 54 | this.weaponTimer = this.equipped.weapon.speed * 60; 55 | this.setTint(this.frostTint[++this.frostTintIndex]) 56 | this.freezeSound.play({ 57 | mute: false, 58 | volume: .1, 59 | rate: 2, 60 | loop: false, 61 | }) 62 | } 63 | break; 64 | default: 65 | } 66 | } 67 | } 68 | 69 | reCalculateStats() { 70 | var stats = ['str', 'sta', 'agi', 'crit'] 71 | stats.forEach((el) => { 72 | this[el] = this.calculateStats(this.equipped, el); 73 | }) 74 | } 75 | 76 | moveToAttacker(attacker) { 77 | this.scene.physics.moveToObject(this, attacker, 100); 78 | } 79 | 80 | setCurrentHp(val, type) { 81 | if (type === 'melee') { 82 | this.currentHps -= val; 83 | } else if (type === 'heal') { 84 | this.currentHps += val; 85 | } 86 | this.scene.registry.set('targetHps', this) 87 | }; 88 | 89 | 90 | update() { 91 | this.nameText.setPosition(this.x - 34, this.y - 56).depth = this.y + 128; 92 | 93 | this.cooldowns.swing--; 94 | 95 | if(Phaser.Math.Distance.Between(this.x, this.y, this.scene.player.x, this.scene.player.y) < 200) { 96 | this.setInCombat(true); 97 | this.setCurrentTarget(this.scene.player); 98 | } 99 | if(this.isInCombat() && this.getCurrentTarget()) { 100 | this.setFacing(this.getRadsToCurrentTarget()); 101 | if(Phaser.Math.Distance.Between(this.x, this.y, this.getCurrentTarget().x, this.getCurrentTarget().y) > 75) { 102 | this.walking(); 103 | this.moveToAttacker(this.getCurrentTarget()); 104 | this.depth = this.y + 64; 105 | } else if(Phaser.Math.Distance.Between(this.x, this.y, this.getCurrentTarget().x, this.getCurrentTarget().y) < 75 && this.cooldowns.swing <= 0) { 106 | this.anims.play(this.name+'_attack_'+this.getFacing(), true); 107 | } 108 | } else { 109 | this.idle(); 110 | } 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const webpack = require('webpack'); 4 | const path = require('path'); 5 | 6 | module.exports = { 7 | mode: 'development', 8 | entry: './src/index.js', 9 | 10 | output: { 11 | path: path.resolve(__dirname, 'build'), 12 | publicPath: '/build/', 13 | filename: 'project.bundle.js' 14 | }, 15 | 16 | module: { 17 | rules: [ 18 | { 19 | test: [ /\.vert$/, /\.frag$/ ], 20 | use: 'raw-loader' 21 | } 22 | ] 23 | }, 24 | 25 | plugins: [ 26 | new webpack.DefinePlugin({ 27 | 'CANVAS_RENDERER': JSON.stringify(true), 28 | 'WEBGL_RENDERER': JSON.stringify(true) 29 | }) 30 | ] 31 | 32 | }; 33 | --------------------------------------------------------------------------------