diff --git a/package.json b/package.json index 7d7b75a..e129ee7 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "pack:animdata": "tsx scripts/pack-animdata.ts", "pack:entities": "tsx scripts/pack-entity-assets.ts", "pack:missiles": "tsx scripts/pack-missiles.ts", + "pack:overlays": "tsx scripts/pack-overlays.ts", "verify:entity-packs": "tsx scripts/verify-entity-packs.ts", "verify:packs": "tsx scripts/verify-packs.ts", "verify:bundle-no-mpq": "tsx scripts/verify-bundle-no-mpq.ts", diff --git a/public/missiles/blaze.json b/public/missiles/blaze.json new file mode 100644 index 0000000..717152c --- /dev/null +++ b/public/missiles/blaze.json @@ -0,0 +1,309 @@ +{ + "name": "blaze", + "celFile": "groundFireBig", + "width": 1024, + "height": 503, + "directions": 1, + "framesPerDirection": 37, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 66, + 167, + -33, + -156 + ], + [ + 67, + 0, + 66, + 167, + -33, + -156 + ], + [ + 134, + 0, + 66, + 167, + -33, + -156 + ], + [ + 201, + 0, + 66, + 167, + -33, + -156 + ], + [ + 268, + 0, + 66, + 167, + -33, + -156 + ], + [ + 335, + 0, + 66, + 167, + -33, + -156 + ], + [ + 402, + 0, + 66, + 167, + -33, + -156 + ], + [ + 469, + 0, + 66, + 167, + -33, + -156 + ], + [ + 536, + 0, + 66, + 167, + -33, + -156 + ], + [ + 603, + 0, + 66, + 167, + -33, + -156 + ], + [ + 670, + 0, + 66, + 167, + -33, + -156 + ], + [ + 737, + 0, + 66, + 167, + -33, + -156 + ], + [ + 804, + 0, + 66, + 167, + -33, + -156 + ], + [ + 871, + 0, + 66, + 167, + -33, + -156 + ], + [ + 938, + 0, + 66, + 167, + -33, + -156 + ], + [ + 0, + 168, + 66, + 167, + -33, + -156 + ], + [ + 67, + 168, + 66, + 167, + -33, + -156 + ], + [ + 134, + 168, + 66, + 167, + -33, + -156 + ], + [ + 201, + 168, + 66, + 167, + -33, + -156 + ], + [ + 268, + 168, + 66, + 167, + -33, + -156 + ], + [ + 335, + 168, + 66, + 167, + -33, + -156 + ], + [ + 402, + 168, + 66, + 167, + -33, + -156 + ], + [ + 469, + 168, + 66, + 167, + -33, + -156 + ], + [ + 536, + 168, + 66, + 167, + -33, + -156 + ], + [ + 603, + 168, + 66, + 167, + -33, + -156 + ], + [ + 670, + 168, + 66, + 167, + -33, + -156 + ], + [ + 737, + 168, + 66, + 167, + -33, + -156 + ], + [ + 804, + 168, + 66, + 167, + -33, + -156 + ], + [ + 871, + 168, + 66, + 167, + -33, + -156 + ], + [ + 938, + 168, + 66, + 167, + -33, + -156 + ], + [ + 0, + 336, + 66, + 167, + -33, + -156 + ], + [ + 67, + 336, + 66, + 167, + -33, + -156 + ], + [ + 134, + 336, + 66, + 167, + -33, + -156 + ], + [ + 201, + 336, + 66, + 167, + -33, + -156 + ], + [ + 268, + 336, + 66, + 167, + -33, + -156 + ], + [ + 335, + 336, + 66, + 167, + -33, + -156 + ], + [ + 402, + 336, + 66, + 167, + -33, + -156 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/blaze.png b/public/missiles/blaze.png new file mode 100644 index 0000000..667ef3d Binary files /dev/null and b/public/missiles/blaze.png differ diff --git a/public/missiles/chainlightning.json b/public/missiles/chainlightning.json new file mode 100644 index 0000000..e758214 --- /dev/null +++ b/public/missiles/chainlightning.json @@ -0,0 +1,2123 @@ +{ + "name": "chainlightning", + "celFile": "LightningStrike", + "width": 2048, + "height": 1412, + "directions": 32, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 112, + 79, + -66, + -58 + ], + [ + 113, + 0, + 112, + 79, + -66, + -58 + ], + [ + 226, + 0, + 112, + 79, + -66, + -58 + ], + [ + 339, + 0, + 112, + 79, + -66, + -58 + ], + [ + 452, + 0, + 112, + 79, + -66, + -58 + ], + [ + 565, + 0, + 112, + 79, + -66, + -58 + ], + [ + 678, + 0, + 112, + 79, + -66, + -58 + ], + [ + 791, + 0, + 112, + 79, + -66, + -58 + ] + ], + [ + [ + 904, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1010, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1116, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1222, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1328, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1434, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1540, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1646, + 0, + 105, + 96, + -59, + -67 + ] + ], + [ + [ + 1752, + 0, + 111, + 93, + -46, + -64 + ], + [ + 1864, + 0, + 111, + 93, + -46, + -64 + ], + [ + 0, + 97, + 111, + 93, + -46, + -64 + ], + [ + 112, + 97, + 111, + 93, + -46, + -64 + ], + [ + 224, + 97, + 111, + 93, + -46, + -64 + ], + [ + 336, + 97, + 111, + 93, + -46, + -64 + ], + [ + 448, + 97, + 111, + 93, + -46, + -64 + ], + [ + 560, + 97, + 111, + 93, + -46, + -64 + ] + ], + [ + [ + 672, + 97, + 105, + 82, + -46, + -57 + ], + [ + 778, + 97, + 105, + 82, + -46, + -57 + ], + [ + 884, + 97, + 105, + 82, + -46, + -57 + ], + [ + 990, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1096, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1202, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1308, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1414, + 97, + 105, + 82, + -46, + -57 + ] + ], + [ + [ + 1520, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1619, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1718, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1817, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1916, + 97, + 98, + 88, + -43, + -63 + ], + [ + 0, + 191, + 98, + 88, + -43, + -63 + ], + [ + 99, + 191, + 98, + 88, + -43, + -63 + ], + [ + 198, + 191, + 98, + 88, + -43, + -63 + ] + ], + [ + [ + 297, + 191, + 130, + 67, + -72, + -52 + ], + [ + 428, + 191, + 130, + 67, + -72, + -52 + ], + [ + 559, + 191, + 130, + 67, + -72, + -52 + ], + [ + 690, + 191, + 130, + 67, + -72, + -52 + ], + [ + 821, + 191, + 130, + 67, + -72, + -52 + ], + [ + 952, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1083, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1214, + 191, + 130, + 67, + -72, + -52 + ] + ], + [ + [ + 1345, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1443, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1541, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1639, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1737, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1835, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1933, + 191, + 97, + 106, + -55, + -71 + ], + [ + 0, + 298, + 97, + 106, + -55, + -71 + ] + ], + [ + [ + 98, + 298, + 130, + 79, + -58, + -60 + ], + [ + 229, + 298, + 130, + 79, + -58, + -60 + ], + [ + 360, + 298, + 130, + 79, + -58, + -60 + ], + [ + 491, + 298, + 130, + 79, + -58, + -60 + ], + [ + 622, + 298, + 130, + 79, + -58, + -60 + ], + [ + 753, + 298, + 130, + 79, + -58, + -60 + ], + [ + 884, + 298, + 130, + 79, + -58, + -60 + ], + [ + 1015, + 298, + 130, + 79, + -58, + -60 + ] + ], + [ + [ + 1146, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1248, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1350, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1452, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1554, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1656, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1758, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1860, + 298, + 101, + 86, + -52, + -62 + ] + ], + [ + [ + 0, + 405, + 128, + 67, + -73, + -52 + ], + [ + 129, + 405, + 128, + 67, + -73, + -52 + ], + [ + 258, + 405, + 128, + 67, + -73, + -52 + ], + [ + 387, + 405, + 128, + 67, + -73, + -52 + ], + [ + 516, + 405, + 128, + 67, + -73, + -52 + ], + [ + 645, + 405, + 128, + 67, + -73, + -52 + ], + [ + 774, + 405, + 128, + 67, + -73, + -52 + ], + [ + 903, + 405, + 128, + 67, + -73, + -52 + ] + ], + [ + [ + 1032, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1154, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1276, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1398, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1520, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1642, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1764, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1886, + 405, + 121, + 82, + -66, + -60 + ] + ], + [ + [ + 0, + 488, + 90, + 104, + -55, + -71 + ], + [ + 91, + 488, + 90, + 104, + -55, + -71 + ], + [ + 182, + 488, + 90, + 104, + -55, + -71 + ], + [ + 273, + 488, + 90, + 104, + -55, + -71 + ], + [ + 364, + 488, + 90, + 104, + -55, + -71 + ], + [ + 455, + 488, + 90, + 104, + -55, + -71 + ], + [ + 546, + 488, + 90, + 104, + -55, + -71 + ], + [ + 637, + 488, + 90, + 104, + -55, + -71 + ] + ], + [ + [ + 728, + 488, + 101, + 103, + -49, + -69 + ], + [ + 830, + 488, + 101, + 103, + -49, + -69 + ], + [ + 932, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1034, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1136, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1238, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1340, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1442, + 488, + 101, + 103, + -49, + -69 + ] + ], + [ + [ + 1544, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1673, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1802, + 488, + 128, + 83, + -55, + -60 + ], + [ + 0, + 593, + 128, + 83, + -55, + -60 + ], + [ + 129, + 593, + 128, + 83, + -55, + -60 + ], + [ + 258, + 593, + 128, + 83, + -55, + -60 + ], + [ + 387, + 593, + 128, + 83, + -55, + -60 + ], + [ + 516, + 593, + 128, + 83, + -55, + -60 + ] + ], + [ + [ + 645, + 593, + 121, + 82, + -55, + -59 + ], + [ + 767, + 593, + 121, + 82, + -55, + -59 + ], + [ + 889, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1011, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1133, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1255, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1377, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1499, + 593, + 121, + 82, + -55, + -59 + ] + ], + [ + [ + 1621, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1712, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1803, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1894, + 593, + 90, + 85, + -35, + -62 + ], + [ + 0, + 679, + 90, + 85, + -35, + -62 + ], + [ + 91, + 679, + 90, + 85, + -35, + -62 + ], + [ + 182, + 679, + 90, + 85, + -35, + -62 + ], + [ + 273, + 679, + 90, + 85, + -35, + -62 + ] + ], + [ + [ + 364, + 679, + 100, + 88, + -48, + -63 + ], + [ + 465, + 679, + 100, + 88, + -48, + -63 + ], + [ + 566, + 679, + 100, + 88, + -48, + -63 + ], + [ + 667, + 679, + 100, + 88, + -48, + -63 + ], + [ + 768, + 679, + 100, + 88, + -48, + -63 + ], + [ + 869, + 679, + 100, + 88, + -48, + -63 + ], + [ + 970, + 679, + 100, + 88, + -48, + -63 + ], + [ + 1071, + 679, + 100, + 88, + -48, + -63 + ] + ], + [ + [ + 1172, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1276, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1380, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1484, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1588, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1692, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1796, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1900, + 679, + 103, + 83, + -58, + -60 + ] + ], + [ + [ + 0, + 768, + 122, + 73, + -71, + -55 + ], + [ + 123, + 768, + 122, + 73, + -71, + -55 + ], + [ + 246, + 768, + 122, + 73, + -71, + -55 + ], + [ + 369, + 768, + 122, + 73, + -71, + -55 + ], + [ + 492, + 768, + 122, + 73, + -71, + -55 + ], + [ + 615, + 768, + 122, + 73, + -71, + -55 + ], + [ + 738, + 768, + 122, + 73, + -71, + -55 + ], + [ + 861, + 768, + 122, + 73, + -71, + -55 + ] + ], + [ + [ + 984, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1117, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1250, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1383, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1516, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1649, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1782, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1915, + 768, + 132, + 59, + -74, + -48 + ] + ], + [ + [ + 0, + 842, + 126, + 75, + -68, + -56 + ], + [ + 127, + 842, + 126, + 75, + -68, + -56 + ], + [ + 254, + 842, + 126, + 75, + -68, + -56 + ], + [ + 381, + 842, + 126, + 75, + -68, + -56 + ], + [ + 508, + 842, + 126, + 75, + -68, + -56 + ], + [ + 635, + 842, + 126, + 75, + -68, + -56 + ], + [ + 762, + 842, + 126, + 75, + -68, + -56 + ], + [ + 889, + 842, + 126, + 75, + -68, + -56 + ] + ], + [ + [ + 1016, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1131, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1246, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1361, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1476, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1591, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1706, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1821, + 842, + 114, + 90, + -63, + -64 + ] + ], + [ + [ + 1936, + 842, + 94, + 101, + -53, + -70 + ], + [ + 0, + 944, + 94, + 101, + -53, + -70 + ], + [ + 95, + 944, + 94, + 101, + -53, + -70 + ], + [ + 190, + 944, + 94, + 101, + -53, + -70 + ], + [ + 285, + 944, + 94, + 101, + -53, + -70 + ], + [ + 380, + 944, + 94, + 101, + -53, + -70 + ], + [ + 475, + 944, + 94, + 101, + -53, + -70 + ], + [ + 570, + 944, + 94, + 101, + -53, + -70 + ] + ], + [ + [ + 665, + 944, + 92, + 106, + -56, + -71 + ], + [ + 758, + 944, + 92, + 106, + -56, + -71 + ], + [ + 851, + 944, + 92, + 106, + -56, + -71 + ], + [ + 944, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1037, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1130, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1223, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1316, + 944, + 92, + 106, + -56, + -71 + ] + ], + [ + [ + 1409, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1510, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1611, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1712, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1813, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1914, + 944, + 100, + 105, + -52, + -70 + ], + [ + 0, + 1051, + 100, + 105, + -52, + -70 + ], + [ + 101, + 1051, + 100, + 105, + -52, + -70 + ] + ], + [ + [ + 202, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 307, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 412, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 517, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 622, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 727, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 832, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 937, + 1051, + 104, + 99, + -45, + -67 + ] + ], + [ + [ + 1042, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1164, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1286, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1408, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1530, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1652, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1774, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1896, + 1051, + 121, + 87, + -51, + -61 + ] + ], + [ + [ + 0, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 132, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 264, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 396, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 528, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 660, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 792, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 924, + 1157, + 131, + 80, + -57, + -61 + ] + ], + [ + [ + 1056, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1183, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1310, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1437, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1564, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1691, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1818, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 0, + 1239, + 126, + 81, + -58, + -60 + ] + ], + [ + [ + 127, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 242, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 357, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 472, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 587, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 702, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 817, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 932, + 1239, + 114, + 81, + -51, + -57 + ] + ], + [ + [ + 1047, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1142, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1237, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1332, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1427, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1522, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1617, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1712, + 1239, + 94, + 85, + -41, + -60 + ] + ], + [ + [ + 1807, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 1901, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 0, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 94, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 188, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 282, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 376, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 470, + 1326, + 93, + 86, + -37, + -63 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/chainlightning.png b/public/missiles/chainlightning.png new file mode 100644 index 0000000..2d2a436 Binary files /dev/null and b/public/missiles/chainlightning.png differ diff --git a/public/missiles/coldunique.json b/public/missiles/coldunique.json new file mode 100644 index 0000000..1a75390 --- /dev/null +++ b/public/missiles/coldunique.json @@ -0,0 +1,1835 @@ +{ + "name": "coldunique", + "celFile": "FrostNova", + "width": 2048, + "height": 546, + "directions": 16, + "framesPerDirection": 14, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 80, + 52, + -28, + -34 + ], + [ + 81, + 0, + 80, + 52, + -28, + -34 + ], + [ + 162, + 0, + 80, + 52, + -28, + -34 + ], + [ + 243, + 0, + 80, + 52, + -28, + -34 + ], + [ + 324, + 0, + 80, + 52, + -28, + -34 + ], + [ + 405, + 0, + 80, + 52, + -28, + -34 + ], + [ + 486, + 0, + 80, + 52, + -28, + -34 + ], + [ + 567, + 0, + 80, + 52, + -28, + -34 + ], + [ + 648, + 0, + 80, + 52, + -28, + -34 + ], + [ + 729, + 0, + 80, + 52, + -28, + -34 + ], + [ + 810, + 0, + 80, + 52, + -28, + -34 + ], + [ + 891, + 0, + 80, + 52, + -28, + -34 + ], + [ + 972, + 0, + 80, + 52, + -28, + -34 + ], + [ + 1053, + 0, + 80, + 52, + -28, + -34 + ] + ], + [ + [ + 1134, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1221, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1308, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1395, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1482, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1569, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1656, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1743, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1830, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1917, + 0, + 86, + 50, + -29, + -21 + ], + [ + 0, + 53, + 86, + 50, + -29, + -21 + ], + [ + 87, + 53, + 86, + 50, + -29, + -21 + ], + [ + 174, + 53, + 86, + 50, + -29, + -21 + ], + [ + 261, + 53, + 86, + 50, + -29, + -21 + ] + ], + [ + [ + 348, + 53, + 77, + 49, + -50, + -21 + ], + [ + 426, + 53, + 77, + 49, + -50, + -21 + ], + [ + 504, + 53, + 77, + 49, + -50, + -21 + ], + [ + 582, + 53, + 77, + 49, + -50, + -21 + ], + [ + 660, + 53, + 77, + 49, + -50, + -21 + ], + [ + 738, + 53, + 77, + 49, + -50, + -21 + ], + [ + 816, + 53, + 77, + 49, + -50, + -21 + ], + [ + 894, + 53, + 77, + 49, + -50, + -21 + ], + [ + 972, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1050, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1128, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1206, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1284, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1362, + 53, + 77, + 49, + -50, + -21 + ] + ], + [ + [ + 1440, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1528, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1616, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1704, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1792, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1880, + 53, + 87, + 51, + -58, + -34 + ], + [ + 0, + 105, + 87, + 51, + -58, + -34 + ], + [ + 88, + 105, + 87, + 51, + -58, + -34 + ], + [ + 176, + 105, + 87, + 51, + -58, + -34 + ], + [ + 264, + 105, + 87, + 51, + -58, + -34 + ], + [ + 352, + 105, + 87, + 51, + -58, + -34 + ], + [ + 440, + 105, + 87, + 51, + -58, + -34 + ], + [ + 528, + 105, + 87, + 51, + -58, + -34 + ], + [ + 616, + 105, + 87, + 51, + -58, + -34 + ] + ], + [ + [ + 704, + 105, + 88, + 48, + -41, + -35 + ], + [ + 793, + 105, + 88, + 48, + -41, + -35 + ], + [ + 882, + 105, + 88, + 48, + -41, + -35 + ], + [ + 971, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1060, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1149, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1238, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1327, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1416, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1505, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1594, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1683, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1772, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1861, + 105, + 88, + 48, + -41, + -35 + ] + ], + [ + [ + 1950, + 105, + 66, + 53, + -15, + -28 + ], + [ + 0, + 159, + 66, + 53, + -15, + -28 + ], + [ + 67, + 159, + 66, + 53, + -15, + -28 + ], + [ + 134, + 159, + 66, + 53, + -15, + -28 + ], + [ + 201, + 159, + 66, + 53, + -15, + -28 + ], + [ + 268, + 159, + 66, + 53, + -15, + -28 + ], + [ + 335, + 159, + 66, + 53, + -15, + -28 + ], + [ + 402, + 159, + 66, + 53, + -15, + -28 + ], + [ + 469, + 159, + 66, + 53, + -15, + -28 + ], + [ + 536, + 159, + 66, + 53, + -15, + -28 + ], + [ + 603, + 159, + 66, + 53, + -15, + -28 + ], + [ + 670, + 159, + 66, + 53, + -15, + -28 + ], + [ + 737, + 159, + 66, + 53, + -15, + -28 + ], + [ + 804, + 159, + 66, + 53, + -15, + -28 + ] + ], + [ + [ + 871, + 159, + 86, + 49, + -47, + -16 + ], + [ + 958, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1045, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1132, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1219, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1306, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1393, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1480, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1567, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1654, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1741, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1828, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1915, + 159, + 86, + 49, + -47, + -16 + ], + [ + 0, + 213, + 86, + 49, + -47, + -16 + ] + ], + [ + [ + 87, + 213, + 69, + 58, + -53, + -31 + ], + [ + 157, + 213, + 69, + 58, + -53, + -31 + ], + [ + 227, + 213, + 69, + 58, + -53, + -31 + ], + [ + 297, + 213, + 69, + 58, + -53, + -31 + ], + [ + 367, + 213, + 69, + 58, + -53, + -31 + ], + [ + 437, + 213, + 69, + 58, + -53, + -31 + ], + [ + 507, + 213, + 69, + 58, + -53, + -31 + ], + [ + 577, + 213, + 69, + 58, + -53, + -31 + ], + [ + 647, + 213, + 69, + 58, + -53, + -31 + ], + [ + 717, + 213, + 69, + 58, + -53, + -31 + ], + [ + 787, + 213, + 69, + 58, + -53, + -31 + ], + [ + 857, + 213, + 69, + 58, + -53, + -31 + ], + [ + 927, + 213, + 69, + 58, + -53, + -31 + ], + [ + 997, + 213, + 69, + 58, + -53, + -31 + ] + ], + [ + [ + 1067, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1157, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1247, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1337, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1427, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1517, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1607, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1697, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1787, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1877, + 213, + 89, + 48, + -34, + -34 + ], + [ + 0, + 272, + 89, + 48, + -34, + -34 + ], + [ + 90, + 272, + 89, + 48, + -34, + -34 + ], + [ + 180, + 272, + 89, + 48, + -34, + -34 + ], + [ + 270, + 272, + 89, + 48, + -34, + -34 + ] + ], + [ + [ + 360, + 272, + 78, + 54, + -19, + -33 + ], + [ + 439, + 272, + 78, + 54, + -19, + -33 + ], + [ + 518, + 272, + 78, + 54, + -19, + -33 + ], + [ + 597, + 272, + 78, + 54, + -19, + -33 + ], + [ + 676, + 272, + 78, + 54, + -19, + -33 + ], + [ + 755, + 272, + 78, + 54, + -19, + -33 + ], + [ + 834, + 272, + 78, + 54, + -19, + -33 + ], + [ + 913, + 272, + 78, + 54, + -19, + -33 + ], + [ + 992, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1071, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1150, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1229, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1308, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1387, + 272, + 78, + 54, + -19, + -33 + ] + ], + [ + [ + 1466, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1543, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1620, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1697, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1774, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1851, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1928, + 272, + 76, + 50, + -19, + -24 + ], + [ + 0, + 327, + 76, + 50, + -19, + -24 + ], + [ + 77, + 327, + 76, + 50, + -19, + -24 + ], + [ + 154, + 327, + 76, + 50, + -19, + -24 + ], + [ + 231, + 327, + 76, + 50, + -19, + -24 + ], + [ + 308, + 327, + 76, + 50, + -19, + -24 + ], + [ + 385, + 327, + 76, + 50, + -19, + -24 + ], + [ + 462, + 327, + 76, + 50, + -19, + -24 + ] + ], + [ + [ + 539, + 327, + 85, + 48, + -39, + -18 + ], + [ + 625, + 327, + 85, + 48, + -39, + -18 + ], + [ + 711, + 327, + 85, + 48, + -39, + -18 + ], + [ + 797, + 327, + 85, + 48, + -39, + -18 + ], + [ + 883, + 327, + 85, + 48, + -39, + -18 + ], + [ + 969, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1055, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1141, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1227, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1313, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1399, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1485, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1571, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1657, + 327, + 85, + 48, + -39, + -18 + ] + ], + [ + [ + 1743, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1832, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1921, + 327, + 88, + 47, + -53, + -17 + ], + [ + 0, + 378, + 88, + 47, + -53, + -17 + ], + [ + 89, + 378, + 88, + 47, + -53, + -17 + ], + [ + 178, + 378, + 88, + 47, + -53, + -17 + ], + [ + 267, + 378, + 88, + 47, + -53, + -17 + ], + [ + 356, + 378, + 88, + 47, + -53, + -17 + ], + [ + 445, + 378, + 88, + 47, + -53, + -17 + ], + [ + 534, + 378, + 88, + 47, + -53, + -17 + ], + [ + 623, + 378, + 88, + 47, + -53, + -17 + ], + [ + 712, + 378, + 88, + 47, + -53, + -17 + ], + [ + 801, + 378, + 88, + 47, + -53, + -17 + ], + [ + 890, + 378, + 88, + 47, + -53, + -17 + ] + ], + [ + [ + 979, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1054, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1129, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1204, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1279, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1354, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1429, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1504, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1579, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1654, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1729, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1804, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1879, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1954, + 378, + 74, + 59, + -55, + -26 + ] + ], + [ + [ + 0, + 438, + 78, + 56, + -59, + -34 + ], + [ + 79, + 438, + 78, + 56, + -59, + -34 + ], + [ + 158, + 438, + 78, + 56, + -59, + -34 + ], + [ + 237, + 438, + 78, + 56, + -59, + -34 + ], + [ + 316, + 438, + 78, + 56, + -59, + -34 + ], + [ + 395, + 438, + 78, + 56, + -59, + -34 + ], + [ + 474, + 438, + 78, + 56, + -59, + -34 + ], + [ + 553, + 438, + 78, + 56, + -59, + -34 + ], + [ + 632, + 438, + 78, + 56, + -59, + -34 + ], + [ + 711, + 438, + 78, + 56, + -59, + -34 + ], + [ + 790, + 438, + 78, + 56, + -59, + -34 + ], + [ + 869, + 438, + 78, + 56, + -59, + -34 + ], + [ + 948, + 438, + 78, + 56, + -59, + -34 + ], + [ + 1027, + 438, + 78, + 56, + -59, + -34 + ] + ], + [ + [ + 1106, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1191, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1276, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1361, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1446, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1531, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1616, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1701, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1786, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1871, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1956, + 438, + 84, + 51, + -46, + -36 + ], + [ + 0, + 495, + 84, + 51, + -46, + -36 + ], + [ + 85, + 495, + 84, + 51, + -46, + -36 + ], + [ + 170, + 495, + 84, + 51, + -46, + -36 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/coldunique.png b/public/missiles/coldunique.png new file mode 100644 index 0000000..9955f13 Binary files /dev/null and b/public/missiles/coldunique.png differ diff --git a/public/missiles/electricnova.json b/public/missiles/electricnova.json new file mode 100644 index 0000000..b75a01f --- /dev/null +++ b/public/missiles/electricnova.json @@ -0,0 +1,1707 @@ +{ + "name": "electricnova", + "celFile": "ElectricNova", + "width": 1024, + "height": 601, + "directions": 16, + "framesPerDirection": 13, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 65, + 40, + -32, + -20 + ], + [ + 66, + 0, + 65, + 40, + -32, + -20 + ], + [ + 132, + 0, + 65, + 40, + -32, + -20 + ], + [ + 198, + 0, + 65, + 40, + -32, + -20 + ], + [ + 264, + 0, + 65, + 40, + -32, + -20 + ], + [ + 330, + 0, + 65, + 40, + -32, + -20 + ], + [ + 396, + 0, + 65, + 40, + -32, + -20 + ], + [ + 462, + 0, + 65, + 40, + -32, + -20 + ], + [ + 528, + 0, + 65, + 40, + -32, + -20 + ], + [ + 594, + 0, + 65, + 40, + -32, + -20 + ], + [ + 660, + 0, + 65, + 40, + -32, + -20 + ], + [ + 726, + 0, + 65, + 40, + -32, + -20 + ], + [ + 792, + 0, + 65, + 40, + -32, + -20 + ] + ], + [ + [ + 858, + 0, + 65, + 42, + -32, + -22 + ], + [ + 924, + 0, + 65, + 42, + -32, + -22 + ], + [ + 0, + 43, + 65, + 42, + -32, + -22 + ], + [ + 66, + 43, + 65, + 42, + -32, + -22 + ], + [ + 132, + 43, + 65, + 42, + -32, + -22 + ], + [ + 198, + 43, + 65, + 42, + -32, + -22 + ], + [ + 264, + 43, + 65, + 42, + -32, + -22 + ], + [ + 330, + 43, + 65, + 42, + -32, + -22 + ], + [ + 396, + 43, + 65, + 42, + -32, + -22 + ], + [ + 462, + 43, + 65, + 42, + -32, + -22 + ], + [ + 528, + 43, + 65, + 42, + -32, + -22 + ], + [ + 594, + 43, + 65, + 42, + -32, + -22 + ], + [ + 660, + 43, + 65, + 42, + -32, + -22 + ] + ], + [ + [ + 726, + 43, + 64, + 42, + -32, + -23 + ], + [ + 791, + 43, + 64, + 42, + -32, + -23 + ], + [ + 856, + 43, + 64, + 42, + -32, + -23 + ], + [ + 921, + 43, + 64, + 42, + -32, + -23 + ], + [ + 0, + 86, + 64, + 42, + -32, + -23 + ], + [ + 65, + 86, + 64, + 42, + -32, + -23 + ], + [ + 130, + 86, + 64, + 42, + -32, + -23 + ], + [ + 195, + 86, + 64, + 42, + -32, + -23 + ], + [ + 260, + 86, + 64, + 42, + -32, + -23 + ], + [ + 325, + 86, + 64, + 42, + -32, + -23 + ], + [ + 390, + 86, + 64, + 42, + -32, + -23 + ], + [ + 455, + 86, + 64, + 42, + -32, + -23 + ], + [ + 520, + 86, + 64, + 42, + -32, + -23 + ] + ], + [ + [ + 585, + 86, + 65, + 42, + -33, + -21 + ], + [ + 651, + 86, + 65, + 42, + -33, + -21 + ], + [ + 717, + 86, + 65, + 42, + -33, + -21 + ], + [ + 783, + 86, + 65, + 42, + -33, + -21 + ], + [ + 849, + 86, + 65, + 42, + -33, + -21 + ], + [ + 915, + 86, + 65, + 42, + -33, + -21 + ], + [ + 0, + 129, + 65, + 42, + -33, + -21 + ], + [ + 66, + 129, + 65, + 42, + -33, + -21 + ], + [ + 132, + 129, + 65, + 42, + -33, + -21 + ], + [ + 198, + 129, + 65, + 42, + -33, + -21 + ], + [ + 264, + 129, + 65, + 42, + -33, + -21 + ], + [ + 330, + 129, + 65, + 42, + -33, + -21 + ], + [ + 396, + 129, + 65, + 42, + -33, + -21 + ] + ], + [ + [ + 462, + 129, + 65, + 39, + -32, + -18 + ], + [ + 528, + 129, + 65, + 39, + -32, + -18 + ], + [ + 594, + 129, + 65, + 39, + -32, + -18 + ], + [ + 660, + 129, + 65, + 39, + -32, + -18 + ], + [ + 726, + 129, + 65, + 39, + -32, + -18 + ], + [ + 792, + 129, + 65, + 39, + -32, + -18 + ], + [ + 858, + 129, + 65, + 39, + -32, + -18 + ], + [ + 924, + 129, + 65, + 39, + -32, + -18 + ], + [ + 0, + 172, + 65, + 39, + -32, + -18 + ], + [ + 66, + 172, + 65, + 39, + -32, + -18 + ], + [ + 132, + 172, + 65, + 39, + -32, + -18 + ], + [ + 198, + 172, + 65, + 39, + -32, + -18 + ], + [ + 264, + 172, + 65, + 39, + -32, + -18 + ] + ], + [ + [ + 330, + 172, + 54, + 42, + -34, + -21 + ], + [ + 385, + 172, + 54, + 42, + -34, + -21 + ], + [ + 440, + 172, + 54, + 42, + -34, + -21 + ], + [ + 495, + 172, + 54, + 42, + -34, + -21 + ], + [ + 550, + 172, + 54, + 42, + -34, + -21 + ], + [ + 605, + 172, + 54, + 42, + -34, + -21 + ], + [ + 660, + 172, + 54, + 42, + -34, + -21 + ], + [ + 715, + 172, + 54, + 42, + -34, + -21 + ], + [ + 770, + 172, + 54, + 42, + -34, + -21 + ], + [ + 825, + 172, + 54, + 42, + -34, + -21 + ], + [ + 880, + 172, + 54, + 42, + -34, + -21 + ], + [ + 935, + 172, + 54, + 42, + -34, + -21 + ], + [ + 0, + 215, + 54, + 42, + -34, + -21 + ] + ], + [ + [ + 55, + 215, + 64, + 39, + -33, + -24 + ], + [ + 120, + 215, + 64, + 39, + -33, + -24 + ], + [ + 185, + 215, + 64, + 39, + -33, + -24 + ], + [ + 250, + 215, + 64, + 39, + -33, + -24 + ], + [ + 315, + 215, + 64, + 39, + -33, + -24 + ], + [ + 380, + 215, + 64, + 39, + -33, + -24 + ], + [ + 445, + 215, + 64, + 39, + -33, + -24 + ], + [ + 510, + 215, + 64, + 39, + -33, + -24 + ], + [ + 575, + 215, + 64, + 39, + -33, + -24 + ], + [ + 640, + 215, + 64, + 39, + -33, + -24 + ], + [ + 705, + 215, + 64, + 39, + -33, + -24 + ], + [ + 770, + 215, + 64, + 39, + -33, + -24 + ], + [ + 835, + 215, + 64, + 39, + -33, + -24 + ] + ], + [ + [ + 900, + 215, + 50, + 42, + -20, + -22 + ], + [ + 951, + 215, + 50, + 42, + -20, + -22 + ], + [ + 0, + 258, + 50, + 42, + -20, + -22 + ], + [ + 51, + 258, + 50, + 42, + -20, + -22 + ], + [ + 102, + 258, + 50, + 42, + -20, + -22 + ], + [ + 153, + 258, + 50, + 42, + -20, + -22 + ], + [ + 204, + 258, + 50, + 42, + -20, + -22 + ], + [ + 255, + 258, + 50, + 42, + -20, + -22 + ], + [ + 306, + 258, + 50, + 42, + -20, + -22 + ], + [ + 357, + 258, + 50, + 42, + -20, + -22 + ], + [ + 408, + 258, + 50, + 42, + -20, + -22 + ], + [ + 459, + 258, + 50, + 42, + -20, + -22 + ], + [ + 510, + 258, + 50, + 42, + -20, + -22 + ] + ], + [ + [ + 561, + 258, + 64, + 42, + -30, + -19 + ], + [ + 626, + 258, + 64, + 42, + -30, + -19 + ], + [ + 691, + 258, + 64, + 42, + -30, + -19 + ], + [ + 756, + 258, + 64, + 42, + -30, + -19 + ], + [ + 821, + 258, + 64, + 42, + -30, + -19 + ], + [ + 886, + 258, + 64, + 42, + -30, + -19 + ], + [ + 951, + 258, + 64, + 42, + -30, + -19 + ], + [ + 0, + 301, + 64, + 42, + -30, + -19 + ], + [ + 65, + 301, + 64, + 42, + -30, + -19 + ], + [ + 130, + 301, + 64, + 42, + -30, + -19 + ], + [ + 195, + 301, + 64, + 42, + -30, + -19 + ], + [ + 260, + 301, + 64, + 42, + -30, + -19 + ], + [ + 325, + 301, + 64, + 42, + -30, + -19 + ] + ], + [ + [ + 390, + 301, + 59, + 41, + -33, + -22 + ], + [ + 450, + 301, + 59, + 41, + -33, + -22 + ], + [ + 510, + 301, + 59, + 41, + -33, + -22 + ], + [ + 570, + 301, + 59, + 41, + -33, + -22 + ], + [ + 630, + 301, + 59, + 41, + -33, + -22 + ], + [ + 690, + 301, + 59, + 41, + -33, + -22 + ], + [ + 750, + 301, + 59, + 41, + -33, + -22 + ], + [ + 810, + 301, + 59, + 41, + -33, + -22 + ], + [ + 870, + 301, + 59, + 41, + -33, + -22 + ], + [ + 930, + 301, + 59, + 41, + -33, + -22 + ], + [ + 0, + 344, + 59, + 41, + -33, + -22 + ], + [ + 60, + 344, + 59, + 41, + -33, + -22 + ], + [ + 120, + 344, + 59, + 41, + -33, + -22 + ] + ], + [ + [ + 180, + 344, + 58, + 42, + -32, + -20 + ], + [ + 239, + 344, + 58, + 42, + -32, + -20 + ], + [ + 298, + 344, + 58, + 42, + -32, + -20 + ], + [ + 357, + 344, + 58, + 42, + -32, + -20 + ], + [ + 416, + 344, + 58, + 42, + -32, + -20 + ], + [ + 475, + 344, + 58, + 42, + -32, + -20 + ], + [ + 534, + 344, + 58, + 42, + -32, + -20 + ], + [ + 593, + 344, + 58, + 42, + -32, + -20 + ], + [ + 652, + 344, + 58, + 42, + -32, + -20 + ], + [ + 711, + 344, + 58, + 42, + -32, + -20 + ], + [ + 770, + 344, + 58, + 42, + -32, + -20 + ], + [ + 829, + 344, + 58, + 42, + -32, + -20 + ], + [ + 888, + 344, + 58, + 42, + -32, + -20 + ] + ], + [ + [ + 947, + 344, + 65, + 41, + -31, + -23 + ], + [ + 0, + 387, + 65, + 41, + -31, + -23 + ], + [ + 66, + 387, + 65, + 41, + -31, + -23 + ], + [ + 132, + 387, + 65, + 41, + -31, + -23 + ], + [ + 198, + 387, + 65, + 41, + -31, + -23 + ], + [ + 264, + 387, + 65, + 41, + -31, + -23 + ], + [ + 330, + 387, + 65, + 41, + -31, + -23 + ], + [ + 396, + 387, + 65, + 41, + -31, + -23 + ], + [ + 462, + 387, + 65, + 41, + -31, + -23 + ], + [ + 528, + 387, + 65, + 41, + -31, + -23 + ], + [ + 594, + 387, + 65, + 41, + -31, + -23 + ], + [ + 660, + 387, + 65, + 41, + -31, + -23 + ], + [ + 726, + 387, + 65, + 41, + -31, + -23 + ] + ], + [ + [ + 792, + 387, + 64, + 41, + -34, + -23 + ], + [ + 857, + 387, + 64, + 41, + -34, + -23 + ], + [ + 922, + 387, + 64, + 41, + -34, + -23 + ], + [ + 0, + 429, + 64, + 41, + -34, + -23 + ], + [ + 65, + 429, + 64, + 41, + -34, + -23 + ], + [ + 130, + 429, + 64, + 41, + -34, + -23 + ], + [ + 195, + 429, + 64, + 41, + -34, + -23 + ], + [ + 260, + 429, + 64, + 41, + -34, + -23 + ], + [ + 325, + 429, + 64, + 41, + -34, + -23 + ], + [ + 390, + 429, + 64, + 41, + -34, + -23 + ], + [ + 455, + 429, + 64, + 41, + -34, + -23 + ], + [ + 520, + 429, + 64, + 41, + -34, + -23 + ], + [ + 585, + 429, + 64, + 41, + -34, + -23 + ] + ], + [ + [ + 650, + 429, + 59, + 40, + -26, + -20 + ], + [ + 710, + 429, + 59, + 40, + -26, + -20 + ], + [ + 770, + 429, + 59, + 40, + -26, + -20 + ], + [ + 830, + 429, + 59, + 40, + -26, + -20 + ], + [ + 890, + 429, + 59, + 40, + -26, + -20 + ], + [ + 950, + 429, + 59, + 40, + -26, + -20 + ], + [ + 0, + 471, + 59, + 40, + -26, + -20 + ], + [ + 60, + 471, + 59, + 40, + -26, + -20 + ], + [ + 120, + 471, + 59, + 40, + -26, + -20 + ], + [ + 180, + 471, + 59, + 40, + -26, + -20 + ], + [ + 240, + 471, + 59, + 40, + -26, + -20 + ], + [ + 300, + 471, + 59, + 40, + -26, + -20 + ], + [ + 360, + 471, + 59, + 40, + -26, + -20 + ] + ], + [ + [ + 420, + 471, + 60, + 43, + -25, + -24 + ], + [ + 481, + 471, + 60, + 43, + -25, + -24 + ], + [ + 542, + 471, + 60, + 43, + -25, + -24 + ], + [ + 603, + 471, + 60, + 43, + -25, + -24 + ], + [ + 664, + 471, + 60, + 43, + -25, + -24 + ], + [ + 725, + 471, + 60, + 43, + -25, + -24 + ], + [ + 786, + 471, + 60, + 43, + -25, + -24 + ], + [ + 847, + 471, + 60, + 43, + -25, + -24 + ], + [ + 908, + 471, + 60, + 43, + -25, + -24 + ], + [ + 0, + 515, + 60, + 43, + -25, + -24 + ], + [ + 61, + 515, + 60, + 43, + -25, + -24 + ], + [ + 122, + 515, + 60, + 43, + -25, + -24 + ], + [ + 183, + 515, + 60, + 43, + -25, + -24 + ] + ], + [ + [ + 244, + 515, + 65, + 42, + -35, + -18 + ], + [ + 310, + 515, + 65, + 42, + -35, + -18 + ], + [ + 376, + 515, + 65, + 42, + -35, + -18 + ], + [ + 442, + 515, + 65, + 42, + -35, + -18 + ], + [ + 508, + 515, + 65, + 42, + -35, + -18 + ], + [ + 574, + 515, + 65, + 42, + -35, + -18 + ], + [ + 640, + 515, + 65, + 42, + -35, + -18 + ], + [ + 706, + 515, + 65, + 42, + -35, + -18 + ], + [ + 772, + 515, + 65, + 42, + -35, + -18 + ], + [ + 838, + 515, + 65, + 42, + -35, + -18 + ], + [ + 904, + 515, + 65, + 42, + -35, + -18 + ], + [ + 0, + 559, + 65, + 42, + -35, + -18 + ], + [ + 66, + 559, + 65, + 42, + -35, + -18 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/electricnova.png b/public/missiles/electricnova.png new file mode 100644 index 0000000..a8e7729 Binary files /dev/null and b/public/missiles/electricnova.png differ diff --git a/public/missiles/firewall.json b/public/missiles/firewall.json new file mode 100644 index 0000000..18eebe6 --- /dev/null +++ b/public/missiles/firewall.json @@ -0,0 +1,309 @@ +{ + "name": "firewall", + "celFile": "groundFireBig", + "width": 1024, + "height": 503, + "directions": 1, + "framesPerDirection": 37, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 66, + 167, + -33, + -156 + ], + [ + 67, + 0, + 66, + 167, + -33, + -156 + ], + [ + 134, + 0, + 66, + 167, + -33, + -156 + ], + [ + 201, + 0, + 66, + 167, + -33, + -156 + ], + [ + 268, + 0, + 66, + 167, + -33, + -156 + ], + [ + 335, + 0, + 66, + 167, + -33, + -156 + ], + [ + 402, + 0, + 66, + 167, + -33, + -156 + ], + [ + 469, + 0, + 66, + 167, + -33, + -156 + ], + [ + 536, + 0, + 66, + 167, + -33, + -156 + ], + [ + 603, + 0, + 66, + 167, + -33, + -156 + ], + [ + 670, + 0, + 66, + 167, + -33, + -156 + ], + [ + 737, + 0, + 66, + 167, + -33, + -156 + ], + [ + 804, + 0, + 66, + 167, + -33, + -156 + ], + [ + 871, + 0, + 66, + 167, + -33, + -156 + ], + [ + 938, + 0, + 66, + 167, + -33, + -156 + ], + [ + 0, + 168, + 66, + 167, + -33, + -156 + ], + [ + 67, + 168, + 66, + 167, + -33, + -156 + ], + [ + 134, + 168, + 66, + 167, + -33, + -156 + ], + [ + 201, + 168, + 66, + 167, + -33, + -156 + ], + [ + 268, + 168, + 66, + 167, + -33, + -156 + ], + [ + 335, + 168, + 66, + 167, + -33, + -156 + ], + [ + 402, + 168, + 66, + 167, + -33, + -156 + ], + [ + 469, + 168, + 66, + 167, + -33, + -156 + ], + [ + 536, + 168, + 66, + 167, + -33, + -156 + ], + [ + 603, + 168, + 66, + 167, + -33, + -156 + ], + [ + 670, + 168, + 66, + 167, + -33, + -156 + ], + [ + 737, + 168, + 66, + 167, + -33, + -156 + ], + [ + 804, + 168, + 66, + 167, + -33, + -156 + ], + [ + 871, + 168, + 66, + 167, + -33, + -156 + ], + [ + 938, + 168, + 66, + 167, + -33, + -156 + ], + [ + 0, + 336, + 66, + 167, + -33, + -156 + ], + [ + 67, + 336, + 66, + 167, + -33, + -156 + ], + [ + 134, + 336, + 66, + 167, + -33, + -156 + ], + [ + 201, + 336, + 66, + 167, + -33, + -156 + ], + [ + 268, + 336, + 66, + 167, + -33, + -156 + ], + [ + 335, + 336, + 66, + 167, + -33, + -156 + ], + [ + 402, + 336, + 66, + 167, + -33, + -156 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/firewall.png b/public/missiles/firewall.png new file mode 100644 index 0000000..667ef3d Binary files /dev/null and b/public/missiles/firewall.png differ diff --git a/public/missiles/firewallmaker.json b/public/missiles/firewallmaker.json new file mode 100644 index 0000000..502903a --- /dev/null +++ b/public/missiles/firewallmaker.json @@ -0,0 +1,309 @@ +{ + "name": "firewallmaker", + "celFile": "groundFireBig", + "width": 1024, + "height": 503, + "directions": 1, + "framesPerDirection": 37, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 66, + 167, + -33, + -156 + ], + [ + 67, + 0, + 66, + 167, + -33, + -156 + ], + [ + 134, + 0, + 66, + 167, + -33, + -156 + ], + [ + 201, + 0, + 66, + 167, + -33, + -156 + ], + [ + 268, + 0, + 66, + 167, + -33, + -156 + ], + [ + 335, + 0, + 66, + 167, + -33, + -156 + ], + [ + 402, + 0, + 66, + 167, + -33, + -156 + ], + [ + 469, + 0, + 66, + 167, + -33, + -156 + ], + [ + 536, + 0, + 66, + 167, + -33, + -156 + ], + [ + 603, + 0, + 66, + 167, + -33, + -156 + ], + [ + 670, + 0, + 66, + 167, + -33, + -156 + ], + [ + 737, + 0, + 66, + 167, + -33, + -156 + ], + [ + 804, + 0, + 66, + 167, + -33, + -156 + ], + [ + 871, + 0, + 66, + 167, + -33, + -156 + ], + [ + 938, + 0, + 66, + 167, + -33, + -156 + ], + [ + 0, + 168, + 66, + 167, + -33, + -156 + ], + [ + 67, + 168, + 66, + 167, + -33, + -156 + ], + [ + 134, + 168, + 66, + 167, + -33, + -156 + ], + [ + 201, + 168, + 66, + 167, + -33, + -156 + ], + [ + 268, + 168, + 66, + 167, + -33, + -156 + ], + [ + 335, + 168, + 66, + 167, + -33, + -156 + ], + [ + 402, + 168, + 66, + 167, + -33, + -156 + ], + [ + 469, + 168, + 66, + 167, + -33, + -156 + ], + [ + 536, + 168, + 66, + 167, + -33, + -156 + ], + [ + 603, + 168, + 66, + 167, + -33, + -156 + ], + [ + 670, + 168, + 66, + 167, + -33, + -156 + ], + [ + 737, + 168, + 66, + 167, + -33, + -156 + ], + [ + 804, + 168, + 66, + 167, + -33, + -156 + ], + [ + 871, + 168, + 66, + 167, + -33, + -156 + ], + [ + 938, + 168, + 66, + 167, + -33, + -156 + ], + [ + 0, + 336, + 66, + 167, + -33, + -156 + ], + [ + 67, + 336, + 66, + 167, + -33, + -156 + ], + [ + 134, + 336, + 66, + 167, + -33, + -156 + ], + [ + 201, + 336, + 66, + 167, + -33, + -156 + ], + [ + 268, + 336, + 66, + 167, + -33, + -156 + ], + [ + 335, + 336, + 66, + 167, + -33, + -156 + ], + [ + 402, + 336, + 66, + 167, + -33, + -156 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/firewallmaker.png b/public/missiles/firewallmaker.png new file mode 100644 index 0000000..667ef3d Binary files /dev/null and b/public/missiles/firewallmaker.png differ diff --git a/public/missiles/flamethrower.json b/public/missiles/flamethrower.json new file mode 100644 index 0000000..9ed0bda --- /dev/null +++ b/public/missiles/flamethrower.json @@ -0,0 +1,133 @@ +{ + "name": "flamethrower", + "celFile": "Flamethrower", + "width": 512, + "height": 233, + "directions": 1, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 76, + 77, + -36, + -104 + ], + [ + 77, + 0, + 76, + 77, + -36, + -104 + ], + [ + 154, + 0, + 76, + 77, + -36, + -104 + ], + [ + 231, + 0, + 76, + 77, + -36, + -104 + ], + [ + 308, + 0, + 76, + 77, + -36, + -104 + ], + [ + 385, + 0, + 76, + 77, + -36, + -104 + ], + [ + 0, + 78, + 76, + 77, + -36, + -104 + ], + [ + 77, + 78, + 76, + 77, + -36, + -104 + ], + [ + 154, + 78, + 76, + 77, + -36, + -104 + ], + [ + 231, + 78, + 76, + 77, + -36, + -104 + ], + [ + 308, + 78, + 76, + 77, + -36, + -104 + ], + [ + 385, + 78, + 76, + 77, + -36, + -104 + ], + [ + 0, + 156, + 76, + 77, + -36, + -104 + ], + [ + 77, + 156, + 76, + 77, + -36, + -104 + ], + [ + 154, + 156, + 76, + 77, + -36, + -104 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/flamethrower.png b/public/missiles/flamethrower.png new file mode 100644 index 0000000..7420a97 Binary files /dev/null and b/public/missiles/flamethrower.png differ diff --git a/public/missiles/flamethrower2.json b/public/missiles/flamethrower2.json new file mode 100644 index 0000000..a3be2b9 --- /dev/null +++ b/public/missiles/flamethrower2.json @@ -0,0 +1,133 @@ +{ + "name": "flamethrower2", + "celFile": "Flamethrower2", + "width": 512, + "height": 254, + "directions": 1, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 76, + 84, + -38, + -111 + ], + [ + 77, + 0, + 76, + 84, + -38, + -111 + ], + [ + 154, + 0, + 76, + 84, + -38, + -111 + ], + [ + 231, + 0, + 76, + 84, + -38, + -111 + ], + [ + 308, + 0, + 76, + 84, + -38, + -111 + ], + [ + 385, + 0, + 76, + 84, + -38, + -111 + ], + [ + 0, + 85, + 76, + 84, + -38, + -111 + ], + [ + 77, + 85, + 76, + 84, + -38, + -111 + ], + [ + 154, + 85, + 76, + 84, + -38, + -111 + ], + [ + 231, + 85, + 76, + 84, + -38, + -111 + ], + [ + 308, + 85, + 76, + 84, + -38, + -111 + ], + [ + 385, + 85, + 76, + 84, + -38, + -111 + ], + [ + 0, + 170, + 76, + 84, + -38, + -111 + ], + [ + 77, + 170, + 76, + 84, + -38, + -111 + ], + [ + 154, + 170, + 76, + 84, + -38, + -111 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/flamethrower2.png b/public/missiles/flamethrower2.png new file mode 100644 index 0000000..f63fd8a Binary files /dev/null and b/public/missiles/flamethrower2.png differ diff --git a/public/missiles/freezeexplodeejecta.json b/public/missiles/freezeexplodeejecta.json new file mode 100644 index 0000000..60bcad2 --- /dev/null +++ b/public/missiles/freezeexplodeejecta.json @@ -0,0 +1,987 @@ +{ + "name": "freezeexplodeejecta", + "celFile": "FreezeExplodeEjecta", + "width": 2048, + "height": 852, + "directions": 8, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 151, + 108, + -144, + -38 + ], + [ + 152, + 0, + 151, + 108, + -144, + -38 + ], + [ + 304, + 0, + 151, + 108, + -144, + -38 + ], + [ + 456, + 0, + 151, + 108, + -144, + -38 + ], + [ + 608, + 0, + 151, + 108, + -144, + -38 + ], + [ + 760, + 0, + 151, + 108, + -144, + -38 + ], + [ + 912, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1064, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1216, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1368, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1520, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1672, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1824, + 0, + 151, + 108, + -144, + -38 + ], + [ + 0, + 109, + 151, + 108, + -144, + -38 + ], + [ + 152, + 109, + 151, + 108, + -144, + -38 + ] + ], + [ + [ + 304, + 109, + 111, + 81, + -105, + -75 + ], + [ + 416, + 109, + 111, + 81, + -105, + -75 + ], + [ + 528, + 109, + 111, + 81, + -105, + -75 + ], + [ + 640, + 109, + 111, + 81, + -105, + -75 + ], + [ + 752, + 109, + 111, + 81, + -105, + -75 + ], + [ + 864, + 109, + 111, + 81, + -105, + -75 + ], + [ + 976, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1088, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1200, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1312, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1424, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1536, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1648, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1760, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1872, + 109, + 111, + 81, + -105, + -75 + ] + ], + [ + [ + 0, + 218, + 115, + 75, + -6, + -69 + ], + [ + 116, + 218, + 115, + 75, + -6, + -69 + ], + [ + 232, + 218, + 115, + 75, + -6, + -69 + ], + [ + 348, + 218, + 115, + 75, + -6, + -69 + ], + [ + 464, + 218, + 115, + 75, + -6, + -69 + ], + [ + 580, + 218, + 115, + 75, + -6, + -69 + ], + [ + 696, + 218, + 115, + 75, + -6, + -69 + ], + [ + 812, + 218, + 115, + 75, + -6, + -69 + ], + [ + 928, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1044, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1160, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1276, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1392, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1508, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1624, + 218, + 115, + 75, + -6, + -69 + ] + ], + [ + [ + 1740, + 218, + 138, + 113, + -6, + -37 + ], + [ + 1879, + 218, + 138, + 113, + -6, + -37 + ], + [ + 0, + 332, + 138, + 113, + -6, + -37 + ], + [ + 139, + 332, + 138, + 113, + -6, + -37 + ], + [ + 278, + 332, + 138, + 113, + -6, + -37 + ], + [ + 417, + 332, + 138, + 113, + -6, + -37 + ], + [ + 556, + 332, + 138, + 113, + -6, + -37 + ], + [ + 695, + 332, + 138, + 113, + -6, + -37 + ], + [ + 834, + 332, + 138, + 113, + -6, + -37 + ], + [ + 973, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1112, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1251, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1390, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1529, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1668, + 332, + 138, + 113, + -6, + -37 + ] + ], + [ + [ + 1807, + 332, + 130, + 133, + -66, + -36 + ], + [ + 0, + 466, + 130, + 133, + -66, + -36 + ], + [ + 131, + 466, + 130, + 133, + -66, + -36 + ], + [ + 262, + 466, + 130, + 133, + -66, + -36 + ], + [ + 393, + 466, + 130, + 133, + -66, + -36 + ], + [ + 524, + 466, + 130, + 133, + -66, + -36 + ], + [ + 655, + 466, + 130, + 133, + -66, + -36 + ], + [ + 786, + 466, + 130, + 133, + -66, + -36 + ], + [ + 917, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1048, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1179, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1310, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1441, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1572, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1703, + 466, + 130, + 133, + -66, + -36 + ] + ], + [ + [ + 1834, + 466, + 153, + 85, + -147, + -52 + ], + [ + 0, + 600, + 153, + 85, + -147, + -52 + ], + [ + 154, + 600, + 153, + 85, + -147, + -52 + ], + [ + 308, + 600, + 153, + 85, + -147, + -52 + ], + [ + 462, + 600, + 153, + 85, + -147, + -52 + ], + [ + 616, + 600, + 153, + 85, + -147, + -52 + ], + [ + 770, + 600, + 153, + 85, + -147, + -52 + ], + [ + 924, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1078, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1232, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1386, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1540, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1694, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1848, + 600, + 153, + 85, + -147, + -52 + ], + [ + 0, + 686, + 153, + 85, + -147, + -52 + ] + ], + [ + [ + 154, + 686, + 92, + 78, + -46, + -78 + ], + [ + 247, + 686, + 92, + 78, + -46, + -78 + ], + [ + 340, + 686, + 92, + 78, + -46, + -78 + ], + [ + 433, + 686, + 92, + 78, + -46, + -78 + ], + [ + 526, + 686, + 92, + 78, + -46, + -78 + ], + [ + 619, + 686, + 92, + 78, + -46, + -78 + ], + [ + 712, + 686, + 92, + 78, + -46, + -78 + ], + [ + 805, + 686, + 92, + 78, + -46, + -78 + ], + [ + 898, + 686, + 92, + 78, + -46, + -78 + ], + [ + 991, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1084, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1177, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1270, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1363, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1456, + 686, + 92, + 78, + -46, + -78 + ] + ], + [ + [ + 1549, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1709, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1869, + 686, + 159, + 80, + -6, + -47 + ], + [ + 0, + 772, + 159, + 80, + -6, + -47 + ], + [ + 160, + 772, + 159, + 80, + -6, + -47 + ], + [ + 320, + 772, + 159, + 80, + -6, + -47 + ], + [ + 480, + 772, + 159, + 80, + -6, + -47 + ], + [ + 640, + 772, + 159, + 80, + -6, + -47 + ], + [ + 800, + 772, + 159, + 80, + -6, + -47 + ], + [ + 960, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1120, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1280, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1440, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1600, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1760, + 772, + 159, + 80, + -6, + -47 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/freezeexplodeejecta.png b/public/missiles/freezeexplodeejecta.png new file mode 100644 index 0000000..4ab2e96 Binary files /dev/null and b/public/missiles/freezeexplodeejecta.png differ diff --git a/public/missiles/freezingarrowexp2.json b/public/missiles/freezingarrowexp2.json new file mode 100644 index 0000000..da0a702 --- /dev/null +++ b/public/missiles/freezingarrowexp2.json @@ -0,0 +1,987 @@ +{ + "name": "freezingarrowexp2", + "celFile": "FreezeExplodeEjecta", + "width": 2048, + "height": 852, + "directions": 8, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 151, + 108, + -144, + -38 + ], + [ + 152, + 0, + 151, + 108, + -144, + -38 + ], + [ + 304, + 0, + 151, + 108, + -144, + -38 + ], + [ + 456, + 0, + 151, + 108, + -144, + -38 + ], + [ + 608, + 0, + 151, + 108, + -144, + -38 + ], + [ + 760, + 0, + 151, + 108, + -144, + -38 + ], + [ + 912, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1064, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1216, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1368, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1520, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1672, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1824, + 0, + 151, + 108, + -144, + -38 + ], + [ + 0, + 109, + 151, + 108, + -144, + -38 + ], + [ + 152, + 109, + 151, + 108, + -144, + -38 + ] + ], + [ + [ + 304, + 109, + 111, + 81, + -105, + -75 + ], + [ + 416, + 109, + 111, + 81, + -105, + -75 + ], + [ + 528, + 109, + 111, + 81, + -105, + -75 + ], + [ + 640, + 109, + 111, + 81, + -105, + -75 + ], + [ + 752, + 109, + 111, + 81, + -105, + -75 + ], + [ + 864, + 109, + 111, + 81, + -105, + -75 + ], + [ + 976, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1088, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1200, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1312, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1424, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1536, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1648, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1760, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1872, + 109, + 111, + 81, + -105, + -75 + ] + ], + [ + [ + 0, + 218, + 115, + 75, + -6, + -69 + ], + [ + 116, + 218, + 115, + 75, + -6, + -69 + ], + [ + 232, + 218, + 115, + 75, + -6, + -69 + ], + [ + 348, + 218, + 115, + 75, + -6, + -69 + ], + [ + 464, + 218, + 115, + 75, + -6, + -69 + ], + [ + 580, + 218, + 115, + 75, + -6, + -69 + ], + [ + 696, + 218, + 115, + 75, + -6, + -69 + ], + [ + 812, + 218, + 115, + 75, + -6, + -69 + ], + [ + 928, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1044, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1160, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1276, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1392, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1508, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1624, + 218, + 115, + 75, + -6, + -69 + ] + ], + [ + [ + 1740, + 218, + 138, + 113, + -6, + -37 + ], + [ + 1879, + 218, + 138, + 113, + -6, + -37 + ], + [ + 0, + 332, + 138, + 113, + -6, + -37 + ], + [ + 139, + 332, + 138, + 113, + -6, + -37 + ], + [ + 278, + 332, + 138, + 113, + -6, + -37 + ], + [ + 417, + 332, + 138, + 113, + -6, + -37 + ], + [ + 556, + 332, + 138, + 113, + -6, + -37 + ], + [ + 695, + 332, + 138, + 113, + -6, + -37 + ], + [ + 834, + 332, + 138, + 113, + -6, + -37 + ], + [ + 973, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1112, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1251, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1390, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1529, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1668, + 332, + 138, + 113, + -6, + -37 + ] + ], + [ + [ + 1807, + 332, + 130, + 133, + -66, + -36 + ], + [ + 0, + 466, + 130, + 133, + -66, + -36 + ], + [ + 131, + 466, + 130, + 133, + -66, + -36 + ], + [ + 262, + 466, + 130, + 133, + -66, + -36 + ], + [ + 393, + 466, + 130, + 133, + -66, + -36 + ], + [ + 524, + 466, + 130, + 133, + -66, + -36 + ], + [ + 655, + 466, + 130, + 133, + -66, + -36 + ], + [ + 786, + 466, + 130, + 133, + -66, + -36 + ], + [ + 917, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1048, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1179, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1310, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1441, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1572, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1703, + 466, + 130, + 133, + -66, + -36 + ] + ], + [ + [ + 1834, + 466, + 153, + 85, + -147, + -52 + ], + [ + 0, + 600, + 153, + 85, + -147, + -52 + ], + [ + 154, + 600, + 153, + 85, + -147, + -52 + ], + [ + 308, + 600, + 153, + 85, + -147, + -52 + ], + [ + 462, + 600, + 153, + 85, + -147, + -52 + ], + [ + 616, + 600, + 153, + 85, + -147, + -52 + ], + [ + 770, + 600, + 153, + 85, + -147, + -52 + ], + [ + 924, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1078, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1232, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1386, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1540, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1694, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1848, + 600, + 153, + 85, + -147, + -52 + ], + [ + 0, + 686, + 153, + 85, + -147, + -52 + ] + ], + [ + [ + 154, + 686, + 92, + 78, + -46, + -78 + ], + [ + 247, + 686, + 92, + 78, + -46, + -78 + ], + [ + 340, + 686, + 92, + 78, + -46, + -78 + ], + [ + 433, + 686, + 92, + 78, + -46, + -78 + ], + [ + 526, + 686, + 92, + 78, + -46, + -78 + ], + [ + 619, + 686, + 92, + 78, + -46, + -78 + ], + [ + 712, + 686, + 92, + 78, + -46, + -78 + ], + [ + 805, + 686, + 92, + 78, + -46, + -78 + ], + [ + 898, + 686, + 92, + 78, + -46, + -78 + ], + [ + 991, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1084, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1177, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1270, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1363, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1456, + 686, + 92, + 78, + -46, + -78 + ] + ], + [ + [ + 1549, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1709, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1869, + 686, + 159, + 80, + -6, + -47 + ], + [ + 0, + 772, + 159, + 80, + -6, + -47 + ], + [ + 160, + 772, + 159, + 80, + -6, + -47 + ], + [ + 320, + 772, + 159, + 80, + -6, + -47 + ], + [ + 480, + 772, + 159, + 80, + -6, + -47 + ], + [ + 640, + 772, + 159, + 80, + -6, + -47 + ], + [ + 800, + 772, + 159, + 80, + -6, + -47 + ], + [ + 960, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1120, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1280, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1440, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1600, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1760, + 772, + 159, + 80, + -6, + -47 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/freezingarrowexp2.png b/public/missiles/freezingarrowexp2.png new file mode 100644 index 0000000..4ab2e96 Binary files /dev/null and b/public/missiles/freezingarrowexp2.png differ diff --git a/public/missiles/frostnova.json b/public/missiles/frostnova.json new file mode 100644 index 0000000..3196fe2 --- /dev/null +++ b/public/missiles/frostnova.json @@ -0,0 +1,1835 @@ +{ + "name": "frostnova", + "celFile": "FrostNova", + "width": 2048, + "height": 546, + "directions": 16, + "framesPerDirection": 14, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 80, + 52, + -28, + -34 + ], + [ + 81, + 0, + 80, + 52, + -28, + -34 + ], + [ + 162, + 0, + 80, + 52, + -28, + -34 + ], + [ + 243, + 0, + 80, + 52, + -28, + -34 + ], + [ + 324, + 0, + 80, + 52, + -28, + -34 + ], + [ + 405, + 0, + 80, + 52, + -28, + -34 + ], + [ + 486, + 0, + 80, + 52, + -28, + -34 + ], + [ + 567, + 0, + 80, + 52, + -28, + -34 + ], + [ + 648, + 0, + 80, + 52, + -28, + -34 + ], + [ + 729, + 0, + 80, + 52, + -28, + -34 + ], + [ + 810, + 0, + 80, + 52, + -28, + -34 + ], + [ + 891, + 0, + 80, + 52, + -28, + -34 + ], + [ + 972, + 0, + 80, + 52, + -28, + -34 + ], + [ + 1053, + 0, + 80, + 52, + -28, + -34 + ] + ], + [ + [ + 1134, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1221, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1308, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1395, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1482, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1569, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1656, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1743, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1830, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1917, + 0, + 86, + 50, + -29, + -21 + ], + [ + 0, + 53, + 86, + 50, + -29, + -21 + ], + [ + 87, + 53, + 86, + 50, + -29, + -21 + ], + [ + 174, + 53, + 86, + 50, + -29, + -21 + ], + [ + 261, + 53, + 86, + 50, + -29, + -21 + ] + ], + [ + [ + 348, + 53, + 77, + 49, + -50, + -21 + ], + [ + 426, + 53, + 77, + 49, + -50, + -21 + ], + [ + 504, + 53, + 77, + 49, + -50, + -21 + ], + [ + 582, + 53, + 77, + 49, + -50, + -21 + ], + [ + 660, + 53, + 77, + 49, + -50, + -21 + ], + [ + 738, + 53, + 77, + 49, + -50, + -21 + ], + [ + 816, + 53, + 77, + 49, + -50, + -21 + ], + [ + 894, + 53, + 77, + 49, + -50, + -21 + ], + [ + 972, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1050, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1128, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1206, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1284, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1362, + 53, + 77, + 49, + -50, + -21 + ] + ], + [ + [ + 1440, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1528, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1616, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1704, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1792, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1880, + 53, + 87, + 51, + -58, + -34 + ], + [ + 0, + 105, + 87, + 51, + -58, + -34 + ], + [ + 88, + 105, + 87, + 51, + -58, + -34 + ], + [ + 176, + 105, + 87, + 51, + -58, + -34 + ], + [ + 264, + 105, + 87, + 51, + -58, + -34 + ], + [ + 352, + 105, + 87, + 51, + -58, + -34 + ], + [ + 440, + 105, + 87, + 51, + -58, + -34 + ], + [ + 528, + 105, + 87, + 51, + -58, + -34 + ], + [ + 616, + 105, + 87, + 51, + -58, + -34 + ] + ], + [ + [ + 704, + 105, + 88, + 48, + -41, + -35 + ], + [ + 793, + 105, + 88, + 48, + -41, + -35 + ], + [ + 882, + 105, + 88, + 48, + -41, + -35 + ], + [ + 971, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1060, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1149, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1238, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1327, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1416, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1505, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1594, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1683, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1772, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1861, + 105, + 88, + 48, + -41, + -35 + ] + ], + [ + [ + 1950, + 105, + 66, + 53, + -15, + -28 + ], + [ + 0, + 159, + 66, + 53, + -15, + -28 + ], + [ + 67, + 159, + 66, + 53, + -15, + -28 + ], + [ + 134, + 159, + 66, + 53, + -15, + -28 + ], + [ + 201, + 159, + 66, + 53, + -15, + -28 + ], + [ + 268, + 159, + 66, + 53, + -15, + -28 + ], + [ + 335, + 159, + 66, + 53, + -15, + -28 + ], + [ + 402, + 159, + 66, + 53, + -15, + -28 + ], + [ + 469, + 159, + 66, + 53, + -15, + -28 + ], + [ + 536, + 159, + 66, + 53, + -15, + -28 + ], + [ + 603, + 159, + 66, + 53, + -15, + -28 + ], + [ + 670, + 159, + 66, + 53, + -15, + -28 + ], + [ + 737, + 159, + 66, + 53, + -15, + -28 + ], + [ + 804, + 159, + 66, + 53, + -15, + -28 + ] + ], + [ + [ + 871, + 159, + 86, + 49, + -47, + -16 + ], + [ + 958, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1045, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1132, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1219, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1306, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1393, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1480, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1567, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1654, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1741, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1828, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1915, + 159, + 86, + 49, + -47, + -16 + ], + [ + 0, + 213, + 86, + 49, + -47, + -16 + ] + ], + [ + [ + 87, + 213, + 69, + 58, + -53, + -31 + ], + [ + 157, + 213, + 69, + 58, + -53, + -31 + ], + [ + 227, + 213, + 69, + 58, + -53, + -31 + ], + [ + 297, + 213, + 69, + 58, + -53, + -31 + ], + [ + 367, + 213, + 69, + 58, + -53, + -31 + ], + [ + 437, + 213, + 69, + 58, + -53, + -31 + ], + [ + 507, + 213, + 69, + 58, + -53, + -31 + ], + [ + 577, + 213, + 69, + 58, + -53, + -31 + ], + [ + 647, + 213, + 69, + 58, + -53, + -31 + ], + [ + 717, + 213, + 69, + 58, + -53, + -31 + ], + [ + 787, + 213, + 69, + 58, + -53, + -31 + ], + [ + 857, + 213, + 69, + 58, + -53, + -31 + ], + [ + 927, + 213, + 69, + 58, + -53, + -31 + ], + [ + 997, + 213, + 69, + 58, + -53, + -31 + ] + ], + [ + [ + 1067, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1157, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1247, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1337, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1427, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1517, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1607, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1697, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1787, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1877, + 213, + 89, + 48, + -34, + -34 + ], + [ + 0, + 272, + 89, + 48, + -34, + -34 + ], + [ + 90, + 272, + 89, + 48, + -34, + -34 + ], + [ + 180, + 272, + 89, + 48, + -34, + -34 + ], + [ + 270, + 272, + 89, + 48, + -34, + -34 + ] + ], + [ + [ + 360, + 272, + 78, + 54, + -19, + -33 + ], + [ + 439, + 272, + 78, + 54, + -19, + -33 + ], + [ + 518, + 272, + 78, + 54, + -19, + -33 + ], + [ + 597, + 272, + 78, + 54, + -19, + -33 + ], + [ + 676, + 272, + 78, + 54, + -19, + -33 + ], + [ + 755, + 272, + 78, + 54, + -19, + -33 + ], + [ + 834, + 272, + 78, + 54, + -19, + -33 + ], + [ + 913, + 272, + 78, + 54, + -19, + -33 + ], + [ + 992, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1071, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1150, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1229, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1308, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1387, + 272, + 78, + 54, + -19, + -33 + ] + ], + [ + [ + 1466, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1543, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1620, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1697, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1774, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1851, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1928, + 272, + 76, + 50, + -19, + -24 + ], + [ + 0, + 327, + 76, + 50, + -19, + -24 + ], + [ + 77, + 327, + 76, + 50, + -19, + -24 + ], + [ + 154, + 327, + 76, + 50, + -19, + -24 + ], + [ + 231, + 327, + 76, + 50, + -19, + -24 + ], + [ + 308, + 327, + 76, + 50, + -19, + -24 + ], + [ + 385, + 327, + 76, + 50, + -19, + -24 + ], + [ + 462, + 327, + 76, + 50, + -19, + -24 + ] + ], + [ + [ + 539, + 327, + 85, + 48, + -39, + -18 + ], + [ + 625, + 327, + 85, + 48, + -39, + -18 + ], + [ + 711, + 327, + 85, + 48, + -39, + -18 + ], + [ + 797, + 327, + 85, + 48, + -39, + -18 + ], + [ + 883, + 327, + 85, + 48, + -39, + -18 + ], + [ + 969, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1055, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1141, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1227, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1313, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1399, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1485, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1571, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1657, + 327, + 85, + 48, + -39, + -18 + ] + ], + [ + [ + 1743, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1832, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1921, + 327, + 88, + 47, + -53, + -17 + ], + [ + 0, + 378, + 88, + 47, + -53, + -17 + ], + [ + 89, + 378, + 88, + 47, + -53, + -17 + ], + [ + 178, + 378, + 88, + 47, + -53, + -17 + ], + [ + 267, + 378, + 88, + 47, + -53, + -17 + ], + [ + 356, + 378, + 88, + 47, + -53, + -17 + ], + [ + 445, + 378, + 88, + 47, + -53, + -17 + ], + [ + 534, + 378, + 88, + 47, + -53, + -17 + ], + [ + 623, + 378, + 88, + 47, + -53, + -17 + ], + [ + 712, + 378, + 88, + 47, + -53, + -17 + ], + [ + 801, + 378, + 88, + 47, + -53, + -17 + ], + [ + 890, + 378, + 88, + 47, + -53, + -17 + ] + ], + [ + [ + 979, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1054, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1129, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1204, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1279, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1354, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1429, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1504, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1579, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1654, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1729, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1804, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1879, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1954, + 378, + 74, + 59, + -55, + -26 + ] + ], + [ + [ + 0, + 438, + 78, + 56, + -59, + -34 + ], + [ + 79, + 438, + 78, + 56, + -59, + -34 + ], + [ + 158, + 438, + 78, + 56, + -59, + -34 + ], + [ + 237, + 438, + 78, + 56, + -59, + -34 + ], + [ + 316, + 438, + 78, + 56, + -59, + -34 + ], + [ + 395, + 438, + 78, + 56, + -59, + -34 + ], + [ + 474, + 438, + 78, + 56, + -59, + -34 + ], + [ + 553, + 438, + 78, + 56, + -59, + -34 + ], + [ + 632, + 438, + 78, + 56, + -59, + -34 + ], + [ + 711, + 438, + 78, + 56, + -59, + -34 + ], + [ + 790, + 438, + 78, + 56, + -59, + -34 + ], + [ + 869, + 438, + 78, + 56, + -59, + -34 + ], + [ + 948, + 438, + 78, + 56, + -59, + -34 + ], + [ + 1027, + 438, + 78, + 56, + -59, + -34 + ] + ], + [ + [ + 1106, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1191, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1276, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1361, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1446, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1531, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1616, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1701, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1786, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1871, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1956, + 438, + 84, + 51, + -46, + -36 + ], + [ + 0, + 495, + 84, + 51, + -46, + -36 + ], + [ + 85, + 495, + 84, + 51, + -46, + -36 + ], + [ + 170, + 495, + 84, + 51, + -46, + -36 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/frostnova.png b/public/missiles/frostnova.png new file mode 100644 index 0000000..9955f13 Binary files /dev/null and b/public/missiles/frostnova.png differ diff --git a/public/missiles/glacialspikeejecta.json b/public/missiles/glacialspikeejecta.json new file mode 100644 index 0000000..a5366ba --- /dev/null +++ b/public/missiles/glacialspikeejecta.json @@ -0,0 +1,987 @@ +{ + "name": "glacialspikeejecta", + "celFile": "FreezeExplodeEjecta", + "width": 2048, + "height": 852, + "directions": 8, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 151, + 108, + -144, + -38 + ], + [ + 152, + 0, + 151, + 108, + -144, + -38 + ], + [ + 304, + 0, + 151, + 108, + -144, + -38 + ], + [ + 456, + 0, + 151, + 108, + -144, + -38 + ], + [ + 608, + 0, + 151, + 108, + -144, + -38 + ], + [ + 760, + 0, + 151, + 108, + -144, + -38 + ], + [ + 912, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1064, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1216, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1368, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1520, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1672, + 0, + 151, + 108, + -144, + -38 + ], + [ + 1824, + 0, + 151, + 108, + -144, + -38 + ], + [ + 0, + 109, + 151, + 108, + -144, + -38 + ], + [ + 152, + 109, + 151, + 108, + -144, + -38 + ] + ], + [ + [ + 304, + 109, + 111, + 81, + -105, + -75 + ], + [ + 416, + 109, + 111, + 81, + -105, + -75 + ], + [ + 528, + 109, + 111, + 81, + -105, + -75 + ], + [ + 640, + 109, + 111, + 81, + -105, + -75 + ], + [ + 752, + 109, + 111, + 81, + -105, + -75 + ], + [ + 864, + 109, + 111, + 81, + -105, + -75 + ], + [ + 976, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1088, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1200, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1312, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1424, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1536, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1648, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1760, + 109, + 111, + 81, + -105, + -75 + ], + [ + 1872, + 109, + 111, + 81, + -105, + -75 + ] + ], + [ + [ + 0, + 218, + 115, + 75, + -6, + -69 + ], + [ + 116, + 218, + 115, + 75, + -6, + -69 + ], + [ + 232, + 218, + 115, + 75, + -6, + -69 + ], + [ + 348, + 218, + 115, + 75, + -6, + -69 + ], + [ + 464, + 218, + 115, + 75, + -6, + -69 + ], + [ + 580, + 218, + 115, + 75, + -6, + -69 + ], + [ + 696, + 218, + 115, + 75, + -6, + -69 + ], + [ + 812, + 218, + 115, + 75, + -6, + -69 + ], + [ + 928, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1044, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1160, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1276, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1392, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1508, + 218, + 115, + 75, + -6, + -69 + ], + [ + 1624, + 218, + 115, + 75, + -6, + -69 + ] + ], + [ + [ + 1740, + 218, + 138, + 113, + -6, + -37 + ], + [ + 1879, + 218, + 138, + 113, + -6, + -37 + ], + [ + 0, + 332, + 138, + 113, + -6, + -37 + ], + [ + 139, + 332, + 138, + 113, + -6, + -37 + ], + [ + 278, + 332, + 138, + 113, + -6, + -37 + ], + [ + 417, + 332, + 138, + 113, + -6, + -37 + ], + [ + 556, + 332, + 138, + 113, + -6, + -37 + ], + [ + 695, + 332, + 138, + 113, + -6, + -37 + ], + [ + 834, + 332, + 138, + 113, + -6, + -37 + ], + [ + 973, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1112, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1251, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1390, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1529, + 332, + 138, + 113, + -6, + -37 + ], + [ + 1668, + 332, + 138, + 113, + -6, + -37 + ] + ], + [ + [ + 1807, + 332, + 130, + 133, + -66, + -36 + ], + [ + 0, + 466, + 130, + 133, + -66, + -36 + ], + [ + 131, + 466, + 130, + 133, + -66, + -36 + ], + [ + 262, + 466, + 130, + 133, + -66, + -36 + ], + [ + 393, + 466, + 130, + 133, + -66, + -36 + ], + [ + 524, + 466, + 130, + 133, + -66, + -36 + ], + [ + 655, + 466, + 130, + 133, + -66, + -36 + ], + [ + 786, + 466, + 130, + 133, + -66, + -36 + ], + [ + 917, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1048, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1179, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1310, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1441, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1572, + 466, + 130, + 133, + -66, + -36 + ], + [ + 1703, + 466, + 130, + 133, + -66, + -36 + ] + ], + [ + [ + 1834, + 466, + 153, + 85, + -147, + -52 + ], + [ + 0, + 600, + 153, + 85, + -147, + -52 + ], + [ + 154, + 600, + 153, + 85, + -147, + -52 + ], + [ + 308, + 600, + 153, + 85, + -147, + -52 + ], + [ + 462, + 600, + 153, + 85, + -147, + -52 + ], + [ + 616, + 600, + 153, + 85, + -147, + -52 + ], + [ + 770, + 600, + 153, + 85, + -147, + -52 + ], + [ + 924, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1078, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1232, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1386, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1540, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1694, + 600, + 153, + 85, + -147, + -52 + ], + [ + 1848, + 600, + 153, + 85, + -147, + -52 + ], + [ + 0, + 686, + 153, + 85, + -147, + -52 + ] + ], + [ + [ + 154, + 686, + 92, + 78, + -46, + -78 + ], + [ + 247, + 686, + 92, + 78, + -46, + -78 + ], + [ + 340, + 686, + 92, + 78, + -46, + -78 + ], + [ + 433, + 686, + 92, + 78, + -46, + -78 + ], + [ + 526, + 686, + 92, + 78, + -46, + -78 + ], + [ + 619, + 686, + 92, + 78, + -46, + -78 + ], + [ + 712, + 686, + 92, + 78, + -46, + -78 + ], + [ + 805, + 686, + 92, + 78, + -46, + -78 + ], + [ + 898, + 686, + 92, + 78, + -46, + -78 + ], + [ + 991, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1084, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1177, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1270, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1363, + 686, + 92, + 78, + -46, + -78 + ], + [ + 1456, + 686, + 92, + 78, + -46, + -78 + ] + ], + [ + [ + 1549, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1709, + 686, + 159, + 80, + -6, + -47 + ], + [ + 1869, + 686, + 159, + 80, + -6, + -47 + ], + [ + 0, + 772, + 159, + 80, + -6, + -47 + ], + [ + 160, + 772, + 159, + 80, + -6, + -47 + ], + [ + 320, + 772, + 159, + 80, + -6, + -47 + ], + [ + 480, + 772, + 159, + 80, + -6, + -47 + ], + [ + 640, + 772, + 159, + 80, + -6, + -47 + ], + [ + 800, + 772, + 159, + 80, + -6, + -47 + ], + [ + 960, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1120, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1280, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1440, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1600, + 772, + 159, + 80, + -6, + -47 + ], + [ + 1760, + 772, + 159, + 80, + -6, + -47 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/glacialspikeejecta.png b/public/missiles/glacialspikeejecta.png new file mode 100644 index 0000000..4ab2e96 Binary files /dev/null and b/public/missiles/glacialspikeejecta.png differ diff --git a/public/missiles/gleam.json b/public/missiles/gleam.json new file mode 100644 index 0000000..95bf0ac --- /dev/null +++ b/public/missiles/gleam.json @@ -0,0 +1,77 @@ +{ + "name": "gleam", + "celFile": "Gleam", + "width": 512, + "height": 16, + "directions": 1, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 19, + 16, + -9, + -8 + ], + [ + 20, + 0, + 19, + 16, + -9, + -8 + ], + [ + 40, + 0, + 19, + 16, + -9, + -8 + ], + [ + 60, + 0, + 19, + 16, + -9, + -8 + ], + [ + 80, + 0, + 19, + 16, + -9, + -8 + ], + [ + 100, + 0, + 19, + 16, + -9, + -8 + ], + [ + 120, + 0, + 19, + 16, + -9, + -8 + ], + [ + 140, + 0, + 19, + 16, + -9, + -8 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/gleam.png b/public/missiles/gleam.png new file mode 100644 index 0000000..9f36397 Binary files /dev/null and b/public/missiles/gleam.png differ diff --git a/public/missiles/groundfirebig.json b/public/missiles/groundfirebig.json new file mode 100644 index 0000000..3c3b92e --- /dev/null +++ b/public/missiles/groundfirebig.json @@ -0,0 +1,309 @@ +{ + "name": "groundfirebig", + "celFile": "groundFireBig", + "width": 1024, + "height": 503, + "directions": 1, + "framesPerDirection": 37, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 66, + 167, + -33, + -156 + ], + [ + 67, + 0, + 66, + 167, + -33, + -156 + ], + [ + 134, + 0, + 66, + 167, + -33, + -156 + ], + [ + 201, + 0, + 66, + 167, + -33, + -156 + ], + [ + 268, + 0, + 66, + 167, + -33, + -156 + ], + [ + 335, + 0, + 66, + 167, + -33, + -156 + ], + [ + 402, + 0, + 66, + 167, + -33, + -156 + ], + [ + 469, + 0, + 66, + 167, + -33, + -156 + ], + [ + 536, + 0, + 66, + 167, + -33, + -156 + ], + [ + 603, + 0, + 66, + 167, + -33, + -156 + ], + [ + 670, + 0, + 66, + 167, + -33, + -156 + ], + [ + 737, + 0, + 66, + 167, + -33, + -156 + ], + [ + 804, + 0, + 66, + 167, + -33, + -156 + ], + [ + 871, + 0, + 66, + 167, + -33, + -156 + ], + [ + 938, + 0, + 66, + 167, + -33, + -156 + ], + [ + 0, + 168, + 66, + 167, + -33, + -156 + ], + [ + 67, + 168, + 66, + 167, + -33, + -156 + ], + [ + 134, + 168, + 66, + 167, + -33, + -156 + ], + [ + 201, + 168, + 66, + 167, + -33, + -156 + ], + [ + 268, + 168, + 66, + 167, + -33, + -156 + ], + [ + 335, + 168, + 66, + 167, + -33, + -156 + ], + [ + 402, + 168, + 66, + 167, + -33, + -156 + ], + [ + 469, + 168, + 66, + 167, + -33, + -156 + ], + [ + 536, + 168, + 66, + 167, + -33, + -156 + ], + [ + 603, + 168, + 66, + 167, + -33, + -156 + ], + [ + 670, + 168, + 66, + 167, + -33, + -156 + ], + [ + 737, + 168, + 66, + 167, + -33, + -156 + ], + [ + 804, + 168, + 66, + 167, + -33, + -156 + ], + [ + 871, + 168, + 66, + 167, + -33, + -156 + ], + [ + 938, + 168, + 66, + 167, + -33, + -156 + ], + [ + 0, + 336, + 66, + 167, + -33, + -156 + ], + [ + 67, + 336, + 66, + 167, + -33, + -156 + ], + [ + 134, + 336, + 66, + 167, + -33, + -156 + ], + [ + 201, + 336, + 66, + 167, + -33, + -156 + ], + [ + 268, + 336, + 66, + 167, + -33, + -156 + ], + [ + 335, + 336, + 66, + 167, + -33, + -156 + ], + [ + 402, + 336, + 66, + 167, + -33, + -156 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/groundfirebig.png b/public/missiles/groundfirebig.png new file mode 100644 index 0000000..667ef3d Binary files /dev/null and b/public/missiles/groundfirebig.png differ diff --git a/public/missiles/infernoflame1.json b/public/missiles/infernoflame1.json new file mode 100644 index 0000000..4f01fc8 --- /dev/null +++ b/public/missiles/infernoflame1.json @@ -0,0 +1,133 @@ +{ + "name": "infernoflame1", + "celFile": "Flamethrower", + "width": 512, + "height": 233, + "directions": 1, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 76, + 77, + -36, + -104 + ], + [ + 77, + 0, + 76, + 77, + -36, + -104 + ], + [ + 154, + 0, + 76, + 77, + -36, + -104 + ], + [ + 231, + 0, + 76, + 77, + -36, + -104 + ], + [ + 308, + 0, + 76, + 77, + -36, + -104 + ], + [ + 385, + 0, + 76, + 77, + -36, + -104 + ], + [ + 0, + 78, + 76, + 77, + -36, + -104 + ], + [ + 77, + 78, + 76, + 77, + -36, + -104 + ], + [ + 154, + 78, + 76, + 77, + -36, + -104 + ], + [ + 231, + 78, + 76, + 77, + -36, + -104 + ], + [ + 308, + 78, + 76, + 77, + -36, + -104 + ], + [ + 385, + 78, + 76, + 77, + -36, + -104 + ], + [ + 0, + 156, + 76, + 77, + -36, + -104 + ], + [ + 77, + 156, + 76, + 77, + -36, + -104 + ], + [ + 154, + 156, + 76, + 77, + -36, + -104 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/infernoflame1.png b/public/missiles/infernoflame1.png new file mode 100644 index 0000000..7420a97 Binary files /dev/null and b/public/missiles/infernoflame1.png differ diff --git a/public/missiles/infernoflame2.json b/public/missiles/infernoflame2.json new file mode 100644 index 0000000..b16777e --- /dev/null +++ b/public/missiles/infernoflame2.json @@ -0,0 +1,133 @@ +{ + "name": "infernoflame2", + "celFile": "Flamethrower2", + "width": 512, + "height": 254, + "directions": 1, + "framesPerDirection": 15, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 76, + 84, + -38, + -111 + ], + [ + 77, + 0, + 76, + 84, + -38, + -111 + ], + [ + 154, + 0, + 76, + 84, + -38, + -111 + ], + [ + 231, + 0, + 76, + 84, + -38, + -111 + ], + [ + 308, + 0, + 76, + 84, + -38, + -111 + ], + [ + 385, + 0, + 76, + 84, + -38, + -111 + ], + [ + 0, + 85, + 76, + 84, + -38, + -111 + ], + [ + 77, + 85, + 76, + 84, + -38, + -111 + ], + [ + 154, + 85, + 76, + 84, + -38, + -111 + ], + [ + 231, + 85, + 76, + 84, + -38, + -111 + ], + [ + 308, + 85, + 76, + 84, + -38, + -111 + ], + [ + 385, + 85, + 76, + 84, + -38, + -111 + ], + [ + 0, + 170, + 76, + 84, + -38, + -111 + ], + [ + 77, + 170, + 76, + 84, + -38, + -111 + ], + [ + 154, + 170, + 76, + 84, + -38, + -111 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/infernoflame2.png b/public/missiles/infernoflame2.png new file mode 100644 index 0000000..f63fd8a Binary files /dev/null and b/public/missiles/infernoflame2.png differ diff --git a/public/missiles/lightningboltbig.json b/public/missiles/lightningboltbig.json new file mode 100644 index 0000000..68ecd7d --- /dev/null +++ b/public/missiles/lightningboltbig.json @@ -0,0 +1,77 @@ +{ + "name": "lightningboltbig", + "celFile": "LightningboltBig", + "width": 512, + "height": 113, + "directions": 1, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 36, + 113, + -18, + -106 + ], + [ + 37, + 0, + 36, + 113, + -18, + -106 + ], + [ + 74, + 0, + 36, + 113, + -18, + -106 + ], + [ + 111, + 0, + 36, + 113, + -18, + -106 + ], + [ + 148, + 0, + 36, + 113, + -18, + -106 + ], + [ + 185, + 0, + 36, + 113, + -18, + -106 + ], + [ + 222, + 0, + 36, + 113, + -18, + -106 + ], + [ + 259, + 0, + 36, + 113, + -18, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/lightningboltbig.png b/public/missiles/lightningboltbig.png new file mode 100644 index 0000000..b00f90d Binary files /dev/null and b/public/missiles/lightningboltbig.png differ diff --git a/public/missiles/lightninghit.json b/public/missiles/lightninghit.json new file mode 100644 index 0000000..e982afd --- /dev/null +++ b/public/missiles/lightninghit.json @@ -0,0 +1,2123 @@ +{ + "name": "lightninghit", + "celFile": "LightningStrike", + "width": 2048, + "height": 1412, + "directions": 32, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 112, + 79, + -66, + -58 + ], + [ + 113, + 0, + 112, + 79, + -66, + -58 + ], + [ + 226, + 0, + 112, + 79, + -66, + -58 + ], + [ + 339, + 0, + 112, + 79, + -66, + -58 + ], + [ + 452, + 0, + 112, + 79, + -66, + -58 + ], + [ + 565, + 0, + 112, + 79, + -66, + -58 + ], + [ + 678, + 0, + 112, + 79, + -66, + -58 + ], + [ + 791, + 0, + 112, + 79, + -66, + -58 + ] + ], + [ + [ + 904, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1010, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1116, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1222, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1328, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1434, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1540, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1646, + 0, + 105, + 96, + -59, + -67 + ] + ], + [ + [ + 1752, + 0, + 111, + 93, + -46, + -64 + ], + [ + 1864, + 0, + 111, + 93, + -46, + -64 + ], + [ + 0, + 97, + 111, + 93, + -46, + -64 + ], + [ + 112, + 97, + 111, + 93, + -46, + -64 + ], + [ + 224, + 97, + 111, + 93, + -46, + -64 + ], + [ + 336, + 97, + 111, + 93, + -46, + -64 + ], + [ + 448, + 97, + 111, + 93, + -46, + -64 + ], + [ + 560, + 97, + 111, + 93, + -46, + -64 + ] + ], + [ + [ + 672, + 97, + 105, + 82, + -46, + -57 + ], + [ + 778, + 97, + 105, + 82, + -46, + -57 + ], + [ + 884, + 97, + 105, + 82, + -46, + -57 + ], + [ + 990, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1096, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1202, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1308, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1414, + 97, + 105, + 82, + -46, + -57 + ] + ], + [ + [ + 1520, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1619, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1718, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1817, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1916, + 97, + 98, + 88, + -43, + -63 + ], + [ + 0, + 191, + 98, + 88, + -43, + -63 + ], + [ + 99, + 191, + 98, + 88, + -43, + -63 + ], + [ + 198, + 191, + 98, + 88, + -43, + -63 + ] + ], + [ + [ + 297, + 191, + 130, + 67, + -72, + -52 + ], + [ + 428, + 191, + 130, + 67, + -72, + -52 + ], + [ + 559, + 191, + 130, + 67, + -72, + -52 + ], + [ + 690, + 191, + 130, + 67, + -72, + -52 + ], + [ + 821, + 191, + 130, + 67, + -72, + -52 + ], + [ + 952, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1083, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1214, + 191, + 130, + 67, + -72, + -52 + ] + ], + [ + [ + 1345, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1443, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1541, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1639, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1737, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1835, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1933, + 191, + 97, + 106, + -55, + -71 + ], + [ + 0, + 298, + 97, + 106, + -55, + -71 + ] + ], + [ + [ + 98, + 298, + 130, + 79, + -58, + -60 + ], + [ + 229, + 298, + 130, + 79, + -58, + -60 + ], + [ + 360, + 298, + 130, + 79, + -58, + -60 + ], + [ + 491, + 298, + 130, + 79, + -58, + -60 + ], + [ + 622, + 298, + 130, + 79, + -58, + -60 + ], + [ + 753, + 298, + 130, + 79, + -58, + -60 + ], + [ + 884, + 298, + 130, + 79, + -58, + -60 + ], + [ + 1015, + 298, + 130, + 79, + -58, + -60 + ] + ], + [ + [ + 1146, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1248, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1350, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1452, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1554, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1656, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1758, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1860, + 298, + 101, + 86, + -52, + -62 + ] + ], + [ + [ + 0, + 405, + 128, + 67, + -73, + -52 + ], + [ + 129, + 405, + 128, + 67, + -73, + -52 + ], + [ + 258, + 405, + 128, + 67, + -73, + -52 + ], + [ + 387, + 405, + 128, + 67, + -73, + -52 + ], + [ + 516, + 405, + 128, + 67, + -73, + -52 + ], + [ + 645, + 405, + 128, + 67, + -73, + -52 + ], + [ + 774, + 405, + 128, + 67, + -73, + -52 + ], + [ + 903, + 405, + 128, + 67, + -73, + -52 + ] + ], + [ + [ + 1032, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1154, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1276, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1398, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1520, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1642, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1764, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1886, + 405, + 121, + 82, + -66, + -60 + ] + ], + [ + [ + 0, + 488, + 90, + 104, + -55, + -71 + ], + [ + 91, + 488, + 90, + 104, + -55, + -71 + ], + [ + 182, + 488, + 90, + 104, + -55, + -71 + ], + [ + 273, + 488, + 90, + 104, + -55, + -71 + ], + [ + 364, + 488, + 90, + 104, + -55, + -71 + ], + [ + 455, + 488, + 90, + 104, + -55, + -71 + ], + [ + 546, + 488, + 90, + 104, + -55, + -71 + ], + [ + 637, + 488, + 90, + 104, + -55, + -71 + ] + ], + [ + [ + 728, + 488, + 101, + 103, + -49, + -69 + ], + [ + 830, + 488, + 101, + 103, + -49, + -69 + ], + [ + 932, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1034, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1136, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1238, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1340, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1442, + 488, + 101, + 103, + -49, + -69 + ] + ], + [ + [ + 1544, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1673, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1802, + 488, + 128, + 83, + -55, + -60 + ], + [ + 0, + 593, + 128, + 83, + -55, + -60 + ], + [ + 129, + 593, + 128, + 83, + -55, + -60 + ], + [ + 258, + 593, + 128, + 83, + -55, + -60 + ], + [ + 387, + 593, + 128, + 83, + -55, + -60 + ], + [ + 516, + 593, + 128, + 83, + -55, + -60 + ] + ], + [ + [ + 645, + 593, + 121, + 82, + -55, + -59 + ], + [ + 767, + 593, + 121, + 82, + -55, + -59 + ], + [ + 889, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1011, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1133, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1255, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1377, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1499, + 593, + 121, + 82, + -55, + -59 + ] + ], + [ + [ + 1621, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1712, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1803, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1894, + 593, + 90, + 85, + -35, + -62 + ], + [ + 0, + 679, + 90, + 85, + -35, + -62 + ], + [ + 91, + 679, + 90, + 85, + -35, + -62 + ], + [ + 182, + 679, + 90, + 85, + -35, + -62 + ], + [ + 273, + 679, + 90, + 85, + -35, + -62 + ] + ], + [ + [ + 364, + 679, + 100, + 88, + -48, + -63 + ], + [ + 465, + 679, + 100, + 88, + -48, + -63 + ], + [ + 566, + 679, + 100, + 88, + -48, + -63 + ], + [ + 667, + 679, + 100, + 88, + -48, + -63 + ], + [ + 768, + 679, + 100, + 88, + -48, + -63 + ], + [ + 869, + 679, + 100, + 88, + -48, + -63 + ], + [ + 970, + 679, + 100, + 88, + -48, + -63 + ], + [ + 1071, + 679, + 100, + 88, + -48, + -63 + ] + ], + [ + [ + 1172, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1276, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1380, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1484, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1588, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1692, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1796, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1900, + 679, + 103, + 83, + -58, + -60 + ] + ], + [ + [ + 0, + 768, + 122, + 73, + -71, + -55 + ], + [ + 123, + 768, + 122, + 73, + -71, + -55 + ], + [ + 246, + 768, + 122, + 73, + -71, + -55 + ], + [ + 369, + 768, + 122, + 73, + -71, + -55 + ], + [ + 492, + 768, + 122, + 73, + -71, + -55 + ], + [ + 615, + 768, + 122, + 73, + -71, + -55 + ], + [ + 738, + 768, + 122, + 73, + -71, + -55 + ], + [ + 861, + 768, + 122, + 73, + -71, + -55 + ] + ], + [ + [ + 984, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1117, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1250, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1383, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1516, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1649, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1782, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1915, + 768, + 132, + 59, + -74, + -48 + ] + ], + [ + [ + 0, + 842, + 126, + 75, + -68, + -56 + ], + [ + 127, + 842, + 126, + 75, + -68, + -56 + ], + [ + 254, + 842, + 126, + 75, + -68, + -56 + ], + [ + 381, + 842, + 126, + 75, + -68, + -56 + ], + [ + 508, + 842, + 126, + 75, + -68, + -56 + ], + [ + 635, + 842, + 126, + 75, + -68, + -56 + ], + [ + 762, + 842, + 126, + 75, + -68, + -56 + ], + [ + 889, + 842, + 126, + 75, + -68, + -56 + ] + ], + [ + [ + 1016, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1131, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1246, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1361, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1476, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1591, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1706, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1821, + 842, + 114, + 90, + -63, + -64 + ] + ], + [ + [ + 1936, + 842, + 94, + 101, + -53, + -70 + ], + [ + 0, + 944, + 94, + 101, + -53, + -70 + ], + [ + 95, + 944, + 94, + 101, + -53, + -70 + ], + [ + 190, + 944, + 94, + 101, + -53, + -70 + ], + [ + 285, + 944, + 94, + 101, + -53, + -70 + ], + [ + 380, + 944, + 94, + 101, + -53, + -70 + ], + [ + 475, + 944, + 94, + 101, + -53, + -70 + ], + [ + 570, + 944, + 94, + 101, + -53, + -70 + ] + ], + [ + [ + 665, + 944, + 92, + 106, + -56, + -71 + ], + [ + 758, + 944, + 92, + 106, + -56, + -71 + ], + [ + 851, + 944, + 92, + 106, + -56, + -71 + ], + [ + 944, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1037, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1130, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1223, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1316, + 944, + 92, + 106, + -56, + -71 + ] + ], + [ + [ + 1409, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1510, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1611, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1712, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1813, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1914, + 944, + 100, + 105, + -52, + -70 + ], + [ + 0, + 1051, + 100, + 105, + -52, + -70 + ], + [ + 101, + 1051, + 100, + 105, + -52, + -70 + ] + ], + [ + [ + 202, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 307, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 412, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 517, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 622, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 727, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 832, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 937, + 1051, + 104, + 99, + -45, + -67 + ] + ], + [ + [ + 1042, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1164, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1286, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1408, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1530, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1652, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1774, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1896, + 1051, + 121, + 87, + -51, + -61 + ] + ], + [ + [ + 0, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 132, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 264, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 396, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 528, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 660, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 792, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 924, + 1157, + 131, + 80, + -57, + -61 + ] + ], + [ + [ + 1056, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1183, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1310, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1437, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1564, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1691, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1818, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 0, + 1239, + 126, + 81, + -58, + -60 + ] + ], + [ + [ + 127, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 242, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 357, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 472, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 587, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 702, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 817, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 932, + 1239, + 114, + 81, + -51, + -57 + ] + ], + [ + [ + 1047, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1142, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1237, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1332, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1427, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1522, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1617, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1712, + 1239, + 94, + 85, + -41, + -60 + ] + ], + [ + [ + 1807, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 1901, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 0, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 94, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 188, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 282, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 376, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 470, + 1326, + 93, + 86, + -37, + -63 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/lightninghit.png b/public/missiles/lightninghit.png new file mode 100644 index 0000000..2d2a436 Binary files /dev/null and b/public/missiles/lightninghit.png differ diff --git a/public/missiles/lightningstrike.json b/public/missiles/lightningstrike.json new file mode 100644 index 0000000..b172e98 --- /dev/null +++ b/public/missiles/lightningstrike.json @@ -0,0 +1,2123 @@ +{ + "name": "lightningstrike", + "celFile": "LightningStrike", + "width": 2048, + "height": 1412, + "directions": 32, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 112, + 79, + -66, + -58 + ], + [ + 113, + 0, + 112, + 79, + -66, + -58 + ], + [ + 226, + 0, + 112, + 79, + -66, + -58 + ], + [ + 339, + 0, + 112, + 79, + -66, + -58 + ], + [ + 452, + 0, + 112, + 79, + -66, + -58 + ], + [ + 565, + 0, + 112, + 79, + -66, + -58 + ], + [ + 678, + 0, + 112, + 79, + -66, + -58 + ], + [ + 791, + 0, + 112, + 79, + -66, + -58 + ] + ], + [ + [ + 904, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1010, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1116, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1222, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1328, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1434, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1540, + 0, + 105, + 96, + -59, + -67 + ], + [ + 1646, + 0, + 105, + 96, + -59, + -67 + ] + ], + [ + [ + 1752, + 0, + 111, + 93, + -46, + -64 + ], + [ + 1864, + 0, + 111, + 93, + -46, + -64 + ], + [ + 0, + 97, + 111, + 93, + -46, + -64 + ], + [ + 112, + 97, + 111, + 93, + -46, + -64 + ], + [ + 224, + 97, + 111, + 93, + -46, + -64 + ], + [ + 336, + 97, + 111, + 93, + -46, + -64 + ], + [ + 448, + 97, + 111, + 93, + -46, + -64 + ], + [ + 560, + 97, + 111, + 93, + -46, + -64 + ] + ], + [ + [ + 672, + 97, + 105, + 82, + -46, + -57 + ], + [ + 778, + 97, + 105, + 82, + -46, + -57 + ], + [ + 884, + 97, + 105, + 82, + -46, + -57 + ], + [ + 990, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1096, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1202, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1308, + 97, + 105, + 82, + -46, + -57 + ], + [ + 1414, + 97, + 105, + 82, + -46, + -57 + ] + ], + [ + [ + 1520, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1619, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1718, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1817, + 97, + 98, + 88, + -43, + -63 + ], + [ + 1916, + 97, + 98, + 88, + -43, + -63 + ], + [ + 0, + 191, + 98, + 88, + -43, + -63 + ], + [ + 99, + 191, + 98, + 88, + -43, + -63 + ], + [ + 198, + 191, + 98, + 88, + -43, + -63 + ] + ], + [ + [ + 297, + 191, + 130, + 67, + -72, + -52 + ], + [ + 428, + 191, + 130, + 67, + -72, + -52 + ], + [ + 559, + 191, + 130, + 67, + -72, + -52 + ], + [ + 690, + 191, + 130, + 67, + -72, + -52 + ], + [ + 821, + 191, + 130, + 67, + -72, + -52 + ], + [ + 952, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1083, + 191, + 130, + 67, + -72, + -52 + ], + [ + 1214, + 191, + 130, + 67, + -72, + -52 + ] + ], + [ + [ + 1345, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1443, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1541, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1639, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1737, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1835, + 191, + 97, + 106, + -55, + -71 + ], + [ + 1933, + 191, + 97, + 106, + -55, + -71 + ], + [ + 0, + 298, + 97, + 106, + -55, + -71 + ] + ], + [ + [ + 98, + 298, + 130, + 79, + -58, + -60 + ], + [ + 229, + 298, + 130, + 79, + -58, + -60 + ], + [ + 360, + 298, + 130, + 79, + -58, + -60 + ], + [ + 491, + 298, + 130, + 79, + -58, + -60 + ], + [ + 622, + 298, + 130, + 79, + -58, + -60 + ], + [ + 753, + 298, + 130, + 79, + -58, + -60 + ], + [ + 884, + 298, + 130, + 79, + -58, + -60 + ], + [ + 1015, + 298, + 130, + 79, + -58, + -60 + ] + ], + [ + [ + 1146, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1248, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1350, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1452, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1554, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1656, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1758, + 298, + 101, + 86, + -52, + -62 + ], + [ + 1860, + 298, + 101, + 86, + -52, + -62 + ] + ], + [ + [ + 0, + 405, + 128, + 67, + -73, + -52 + ], + [ + 129, + 405, + 128, + 67, + -73, + -52 + ], + [ + 258, + 405, + 128, + 67, + -73, + -52 + ], + [ + 387, + 405, + 128, + 67, + -73, + -52 + ], + [ + 516, + 405, + 128, + 67, + -73, + -52 + ], + [ + 645, + 405, + 128, + 67, + -73, + -52 + ], + [ + 774, + 405, + 128, + 67, + -73, + -52 + ], + [ + 903, + 405, + 128, + 67, + -73, + -52 + ] + ], + [ + [ + 1032, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1154, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1276, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1398, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1520, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1642, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1764, + 405, + 121, + 82, + -66, + -60 + ], + [ + 1886, + 405, + 121, + 82, + -66, + -60 + ] + ], + [ + [ + 0, + 488, + 90, + 104, + -55, + -71 + ], + [ + 91, + 488, + 90, + 104, + -55, + -71 + ], + [ + 182, + 488, + 90, + 104, + -55, + -71 + ], + [ + 273, + 488, + 90, + 104, + -55, + -71 + ], + [ + 364, + 488, + 90, + 104, + -55, + -71 + ], + [ + 455, + 488, + 90, + 104, + -55, + -71 + ], + [ + 546, + 488, + 90, + 104, + -55, + -71 + ], + [ + 637, + 488, + 90, + 104, + -55, + -71 + ] + ], + [ + [ + 728, + 488, + 101, + 103, + -49, + -69 + ], + [ + 830, + 488, + 101, + 103, + -49, + -69 + ], + [ + 932, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1034, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1136, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1238, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1340, + 488, + 101, + 103, + -49, + -69 + ], + [ + 1442, + 488, + 101, + 103, + -49, + -69 + ] + ], + [ + [ + 1544, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1673, + 488, + 128, + 83, + -55, + -60 + ], + [ + 1802, + 488, + 128, + 83, + -55, + -60 + ], + [ + 0, + 593, + 128, + 83, + -55, + -60 + ], + [ + 129, + 593, + 128, + 83, + -55, + -60 + ], + [ + 258, + 593, + 128, + 83, + -55, + -60 + ], + [ + 387, + 593, + 128, + 83, + -55, + -60 + ], + [ + 516, + 593, + 128, + 83, + -55, + -60 + ] + ], + [ + [ + 645, + 593, + 121, + 82, + -55, + -59 + ], + [ + 767, + 593, + 121, + 82, + -55, + -59 + ], + [ + 889, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1011, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1133, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1255, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1377, + 593, + 121, + 82, + -55, + -59 + ], + [ + 1499, + 593, + 121, + 82, + -55, + -59 + ] + ], + [ + [ + 1621, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1712, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1803, + 593, + 90, + 85, + -35, + -62 + ], + [ + 1894, + 593, + 90, + 85, + -35, + -62 + ], + [ + 0, + 679, + 90, + 85, + -35, + -62 + ], + [ + 91, + 679, + 90, + 85, + -35, + -62 + ], + [ + 182, + 679, + 90, + 85, + -35, + -62 + ], + [ + 273, + 679, + 90, + 85, + -35, + -62 + ] + ], + [ + [ + 364, + 679, + 100, + 88, + -48, + -63 + ], + [ + 465, + 679, + 100, + 88, + -48, + -63 + ], + [ + 566, + 679, + 100, + 88, + -48, + -63 + ], + [ + 667, + 679, + 100, + 88, + -48, + -63 + ], + [ + 768, + 679, + 100, + 88, + -48, + -63 + ], + [ + 869, + 679, + 100, + 88, + -48, + -63 + ], + [ + 970, + 679, + 100, + 88, + -48, + -63 + ], + [ + 1071, + 679, + 100, + 88, + -48, + -63 + ] + ], + [ + [ + 1172, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1276, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1380, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1484, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1588, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1692, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1796, + 679, + 103, + 83, + -58, + -60 + ], + [ + 1900, + 679, + 103, + 83, + -58, + -60 + ] + ], + [ + [ + 0, + 768, + 122, + 73, + -71, + -55 + ], + [ + 123, + 768, + 122, + 73, + -71, + -55 + ], + [ + 246, + 768, + 122, + 73, + -71, + -55 + ], + [ + 369, + 768, + 122, + 73, + -71, + -55 + ], + [ + 492, + 768, + 122, + 73, + -71, + -55 + ], + [ + 615, + 768, + 122, + 73, + -71, + -55 + ], + [ + 738, + 768, + 122, + 73, + -71, + -55 + ], + [ + 861, + 768, + 122, + 73, + -71, + -55 + ] + ], + [ + [ + 984, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1117, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1250, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1383, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1516, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1649, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1782, + 768, + 132, + 59, + -74, + -48 + ], + [ + 1915, + 768, + 132, + 59, + -74, + -48 + ] + ], + [ + [ + 0, + 842, + 126, + 75, + -68, + -56 + ], + [ + 127, + 842, + 126, + 75, + -68, + -56 + ], + [ + 254, + 842, + 126, + 75, + -68, + -56 + ], + [ + 381, + 842, + 126, + 75, + -68, + -56 + ], + [ + 508, + 842, + 126, + 75, + -68, + -56 + ], + [ + 635, + 842, + 126, + 75, + -68, + -56 + ], + [ + 762, + 842, + 126, + 75, + -68, + -56 + ], + [ + 889, + 842, + 126, + 75, + -68, + -56 + ] + ], + [ + [ + 1016, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1131, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1246, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1361, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1476, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1591, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1706, + 842, + 114, + 90, + -63, + -64 + ], + [ + 1821, + 842, + 114, + 90, + -63, + -64 + ] + ], + [ + [ + 1936, + 842, + 94, + 101, + -53, + -70 + ], + [ + 0, + 944, + 94, + 101, + -53, + -70 + ], + [ + 95, + 944, + 94, + 101, + -53, + -70 + ], + [ + 190, + 944, + 94, + 101, + -53, + -70 + ], + [ + 285, + 944, + 94, + 101, + -53, + -70 + ], + [ + 380, + 944, + 94, + 101, + -53, + -70 + ], + [ + 475, + 944, + 94, + 101, + -53, + -70 + ], + [ + 570, + 944, + 94, + 101, + -53, + -70 + ] + ], + [ + [ + 665, + 944, + 92, + 106, + -56, + -71 + ], + [ + 758, + 944, + 92, + 106, + -56, + -71 + ], + [ + 851, + 944, + 92, + 106, + -56, + -71 + ], + [ + 944, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1037, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1130, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1223, + 944, + 92, + 106, + -56, + -71 + ], + [ + 1316, + 944, + 92, + 106, + -56, + -71 + ] + ], + [ + [ + 1409, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1510, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1611, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1712, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1813, + 944, + 100, + 105, + -52, + -70 + ], + [ + 1914, + 944, + 100, + 105, + -52, + -70 + ], + [ + 0, + 1051, + 100, + 105, + -52, + -70 + ], + [ + 101, + 1051, + 100, + 105, + -52, + -70 + ] + ], + [ + [ + 202, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 307, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 412, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 517, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 622, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 727, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 832, + 1051, + 104, + 99, + -45, + -67 + ], + [ + 937, + 1051, + 104, + 99, + -45, + -67 + ] + ], + [ + [ + 1042, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1164, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1286, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1408, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1530, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1652, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1774, + 1051, + 121, + 87, + -51, + -61 + ], + [ + 1896, + 1051, + 121, + 87, + -51, + -61 + ] + ], + [ + [ + 0, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 132, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 264, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 396, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 528, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 660, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 792, + 1157, + 131, + 80, + -57, + -61 + ], + [ + 924, + 1157, + 131, + 80, + -57, + -61 + ] + ], + [ + [ + 1056, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1183, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1310, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1437, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1564, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1691, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 1818, + 1157, + 126, + 81, + -58, + -60 + ], + [ + 0, + 1239, + 126, + 81, + -58, + -60 + ] + ], + [ + [ + 127, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 242, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 357, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 472, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 587, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 702, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 817, + 1239, + 114, + 81, + -51, + -57 + ], + [ + 932, + 1239, + 114, + 81, + -51, + -57 + ] + ], + [ + [ + 1047, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1142, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1237, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1332, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1427, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1522, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1617, + 1239, + 94, + 85, + -41, + -60 + ], + [ + 1712, + 1239, + 94, + 85, + -41, + -60 + ] + ], + [ + [ + 1807, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 1901, + 1239, + 93, + 86, + -37, + -63 + ], + [ + 0, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 94, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 188, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 282, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 376, + 1326, + 93, + 86, + -37, + -63 + ], + [ + 470, + 1326, + 93, + 86, + -37, + -63 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/lightningstrike.png b/public/missiles/lightningstrike.png new file mode 100644 index 0000000..2d2a436 Binary files /dev/null and b/public/missiles/lightningstrike.png differ diff --git a/public/missiles/mephfrostnova.json b/public/missiles/mephfrostnova.json new file mode 100644 index 0000000..40afe03 --- /dev/null +++ b/public/missiles/mephfrostnova.json @@ -0,0 +1,1835 @@ +{ + "name": "mephfrostnova", + "celFile": "FrostNova", + "width": 2048, + "height": 546, + "directions": 16, + "framesPerDirection": 14, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 80, + 52, + -28, + -34 + ], + [ + 81, + 0, + 80, + 52, + -28, + -34 + ], + [ + 162, + 0, + 80, + 52, + -28, + -34 + ], + [ + 243, + 0, + 80, + 52, + -28, + -34 + ], + [ + 324, + 0, + 80, + 52, + -28, + -34 + ], + [ + 405, + 0, + 80, + 52, + -28, + -34 + ], + [ + 486, + 0, + 80, + 52, + -28, + -34 + ], + [ + 567, + 0, + 80, + 52, + -28, + -34 + ], + [ + 648, + 0, + 80, + 52, + -28, + -34 + ], + [ + 729, + 0, + 80, + 52, + -28, + -34 + ], + [ + 810, + 0, + 80, + 52, + -28, + -34 + ], + [ + 891, + 0, + 80, + 52, + -28, + -34 + ], + [ + 972, + 0, + 80, + 52, + -28, + -34 + ], + [ + 1053, + 0, + 80, + 52, + -28, + -34 + ] + ], + [ + [ + 1134, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1221, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1308, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1395, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1482, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1569, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1656, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1743, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1830, + 0, + 86, + 50, + -29, + -21 + ], + [ + 1917, + 0, + 86, + 50, + -29, + -21 + ], + [ + 0, + 53, + 86, + 50, + -29, + -21 + ], + [ + 87, + 53, + 86, + 50, + -29, + -21 + ], + [ + 174, + 53, + 86, + 50, + -29, + -21 + ], + [ + 261, + 53, + 86, + 50, + -29, + -21 + ] + ], + [ + [ + 348, + 53, + 77, + 49, + -50, + -21 + ], + [ + 426, + 53, + 77, + 49, + -50, + -21 + ], + [ + 504, + 53, + 77, + 49, + -50, + -21 + ], + [ + 582, + 53, + 77, + 49, + -50, + -21 + ], + [ + 660, + 53, + 77, + 49, + -50, + -21 + ], + [ + 738, + 53, + 77, + 49, + -50, + -21 + ], + [ + 816, + 53, + 77, + 49, + -50, + -21 + ], + [ + 894, + 53, + 77, + 49, + -50, + -21 + ], + [ + 972, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1050, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1128, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1206, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1284, + 53, + 77, + 49, + -50, + -21 + ], + [ + 1362, + 53, + 77, + 49, + -50, + -21 + ] + ], + [ + [ + 1440, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1528, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1616, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1704, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1792, + 53, + 87, + 51, + -58, + -34 + ], + [ + 1880, + 53, + 87, + 51, + -58, + -34 + ], + [ + 0, + 105, + 87, + 51, + -58, + -34 + ], + [ + 88, + 105, + 87, + 51, + -58, + -34 + ], + [ + 176, + 105, + 87, + 51, + -58, + -34 + ], + [ + 264, + 105, + 87, + 51, + -58, + -34 + ], + [ + 352, + 105, + 87, + 51, + -58, + -34 + ], + [ + 440, + 105, + 87, + 51, + -58, + -34 + ], + [ + 528, + 105, + 87, + 51, + -58, + -34 + ], + [ + 616, + 105, + 87, + 51, + -58, + -34 + ] + ], + [ + [ + 704, + 105, + 88, + 48, + -41, + -35 + ], + [ + 793, + 105, + 88, + 48, + -41, + -35 + ], + [ + 882, + 105, + 88, + 48, + -41, + -35 + ], + [ + 971, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1060, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1149, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1238, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1327, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1416, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1505, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1594, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1683, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1772, + 105, + 88, + 48, + -41, + -35 + ], + [ + 1861, + 105, + 88, + 48, + -41, + -35 + ] + ], + [ + [ + 1950, + 105, + 66, + 53, + -15, + -28 + ], + [ + 0, + 159, + 66, + 53, + -15, + -28 + ], + [ + 67, + 159, + 66, + 53, + -15, + -28 + ], + [ + 134, + 159, + 66, + 53, + -15, + -28 + ], + [ + 201, + 159, + 66, + 53, + -15, + -28 + ], + [ + 268, + 159, + 66, + 53, + -15, + -28 + ], + [ + 335, + 159, + 66, + 53, + -15, + -28 + ], + [ + 402, + 159, + 66, + 53, + -15, + -28 + ], + [ + 469, + 159, + 66, + 53, + -15, + -28 + ], + [ + 536, + 159, + 66, + 53, + -15, + -28 + ], + [ + 603, + 159, + 66, + 53, + -15, + -28 + ], + [ + 670, + 159, + 66, + 53, + -15, + -28 + ], + [ + 737, + 159, + 66, + 53, + -15, + -28 + ], + [ + 804, + 159, + 66, + 53, + -15, + -28 + ] + ], + [ + [ + 871, + 159, + 86, + 49, + -47, + -16 + ], + [ + 958, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1045, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1132, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1219, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1306, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1393, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1480, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1567, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1654, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1741, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1828, + 159, + 86, + 49, + -47, + -16 + ], + [ + 1915, + 159, + 86, + 49, + -47, + -16 + ], + [ + 0, + 213, + 86, + 49, + -47, + -16 + ] + ], + [ + [ + 87, + 213, + 69, + 58, + -53, + -31 + ], + [ + 157, + 213, + 69, + 58, + -53, + -31 + ], + [ + 227, + 213, + 69, + 58, + -53, + -31 + ], + [ + 297, + 213, + 69, + 58, + -53, + -31 + ], + [ + 367, + 213, + 69, + 58, + -53, + -31 + ], + [ + 437, + 213, + 69, + 58, + -53, + -31 + ], + [ + 507, + 213, + 69, + 58, + -53, + -31 + ], + [ + 577, + 213, + 69, + 58, + -53, + -31 + ], + [ + 647, + 213, + 69, + 58, + -53, + -31 + ], + [ + 717, + 213, + 69, + 58, + -53, + -31 + ], + [ + 787, + 213, + 69, + 58, + -53, + -31 + ], + [ + 857, + 213, + 69, + 58, + -53, + -31 + ], + [ + 927, + 213, + 69, + 58, + -53, + -31 + ], + [ + 997, + 213, + 69, + 58, + -53, + -31 + ] + ], + [ + [ + 1067, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1157, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1247, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1337, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1427, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1517, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1607, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1697, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1787, + 213, + 89, + 48, + -34, + -34 + ], + [ + 1877, + 213, + 89, + 48, + -34, + -34 + ], + [ + 0, + 272, + 89, + 48, + -34, + -34 + ], + [ + 90, + 272, + 89, + 48, + -34, + -34 + ], + [ + 180, + 272, + 89, + 48, + -34, + -34 + ], + [ + 270, + 272, + 89, + 48, + -34, + -34 + ] + ], + [ + [ + 360, + 272, + 78, + 54, + -19, + -33 + ], + [ + 439, + 272, + 78, + 54, + -19, + -33 + ], + [ + 518, + 272, + 78, + 54, + -19, + -33 + ], + [ + 597, + 272, + 78, + 54, + -19, + -33 + ], + [ + 676, + 272, + 78, + 54, + -19, + -33 + ], + [ + 755, + 272, + 78, + 54, + -19, + -33 + ], + [ + 834, + 272, + 78, + 54, + -19, + -33 + ], + [ + 913, + 272, + 78, + 54, + -19, + -33 + ], + [ + 992, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1071, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1150, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1229, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1308, + 272, + 78, + 54, + -19, + -33 + ], + [ + 1387, + 272, + 78, + 54, + -19, + -33 + ] + ], + [ + [ + 1466, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1543, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1620, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1697, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1774, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1851, + 272, + 76, + 50, + -19, + -24 + ], + [ + 1928, + 272, + 76, + 50, + -19, + -24 + ], + [ + 0, + 327, + 76, + 50, + -19, + -24 + ], + [ + 77, + 327, + 76, + 50, + -19, + -24 + ], + [ + 154, + 327, + 76, + 50, + -19, + -24 + ], + [ + 231, + 327, + 76, + 50, + -19, + -24 + ], + [ + 308, + 327, + 76, + 50, + -19, + -24 + ], + [ + 385, + 327, + 76, + 50, + -19, + -24 + ], + [ + 462, + 327, + 76, + 50, + -19, + -24 + ] + ], + [ + [ + 539, + 327, + 85, + 48, + -39, + -18 + ], + [ + 625, + 327, + 85, + 48, + -39, + -18 + ], + [ + 711, + 327, + 85, + 48, + -39, + -18 + ], + [ + 797, + 327, + 85, + 48, + -39, + -18 + ], + [ + 883, + 327, + 85, + 48, + -39, + -18 + ], + [ + 969, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1055, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1141, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1227, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1313, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1399, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1485, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1571, + 327, + 85, + 48, + -39, + -18 + ], + [ + 1657, + 327, + 85, + 48, + -39, + -18 + ] + ], + [ + [ + 1743, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1832, + 327, + 88, + 47, + -53, + -17 + ], + [ + 1921, + 327, + 88, + 47, + -53, + -17 + ], + [ + 0, + 378, + 88, + 47, + -53, + -17 + ], + [ + 89, + 378, + 88, + 47, + -53, + -17 + ], + [ + 178, + 378, + 88, + 47, + -53, + -17 + ], + [ + 267, + 378, + 88, + 47, + -53, + -17 + ], + [ + 356, + 378, + 88, + 47, + -53, + -17 + ], + [ + 445, + 378, + 88, + 47, + -53, + -17 + ], + [ + 534, + 378, + 88, + 47, + -53, + -17 + ], + [ + 623, + 378, + 88, + 47, + -53, + -17 + ], + [ + 712, + 378, + 88, + 47, + -53, + -17 + ], + [ + 801, + 378, + 88, + 47, + -53, + -17 + ], + [ + 890, + 378, + 88, + 47, + -53, + -17 + ] + ], + [ + [ + 979, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1054, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1129, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1204, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1279, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1354, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1429, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1504, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1579, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1654, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1729, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1804, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1879, + 378, + 74, + 59, + -55, + -26 + ], + [ + 1954, + 378, + 74, + 59, + -55, + -26 + ] + ], + [ + [ + 0, + 438, + 78, + 56, + -59, + -34 + ], + [ + 79, + 438, + 78, + 56, + -59, + -34 + ], + [ + 158, + 438, + 78, + 56, + -59, + -34 + ], + [ + 237, + 438, + 78, + 56, + -59, + -34 + ], + [ + 316, + 438, + 78, + 56, + -59, + -34 + ], + [ + 395, + 438, + 78, + 56, + -59, + -34 + ], + [ + 474, + 438, + 78, + 56, + -59, + -34 + ], + [ + 553, + 438, + 78, + 56, + -59, + -34 + ], + [ + 632, + 438, + 78, + 56, + -59, + -34 + ], + [ + 711, + 438, + 78, + 56, + -59, + -34 + ], + [ + 790, + 438, + 78, + 56, + -59, + -34 + ], + [ + 869, + 438, + 78, + 56, + -59, + -34 + ], + [ + 948, + 438, + 78, + 56, + -59, + -34 + ], + [ + 1027, + 438, + 78, + 56, + -59, + -34 + ] + ], + [ + [ + 1106, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1191, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1276, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1361, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1446, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1531, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1616, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1701, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1786, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1871, + 438, + 84, + 51, + -46, + -36 + ], + [ + 1956, + 438, + 84, + 51, + -46, + -36 + ], + [ + 0, + 495, + 84, + 51, + -46, + -36 + ], + [ + 85, + 495, + 84, + 51, + -46, + -36 + ], + [ + 170, + 495, + 84, + 51, + -46, + -36 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/mephfrostnova.png b/public/missiles/mephfrostnova.png new file mode 100644 index 0000000..9955f13 Binary files /dev/null and b/public/missiles/mephfrostnova.png differ diff --git a/public/missiles/nova.json b/public/missiles/nova.json new file mode 100644 index 0000000..1276c6e --- /dev/null +++ b/public/missiles/nova.json @@ -0,0 +1,1707 @@ +{ + "name": "nova", + "celFile": "ElectricNova", + "width": 1024, + "height": 601, + "directions": 16, + "framesPerDirection": 13, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 65, + 40, + -32, + -20 + ], + [ + 66, + 0, + 65, + 40, + -32, + -20 + ], + [ + 132, + 0, + 65, + 40, + -32, + -20 + ], + [ + 198, + 0, + 65, + 40, + -32, + -20 + ], + [ + 264, + 0, + 65, + 40, + -32, + -20 + ], + [ + 330, + 0, + 65, + 40, + -32, + -20 + ], + [ + 396, + 0, + 65, + 40, + -32, + -20 + ], + [ + 462, + 0, + 65, + 40, + -32, + -20 + ], + [ + 528, + 0, + 65, + 40, + -32, + -20 + ], + [ + 594, + 0, + 65, + 40, + -32, + -20 + ], + [ + 660, + 0, + 65, + 40, + -32, + -20 + ], + [ + 726, + 0, + 65, + 40, + -32, + -20 + ], + [ + 792, + 0, + 65, + 40, + -32, + -20 + ] + ], + [ + [ + 858, + 0, + 65, + 42, + -32, + -22 + ], + [ + 924, + 0, + 65, + 42, + -32, + -22 + ], + [ + 0, + 43, + 65, + 42, + -32, + -22 + ], + [ + 66, + 43, + 65, + 42, + -32, + -22 + ], + [ + 132, + 43, + 65, + 42, + -32, + -22 + ], + [ + 198, + 43, + 65, + 42, + -32, + -22 + ], + [ + 264, + 43, + 65, + 42, + -32, + -22 + ], + [ + 330, + 43, + 65, + 42, + -32, + -22 + ], + [ + 396, + 43, + 65, + 42, + -32, + -22 + ], + [ + 462, + 43, + 65, + 42, + -32, + -22 + ], + [ + 528, + 43, + 65, + 42, + -32, + -22 + ], + [ + 594, + 43, + 65, + 42, + -32, + -22 + ], + [ + 660, + 43, + 65, + 42, + -32, + -22 + ] + ], + [ + [ + 726, + 43, + 64, + 42, + -32, + -23 + ], + [ + 791, + 43, + 64, + 42, + -32, + -23 + ], + [ + 856, + 43, + 64, + 42, + -32, + -23 + ], + [ + 921, + 43, + 64, + 42, + -32, + -23 + ], + [ + 0, + 86, + 64, + 42, + -32, + -23 + ], + [ + 65, + 86, + 64, + 42, + -32, + -23 + ], + [ + 130, + 86, + 64, + 42, + -32, + -23 + ], + [ + 195, + 86, + 64, + 42, + -32, + -23 + ], + [ + 260, + 86, + 64, + 42, + -32, + -23 + ], + [ + 325, + 86, + 64, + 42, + -32, + -23 + ], + [ + 390, + 86, + 64, + 42, + -32, + -23 + ], + [ + 455, + 86, + 64, + 42, + -32, + -23 + ], + [ + 520, + 86, + 64, + 42, + -32, + -23 + ] + ], + [ + [ + 585, + 86, + 65, + 42, + -33, + -21 + ], + [ + 651, + 86, + 65, + 42, + -33, + -21 + ], + [ + 717, + 86, + 65, + 42, + -33, + -21 + ], + [ + 783, + 86, + 65, + 42, + -33, + -21 + ], + [ + 849, + 86, + 65, + 42, + -33, + -21 + ], + [ + 915, + 86, + 65, + 42, + -33, + -21 + ], + [ + 0, + 129, + 65, + 42, + -33, + -21 + ], + [ + 66, + 129, + 65, + 42, + -33, + -21 + ], + [ + 132, + 129, + 65, + 42, + -33, + -21 + ], + [ + 198, + 129, + 65, + 42, + -33, + -21 + ], + [ + 264, + 129, + 65, + 42, + -33, + -21 + ], + [ + 330, + 129, + 65, + 42, + -33, + -21 + ], + [ + 396, + 129, + 65, + 42, + -33, + -21 + ] + ], + [ + [ + 462, + 129, + 65, + 39, + -32, + -18 + ], + [ + 528, + 129, + 65, + 39, + -32, + -18 + ], + [ + 594, + 129, + 65, + 39, + -32, + -18 + ], + [ + 660, + 129, + 65, + 39, + -32, + -18 + ], + [ + 726, + 129, + 65, + 39, + -32, + -18 + ], + [ + 792, + 129, + 65, + 39, + -32, + -18 + ], + [ + 858, + 129, + 65, + 39, + -32, + -18 + ], + [ + 924, + 129, + 65, + 39, + -32, + -18 + ], + [ + 0, + 172, + 65, + 39, + -32, + -18 + ], + [ + 66, + 172, + 65, + 39, + -32, + -18 + ], + [ + 132, + 172, + 65, + 39, + -32, + -18 + ], + [ + 198, + 172, + 65, + 39, + -32, + -18 + ], + [ + 264, + 172, + 65, + 39, + -32, + -18 + ] + ], + [ + [ + 330, + 172, + 54, + 42, + -34, + -21 + ], + [ + 385, + 172, + 54, + 42, + -34, + -21 + ], + [ + 440, + 172, + 54, + 42, + -34, + -21 + ], + [ + 495, + 172, + 54, + 42, + -34, + -21 + ], + [ + 550, + 172, + 54, + 42, + -34, + -21 + ], + [ + 605, + 172, + 54, + 42, + -34, + -21 + ], + [ + 660, + 172, + 54, + 42, + -34, + -21 + ], + [ + 715, + 172, + 54, + 42, + -34, + -21 + ], + [ + 770, + 172, + 54, + 42, + -34, + -21 + ], + [ + 825, + 172, + 54, + 42, + -34, + -21 + ], + [ + 880, + 172, + 54, + 42, + -34, + -21 + ], + [ + 935, + 172, + 54, + 42, + -34, + -21 + ], + [ + 0, + 215, + 54, + 42, + -34, + -21 + ] + ], + [ + [ + 55, + 215, + 64, + 39, + -33, + -24 + ], + [ + 120, + 215, + 64, + 39, + -33, + -24 + ], + [ + 185, + 215, + 64, + 39, + -33, + -24 + ], + [ + 250, + 215, + 64, + 39, + -33, + -24 + ], + [ + 315, + 215, + 64, + 39, + -33, + -24 + ], + [ + 380, + 215, + 64, + 39, + -33, + -24 + ], + [ + 445, + 215, + 64, + 39, + -33, + -24 + ], + [ + 510, + 215, + 64, + 39, + -33, + -24 + ], + [ + 575, + 215, + 64, + 39, + -33, + -24 + ], + [ + 640, + 215, + 64, + 39, + -33, + -24 + ], + [ + 705, + 215, + 64, + 39, + -33, + -24 + ], + [ + 770, + 215, + 64, + 39, + -33, + -24 + ], + [ + 835, + 215, + 64, + 39, + -33, + -24 + ] + ], + [ + [ + 900, + 215, + 50, + 42, + -20, + -22 + ], + [ + 951, + 215, + 50, + 42, + -20, + -22 + ], + [ + 0, + 258, + 50, + 42, + -20, + -22 + ], + [ + 51, + 258, + 50, + 42, + -20, + -22 + ], + [ + 102, + 258, + 50, + 42, + -20, + -22 + ], + [ + 153, + 258, + 50, + 42, + -20, + -22 + ], + [ + 204, + 258, + 50, + 42, + -20, + -22 + ], + [ + 255, + 258, + 50, + 42, + -20, + -22 + ], + [ + 306, + 258, + 50, + 42, + -20, + -22 + ], + [ + 357, + 258, + 50, + 42, + -20, + -22 + ], + [ + 408, + 258, + 50, + 42, + -20, + -22 + ], + [ + 459, + 258, + 50, + 42, + -20, + -22 + ], + [ + 510, + 258, + 50, + 42, + -20, + -22 + ] + ], + [ + [ + 561, + 258, + 64, + 42, + -30, + -19 + ], + [ + 626, + 258, + 64, + 42, + -30, + -19 + ], + [ + 691, + 258, + 64, + 42, + -30, + -19 + ], + [ + 756, + 258, + 64, + 42, + -30, + -19 + ], + [ + 821, + 258, + 64, + 42, + -30, + -19 + ], + [ + 886, + 258, + 64, + 42, + -30, + -19 + ], + [ + 951, + 258, + 64, + 42, + -30, + -19 + ], + [ + 0, + 301, + 64, + 42, + -30, + -19 + ], + [ + 65, + 301, + 64, + 42, + -30, + -19 + ], + [ + 130, + 301, + 64, + 42, + -30, + -19 + ], + [ + 195, + 301, + 64, + 42, + -30, + -19 + ], + [ + 260, + 301, + 64, + 42, + -30, + -19 + ], + [ + 325, + 301, + 64, + 42, + -30, + -19 + ] + ], + [ + [ + 390, + 301, + 59, + 41, + -33, + -22 + ], + [ + 450, + 301, + 59, + 41, + -33, + -22 + ], + [ + 510, + 301, + 59, + 41, + -33, + -22 + ], + [ + 570, + 301, + 59, + 41, + -33, + -22 + ], + [ + 630, + 301, + 59, + 41, + -33, + -22 + ], + [ + 690, + 301, + 59, + 41, + -33, + -22 + ], + [ + 750, + 301, + 59, + 41, + -33, + -22 + ], + [ + 810, + 301, + 59, + 41, + -33, + -22 + ], + [ + 870, + 301, + 59, + 41, + -33, + -22 + ], + [ + 930, + 301, + 59, + 41, + -33, + -22 + ], + [ + 0, + 344, + 59, + 41, + -33, + -22 + ], + [ + 60, + 344, + 59, + 41, + -33, + -22 + ], + [ + 120, + 344, + 59, + 41, + -33, + -22 + ] + ], + [ + [ + 180, + 344, + 58, + 42, + -32, + -20 + ], + [ + 239, + 344, + 58, + 42, + -32, + -20 + ], + [ + 298, + 344, + 58, + 42, + -32, + -20 + ], + [ + 357, + 344, + 58, + 42, + -32, + -20 + ], + [ + 416, + 344, + 58, + 42, + -32, + -20 + ], + [ + 475, + 344, + 58, + 42, + -32, + -20 + ], + [ + 534, + 344, + 58, + 42, + -32, + -20 + ], + [ + 593, + 344, + 58, + 42, + -32, + -20 + ], + [ + 652, + 344, + 58, + 42, + -32, + -20 + ], + [ + 711, + 344, + 58, + 42, + -32, + -20 + ], + [ + 770, + 344, + 58, + 42, + -32, + -20 + ], + [ + 829, + 344, + 58, + 42, + -32, + -20 + ], + [ + 888, + 344, + 58, + 42, + -32, + -20 + ] + ], + [ + [ + 947, + 344, + 65, + 41, + -31, + -23 + ], + [ + 0, + 387, + 65, + 41, + -31, + -23 + ], + [ + 66, + 387, + 65, + 41, + -31, + -23 + ], + [ + 132, + 387, + 65, + 41, + -31, + -23 + ], + [ + 198, + 387, + 65, + 41, + -31, + -23 + ], + [ + 264, + 387, + 65, + 41, + -31, + -23 + ], + [ + 330, + 387, + 65, + 41, + -31, + -23 + ], + [ + 396, + 387, + 65, + 41, + -31, + -23 + ], + [ + 462, + 387, + 65, + 41, + -31, + -23 + ], + [ + 528, + 387, + 65, + 41, + -31, + -23 + ], + [ + 594, + 387, + 65, + 41, + -31, + -23 + ], + [ + 660, + 387, + 65, + 41, + -31, + -23 + ], + [ + 726, + 387, + 65, + 41, + -31, + -23 + ] + ], + [ + [ + 792, + 387, + 64, + 41, + -34, + -23 + ], + [ + 857, + 387, + 64, + 41, + -34, + -23 + ], + [ + 922, + 387, + 64, + 41, + -34, + -23 + ], + [ + 0, + 429, + 64, + 41, + -34, + -23 + ], + [ + 65, + 429, + 64, + 41, + -34, + -23 + ], + [ + 130, + 429, + 64, + 41, + -34, + -23 + ], + [ + 195, + 429, + 64, + 41, + -34, + -23 + ], + [ + 260, + 429, + 64, + 41, + -34, + -23 + ], + [ + 325, + 429, + 64, + 41, + -34, + -23 + ], + [ + 390, + 429, + 64, + 41, + -34, + -23 + ], + [ + 455, + 429, + 64, + 41, + -34, + -23 + ], + [ + 520, + 429, + 64, + 41, + -34, + -23 + ], + [ + 585, + 429, + 64, + 41, + -34, + -23 + ] + ], + [ + [ + 650, + 429, + 59, + 40, + -26, + -20 + ], + [ + 710, + 429, + 59, + 40, + -26, + -20 + ], + [ + 770, + 429, + 59, + 40, + -26, + -20 + ], + [ + 830, + 429, + 59, + 40, + -26, + -20 + ], + [ + 890, + 429, + 59, + 40, + -26, + -20 + ], + [ + 950, + 429, + 59, + 40, + -26, + -20 + ], + [ + 0, + 471, + 59, + 40, + -26, + -20 + ], + [ + 60, + 471, + 59, + 40, + -26, + -20 + ], + [ + 120, + 471, + 59, + 40, + -26, + -20 + ], + [ + 180, + 471, + 59, + 40, + -26, + -20 + ], + [ + 240, + 471, + 59, + 40, + -26, + -20 + ], + [ + 300, + 471, + 59, + 40, + -26, + -20 + ], + [ + 360, + 471, + 59, + 40, + -26, + -20 + ] + ], + [ + [ + 420, + 471, + 60, + 43, + -25, + -24 + ], + [ + 481, + 471, + 60, + 43, + -25, + -24 + ], + [ + 542, + 471, + 60, + 43, + -25, + -24 + ], + [ + 603, + 471, + 60, + 43, + -25, + -24 + ], + [ + 664, + 471, + 60, + 43, + -25, + -24 + ], + [ + 725, + 471, + 60, + 43, + -25, + -24 + ], + [ + 786, + 471, + 60, + 43, + -25, + -24 + ], + [ + 847, + 471, + 60, + 43, + -25, + -24 + ], + [ + 908, + 471, + 60, + 43, + -25, + -24 + ], + [ + 0, + 515, + 60, + 43, + -25, + -24 + ], + [ + 61, + 515, + 60, + 43, + -25, + -24 + ], + [ + 122, + 515, + 60, + 43, + -25, + -24 + ], + [ + 183, + 515, + 60, + 43, + -25, + -24 + ] + ], + [ + [ + 244, + 515, + 65, + 42, + -35, + -18 + ], + [ + 310, + 515, + 65, + 42, + -35, + -18 + ], + [ + 376, + 515, + 65, + 42, + -35, + -18 + ], + [ + 442, + 515, + 65, + 42, + -35, + -18 + ], + [ + 508, + 515, + 65, + 42, + -35, + -18 + ], + [ + 574, + 515, + 65, + 42, + -35, + -18 + ], + [ + 640, + 515, + 65, + 42, + -35, + -18 + ], + [ + 706, + 515, + 65, + 42, + -35, + -18 + ], + [ + 772, + 515, + 65, + 42, + -35, + -18 + ], + [ + 838, + 515, + 65, + 42, + -35, + -18 + ], + [ + 904, + 515, + 65, + 42, + -35, + -18 + ], + [ + 0, + 559, + 65, + 42, + -35, + -18 + ], + [ + 66, + 559, + 65, + 42, + -35, + -18 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/nova.png b/public/missiles/nova.png new file mode 100644 index 0000000..a8e7729 Binary files /dev/null and b/public/missiles/nova.png differ diff --git a/public/missiles/sparkle.json b/public/missiles/sparkle.json new file mode 100644 index 0000000..cba5b20 --- /dev/null +++ b/public/missiles/sparkle.json @@ -0,0 +1,77 @@ +{ + "name": "sparkle", + "celFile": "Gleam", + "width": 512, + "height": 16, + "directions": 1, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 19, + 16, + -9, + -8 + ], + [ + 20, + 0, + 19, + 16, + -9, + -8 + ], + [ + 40, + 0, + 19, + 16, + -9, + -8 + ], + [ + 60, + 0, + 19, + 16, + -9, + -8 + ], + [ + 80, + 0, + 19, + 16, + -9, + -8 + ], + [ + 100, + 0, + 19, + 16, + -9, + -8 + ], + [ + 120, + 0, + 19, + 16, + -9, + -8 + ], + [ + 140, + 0, + 19, + 16, + -9, + -8 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/sparkle.png b/public/missiles/sparkle.png new file mode 100644 index 0000000..9f36397 Binary files /dev/null and b/public/missiles/sparkle.png differ diff --git a/public/missiles/thunderstorm.json b/public/missiles/thunderstorm.json new file mode 100644 index 0000000..ce8bff4 --- /dev/null +++ b/public/missiles/thunderstorm.json @@ -0,0 +1,77 @@ +{ + "name": "thunderstorm", + "celFile": "LightningboltBig", + "width": 512, + "height": 113, + "directions": 1, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 36, + 113, + -18, + -106 + ], + [ + 37, + 0, + 36, + 113, + -18, + -106 + ], + [ + 74, + 0, + 36, + 113, + -18, + -106 + ], + [ + 111, + 0, + 36, + 113, + -18, + -106 + ], + [ + 148, + 0, + 36, + 113, + -18, + -106 + ], + [ + 185, + 0, + 36, + 113, + -18, + -106 + ], + [ + 222, + 0, + 36, + 113, + -18, + -106 + ], + [ + 259, + 0, + 36, + 113, + -18, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/thunderstorm.png b/public/missiles/thunderstorm.png new file mode 100644 index 0000000..b00f90d Binary files /dev/null and b/public/missiles/thunderstorm.png differ diff --git a/public/missiles/thunderstorm1.json b/public/missiles/thunderstorm1.json new file mode 100644 index 0000000..18aba83 --- /dev/null +++ b/public/missiles/thunderstorm1.json @@ -0,0 +1,77 @@ +{ + "name": "thunderstorm1", + "celFile": "LightningboltBig", + "width": 512, + "height": 113, + "directions": 1, + "framesPerDirection": 8, + "animSpeed": 16, + "groups": [ + [ + [ + 0, + 0, + 36, + 113, + -18, + -106 + ], + [ + 37, + 0, + 36, + 113, + -18, + -106 + ], + [ + 74, + 0, + 36, + 113, + -18, + -106 + ], + [ + 111, + 0, + 36, + 113, + -18, + -106 + ], + [ + 148, + 0, + 36, + 113, + -18, + -106 + ], + [ + 185, + 0, + 36, + 113, + -18, + -106 + ], + [ + 222, + 0, + 36, + 113, + -18, + -106 + ], + [ + 259, + 0, + 36, + 113, + -18, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/missiles/thunderstorm1.png b/public/missiles/thunderstorm1.png new file mode 100644 index 0000000..b00f90d Binary files /dev/null and b/public/missiles/thunderstorm1.png differ diff --git a/public/overlays/AuraResistColdCast.json b/public/overlays/AuraResistColdCast.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/AuraResistColdCast.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/AuraResistColdCast.png b/public/overlays/AuraResistColdCast.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/AuraResistColdCast.png differ diff --git a/public/overlays/FireEnchant.json b/public/overlays/FireEnchant.json new file mode 100644 index 0000000..1f3d32e --- /dev/null +++ b/public/overlays/FireEnchant.json @@ -0,0 +1,164 @@ +{ + "name": "enchant", + "celFile": "FireEnchant", + "width": 1024, + "height": 407, + "directions": 1, + "frames": 17, + "framesPerDirection": 17, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 9, + "lightColor": [ + 255, + 178, + 64 + ], + "box": { + "left": -57, + "top": -106, + "width": 116, + "height": 135 + }, + "groups": [ + [ + [ + 0, + 0, + 116, + 135, + -57, + -106 + ], + [ + 117, + 0, + 116, + 135, + -57, + -106 + ], + [ + 234, + 0, + 116, + 135, + -57, + -106 + ], + [ + 351, + 0, + 116, + 135, + -57, + -106 + ], + [ + 468, + 0, + 116, + 135, + -57, + -106 + ], + [ + 585, + 0, + 116, + 135, + -57, + -106 + ], + [ + 702, + 0, + 116, + 135, + -57, + -106 + ], + [ + 819, + 0, + 116, + 135, + -57, + -106 + ], + [ + 0, + 136, + 116, + 135, + -57, + -106 + ], + [ + 117, + 136, + 116, + 135, + -57, + -106 + ], + [ + 234, + 136, + 116, + 135, + -57, + -106 + ], + [ + 351, + 136, + 116, + 135, + -57, + -106 + ], + [ + 468, + 136, + 116, + 135, + -57, + -106 + ], + [ + 585, + 136, + 116, + 135, + -57, + -106 + ], + [ + 702, + 136, + 116, + 135, + -57, + -106 + ], + [ + 819, + 136, + 116, + 135, + -57, + -106 + ], + [ + 0, + 272, + 116, + 135, + -57, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/FireEnchant.png b/public/overlays/FireEnchant.png new file mode 100644 index 0000000..d60ea31 Binary files /dev/null and b/public/overlays/FireEnchant.png differ diff --git a/public/overlays/FrozenArmor.json b/public/overlays/FrozenArmor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/FrozenArmor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/FrozenArmor.png b/public/overlays/FrozenArmor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/FrozenArmor.png differ diff --git a/public/overlays/IceExplode.json b/public/overlays/IceExplode.json new file mode 100644 index 0000000..28298fa --- /dev/null +++ b/public/overlays/IceExplode.json @@ -0,0 +1,156 @@ +{ + "name": "ice_explode", + "celFile": "IceExplode", + "width": 512, + "height": 332, + "directions": 1, + "frames": 16, + "framesPerDirection": 16, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 14, + "lightColor": [ + 210, + 210, + 255 + ], + "box": { + "left": -43, + "top": -90, + "width": 83, + "height": 110 + }, + "groups": [ + [ + [ + 0, + 0, + 83, + 110, + -43, + -90 + ], + [ + 84, + 0, + 83, + 110, + -43, + -90 + ], + [ + 168, + 0, + 83, + 110, + -43, + -90 + ], + [ + 252, + 0, + 83, + 110, + -43, + -90 + ], + [ + 336, + 0, + 83, + 110, + -43, + -90 + ], + [ + 420, + 0, + 83, + 110, + -43, + -90 + ], + [ + 0, + 111, + 83, + 110, + -43, + -90 + ], + [ + 84, + 111, + 83, + 110, + -43, + -90 + ], + [ + 168, + 111, + 83, + 110, + -43, + -90 + ], + [ + 252, + 111, + 83, + 110, + -43, + -90 + ], + [ + 336, + 111, + 83, + 110, + -43, + -90 + ], + [ + 420, + 111, + 83, + 110, + -43, + -90 + ], + [ + 0, + 222, + 83, + 110, + -43, + -90 + ], + [ + 84, + 222, + 83, + 110, + -43, + -90 + ], + [ + 168, + 222, + 83, + 110, + -43, + -90 + ], + [ + 252, + 222, + 83, + 110, + -43, + -90 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/IceExplode.png b/public/overlays/IceExplode.png new file mode 100644 index 0000000..f28d091 Binary files /dev/null and b/public/overlays/IceExplode.png differ diff --git a/public/overlays/ManaShieldBall.json b/public/overlays/ManaShieldBall.json new file mode 100644 index 0000000..0151991 --- /dev/null +++ b/public/overlays/ManaShieldBall.json @@ -0,0 +1,92 @@ +{ + "name": "energyshield", + "celFile": "ManaShieldBall", + "width": 512, + "height": 21, + "directions": 1, + "frames": 8, + "framesPerDirection": 8, + "animRate": 8, + "trans": 5, + "preDraw": false, + "lightRadius": 0, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -11, + "top": -94, + "width": 21, + "height": 21 + }, + "groups": [ + [ + [ + 0, + 0, + 21, + 21, + -11, + -94 + ], + [ + 22, + 0, + 21, + 21, + -11, + -94 + ], + [ + 44, + 0, + 21, + 21, + -11, + -94 + ], + [ + 66, + 0, + 21, + 21, + -11, + -94 + ], + [ + 88, + 0, + 21, + 21, + -11, + -94 + ], + [ + 110, + 0, + 21, + 21, + -11, + -94 + ], + [ + 132, + 0, + 21, + 21, + -11, + -94 + ], + [ + 154, + 0, + 21, + 21, + -11, + -94 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ManaShieldBall.png b/public/overlays/ManaShieldBall.png new file mode 100644 index 0000000..d3b5b59 Binary files /dev/null and b/public/overlays/ManaShieldBall.png differ diff --git a/public/overlays/ManaShieldDir00.json b/public/overlays/ManaShieldDir00.json new file mode 100644 index 0000000..49adbef --- /dev/null +++ b/public/overlays/ManaShieldDir00.json @@ -0,0 +1,100 @@ +{ + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ManaShieldDir00.png b/public/overlays/ManaShieldDir00.png new file mode 100644 index 0000000..62571ac Binary files /dev/null and b/public/overlays/ManaShieldDir00.png differ diff --git a/public/overlays/ShockHitSm.json b/public/overlays/ShockHitSm.json new file mode 100644 index 0000000..2b4585e --- /dev/null +++ b/public/overlays/ShockHitSm.json @@ -0,0 +1,188 @@ +{ + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ShockHitSm.png b/public/overlays/ShockHitSm.png new file mode 100644 index 0000000..8faff86 Binary files /dev/null and b/public/overlays/ShockHitSm.png differ diff --git a/public/overlays/ThunderstormCast.json b/public/overlays/ThunderstormCast.json new file mode 100644 index 0000000..2d5b849 --- /dev/null +++ b/public/overlays/ThunderstormCast.json @@ -0,0 +1,108 @@ +{ + "name": "thunderstormcast", + "celFile": "ThunderstormCast", + "width": 512, + "height": 105, + "directions": 1, + "frames": 10, + "framesPerDirection": 10, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -39, + "top": -30, + "width": 79, + "height": 52 + }, + "groups": [ + [ + [ + 0, + 0, + 79, + 52, + -39, + -30 + ], + [ + 80, + 0, + 79, + 52, + -39, + -30 + ], + [ + 160, + 0, + 79, + 52, + -39, + -30 + ], + [ + 240, + 0, + 79, + 52, + -39, + -30 + ], + [ + 320, + 0, + 79, + 52, + -39, + -30 + ], + [ + 400, + 0, + 79, + 52, + -39, + -30 + ], + [ + 0, + 53, + 79, + 52, + -39, + -30 + ], + [ + 80, + 53, + 79, + 52, + -39, + -30 + ], + [ + 160, + 53, + 79, + 52, + -39, + -30 + ], + [ + 240, + 53, + 79, + 52, + -39, + -30 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ThunderstormCast.png b/public/overlays/ThunderstormCast.png new file mode 100644 index 0000000..3f0bb31 Binary files /dev/null and b/public/overlays/ThunderstormCast.png differ diff --git a/public/overlays/ThunderstormCast_operate.json b/public/overlays/ThunderstormCast_operate.json new file mode 100644 index 0000000..a71185a --- /dev/null +++ b/public/overlays/ThunderstormCast_operate.json @@ -0,0 +1,180 @@ +{ + "name": "thunderstormback", + "celFile": "ThunderstormCast_operate", + "width": 512, + "height": 243, + "directions": 1, + "frames": 19, + "framesPerDirection": 19, + "animRate": 16, + "trans": 3, + "preDraw": true, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -41, + "top": -21, + "width": 81, + "height": 60 + }, + "groups": [ + [ + [ + 0, + 0, + 81, + 60, + -41, + -21 + ], + [ + 82, + 0, + 81, + 60, + -41, + -21 + ], + [ + 164, + 0, + 81, + 60, + -41, + -21 + ], + [ + 246, + 0, + 81, + 60, + -41, + -21 + ], + [ + 328, + 0, + 81, + 60, + -41, + -21 + ], + [ + 410, + 0, + 81, + 60, + -41, + -21 + ], + [ + 0, + 61, + 81, + 60, + -41, + -21 + ], + [ + 82, + 61, + 81, + 60, + -41, + -21 + ], + [ + 164, + 61, + 81, + 60, + -41, + -21 + ], + [ + 246, + 61, + 81, + 60, + -41, + -21 + ], + [ + 328, + 61, + 81, + 60, + -41, + -21 + ], + [ + 410, + 61, + 81, + 60, + -41, + -21 + ], + [ + 0, + 122, + 81, + 60, + -41, + -21 + ], + [ + 82, + 122, + 81, + 60, + -41, + -21 + ], + [ + 164, + 122, + 81, + 60, + -41, + -21 + ], + [ + 246, + 122, + 81, + 60, + -41, + -21 + ], + [ + 328, + 122, + 81, + 60, + -41, + -21 + ], + [ + 410, + 122, + 81, + 60, + -41, + -21 + ], + [ + 0, + 183, + 81, + 60, + -41, + -21 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ThunderstormCast_operate.png b/public/overlays/ThunderstormCast_operate.png new file mode 100644 index 0000000..9de40c7 Binary files /dev/null and b/public/overlays/ThunderstormCast_operate.png differ diff --git a/public/overlays/cast_shivers.json b/public/overlays/cast_shivers.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/cast_shivers.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/cast_shivers.png b/public/overlays/cast_shivers.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/cast_shivers.png differ diff --git a/public/overlays/chill_armor.json b/public/overlays/chill_armor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/chill_armor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/chill_armor.png b/public/overlays/chill_armor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/chill_armor.png differ diff --git a/public/overlays/chill_armor_hit.json b/public/overlays/chill_armor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/chill_armor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/chill_armor_hit.png b/public/overlays/chill_armor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/chill_armor_hit.png differ diff --git a/public/overlays/chillarmor.json b/public/overlays/chillarmor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/chillarmor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/chillarmor.png b/public/overlays/chillarmor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/chillarmor.png differ diff --git a/public/overlays/chillarmor_hit.json b/public/overlays/chillarmor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/chillarmor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/chillarmor_hit.png b/public/overlays/chillarmor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/chillarmor_hit.png differ diff --git a/public/overlays/chilling_armor.json b/public/overlays/chilling_armor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/chilling_armor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/chilling_armor.png b/public/overlays/chilling_armor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/chilling_armor.png differ diff --git a/public/overlays/enchant.json b/public/overlays/enchant.json new file mode 100644 index 0000000..1f3d32e --- /dev/null +++ b/public/overlays/enchant.json @@ -0,0 +1,164 @@ +{ + "name": "enchant", + "celFile": "FireEnchant", + "width": 1024, + "height": 407, + "directions": 1, + "frames": 17, + "framesPerDirection": 17, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 9, + "lightColor": [ + 255, + 178, + 64 + ], + "box": { + "left": -57, + "top": -106, + "width": 116, + "height": 135 + }, + "groups": [ + [ + [ + 0, + 0, + 116, + 135, + -57, + -106 + ], + [ + 117, + 0, + 116, + 135, + -57, + -106 + ], + [ + 234, + 0, + 116, + 135, + -57, + -106 + ], + [ + 351, + 0, + 116, + 135, + -57, + -106 + ], + [ + 468, + 0, + 116, + 135, + -57, + -106 + ], + [ + 585, + 0, + 116, + 135, + -57, + -106 + ], + [ + 702, + 0, + 116, + 135, + -57, + -106 + ], + [ + 819, + 0, + 116, + 135, + -57, + -106 + ], + [ + 0, + 136, + 116, + 135, + -57, + -106 + ], + [ + 117, + 136, + 116, + 135, + -57, + -106 + ], + [ + 234, + 136, + 116, + 135, + -57, + -106 + ], + [ + 351, + 136, + 116, + 135, + -57, + -106 + ], + [ + 468, + 136, + 116, + 135, + -57, + -106 + ], + [ + 585, + 136, + 116, + 135, + -57, + -106 + ], + [ + 702, + 136, + 116, + 135, + -57, + -106 + ], + [ + 819, + 136, + 116, + 135, + -57, + -106 + ], + [ + 0, + 272, + 116, + 135, + -57, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/enchant.png b/public/overlays/enchant.png new file mode 100644 index 0000000..d60ea31 Binary files /dev/null and b/public/overlays/enchant.png differ diff --git a/public/overlays/energy_shield.json b/public/overlays/energy_shield.json new file mode 100644 index 0000000..0151991 --- /dev/null +++ b/public/overlays/energy_shield.json @@ -0,0 +1,92 @@ +{ + "name": "energyshield", + "celFile": "ManaShieldBall", + "width": 512, + "height": 21, + "directions": 1, + "frames": 8, + "framesPerDirection": 8, + "animRate": 8, + "trans": 5, + "preDraw": false, + "lightRadius": 0, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -11, + "top": -94, + "width": 21, + "height": 21 + }, + "groups": [ + [ + [ + 0, + 0, + 21, + 21, + -11, + -94 + ], + [ + 22, + 0, + 21, + 21, + -11, + -94 + ], + [ + 44, + 0, + 21, + 21, + -11, + -94 + ], + [ + 66, + 0, + 21, + 21, + -11, + -94 + ], + [ + 88, + 0, + 21, + 21, + -11, + -94 + ], + [ + 110, + 0, + 21, + 21, + -11, + -94 + ], + [ + 132, + 0, + 21, + 21, + -11, + -94 + ], + [ + 154, + 0, + 21, + 21, + -11, + -94 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energy_shield.png b/public/overlays/energy_shield.png new file mode 100644 index 0000000..d3b5b59 Binary files /dev/null and b/public/overlays/energy_shield.png differ diff --git a/public/overlays/energy_shield_hit.json b/public/overlays/energy_shield_hit.json new file mode 100644 index 0000000..49adbef --- /dev/null +++ b/public/overlays/energy_shield_hit.json @@ -0,0 +1,100 @@ +{ + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energy_shield_hit.png b/public/overlays/energy_shield_hit.png new file mode 100644 index 0000000..62571ac Binary files /dev/null and b/public/overlays/energy_shield_hit.png differ diff --git a/public/overlays/energyshield.json b/public/overlays/energyshield.json new file mode 100644 index 0000000..0151991 --- /dev/null +++ b/public/overlays/energyshield.json @@ -0,0 +1,92 @@ +{ + "name": "energyshield", + "celFile": "ManaShieldBall", + "width": 512, + "height": 21, + "directions": 1, + "frames": 8, + "framesPerDirection": 8, + "animRate": 8, + "trans": 5, + "preDraw": false, + "lightRadius": 0, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -11, + "top": -94, + "width": 21, + "height": 21 + }, + "groups": [ + [ + [ + 0, + 0, + 21, + 21, + -11, + -94 + ], + [ + 22, + 0, + 21, + 21, + -11, + -94 + ], + [ + 44, + 0, + 21, + 21, + -11, + -94 + ], + [ + 66, + 0, + 21, + 21, + -11, + -94 + ], + [ + 88, + 0, + 21, + 21, + -11, + -94 + ], + [ + 110, + 0, + 21, + 21, + -11, + -94 + ], + [ + 132, + 0, + 21, + 21, + -11, + -94 + ], + [ + 154, + 0, + 21, + 21, + -11, + -94 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energyshield.png b/public/overlays/energyshield.png new file mode 100644 index 0000000..d3b5b59 Binary files /dev/null and b/public/overlays/energyshield.png differ diff --git a/public/overlays/energyshield_hit.json b/public/overlays/energyshield_hit.json new file mode 100644 index 0000000..49adbef --- /dev/null +++ b/public/overlays/energyshield_hit.json @@ -0,0 +1,100 @@ +{ + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energyshield_hit.png b/public/overlays/energyshield_hit.png new file mode 100644 index 0000000..62571ac Binary files /dev/null and b/public/overlays/energyshield_hit.png differ diff --git a/public/overlays/energyshieldhit.json b/public/overlays/energyshieldhit.json new file mode 100644 index 0000000..49adbef --- /dev/null +++ b/public/overlays/energyshieldhit.json @@ -0,0 +1,100 @@ +{ + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energyshieldhit.png b/public/overlays/energyshieldhit.png new file mode 100644 index 0000000..62571ac Binary files /dev/null and b/public/overlays/energyshieldhit.png differ diff --git a/public/overlays/energyshieldhit0.json b/public/overlays/energyshieldhit0.json new file mode 100644 index 0000000..49adbef --- /dev/null +++ b/public/overlays/energyshieldhit0.json @@ -0,0 +1,100 @@ +{ + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/energyshieldhit0.png b/public/overlays/energyshieldhit0.png new file mode 100644 index 0000000..62571ac Binary files /dev/null and b/public/overlays/energyshieldhit0.png differ diff --git a/public/overlays/fire_enchant.json b/public/overlays/fire_enchant.json new file mode 100644 index 0000000..1f3d32e --- /dev/null +++ b/public/overlays/fire_enchant.json @@ -0,0 +1,164 @@ +{ + "name": "enchant", + "celFile": "FireEnchant", + "width": 1024, + "height": 407, + "directions": 1, + "frames": 17, + "framesPerDirection": 17, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 9, + "lightColor": [ + 255, + 178, + 64 + ], + "box": { + "left": -57, + "top": -106, + "width": 116, + "height": 135 + }, + "groups": [ + [ + [ + 0, + 0, + 116, + 135, + -57, + -106 + ], + [ + 117, + 0, + 116, + 135, + -57, + -106 + ], + [ + 234, + 0, + 116, + 135, + -57, + -106 + ], + [ + 351, + 0, + 116, + 135, + -57, + -106 + ], + [ + 468, + 0, + 116, + 135, + -57, + -106 + ], + [ + 585, + 0, + 116, + 135, + -57, + -106 + ], + [ + 702, + 0, + 116, + 135, + -57, + -106 + ], + [ + 819, + 0, + 116, + 135, + -57, + -106 + ], + [ + 0, + 136, + 116, + 135, + -57, + -106 + ], + [ + 117, + 136, + 116, + 135, + -57, + -106 + ], + [ + 234, + 136, + 116, + 135, + -57, + -106 + ], + [ + 351, + 136, + 116, + 135, + -57, + -106 + ], + [ + 468, + 136, + 116, + 135, + -57, + -106 + ], + [ + 585, + 136, + 116, + 135, + -57, + -106 + ], + [ + 702, + 136, + 116, + 135, + -57, + -106 + ], + [ + 819, + 136, + 116, + 135, + -57, + -106 + ], + [ + 0, + 272, + 116, + 135, + -57, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/fire_enchant.png b/public/overlays/fire_enchant.png new file mode 100644 index 0000000..d60ea31 Binary files /dev/null and b/public/overlays/fire_enchant.png differ diff --git a/public/overlays/fireenchant.json b/public/overlays/fireenchant.json new file mode 100644 index 0000000..1f3d32e --- /dev/null +++ b/public/overlays/fireenchant.json @@ -0,0 +1,164 @@ +{ + "name": "enchant", + "celFile": "FireEnchant", + "width": 1024, + "height": 407, + "directions": 1, + "frames": 17, + "framesPerDirection": 17, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 9, + "lightColor": [ + 255, + 178, + 64 + ], + "box": { + "left": -57, + "top": -106, + "width": 116, + "height": 135 + }, + "groups": [ + [ + [ + 0, + 0, + 116, + 135, + -57, + -106 + ], + [ + 117, + 0, + 116, + 135, + -57, + -106 + ], + [ + 234, + 0, + 116, + 135, + -57, + -106 + ], + [ + 351, + 0, + 116, + 135, + -57, + -106 + ], + [ + 468, + 0, + 116, + 135, + -57, + -106 + ], + [ + 585, + 0, + 116, + 135, + -57, + -106 + ], + [ + 702, + 0, + 116, + 135, + -57, + -106 + ], + [ + 819, + 0, + 116, + 135, + -57, + -106 + ], + [ + 0, + 136, + 116, + 135, + -57, + -106 + ], + [ + 117, + 136, + 116, + 135, + -57, + -106 + ], + [ + 234, + 136, + 116, + 135, + -57, + -106 + ], + [ + 351, + 136, + 116, + 135, + -57, + -106 + ], + [ + 468, + 136, + 116, + 135, + -57, + -106 + ], + [ + 585, + 136, + 116, + 135, + -57, + -106 + ], + [ + 702, + 136, + 116, + 135, + -57, + -106 + ], + [ + 819, + 136, + 116, + 135, + -57, + -106 + ], + [ + 0, + 272, + 116, + 135, + -57, + -106 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/fireenchant.png b/public/overlays/fireenchant.png new file mode 100644 index 0000000..d60ea31 Binary files /dev/null and b/public/overlays/fireenchant.png differ diff --git a/public/overlays/frozen_armor.json b/public/overlays/frozen_armor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/frozen_armor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/frozen_armor.png b/public/overlays/frozen_armor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/frozen_armor.png differ diff --git a/public/overlays/frozen_armor_hit.json b/public/overlays/frozen_armor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/frozen_armor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/frozen_armor_hit.png b/public/overlays/frozen_armor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/frozen_armor_hit.png differ diff --git a/public/overlays/frozenarmor.json b/public/overlays/frozenarmor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/frozenarmor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/frozenarmor.png b/public/overlays/frozenarmor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/frozenarmor.png differ diff --git a/public/overlays/frozenarmor_hit.json b/public/overlays/frozenarmor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/frozenarmor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/frozenarmor_hit.png b/public/overlays/frozenarmor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/frozenarmor_hit.png differ diff --git a/public/overlays/holyshockhit.json b/public/overlays/holyshockhit.json new file mode 100644 index 0000000..2b4585e --- /dev/null +++ b/public/overlays/holyshockhit.json @@ -0,0 +1,188 @@ +{ + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/holyshockhit.png b/public/overlays/holyshockhit.png new file mode 100644 index 0000000..8faff86 Binary files /dev/null and b/public/overlays/holyshockhit.png differ diff --git a/public/overlays/ice_explode.json b/public/overlays/ice_explode.json new file mode 100644 index 0000000..28298fa --- /dev/null +++ b/public/overlays/ice_explode.json @@ -0,0 +1,156 @@ +{ + "name": "ice_explode", + "celFile": "IceExplode", + "width": 512, + "height": 332, + "directions": 1, + "frames": 16, + "framesPerDirection": 16, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 14, + "lightColor": [ + 210, + 210, + 255 + ], + "box": { + "left": -43, + "top": -90, + "width": 83, + "height": 110 + }, + "groups": [ + [ + [ + 0, + 0, + 83, + 110, + -43, + -90 + ], + [ + 84, + 0, + 83, + 110, + -43, + -90 + ], + [ + 168, + 0, + 83, + 110, + -43, + -90 + ], + [ + 252, + 0, + 83, + 110, + -43, + -90 + ], + [ + 336, + 0, + 83, + 110, + -43, + -90 + ], + [ + 420, + 0, + 83, + 110, + -43, + -90 + ], + [ + 0, + 111, + 83, + 110, + -43, + -90 + ], + [ + 84, + 111, + 83, + 110, + -43, + -90 + ], + [ + 168, + 111, + 83, + 110, + -43, + -90 + ], + [ + 252, + 111, + 83, + 110, + -43, + -90 + ], + [ + 336, + 111, + 83, + 110, + -43, + -90 + ], + [ + 420, + 111, + 83, + 110, + -43, + -90 + ], + [ + 0, + 222, + 83, + 110, + -43, + -90 + ], + [ + 84, + 222, + 83, + 110, + -43, + -90 + ], + [ + 168, + 222, + 83, + 110, + -43, + -90 + ], + [ + 252, + 222, + 83, + 110, + -43, + -90 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/ice_explode.png b/public/overlays/ice_explode.png new file mode 100644 index 0000000..f28d091 Binary files /dev/null and b/public/overlays/ice_explode.png differ diff --git a/public/overlays/iceexplode.json b/public/overlays/iceexplode.json new file mode 100644 index 0000000..28298fa --- /dev/null +++ b/public/overlays/iceexplode.json @@ -0,0 +1,156 @@ +{ + "name": "ice_explode", + "celFile": "IceExplode", + "width": 512, + "height": 332, + "directions": 1, + "frames": 16, + "framesPerDirection": 16, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 14, + "lightColor": [ + 210, + 210, + 255 + ], + "box": { + "left": -43, + "top": -90, + "width": 83, + "height": 110 + }, + "groups": [ + [ + [ + 0, + 0, + 83, + 110, + -43, + -90 + ], + [ + 84, + 0, + 83, + 110, + -43, + -90 + ], + [ + 168, + 0, + 83, + 110, + -43, + -90 + ], + [ + 252, + 0, + 83, + 110, + -43, + -90 + ], + [ + 336, + 0, + 83, + 110, + -43, + -90 + ], + [ + 420, + 0, + 83, + 110, + -43, + -90 + ], + [ + 0, + 111, + 83, + 110, + -43, + -90 + ], + [ + 84, + 111, + 83, + 110, + -43, + -90 + ], + [ + 168, + 111, + 83, + 110, + -43, + -90 + ], + [ + 252, + 111, + 83, + 110, + -43, + -90 + ], + [ + 336, + 111, + 83, + 110, + -43, + -90 + ], + [ + 420, + 111, + 83, + 110, + -43, + -90 + ], + [ + 0, + 222, + 83, + 110, + -43, + -90 + ], + [ + 84, + 222, + 83, + 110, + -43, + -90 + ], + [ + 168, + 222, + 83, + 110, + -43, + -90 + ], + [ + 252, + 222, + 83, + 110, + -43, + -90 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/iceexplode.png b/public/overlays/iceexplode.png new file mode 100644 index 0000000..f28d091 Binary files /dev/null and b/public/overlays/iceexplode.png differ diff --git a/public/overlays/lightning.json b/public/overlays/lightning.json new file mode 100644 index 0000000..2b4585e --- /dev/null +++ b/public/overlays/lightning.json @@ -0,0 +1,188 @@ +{ + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/lightning.png b/public/overlays/lightning.png new file mode 100644 index 0000000..8faff86 Binary files /dev/null and b/public/overlays/lightning.png differ diff --git a/public/overlays/lightning_hit.json b/public/overlays/lightning_hit.json new file mode 100644 index 0000000..2b4585e --- /dev/null +++ b/public/overlays/lightning_hit.json @@ -0,0 +1,188 @@ +{ + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/lightning_hit.png b/public/overlays/lightning_hit.png new file mode 100644 index 0000000..8faff86 Binary files /dev/null and b/public/overlays/lightning_hit.png differ diff --git a/public/overlays/manashield.json b/public/overlays/manashield.json new file mode 100644 index 0000000..0151991 --- /dev/null +++ b/public/overlays/manashield.json @@ -0,0 +1,92 @@ +{ + "name": "energyshield", + "celFile": "ManaShieldBall", + "width": 512, + "height": 21, + "directions": 1, + "frames": 8, + "framesPerDirection": 8, + "animRate": 8, + "trans": 5, + "preDraw": false, + "lightRadius": 0, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -11, + "top": -94, + "width": 21, + "height": 21 + }, + "groups": [ + [ + [ + 0, + 0, + 21, + 21, + -11, + -94 + ], + [ + 22, + 0, + 21, + 21, + -11, + -94 + ], + [ + 44, + 0, + 21, + 21, + -11, + -94 + ], + [ + 66, + 0, + 21, + 21, + -11, + -94 + ], + [ + 88, + 0, + 21, + 21, + -11, + -94 + ], + [ + 110, + 0, + 21, + 21, + -11, + -94 + ], + [ + 132, + 0, + 21, + 21, + -11, + -94 + ], + [ + 154, + 0, + 21, + 21, + -11, + -94 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/manashield.png b/public/overlays/manashield.png new file mode 100644 index 0000000..d3b5b59 Binary files /dev/null and b/public/overlays/manashield.png differ diff --git a/public/overlays/shiver_armor.json b/public/overlays/shiver_armor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/shiver_armor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/shiver_armor.png b/public/overlays/shiver_armor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/shiver_armor.png differ diff --git a/public/overlays/shiver_armor_hit.json b/public/overlays/shiver_armor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/shiver_armor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/shiver_armor_hit.png b/public/overlays/shiver_armor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/shiver_armor_hit.png differ diff --git a/public/overlays/shiverarmor.json b/public/overlays/shiverarmor.json new file mode 100644 index 0000000..3b03890 --- /dev/null +++ b/public/overlays/shiverarmor.json @@ -0,0 +1,220 @@ +{ + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/shiverarmor.png b/public/overlays/shiverarmor.png new file mode 100644 index 0000000..f0a1229 Binary files /dev/null and b/public/overlays/shiverarmor.png differ diff --git a/public/overlays/shiverarmor_hit.json b/public/overlays/shiverarmor_hit.json new file mode 100644 index 0000000..438b4a4 --- /dev/null +++ b/public/overlays/shiverarmor_hit.json @@ -0,0 +1,116 @@ +{ + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/shiverarmor_hit.png b/public/overlays/shiverarmor_hit.png new file mode 100644 index 0000000..4616c43 Binary files /dev/null and b/public/overlays/shiverarmor_hit.png differ diff --git a/public/overlays/shockhitsm.json b/public/overlays/shockhitsm.json new file mode 100644 index 0000000..2b4585e --- /dev/null +++ b/public/overlays/shockhitsm.json @@ -0,0 +1,188 @@ +{ + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/shockhitsm.png b/public/overlays/shockhitsm.png new file mode 100644 index 0000000..8faff86 Binary files /dev/null and b/public/overlays/shockhitsm.png differ diff --git a/public/overlays/thunderstorm_back.json b/public/overlays/thunderstorm_back.json new file mode 100644 index 0000000..a71185a --- /dev/null +++ b/public/overlays/thunderstorm_back.json @@ -0,0 +1,180 @@ +{ + "name": "thunderstormback", + "celFile": "ThunderstormCast_operate", + "width": 512, + "height": 243, + "directions": 1, + "frames": 19, + "framesPerDirection": 19, + "animRate": 16, + "trans": 3, + "preDraw": true, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -41, + "top": -21, + "width": 81, + "height": 60 + }, + "groups": [ + [ + [ + 0, + 0, + 81, + 60, + -41, + -21 + ], + [ + 82, + 0, + 81, + 60, + -41, + -21 + ], + [ + 164, + 0, + 81, + 60, + -41, + -21 + ], + [ + 246, + 0, + 81, + 60, + -41, + -21 + ], + [ + 328, + 0, + 81, + 60, + -41, + -21 + ], + [ + 410, + 0, + 81, + 60, + -41, + -21 + ], + [ + 0, + 61, + 81, + 60, + -41, + -21 + ], + [ + 82, + 61, + 81, + 60, + -41, + -21 + ], + [ + 164, + 61, + 81, + 60, + -41, + -21 + ], + [ + 246, + 61, + 81, + 60, + -41, + -21 + ], + [ + 328, + 61, + 81, + 60, + -41, + -21 + ], + [ + 410, + 61, + 81, + 60, + -41, + -21 + ], + [ + 0, + 122, + 81, + 60, + -41, + -21 + ], + [ + 82, + 122, + 81, + 60, + -41, + -21 + ], + [ + 164, + 122, + 81, + 60, + -41, + -21 + ], + [ + 246, + 122, + 81, + 60, + -41, + -21 + ], + [ + 328, + 122, + 81, + 60, + -41, + -21 + ], + [ + 410, + 122, + 81, + 60, + -41, + -21 + ], + [ + 0, + 183, + 81, + 60, + -41, + -21 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstorm_back.png b/public/overlays/thunderstorm_back.png new file mode 100644 index 0000000..9de40c7 Binary files /dev/null and b/public/overlays/thunderstorm_back.png differ diff --git a/public/overlays/thunderstorm_cast.json b/public/overlays/thunderstorm_cast.json new file mode 100644 index 0000000..2d5b849 --- /dev/null +++ b/public/overlays/thunderstorm_cast.json @@ -0,0 +1,108 @@ +{ + "name": "thunderstormcast", + "celFile": "ThunderstormCast", + "width": 512, + "height": 105, + "directions": 1, + "frames": 10, + "framesPerDirection": 10, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -39, + "top": -30, + "width": 79, + "height": 52 + }, + "groups": [ + [ + [ + 0, + 0, + 79, + 52, + -39, + -30 + ], + [ + 80, + 0, + 79, + 52, + -39, + -30 + ], + [ + 160, + 0, + 79, + 52, + -39, + -30 + ], + [ + 240, + 0, + 79, + 52, + -39, + -30 + ], + [ + 320, + 0, + 79, + 52, + -39, + -30 + ], + [ + 400, + 0, + 79, + 52, + -39, + -30 + ], + [ + 0, + 53, + 79, + 52, + -39, + -30 + ], + [ + 80, + 53, + 79, + 52, + -39, + -30 + ], + [ + 160, + 53, + 79, + 52, + -39, + -30 + ], + [ + 240, + 53, + 79, + 52, + -39, + -30 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstorm_cast.png b/public/overlays/thunderstorm_cast.png new file mode 100644 index 0000000..3f0bb31 Binary files /dev/null and b/public/overlays/thunderstorm_cast.png differ diff --git a/public/overlays/thunderstorm_front.json b/public/overlays/thunderstorm_front.json new file mode 100644 index 0000000..2d5b849 --- /dev/null +++ b/public/overlays/thunderstorm_front.json @@ -0,0 +1,108 @@ +{ + "name": "thunderstormcast", + "celFile": "ThunderstormCast", + "width": 512, + "height": 105, + "directions": 1, + "frames": 10, + "framesPerDirection": 10, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -39, + "top": -30, + "width": 79, + "height": 52 + }, + "groups": [ + [ + [ + 0, + 0, + 79, + 52, + -39, + -30 + ], + [ + 80, + 0, + 79, + 52, + -39, + -30 + ], + [ + 160, + 0, + 79, + 52, + -39, + -30 + ], + [ + 240, + 0, + 79, + 52, + -39, + -30 + ], + [ + 320, + 0, + 79, + 52, + -39, + -30 + ], + [ + 400, + 0, + 79, + 52, + -39, + -30 + ], + [ + 0, + 53, + 79, + 52, + -39, + -30 + ], + [ + 80, + 53, + 79, + 52, + -39, + -30 + ], + [ + 160, + 53, + 79, + 52, + -39, + -30 + ], + [ + 240, + 53, + 79, + 52, + -39, + -30 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstorm_front.png b/public/overlays/thunderstorm_front.png new file mode 100644 index 0000000..3f0bb31 Binary files /dev/null and b/public/overlays/thunderstorm_front.png differ diff --git a/public/overlays/thunderstormback.json b/public/overlays/thunderstormback.json new file mode 100644 index 0000000..a71185a --- /dev/null +++ b/public/overlays/thunderstormback.json @@ -0,0 +1,180 @@ +{ + "name": "thunderstormback", + "celFile": "ThunderstormCast_operate", + "width": 512, + "height": 243, + "directions": 1, + "frames": 19, + "framesPerDirection": 19, + "animRate": 16, + "trans": 3, + "preDraw": true, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -41, + "top": -21, + "width": 81, + "height": 60 + }, + "groups": [ + [ + [ + 0, + 0, + 81, + 60, + -41, + -21 + ], + [ + 82, + 0, + 81, + 60, + -41, + -21 + ], + [ + 164, + 0, + 81, + 60, + -41, + -21 + ], + [ + 246, + 0, + 81, + 60, + -41, + -21 + ], + [ + 328, + 0, + 81, + 60, + -41, + -21 + ], + [ + 410, + 0, + 81, + 60, + -41, + -21 + ], + [ + 0, + 61, + 81, + 60, + -41, + -21 + ], + [ + 82, + 61, + 81, + 60, + -41, + -21 + ], + [ + 164, + 61, + 81, + 60, + -41, + -21 + ], + [ + 246, + 61, + 81, + 60, + -41, + -21 + ], + [ + 328, + 61, + 81, + 60, + -41, + -21 + ], + [ + 410, + 61, + 81, + 60, + -41, + -21 + ], + [ + 0, + 122, + 81, + 60, + -41, + -21 + ], + [ + 82, + 122, + 81, + 60, + -41, + -21 + ], + [ + 164, + 122, + 81, + 60, + -41, + -21 + ], + [ + 246, + 122, + 81, + 60, + -41, + -21 + ], + [ + 328, + 122, + 81, + 60, + -41, + -21 + ], + [ + 410, + 122, + 81, + 60, + -41, + -21 + ], + [ + 0, + 183, + 81, + 60, + -41, + -21 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstormback.png b/public/overlays/thunderstormback.png new file mode 100644 index 0000000..9de40c7 Binary files /dev/null and b/public/overlays/thunderstormback.png differ diff --git a/public/overlays/thunderstormcast.json b/public/overlays/thunderstormcast.json new file mode 100644 index 0000000..2d5b849 --- /dev/null +++ b/public/overlays/thunderstormcast.json @@ -0,0 +1,108 @@ +{ + "name": "thunderstormcast", + "celFile": "ThunderstormCast", + "width": 512, + "height": 105, + "directions": 1, + "frames": 10, + "framesPerDirection": 10, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -39, + "top": -30, + "width": 79, + "height": 52 + }, + "groups": [ + [ + [ + 0, + 0, + 79, + 52, + -39, + -30 + ], + [ + 80, + 0, + 79, + 52, + -39, + -30 + ], + [ + 160, + 0, + 79, + 52, + -39, + -30 + ], + [ + 240, + 0, + 79, + 52, + -39, + -30 + ], + [ + 320, + 0, + 79, + 52, + -39, + -30 + ], + [ + 400, + 0, + 79, + 52, + -39, + -30 + ], + [ + 0, + 53, + 79, + 52, + -39, + -30 + ], + [ + 80, + 53, + 79, + 52, + -39, + -30 + ], + [ + 160, + 53, + 79, + 52, + -39, + -30 + ], + [ + 240, + 53, + 79, + 52, + -39, + -30 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstormcast.png b/public/overlays/thunderstormcast.png new file mode 100644 index 0000000..3f0bb31 Binary files /dev/null and b/public/overlays/thunderstormcast.png differ diff --git a/public/overlays/thunderstormoperate.json b/public/overlays/thunderstormoperate.json new file mode 100644 index 0000000..a71185a --- /dev/null +++ b/public/overlays/thunderstormoperate.json @@ -0,0 +1,180 @@ +{ + "name": "thunderstormback", + "celFile": "ThunderstormCast_operate", + "width": 512, + "height": 243, + "directions": 1, + "frames": 19, + "framesPerDirection": 19, + "animRate": 16, + "trans": 3, + "preDraw": true, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -41, + "top": -21, + "width": 81, + "height": 60 + }, + "groups": [ + [ + [ + 0, + 0, + 81, + 60, + -41, + -21 + ], + [ + 82, + 0, + 81, + 60, + -41, + -21 + ], + [ + 164, + 0, + 81, + 60, + -41, + -21 + ], + [ + 246, + 0, + 81, + 60, + -41, + -21 + ], + [ + 328, + 0, + 81, + 60, + -41, + -21 + ], + [ + 410, + 0, + 81, + 60, + -41, + -21 + ], + [ + 0, + 61, + 81, + 60, + -41, + -21 + ], + [ + 82, + 61, + 81, + 60, + -41, + -21 + ], + [ + 164, + 61, + 81, + 60, + -41, + -21 + ], + [ + 246, + 61, + 81, + 60, + -41, + -21 + ], + [ + 328, + 61, + 81, + 60, + -41, + -21 + ], + [ + 410, + 61, + 81, + 60, + -41, + -21 + ], + [ + 0, + 122, + 81, + 60, + -41, + -21 + ], + [ + 82, + 122, + 81, + 60, + -41, + -21 + ], + [ + 164, + 122, + 81, + 60, + -41, + -21 + ], + [ + 246, + 122, + 81, + 60, + -41, + -21 + ], + [ + 328, + 122, + 81, + 60, + -41, + -21 + ], + [ + 410, + 122, + 81, + 60, + -41, + -21 + ], + [ + 0, + 183, + 81, + 60, + -41, + -21 + ] + ] + ] +} \ No newline at end of file diff --git a/public/overlays/thunderstormoperate.png b/public/overlays/thunderstormoperate.png new file mode 100644 index 0000000..9de40c7 Binary files /dev/null and b/public/overlays/thunderstormoperate.png differ diff --git a/scripts/pack-missiles.ts b/scripts/pack-missiles.ts index 56ceec1..9b99d3f 100644 --- a/scripts/pack-missiles.ts +++ b/scripts/pack-missiles.ts @@ -104,6 +104,17 @@ const MISSILE_TARGETS = [ { name: 'meteorexplode', celFile: 'ExpArrowExplode', animSpeed: 16 }, { name: 'meteorfire', celFile: 'groundFireMedium', animSpeed: 16 }, { name: 'firesmall', celFile: 'groundFireSmall', animSpeed: 16 }, + + // 18 Sorceress Skills Missiles (v1.13c Parity) + { name: 'nova', celFile: 'ElectricNova', animSpeed: 16, trans: 1 }, + { name: 'lightningstrike', celFile: 'LightningStrike', animSpeed: 16, trans: 1 }, + { name: 'thunderstorm1', celFile: 'LightningboltBig', animSpeed: 16, trans: 1 }, + { name: 'sparkle', celFile: 'Gleam', animSpeed: 16, trans: 1 }, + { name: 'freezingarrowexp2', celFile: 'FreezeExplodeEjecta', animSpeed: 16, trans: 1 }, + { name: 'firewall', celFile: 'groundFireBig', animSpeed: 16, trans: 1 }, + { name: 'infernoflame1', celFile: 'Flamethrower', animSpeed: 16, trans: 1 }, + { name: 'infernoflame2', celFile: 'Flamethrower2', animSpeed: 16, trans: 1 }, + { name: 'frostnova', celFile: 'FrostNova', animSpeed: 16, trans: 1 }, ] as const const PAGE_SIZE = 4096 @@ -335,6 +346,23 @@ export async function bakeMissiles(projectRoot: string = process.cwd()): Promise copyAlias('meteortargetindicator', 'meteorcenter') copyAlias('firemedium', 'meteorfire') + // 18 Sorceress Skills Missiles aliases + copyAlias('electricnova', 'nova') + copyAlias('chainlightning', 'lightningstrike') + copyAlias('lightninghit', 'lightningstrike') + copyAlias('thunderstorm', 'thunderstorm1') + copyAlias('lightningboltbig', 'thunderstorm1') + copyAlias('gleam', 'sparkle') + copyAlias('freezeexplodeejecta', 'freezingarrowexp2') + copyAlias('glacialspikeejecta', 'freezingarrowexp2') + copyAlias('blaze', 'firewall') + copyAlias('firewallmaker', 'firewall') + copyAlias('groundfirebig', 'firewall') + copyAlias('flamethrower', 'infernoflame1') + copyAlias('flamethrower2', 'infernoflame2') + copyAlias('coldunique', 'frostnova') + copyAlias('mephfrostnova', 'frostnova') + // Generate src/render/missiles-meta.ts const metaExports = MISSILE_TARGETS.map(t => { const upper = t.name.toUpperCase() @@ -465,6 +493,81 @@ export const FIREMEDIUM_META: MissileMeta = { name: 'firemedium', } +export const ELECTRICNOVA_META: MissileMeta = { + ...NOVA_META, + name: 'electricnova', +} + +export const CHAINLIGHTNING_META: MissileMeta = { + ...LIGHTNINGSTRIKE_META, + name: 'chainlightning', +} + +export const LIGHTNINGHIT_META: MissileMeta = { + ...LIGHTNINGSTRIKE_META, + name: 'lightninghit', +} + +export const THUNDERSTORM_META: MissileMeta = { + ...THUNDERSTORM1_META, + name: 'thunderstorm', +} + +export const LIGHTNINGBOLTBIG_META: MissileMeta = { + ...THUNDERSTORM1_META, + name: 'lightningboltbig', +} + +export const GLEAM_META: MissileMeta = { + ...SPARKLE_META, + name: 'gleam', +} + +export const FREEZEEXPLODEEJECTA_META: MissileMeta = { + ...FREEZINGARROWEXP2_META, + name: 'freezeexplodeejecta', +} + +export const GLACIALSPIKEEJECTA_META: MissileMeta = { + ...FREEZINGARROWEXP2_META, + name: 'glacialspikeejecta', +} + +export const BLAZE_META: MissileMeta = { + ...FIREWALL_META, + name: 'blaze', +} + +export const FIREWALLMAKER_META: MissileMeta = { + ...FIREWALL_META, + name: 'firewallmaker', +} + +export const GROUNDFIREBIG_META: MissileMeta = { + ...FIREWALL_META, + name: 'groundfirebig', +} + +export const FLAMETHROWER_META: MissileMeta = { + ...INFERNOFLAME1_META, + name: 'flamethrower', +} + +export const FLAMETHROWER2_META: MissileMeta = { + ...INFERNOFLAME2_META, + name: 'flamethrower2', +} + +export const COLDUNIQUE_META: MissileMeta = { + ...FROSTNOVA_META, + name: 'coldunique', +} + +export const MEPHFROSTNOVA_META: MissileMeta = { + ...FROSTNOVA_META, + name: 'mephfrostnova', +} + export const MISSILE_METAS: Readonly> = Object.freeze({ ${mapEntries} 'blizzard4': BLIZZARD4_META, @@ -473,6 +576,83 @@ ${mapEntries} 'hydrafire': HYDRAFIRE_META, 'meteortargetindicator': METEORTARGETINDICATOR_META, 'firemedium': FIREMEDIUM_META, + 'electricnova': ELECTRICNOVA_META, + 'chainlightning': CHAINLIGHTNING_META, + 'lightninghit': LIGHTNINGHIT_META, + 'thunderstorm': THUNDERSTORM_META, + 'lightningboltbig': LIGHTNINGBOLTBIG_META, + 'gleam': GLEAM_META, + 'freezeexplodeejecta': FREEZEEXPLODEEJECTA_META, + 'glacialspikeejecta': GLACIALSPIKEEJECTA_META, + 'blaze': BLAZE_META, + 'firewallmaker': FIREWALLMAKER_META, + 'groundfirebig': GROUNDFIREBIG_META, + 'flamethrower': FLAMETHROWER_META, + 'flamethrower2': FLAMETHROWER2_META, + 'coldunique': COLDUNIQUE_META, + 'mephfrostnova': MEPHFROSTNOVA_META, + + // Exact CelFile aliases for 18 Sorceress Skills Missiles & Ground Truth CelFiles + 'ElectricNova': ELECTRICNOVA_META, + 'LightningStrike': LIGHTNINGSTRIKE_META, + 'ChainLightning': CHAINLIGHTNING_META, + 'LightningHit': LIGHTNINGHIT_META, + 'Thunderstorm': THUNDERSTORM_META, + 'LightningboltBig': LIGHTNINGBOLTBIG_META, + 'Gleam': GLEAM_META, + 'FreezeExplodeEjecta': FREEZEEXPLODEEJECTA_META, + 'GlacialSpikeEjecta': GLACIALSPIKEEJECTA_META, + 'Blaze': BLAZE_META, + 'FirewallMaker': FIREWALLMAKER_META, + 'groundFireBig': GROUNDFIREBIG_META, + 'Flamethrower': FLAMETHROWER_META, + 'Flamethrower2': FLAMETHROWER2_META, + 'ColdUnique': COLDUNIQUE_META, + 'MephFrostNova': MEPHFROSTNOVA_META, + 'FrostNova': FROSTNOVA_META, + + // Base missiles CelFiles + 'Firebolt': FIREBOLT_META, + 'Fireball': FIREBALL_META, + 'FireArrowExplode2': FIREEXPLODE_META, + 'firearrowexplode2': FIREEXPLODE_META, + 'Icebolt': ICEBOLT_META, + 'IceBlast': ICEBLAST_META, + 'GlacialSpike': GLACIALSPIKE_META, + 'IceArrowExplode': ICEEXPLODE_META, + 'icearrowexplode': ICEEXPLODE_META, + 'FreezeExplodeCenter': FREEZEEXPLODE_META, + 'freezeexplodecenter': FREEZEEXPLODE_META, + 'IceOrb': FROZENORB_META, + 'iceorb': FROZENORB_META, + 'IceOrbExplode': FROZENORBEXPLODE_META, + 'iceorbexplode': FROZENORBEXPLODE_META, + 'Blizzard': BLIZZARD3_META, + 'blizzard': BLIZZARD3_META, + 'ChargedBolt': CHARGEDBOLT_META, + 'teethMissile': TEETH_META, + 'teethmissile': TEETH_META, + 'BoneSpear': BONESPEAR_META, + 'BoneSpirit': BONESPIRIT_META, + 'BoneSpiritExplode': BONESPIRITEXPLODE_META, + 'poisonNova': POISONNOVA_META, + 'HolyBoltMissile': HOLYBOLT_META, + 'holyboltmissile': HOLYBOLT_META, + 'SafeArrow': MAGICARROW_META, + 'safearrow': MAGICARROW_META, + 'FireArrow': FIREARROW_META, + 'IceArrow': ICEARROW_META, + 'Arrow': ARROW_META, + 'LightningJavelin': LIGHTNINGJAVELIN_META, + 'Meteor': METEOR_META, + 'MeteorTail': METEORTAIL_META, + 'MeteorTargetIndicator': METEORTARGETINDICATOR_META, + 'ExpArrowExplode': METEOREXPLODE_META, + 'exparrowexplode': METEOREXPLODE_META, + 'groundFireMedium': FIREMEDIUM_META, + 'groundfiremedium': FIREMEDIUM_META, + 'groundFireSmall': FIRESMALL_META, + 'groundfiresmall': FIRESMALL_META, }) ` diff --git a/scripts/pack-overlays.ts b/scripts/pack-overlays.ts index 9a60169..f7717b4 100644 --- a/scripts/pack-overlays.ts +++ b/scripts/pack-overlays.ts @@ -505,6 +505,109 @@ export const OVERLAY_TARGETS: readonly OverlayTarget[] = [ lightRadius: 6, lightColor: [211, 148, 255] as const, }, + + // --------------------------------------------------------------------------- + // 9 Sorceress Skill & Hit Overlays (v1.13c Ground Truth) + // --------------------------------------------------------------------------- + // 1. ShockHitSm (lightning hit overlay for skills 38, 48, 49, 53, 57) + { + name: 'lightning', + celFile: 'ShockHitSm', + aliases: ['ShockHitSm', 'shockhitsm', 'holyshockhit', 'lightning_hit'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 11, + lightColor: [255, 255, 255] as const, + }, + // 2. FrozenArmor (frozenarmor buff overlay for Frozen/Shiver/Chilling Armor 40, 50, 60) + { + name: 'frozenarmor', + celFile: 'FrozenArmor', + aliases: ['FrozenArmor', 'shiverarmor', 'chillarmor', 'frozen_armor', 'shiver_armor', 'chill_armor', 'chilling_armor'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 13, + lightColor: [200, 200, 255] as const, + }, + // 3. AuraResistColdCast (frozenarmor_hit hit overlay for 40, 50, 60) + { + name: 'frozenarmor_hit', + celFile: 'AuraResistColdCast', + aliases: ['AuraResistColdCast', 'cast_shivers', 'shiverarmor_hit', 'chillarmor_hit', 'frozen_armor_hit', 'shiver_armor_hit', 'chill_armor_hit'], + animRate: 24, + trans: 3, + preDraw: true, + lightRadius: 6, + lightColor: [81, 81, 255] as const, + }, + // 4. ManaShieldBall (energyshield buff overlay for Energy Shield 58) + { + name: 'energyshield', + celFile: 'ManaShieldBall', + aliases: ['ManaShieldBall', 'manashield', 'energy_shield'], + animRate: 8, + trans: 5, + preDraw: false, + lightRadius: 0, + lightColor: [255, 255, 255] as const, + }, + // 5. ManaShieldDir00 (energyshieldhit0 absorb hit overlay for Energy Shield 58) + { + name: 'energyshieldhit0', + celFile: 'ManaShieldDir00', + aliases: ['ManaShieldDir00', 'energyshield_hit', 'energyshieldhit', 'energy_shield_hit'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 3, + lightColor: [255, 255, 255] as const, + }, + // 6. ThunderstormCast (thunderstormcast cloud overlay for Thunder Storm 57) + { + name: 'thunderstormcast', + celFile: 'ThunderstormCast', + aliases: ['ThunderstormCast', 'thunderstorm_front', 'thunderstorm_cast'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 8, + lightColor: [255, 255, 255] as const, + }, + // 7. ThunderstormCast_operate (thunderstormback rear cloud overlay for Thunder Storm 57) + { + name: 'thunderstormback', + celFile: 'ThunderstormCast_operate', + aliases: ['ThunderstormCast_operate', 'thunderstorm_back', 'thunderstormoperate'], + animRate: 16, + trans: 3, + preDraw: true, + lightRadius: 8, + lightColor: [255, 255, 255] as const, + }, + // 8. FireEnchant (enchant buff overlay for Enchant 52) + { + name: 'enchant', + celFile: 'FireEnchant', + aliases: ['FireEnchant', 'fireenchant', 'fire_enchant'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 9, + lightColor: [255, 178, 64] as const, + }, + // 9. IceExplode (ice_explode overlay) + { + name: 'ice_explode', + celFile: 'IceExplode', + aliases: ['IceExplode', 'iceexplode'], + animRate: 16, + trans: 3, + preDraw: false, + lightRadius: 14, + lightColor: [210, 210, 255] as const, + }, ] as const export async function bakeOverlays(projectRoot: string = process.cwd()): Promise> { @@ -641,6 +744,17 @@ export async function bakeOverlays(projectRoot: string = process.cwd()): Promise redemption: 'REDEMPTION_AURA_META', salvation_front: 'SALVATION_FRONT_AURA_META', salvation_back: 'SALVATION_BACK_AURA_META', + + // 9 Sorceress Overlays + lightning: 'LIGHTNING_OVERLAY_META', + frozenarmor: 'FROZEN_ARMOR_OVERLAY_META', + frozenarmor_hit: 'FROZEN_ARMOR_HIT_OVERLAY_META', + energyshield: 'ENERGY_SHIELD_OVERLAY_META', + energyshieldhit0: 'ENERGY_SHIELD_HIT_OVERLAY_META', + thunderstormcast: 'THUNDERSTORM_CAST_OVERLAY_META', + thunderstormback: 'THUNDERSTORM_BACK_OVERLAY_META', + enchant: 'ENCHANT_OVERLAY_META', + ice_explode: 'ICE_EXPLODE_OVERLAY_META', } const individualConsts = OVERLAY_TARGETS.map(t => { @@ -663,6 +777,14 @@ export const HOLY_SHOCK_AURA_META: OverlayMeta = HOLY_SHOCK_FRONT_AURA_META export const SANCTUARY_AURA_META: OverlayMeta = SANCTUARY_FRONT_AURA_META export const FANATICISM_AURA_META: OverlayMeta = FANATICISM_BACK_AURA_META export const SALVATION_AURA_META: OverlayMeta = SALVATION_FRONT_AURA_META + +// Backward compatibility aliases for cold armor and energy shield overlays +export const SHIVER_ARMOR_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_OVERLAY_META +export const CHILLING_ARMOR_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_OVERLAY_META +export const SHIVER_ARMOR_HIT_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_HIT_OVERLAY_META +export const CHILLING_ARMOR_HIT_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_HIT_OVERLAY_META +export const ENERGY_SHIELD_BALL_OVERLAY_META: OverlayMeta = ENERGY_SHIELD_OVERLAY_META +export const THUNDERSTORM_FRONT_OVERLAY_META: OverlayMeta = THUNDERSTORM_CAST_OVERLAY_META ` const overlayMetasEntries: string[] = [] diff --git a/src/render/missiles-meta.ts b/src/render/missiles-meta.ts index 4494cc5..c9513d0 100644 --- a/src/render/missiles-meta.ts +++ b/src/render/missiles-meta.ts @@ -5162,6 +5162,1159 @@ export const FIRESMALL_META: MissileMeta = { ], } +export const NOVA_META: MissileMeta = { + name: "nova", + celFile: "ElectricNova", + width: 1024, + height: 601, + directions: 16, + framesPerDirection: 13, + animSpeed: 16, + groups: [ + [ + [0, 0, 65, 40, -32, -20], + [66, 0, 65, 40, -32, -20], + [132, 0, 65, 40, -32, -20], + [198, 0, 65, 40, -32, -20], + [264, 0, 65, 40, -32, -20], + [330, 0, 65, 40, -32, -20], + [396, 0, 65, 40, -32, -20], + [462, 0, 65, 40, -32, -20], + [528, 0, 65, 40, -32, -20], + [594, 0, 65, 40, -32, -20], + [660, 0, 65, 40, -32, -20], + [726, 0, 65, 40, -32, -20], + [792, 0, 65, 40, -32, -20] + ], + [ + [858, 0, 65, 42, -32, -22], + [924, 0, 65, 42, -32, -22], + [0, 43, 65, 42, -32, -22], + [66, 43, 65, 42, -32, -22], + [132, 43, 65, 42, -32, -22], + [198, 43, 65, 42, -32, -22], + [264, 43, 65, 42, -32, -22], + [330, 43, 65, 42, -32, -22], + [396, 43, 65, 42, -32, -22], + [462, 43, 65, 42, -32, -22], + [528, 43, 65, 42, -32, -22], + [594, 43, 65, 42, -32, -22], + [660, 43, 65, 42, -32, -22] + ], + [ + [726, 43, 64, 42, -32, -23], + [791, 43, 64, 42, -32, -23], + [856, 43, 64, 42, -32, -23], + [921, 43, 64, 42, -32, -23], + [0, 86, 64, 42, -32, -23], + [65, 86, 64, 42, -32, -23], + [130, 86, 64, 42, -32, -23], + [195, 86, 64, 42, -32, -23], + [260, 86, 64, 42, -32, -23], + [325, 86, 64, 42, -32, -23], + [390, 86, 64, 42, -32, -23], + [455, 86, 64, 42, -32, -23], + [520, 86, 64, 42, -32, -23] + ], + [ + [585, 86, 65, 42, -33, -21], + [651, 86, 65, 42, -33, -21], + [717, 86, 65, 42, -33, -21], + [783, 86, 65, 42, -33, -21], + [849, 86, 65, 42, -33, -21], + [915, 86, 65, 42, -33, -21], + [0, 129, 65, 42, -33, -21], + [66, 129, 65, 42, -33, -21], + [132, 129, 65, 42, -33, -21], + [198, 129, 65, 42, -33, -21], + [264, 129, 65, 42, -33, -21], + [330, 129, 65, 42, -33, -21], + [396, 129, 65, 42, -33, -21] + ], + [ + [462, 129, 65, 39, -32, -18], + [528, 129, 65, 39, -32, -18], + [594, 129, 65, 39, -32, -18], + [660, 129, 65, 39, -32, -18], + [726, 129, 65, 39, -32, -18], + [792, 129, 65, 39, -32, -18], + [858, 129, 65, 39, -32, -18], + [924, 129, 65, 39, -32, -18], + [0, 172, 65, 39, -32, -18], + [66, 172, 65, 39, -32, -18], + [132, 172, 65, 39, -32, -18], + [198, 172, 65, 39, -32, -18], + [264, 172, 65, 39, -32, -18] + ], + [ + [330, 172, 54, 42, -34, -21], + [385, 172, 54, 42, -34, -21], + [440, 172, 54, 42, -34, -21], + [495, 172, 54, 42, -34, -21], + [550, 172, 54, 42, -34, -21], + [605, 172, 54, 42, -34, -21], + [660, 172, 54, 42, -34, -21], + [715, 172, 54, 42, -34, -21], + [770, 172, 54, 42, -34, -21], + [825, 172, 54, 42, -34, -21], + [880, 172, 54, 42, -34, -21], + [935, 172, 54, 42, -34, -21], + [0, 215, 54, 42, -34, -21] + ], + [ + [55, 215, 64, 39, -33, -24], + [120, 215, 64, 39, -33, -24], + [185, 215, 64, 39, -33, -24], + [250, 215, 64, 39, -33, -24], + [315, 215, 64, 39, -33, -24], + [380, 215, 64, 39, -33, -24], + [445, 215, 64, 39, -33, -24], + [510, 215, 64, 39, -33, -24], + [575, 215, 64, 39, -33, -24], + [640, 215, 64, 39, -33, -24], + [705, 215, 64, 39, -33, -24], + [770, 215, 64, 39, -33, -24], + [835, 215, 64, 39, -33, -24] + ], + [ + [900, 215, 50, 42, -20, -22], + [951, 215, 50, 42, -20, -22], + [0, 258, 50, 42, -20, -22], + [51, 258, 50, 42, -20, -22], + [102, 258, 50, 42, -20, -22], + [153, 258, 50, 42, -20, -22], + [204, 258, 50, 42, -20, -22], + [255, 258, 50, 42, -20, -22], + [306, 258, 50, 42, -20, -22], + [357, 258, 50, 42, -20, -22], + [408, 258, 50, 42, -20, -22], + [459, 258, 50, 42, -20, -22], + [510, 258, 50, 42, -20, -22] + ], + [ + [561, 258, 64, 42, -30, -19], + [626, 258, 64, 42, -30, -19], + [691, 258, 64, 42, -30, -19], + [756, 258, 64, 42, -30, -19], + [821, 258, 64, 42, -30, -19], + [886, 258, 64, 42, -30, -19], + [951, 258, 64, 42, -30, -19], + [0, 301, 64, 42, -30, -19], + [65, 301, 64, 42, -30, -19], + [130, 301, 64, 42, -30, -19], + [195, 301, 64, 42, -30, -19], + [260, 301, 64, 42, -30, -19], + [325, 301, 64, 42, -30, -19] + ], + [ + [390, 301, 59, 41, -33, -22], + [450, 301, 59, 41, -33, -22], + [510, 301, 59, 41, -33, -22], + [570, 301, 59, 41, -33, -22], + [630, 301, 59, 41, -33, -22], + [690, 301, 59, 41, -33, -22], + [750, 301, 59, 41, -33, -22], + [810, 301, 59, 41, -33, -22], + [870, 301, 59, 41, -33, -22], + [930, 301, 59, 41, -33, -22], + [0, 344, 59, 41, -33, -22], + [60, 344, 59, 41, -33, -22], + [120, 344, 59, 41, -33, -22] + ], + [ + [180, 344, 58, 42, -32, -20], + [239, 344, 58, 42, -32, -20], + [298, 344, 58, 42, -32, -20], + [357, 344, 58, 42, -32, -20], + [416, 344, 58, 42, -32, -20], + [475, 344, 58, 42, -32, -20], + [534, 344, 58, 42, -32, -20], + [593, 344, 58, 42, -32, -20], + [652, 344, 58, 42, -32, -20], + [711, 344, 58, 42, -32, -20], + [770, 344, 58, 42, -32, -20], + [829, 344, 58, 42, -32, -20], + [888, 344, 58, 42, -32, -20] + ], + [ + [947, 344, 65, 41, -31, -23], + [0, 387, 65, 41, -31, -23], + [66, 387, 65, 41, -31, -23], + [132, 387, 65, 41, -31, -23], + [198, 387, 65, 41, -31, -23], + [264, 387, 65, 41, -31, -23], + [330, 387, 65, 41, -31, -23], + [396, 387, 65, 41, -31, -23], + [462, 387, 65, 41, -31, -23], + [528, 387, 65, 41, -31, -23], + [594, 387, 65, 41, -31, -23], + [660, 387, 65, 41, -31, -23], + [726, 387, 65, 41, -31, -23] + ], + [ + [792, 387, 64, 41, -34, -23], + [857, 387, 64, 41, -34, -23], + [922, 387, 64, 41, -34, -23], + [0, 429, 64, 41, -34, -23], + [65, 429, 64, 41, -34, -23], + [130, 429, 64, 41, -34, -23], + [195, 429, 64, 41, -34, -23], + [260, 429, 64, 41, -34, -23], + [325, 429, 64, 41, -34, -23], + [390, 429, 64, 41, -34, -23], + [455, 429, 64, 41, -34, -23], + [520, 429, 64, 41, -34, -23], + [585, 429, 64, 41, -34, -23] + ], + [ + [650, 429, 59, 40, -26, -20], + [710, 429, 59, 40, -26, -20], + [770, 429, 59, 40, -26, -20], + [830, 429, 59, 40, -26, -20], + [890, 429, 59, 40, -26, -20], + [950, 429, 59, 40, -26, -20], + [0, 471, 59, 40, -26, -20], + [60, 471, 59, 40, -26, -20], + [120, 471, 59, 40, -26, -20], + [180, 471, 59, 40, -26, -20], + [240, 471, 59, 40, -26, -20], + [300, 471, 59, 40, -26, -20], + [360, 471, 59, 40, -26, -20] + ], + [ + [420, 471, 60, 43, -25, -24], + [481, 471, 60, 43, -25, -24], + [542, 471, 60, 43, -25, -24], + [603, 471, 60, 43, -25, -24], + [664, 471, 60, 43, -25, -24], + [725, 471, 60, 43, -25, -24], + [786, 471, 60, 43, -25, -24], + [847, 471, 60, 43, -25, -24], + [908, 471, 60, 43, -25, -24], + [0, 515, 60, 43, -25, -24], + [61, 515, 60, 43, -25, -24], + [122, 515, 60, 43, -25, -24], + [183, 515, 60, 43, -25, -24] + ], + [ + [244, 515, 65, 42, -35, -18], + [310, 515, 65, 42, -35, -18], + [376, 515, 65, 42, -35, -18], + [442, 515, 65, 42, -35, -18], + [508, 515, 65, 42, -35, -18], + [574, 515, 65, 42, -35, -18], + [640, 515, 65, 42, -35, -18], + [706, 515, 65, 42, -35, -18], + [772, 515, 65, 42, -35, -18], + [838, 515, 65, 42, -35, -18], + [904, 515, 65, 42, -35, -18], + [0, 559, 65, 42, -35, -18], + [66, 559, 65, 42, -35, -18] + ] + ], +} + +export const LIGHTNINGSTRIKE_META: MissileMeta = { + name: "lightningstrike", + celFile: "LightningStrike", + width: 2048, + height: 1412, + directions: 32, + framesPerDirection: 8, + animSpeed: 16, + groups: [ + [ + [0, 0, 112, 79, -66, -58], + [113, 0, 112, 79, -66, -58], + [226, 0, 112, 79, -66, -58], + [339, 0, 112, 79, -66, -58], + [452, 0, 112, 79, -66, -58], + [565, 0, 112, 79, -66, -58], + [678, 0, 112, 79, -66, -58], + [791, 0, 112, 79, -66, -58] + ], + [ + [904, 0, 105, 96, -59, -67], + [1010, 0, 105, 96, -59, -67], + [1116, 0, 105, 96, -59, -67], + [1222, 0, 105, 96, -59, -67], + [1328, 0, 105, 96, -59, -67], + [1434, 0, 105, 96, -59, -67], + [1540, 0, 105, 96, -59, -67], + [1646, 0, 105, 96, -59, -67] + ], + [ + [1752, 0, 111, 93, -46, -64], + [1864, 0, 111, 93, -46, -64], + [0, 97, 111, 93, -46, -64], + [112, 97, 111, 93, -46, -64], + [224, 97, 111, 93, -46, -64], + [336, 97, 111, 93, -46, -64], + [448, 97, 111, 93, -46, -64], + [560, 97, 111, 93, -46, -64] + ], + [ + [672, 97, 105, 82, -46, -57], + [778, 97, 105, 82, -46, -57], + [884, 97, 105, 82, -46, -57], + [990, 97, 105, 82, -46, -57], + [1096, 97, 105, 82, -46, -57], + [1202, 97, 105, 82, -46, -57], + [1308, 97, 105, 82, -46, -57], + [1414, 97, 105, 82, -46, -57] + ], + [ + [1520, 97, 98, 88, -43, -63], + [1619, 97, 98, 88, -43, -63], + [1718, 97, 98, 88, -43, -63], + [1817, 97, 98, 88, -43, -63], + [1916, 97, 98, 88, -43, -63], + [0, 191, 98, 88, -43, -63], + [99, 191, 98, 88, -43, -63], + [198, 191, 98, 88, -43, -63] + ], + [ + [297, 191, 130, 67, -72, -52], + [428, 191, 130, 67, -72, -52], + [559, 191, 130, 67, -72, -52], + [690, 191, 130, 67, -72, -52], + [821, 191, 130, 67, -72, -52], + [952, 191, 130, 67, -72, -52], + [1083, 191, 130, 67, -72, -52], + [1214, 191, 130, 67, -72, -52] + ], + [ + [1345, 191, 97, 106, -55, -71], + [1443, 191, 97, 106, -55, -71], + [1541, 191, 97, 106, -55, -71], + [1639, 191, 97, 106, -55, -71], + [1737, 191, 97, 106, -55, -71], + [1835, 191, 97, 106, -55, -71], + [1933, 191, 97, 106, -55, -71], + [0, 298, 97, 106, -55, -71] + ], + [ + [98, 298, 130, 79, -58, -60], + [229, 298, 130, 79, -58, -60], + [360, 298, 130, 79, -58, -60], + [491, 298, 130, 79, -58, -60], + [622, 298, 130, 79, -58, -60], + [753, 298, 130, 79, -58, -60], + [884, 298, 130, 79, -58, -60], + [1015, 298, 130, 79, -58, -60] + ], + [ + [1146, 298, 101, 86, -52, -62], + [1248, 298, 101, 86, -52, -62], + [1350, 298, 101, 86, -52, -62], + [1452, 298, 101, 86, -52, -62], + [1554, 298, 101, 86, -52, -62], + [1656, 298, 101, 86, -52, -62], + [1758, 298, 101, 86, -52, -62], + [1860, 298, 101, 86, -52, -62] + ], + [ + [0, 405, 128, 67, -73, -52], + [129, 405, 128, 67, -73, -52], + [258, 405, 128, 67, -73, -52], + [387, 405, 128, 67, -73, -52], + [516, 405, 128, 67, -73, -52], + [645, 405, 128, 67, -73, -52], + [774, 405, 128, 67, -73, -52], + [903, 405, 128, 67, -73, -52] + ], + [ + [1032, 405, 121, 82, -66, -60], + [1154, 405, 121, 82, -66, -60], + [1276, 405, 121, 82, -66, -60], + [1398, 405, 121, 82, -66, -60], + [1520, 405, 121, 82, -66, -60], + [1642, 405, 121, 82, -66, -60], + [1764, 405, 121, 82, -66, -60], + [1886, 405, 121, 82, -66, -60] + ], + [ + [0, 488, 90, 104, -55, -71], + [91, 488, 90, 104, -55, -71], + [182, 488, 90, 104, -55, -71], + [273, 488, 90, 104, -55, -71], + [364, 488, 90, 104, -55, -71], + [455, 488, 90, 104, -55, -71], + [546, 488, 90, 104, -55, -71], + [637, 488, 90, 104, -55, -71] + ], + [ + [728, 488, 101, 103, -49, -69], + [830, 488, 101, 103, -49, -69], + [932, 488, 101, 103, -49, -69], + [1034, 488, 101, 103, -49, -69], + [1136, 488, 101, 103, -49, -69], + [1238, 488, 101, 103, -49, -69], + [1340, 488, 101, 103, -49, -69], + [1442, 488, 101, 103, -49, -69] + ], + [ + [1544, 488, 128, 83, -55, -60], + [1673, 488, 128, 83, -55, -60], + [1802, 488, 128, 83, -55, -60], + [0, 593, 128, 83, -55, -60], + [129, 593, 128, 83, -55, -60], + [258, 593, 128, 83, -55, -60], + [387, 593, 128, 83, -55, -60], + [516, 593, 128, 83, -55, -60] + ], + [ + [645, 593, 121, 82, -55, -59], + [767, 593, 121, 82, -55, -59], + [889, 593, 121, 82, -55, -59], + [1011, 593, 121, 82, -55, -59], + [1133, 593, 121, 82, -55, -59], + [1255, 593, 121, 82, -55, -59], + [1377, 593, 121, 82, -55, -59], + [1499, 593, 121, 82, -55, -59] + ], + [ + [1621, 593, 90, 85, -35, -62], + [1712, 593, 90, 85, -35, -62], + [1803, 593, 90, 85, -35, -62], + [1894, 593, 90, 85, -35, -62], + [0, 679, 90, 85, -35, -62], + [91, 679, 90, 85, -35, -62], + [182, 679, 90, 85, -35, -62], + [273, 679, 90, 85, -35, -62] + ], + [ + [364, 679, 100, 88, -48, -63], + [465, 679, 100, 88, -48, -63], + [566, 679, 100, 88, -48, -63], + [667, 679, 100, 88, -48, -63], + [768, 679, 100, 88, -48, -63], + [869, 679, 100, 88, -48, -63], + [970, 679, 100, 88, -48, -63], + [1071, 679, 100, 88, -48, -63] + ], + [ + [1172, 679, 103, 83, -58, -60], + [1276, 679, 103, 83, -58, -60], + [1380, 679, 103, 83, -58, -60], + [1484, 679, 103, 83, -58, -60], + [1588, 679, 103, 83, -58, -60], + [1692, 679, 103, 83, -58, -60], + [1796, 679, 103, 83, -58, -60], + [1900, 679, 103, 83, -58, -60] + ], + [ + [0, 768, 122, 73, -71, -55], + [123, 768, 122, 73, -71, -55], + [246, 768, 122, 73, -71, -55], + [369, 768, 122, 73, -71, -55], + [492, 768, 122, 73, -71, -55], + [615, 768, 122, 73, -71, -55], + [738, 768, 122, 73, -71, -55], + [861, 768, 122, 73, -71, -55] + ], + [ + [984, 768, 132, 59, -74, -48], + [1117, 768, 132, 59, -74, -48], + [1250, 768, 132, 59, -74, -48], + [1383, 768, 132, 59, -74, -48], + [1516, 768, 132, 59, -74, -48], + [1649, 768, 132, 59, -74, -48], + [1782, 768, 132, 59, -74, -48], + [1915, 768, 132, 59, -74, -48] + ], + [ + [0, 842, 126, 75, -68, -56], + [127, 842, 126, 75, -68, -56], + [254, 842, 126, 75, -68, -56], + [381, 842, 126, 75, -68, -56], + [508, 842, 126, 75, -68, -56], + [635, 842, 126, 75, -68, -56], + [762, 842, 126, 75, -68, -56], + [889, 842, 126, 75, -68, -56] + ], + [ + [1016, 842, 114, 90, -63, -64], + [1131, 842, 114, 90, -63, -64], + [1246, 842, 114, 90, -63, -64], + [1361, 842, 114, 90, -63, -64], + [1476, 842, 114, 90, -63, -64], + [1591, 842, 114, 90, -63, -64], + [1706, 842, 114, 90, -63, -64], + [1821, 842, 114, 90, -63, -64] + ], + [ + [1936, 842, 94, 101, -53, -70], + [0, 944, 94, 101, -53, -70], + [95, 944, 94, 101, -53, -70], + [190, 944, 94, 101, -53, -70], + [285, 944, 94, 101, -53, -70], + [380, 944, 94, 101, -53, -70], + [475, 944, 94, 101, -53, -70], + [570, 944, 94, 101, -53, -70] + ], + [ + [665, 944, 92, 106, -56, -71], + [758, 944, 92, 106, -56, -71], + [851, 944, 92, 106, -56, -71], + [944, 944, 92, 106, -56, -71], + [1037, 944, 92, 106, -56, -71], + [1130, 944, 92, 106, -56, -71], + [1223, 944, 92, 106, -56, -71], + [1316, 944, 92, 106, -56, -71] + ], + [ + [1409, 944, 100, 105, -52, -70], + [1510, 944, 100, 105, -52, -70], + [1611, 944, 100, 105, -52, -70], + [1712, 944, 100, 105, -52, -70], + [1813, 944, 100, 105, -52, -70], + [1914, 944, 100, 105, -52, -70], + [0, 1051, 100, 105, -52, -70], + [101, 1051, 100, 105, -52, -70] + ], + [ + [202, 1051, 104, 99, -45, -67], + [307, 1051, 104, 99, -45, -67], + [412, 1051, 104, 99, -45, -67], + [517, 1051, 104, 99, -45, -67], + [622, 1051, 104, 99, -45, -67], + [727, 1051, 104, 99, -45, -67], + [832, 1051, 104, 99, -45, -67], + [937, 1051, 104, 99, -45, -67] + ], + [ + [1042, 1051, 121, 87, -51, -61], + [1164, 1051, 121, 87, -51, -61], + [1286, 1051, 121, 87, -51, -61], + [1408, 1051, 121, 87, -51, -61], + [1530, 1051, 121, 87, -51, -61], + [1652, 1051, 121, 87, -51, -61], + [1774, 1051, 121, 87, -51, -61], + [1896, 1051, 121, 87, -51, -61] + ], + [ + [0, 1157, 131, 80, -57, -61], + [132, 1157, 131, 80, -57, -61], + [264, 1157, 131, 80, -57, -61], + [396, 1157, 131, 80, -57, -61], + [528, 1157, 131, 80, -57, -61], + [660, 1157, 131, 80, -57, -61], + [792, 1157, 131, 80, -57, -61], + [924, 1157, 131, 80, -57, -61] + ], + [ + [1056, 1157, 126, 81, -58, -60], + [1183, 1157, 126, 81, -58, -60], + [1310, 1157, 126, 81, -58, -60], + [1437, 1157, 126, 81, -58, -60], + [1564, 1157, 126, 81, -58, -60], + [1691, 1157, 126, 81, -58, -60], + [1818, 1157, 126, 81, -58, -60], + [0, 1239, 126, 81, -58, -60] + ], + [ + [127, 1239, 114, 81, -51, -57], + [242, 1239, 114, 81, -51, -57], + [357, 1239, 114, 81, -51, -57], + [472, 1239, 114, 81, -51, -57], + [587, 1239, 114, 81, -51, -57], + [702, 1239, 114, 81, -51, -57], + [817, 1239, 114, 81, -51, -57], + [932, 1239, 114, 81, -51, -57] + ], + [ + [1047, 1239, 94, 85, -41, -60], + [1142, 1239, 94, 85, -41, -60], + [1237, 1239, 94, 85, -41, -60], + [1332, 1239, 94, 85, -41, -60], + [1427, 1239, 94, 85, -41, -60], + [1522, 1239, 94, 85, -41, -60], + [1617, 1239, 94, 85, -41, -60], + [1712, 1239, 94, 85, -41, -60] + ], + [ + [1807, 1239, 93, 86, -37, -63], + [1901, 1239, 93, 86, -37, -63], + [0, 1326, 93, 86, -37, -63], + [94, 1326, 93, 86, -37, -63], + [188, 1326, 93, 86, -37, -63], + [282, 1326, 93, 86, -37, -63], + [376, 1326, 93, 86, -37, -63], + [470, 1326, 93, 86, -37, -63] + ] + ], +} + +export const THUNDERSTORM1_META: MissileMeta = { + name: "thunderstorm1", + celFile: "LightningboltBig", + width: 512, + height: 113, + directions: 1, + framesPerDirection: 8, + animSpeed: 16, + groups: [ + [ + [0, 0, 36, 113, -18, -106], + [37, 0, 36, 113, -18, -106], + [74, 0, 36, 113, -18, -106], + [111, 0, 36, 113, -18, -106], + [148, 0, 36, 113, -18, -106], + [185, 0, 36, 113, -18, -106], + [222, 0, 36, 113, -18, -106], + [259, 0, 36, 113, -18, -106] + ] + ], +} + +export const SPARKLE_META: MissileMeta = { + name: "sparkle", + celFile: "Gleam", + width: 512, + height: 16, + directions: 1, + framesPerDirection: 8, + animSpeed: 16, + groups: [ + [ + [0, 0, 19, 16, -9, -8], + [20, 0, 19, 16, -9, -8], + [40, 0, 19, 16, -9, -8], + [60, 0, 19, 16, -9, -8], + [80, 0, 19, 16, -9, -8], + [100, 0, 19, 16, -9, -8], + [120, 0, 19, 16, -9, -8], + [140, 0, 19, 16, -9, -8] + ] + ], +} + +export const FREEZINGARROWEXP2_META: MissileMeta = { + name: "freezingarrowexp2", + celFile: "FreezeExplodeEjecta", + width: 2048, + height: 852, + directions: 8, + framesPerDirection: 15, + animSpeed: 16, + groups: [ + [ + [0, 0, 151, 108, -144, -38], + [152, 0, 151, 108, -144, -38], + [304, 0, 151, 108, -144, -38], + [456, 0, 151, 108, -144, -38], + [608, 0, 151, 108, -144, -38], + [760, 0, 151, 108, -144, -38], + [912, 0, 151, 108, -144, -38], + [1064, 0, 151, 108, -144, -38], + [1216, 0, 151, 108, -144, -38], + [1368, 0, 151, 108, -144, -38], + [1520, 0, 151, 108, -144, -38], + [1672, 0, 151, 108, -144, -38], + [1824, 0, 151, 108, -144, -38], + [0, 109, 151, 108, -144, -38], + [152, 109, 151, 108, -144, -38] + ], + [ + [304, 109, 111, 81, -105, -75], + [416, 109, 111, 81, -105, -75], + [528, 109, 111, 81, -105, -75], + [640, 109, 111, 81, -105, -75], + [752, 109, 111, 81, -105, -75], + [864, 109, 111, 81, -105, -75], + [976, 109, 111, 81, -105, -75], + [1088, 109, 111, 81, -105, -75], + [1200, 109, 111, 81, -105, -75], + [1312, 109, 111, 81, -105, -75], + [1424, 109, 111, 81, -105, -75], + [1536, 109, 111, 81, -105, -75], + [1648, 109, 111, 81, -105, -75], + [1760, 109, 111, 81, -105, -75], + [1872, 109, 111, 81, -105, -75] + ], + [ + [0, 218, 115, 75, -6, -69], + [116, 218, 115, 75, -6, -69], + [232, 218, 115, 75, -6, -69], + [348, 218, 115, 75, -6, -69], + [464, 218, 115, 75, -6, -69], + [580, 218, 115, 75, -6, -69], + [696, 218, 115, 75, -6, -69], + [812, 218, 115, 75, -6, -69], + [928, 218, 115, 75, -6, -69], + [1044, 218, 115, 75, -6, -69], + [1160, 218, 115, 75, -6, -69], + [1276, 218, 115, 75, -6, -69], + [1392, 218, 115, 75, -6, -69], + [1508, 218, 115, 75, -6, -69], + [1624, 218, 115, 75, -6, -69] + ], + [ + [1740, 218, 138, 113, -6, -37], + [1879, 218, 138, 113, -6, -37], + [0, 332, 138, 113, -6, -37], + [139, 332, 138, 113, -6, -37], + [278, 332, 138, 113, -6, -37], + [417, 332, 138, 113, -6, -37], + [556, 332, 138, 113, -6, -37], + [695, 332, 138, 113, -6, -37], + [834, 332, 138, 113, -6, -37], + [973, 332, 138, 113, -6, -37], + [1112, 332, 138, 113, -6, -37], + [1251, 332, 138, 113, -6, -37], + [1390, 332, 138, 113, -6, -37], + [1529, 332, 138, 113, -6, -37], + [1668, 332, 138, 113, -6, -37] + ], + [ + [1807, 332, 130, 133, -66, -36], + [0, 466, 130, 133, -66, -36], + [131, 466, 130, 133, -66, -36], + [262, 466, 130, 133, -66, -36], + [393, 466, 130, 133, -66, -36], + [524, 466, 130, 133, -66, -36], + [655, 466, 130, 133, -66, -36], + [786, 466, 130, 133, -66, -36], + [917, 466, 130, 133, -66, -36], + [1048, 466, 130, 133, -66, -36], + [1179, 466, 130, 133, -66, -36], + [1310, 466, 130, 133, -66, -36], + [1441, 466, 130, 133, -66, -36], + [1572, 466, 130, 133, -66, -36], + [1703, 466, 130, 133, -66, -36] + ], + [ + [1834, 466, 153, 85, -147, -52], + [0, 600, 153, 85, -147, -52], + [154, 600, 153, 85, -147, -52], + [308, 600, 153, 85, -147, -52], + [462, 600, 153, 85, -147, -52], + [616, 600, 153, 85, -147, -52], + [770, 600, 153, 85, -147, -52], + [924, 600, 153, 85, -147, -52], + [1078, 600, 153, 85, -147, -52], + [1232, 600, 153, 85, -147, -52], + [1386, 600, 153, 85, -147, -52], + [1540, 600, 153, 85, -147, -52], + [1694, 600, 153, 85, -147, -52], + [1848, 600, 153, 85, -147, -52], + [0, 686, 153, 85, -147, -52] + ], + [ + [154, 686, 92, 78, -46, -78], + [247, 686, 92, 78, -46, -78], + [340, 686, 92, 78, -46, -78], + [433, 686, 92, 78, -46, -78], + [526, 686, 92, 78, -46, -78], + [619, 686, 92, 78, -46, -78], + [712, 686, 92, 78, -46, -78], + [805, 686, 92, 78, -46, -78], + [898, 686, 92, 78, -46, -78], + [991, 686, 92, 78, -46, -78], + [1084, 686, 92, 78, -46, -78], + [1177, 686, 92, 78, -46, -78], + [1270, 686, 92, 78, -46, -78], + [1363, 686, 92, 78, -46, -78], + [1456, 686, 92, 78, -46, -78] + ], + [ + [1549, 686, 159, 80, -6, -47], + [1709, 686, 159, 80, -6, -47], + [1869, 686, 159, 80, -6, -47], + [0, 772, 159, 80, -6, -47], + [160, 772, 159, 80, -6, -47], + [320, 772, 159, 80, -6, -47], + [480, 772, 159, 80, -6, -47], + [640, 772, 159, 80, -6, -47], + [800, 772, 159, 80, -6, -47], + [960, 772, 159, 80, -6, -47], + [1120, 772, 159, 80, -6, -47], + [1280, 772, 159, 80, -6, -47], + [1440, 772, 159, 80, -6, -47], + [1600, 772, 159, 80, -6, -47], + [1760, 772, 159, 80, -6, -47] + ] + ], +} + +export const FIREWALL_META: MissileMeta = { + name: "firewall", + celFile: "groundFireBig", + width: 1024, + height: 503, + directions: 1, + framesPerDirection: 37, + animSpeed: 16, + groups: [ + [ + [0, 0, 66, 167, -33, -156], + [67, 0, 66, 167, -33, -156], + [134, 0, 66, 167, -33, -156], + [201, 0, 66, 167, -33, -156], + [268, 0, 66, 167, -33, -156], + [335, 0, 66, 167, -33, -156], + [402, 0, 66, 167, -33, -156], + [469, 0, 66, 167, -33, -156], + [536, 0, 66, 167, -33, -156], + [603, 0, 66, 167, -33, -156], + [670, 0, 66, 167, -33, -156], + [737, 0, 66, 167, -33, -156], + [804, 0, 66, 167, -33, -156], + [871, 0, 66, 167, -33, -156], + [938, 0, 66, 167, -33, -156], + [0, 168, 66, 167, -33, -156], + [67, 168, 66, 167, -33, -156], + [134, 168, 66, 167, -33, -156], + [201, 168, 66, 167, -33, -156], + [268, 168, 66, 167, -33, -156], + [335, 168, 66, 167, -33, -156], + [402, 168, 66, 167, -33, -156], + [469, 168, 66, 167, -33, -156], + [536, 168, 66, 167, -33, -156], + [603, 168, 66, 167, -33, -156], + [670, 168, 66, 167, -33, -156], + [737, 168, 66, 167, -33, -156], + [804, 168, 66, 167, -33, -156], + [871, 168, 66, 167, -33, -156], + [938, 168, 66, 167, -33, -156], + [0, 336, 66, 167, -33, -156], + [67, 336, 66, 167, -33, -156], + [134, 336, 66, 167, -33, -156], + [201, 336, 66, 167, -33, -156], + [268, 336, 66, 167, -33, -156], + [335, 336, 66, 167, -33, -156], + [402, 336, 66, 167, -33, -156] + ] + ], +} + +export const INFERNOFLAME1_META: MissileMeta = { + name: "infernoflame1", + celFile: "Flamethrower", + width: 512, + height: 233, + directions: 1, + framesPerDirection: 15, + animSpeed: 16, + groups: [ + [ + [0, 0, 76, 77, -36, -104], + [77, 0, 76, 77, -36, -104], + [154, 0, 76, 77, -36, -104], + [231, 0, 76, 77, -36, -104], + [308, 0, 76, 77, -36, -104], + [385, 0, 76, 77, -36, -104], + [0, 78, 76, 77, -36, -104], + [77, 78, 76, 77, -36, -104], + [154, 78, 76, 77, -36, -104], + [231, 78, 76, 77, -36, -104], + [308, 78, 76, 77, -36, -104], + [385, 78, 76, 77, -36, -104], + [0, 156, 76, 77, -36, -104], + [77, 156, 76, 77, -36, -104], + [154, 156, 76, 77, -36, -104] + ] + ], +} + +export const INFERNOFLAME2_META: MissileMeta = { + name: "infernoflame2", + celFile: "Flamethrower2", + width: 512, + height: 254, + directions: 1, + framesPerDirection: 15, + animSpeed: 16, + groups: [ + [ + [0, 0, 76, 84, -38, -111], + [77, 0, 76, 84, -38, -111], + [154, 0, 76, 84, -38, -111], + [231, 0, 76, 84, -38, -111], + [308, 0, 76, 84, -38, -111], + [385, 0, 76, 84, -38, -111], + [0, 85, 76, 84, -38, -111], + [77, 85, 76, 84, -38, -111], + [154, 85, 76, 84, -38, -111], + [231, 85, 76, 84, -38, -111], + [308, 85, 76, 84, -38, -111], + [385, 85, 76, 84, -38, -111], + [0, 170, 76, 84, -38, -111], + [77, 170, 76, 84, -38, -111], + [154, 170, 76, 84, -38, -111] + ] + ], +} + +export const FROSTNOVA_META: MissileMeta = { + name: "frostnova", + celFile: "FrostNova", + width: 2048, + height: 546, + directions: 16, + framesPerDirection: 14, + animSpeed: 16, + groups: [ + [ + [0, 0, 80, 52, -28, -34], + [81, 0, 80, 52, -28, -34], + [162, 0, 80, 52, -28, -34], + [243, 0, 80, 52, -28, -34], + [324, 0, 80, 52, -28, -34], + [405, 0, 80, 52, -28, -34], + [486, 0, 80, 52, -28, -34], + [567, 0, 80, 52, -28, -34], + [648, 0, 80, 52, -28, -34], + [729, 0, 80, 52, -28, -34], + [810, 0, 80, 52, -28, -34], + [891, 0, 80, 52, -28, -34], + [972, 0, 80, 52, -28, -34], + [1053, 0, 80, 52, -28, -34] + ], + [ + [1134, 0, 86, 50, -29, -21], + [1221, 0, 86, 50, -29, -21], + [1308, 0, 86, 50, -29, -21], + [1395, 0, 86, 50, -29, -21], + [1482, 0, 86, 50, -29, -21], + [1569, 0, 86, 50, -29, -21], + [1656, 0, 86, 50, -29, -21], + [1743, 0, 86, 50, -29, -21], + [1830, 0, 86, 50, -29, -21], + [1917, 0, 86, 50, -29, -21], + [0, 53, 86, 50, -29, -21], + [87, 53, 86, 50, -29, -21], + [174, 53, 86, 50, -29, -21], + [261, 53, 86, 50, -29, -21] + ], + [ + [348, 53, 77, 49, -50, -21], + [426, 53, 77, 49, -50, -21], + [504, 53, 77, 49, -50, -21], + [582, 53, 77, 49, -50, -21], + [660, 53, 77, 49, -50, -21], + [738, 53, 77, 49, -50, -21], + [816, 53, 77, 49, -50, -21], + [894, 53, 77, 49, -50, -21], + [972, 53, 77, 49, -50, -21], + [1050, 53, 77, 49, -50, -21], + [1128, 53, 77, 49, -50, -21], + [1206, 53, 77, 49, -50, -21], + [1284, 53, 77, 49, -50, -21], + [1362, 53, 77, 49, -50, -21] + ], + [ + [1440, 53, 87, 51, -58, -34], + [1528, 53, 87, 51, -58, -34], + [1616, 53, 87, 51, -58, -34], + [1704, 53, 87, 51, -58, -34], + [1792, 53, 87, 51, -58, -34], + [1880, 53, 87, 51, -58, -34], + [0, 105, 87, 51, -58, -34], + [88, 105, 87, 51, -58, -34], + [176, 105, 87, 51, -58, -34], + [264, 105, 87, 51, -58, -34], + [352, 105, 87, 51, -58, -34], + [440, 105, 87, 51, -58, -34], + [528, 105, 87, 51, -58, -34], + [616, 105, 87, 51, -58, -34] + ], + [ + [704, 105, 88, 48, -41, -35], + [793, 105, 88, 48, -41, -35], + [882, 105, 88, 48, -41, -35], + [971, 105, 88, 48, -41, -35], + [1060, 105, 88, 48, -41, -35], + [1149, 105, 88, 48, -41, -35], + [1238, 105, 88, 48, -41, -35], + [1327, 105, 88, 48, -41, -35], + [1416, 105, 88, 48, -41, -35], + [1505, 105, 88, 48, -41, -35], + [1594, 105, 88, 48, -41, -35], + [1683, 105, 88, 48, -41, -35], + [1772, 105, 88, 48, -41, -35], + [1861, 105, 88, 48, -41, -35] + ], + [ + [1950, 105, 66, 53, -15, -28], + [0, 159, 66, 53, -15, -28], + [67, 159, 66, 53, -15, -28], + [134, 159, 66, 53, -15, -28], + [201, 159, 66, 53, -15, -28], + [268, 159, 66, 53, -15, -28], + [335, 159, 66, 53, -15, -28], + [402, 159, 66, 53, -15, -28], + [469, 159, 66, 53, -15, -28], + [536, 159, 66, 53, -15, -28], + [603, 159, 66, 53, -15, -28], + [670, 159, 66, 53, -15, -28], + [737, 159, 66, 53, -15, -28], + [804, 159, 66, 53, -15, -28] + ], + [ + [871, 159, 86, 49, -47, -16], + [958, 159, 86, 49, -47, -16], + [1045, 159, 86, 49, -47, -16], + [1132, 159, 86, 49, -47, -16], + [1219, 159, 86, 49, -47, -16], + [1306, 159, 86, 49, -47, -16], + [1393, 159, 86, 49, -47, -16], + [1480, 159, 86, 49, -47, -16], + [1567, 159, 86, 49, -47, -16], + [1654, 159, 86, 49, -47, -16], + [1741, 159, 86, 49, -47, -16], + [1828, 159, 86, 49, -47, -16], + [1915, 159, 86, 49, -47, -16], + [0, 213, 86, 49, -47, -16] + ], + [ + [87, 213, 69, 58, -53, -31], + [157, 213, 69, 58, -53, -31], + [227, 213, 69, 58, -53, -31], + [297, 213, 69, 58, -53, -31], + [367, 213, 69, 58, -53, -31], + [437, 213, 69, 58, -53, -31], + [507, 213, 69, 58, -53, -31], + [577, 213, 69, 58, -53, -31], + [647, 213, 69, 58, -53, -31], + [717, 213, 69, 58, -53, -31], + [787, 213, 69, 58, -53, -31], + [857, 213, 69, 58, -53, -31], + [927, 213, 69, 58, -53, -31], + [997, 213, 69, 58, -53, -31] + ], + [ + [1067, 213, 89, 48, -34, -34], + [1157, 213, 89, 48, -34, -34], + [1247, 213, 89, 48, -34, -34], + [1337, 213, 89, 48, -34, -34], + [1427, 213, 89, 48, -34, -34], + [1517, 213, 89, 48, -34, -34], + [1607, 213, 89, 48, -34, -34], + [1697, 213, 89, 48, -34, -34], + [1787, 213, 89, 48, -34, -34], + [1877, 213, 89, 48, -34, -34], + [0, 272, 89, 48, -34, -34], + [90, 272, 89, 48, -34, -34], + [180, 272, 89, 48, -34, -34], + [270, 272, 89, 48, -34, -34] + ], + [ + [360, 272, 78, 54, -19, -33], + [439, 272, 78, 54, -19, -33], + [518, 272, 78, 54, -19, -33], + [597, 272, 78, 54, -19, -33], + [676, 272, 78, 54, -19, -33], + [755, 272, 78, 54, -19, -33], + [834, 272, 78, 54, -19, -33], + [913, 272, 78, 54, -19, -33], + [992, 272, 78, 54, -19, -33], + [1071, 272, 78, 54, -19, -33], + [1150, 272, 78, 54, -19, -33], + [1229, 272, 78, 54, -19, -33], + [1308, 272, 78, 54, -19, -33], + [1387, 272, 78, 54, -19, -33] + ], + [ + [1466, 272, 76, 50, -19, -24], + [1543, 272, 76, 50, -19, -24], + [1620, 272, 76, 50, -19, -24], + [1697, 272, 76, 50, -19, -24], + [1774, 272, 76, 50, -19, -24], + [1851, 272, 76, 50, -19, -24], + [1928, 272, 76, 50, -19, -24], + [0, 327, 76, 50, -19, -24], + [77, 327, 76, 50, -19, -24], + [154, 327, 76, 50, -19, -24], + [231, 327, 76, 50, -19, -24], + [308, 327, 76, 50, -19, -24], + [385, 327, 76, 50, -19, -24], + [462, 327, 76, 50, -19, -24] + ], + [ + [539, 327, 85, 48, -39, -18], + [625, 327, 85, 48, -39, -18], + [711, 327, 85, 48, -39, -18], + [797, 327, 85, 48, -39, -18], + [883, 327, 85, 48, -39, -18], + [969, 327, 85, 48, -39, -18], + [1055, 327, 85, 48, -39, -18], + [1141, 327, 85, 48, -39, -18], + [1227, 327, 85, 48, -39, -18], + [1313, 327, 85, 48, -39, -18], + [1399, 327, 85, 48, -39, -18], + [1485, 327, 85, 48, -39, -18], + [1571, 327, 85, 48, -39, -18], + [1657, 327, 85, 48, -39, -18] + ], + [ + [1743, 327, 88, 47, -53, -17], + [1832, 327, 88, 47, -53, -17], + [1921, 327, 88, 47, -53, -17], + [0, 378, 88, 47, -53, -17], + [89, 378, 88, 47, -53, -17], + [178, 378, 88, 47, -53, -17], + [267, 378, 88, 47, -53, -17], + [356, 378, 88, 47, -53, -17], + [445, 378, 88, 47, -53, -17], + [534, 378, 88, 47, -53, -17], + [623, 378, 88, 47, -53, -17], + [712, 378, 88, 47, -53, -17], + [801, 378, 88, 47, -53, -17], + [890, 378, 88, 47, -53, -17] + ], + [ + [979, 378, 74, 59, -55, -26], + [1054, 378, 74, 59, -55, -26], + [1129, 378, 74, 59, -55, -26], + [1204, 378, 74, 59, -55, -26], + [1279, 378, 74, 59, -55, -26], + [1354, 378, 74, 59, -55, -26], + [1429, 378, 74, 59, -55, -26], + [1504, 378, 74, 59, -55, -26], + [1579, 378, 74, 59, -55, -26], + [1654, 378, 74, 59, -55, -26], + [1729, 378, 74, 59, -55, -26], + [1804, 378, 74, 59, -55, -26], + [1879, 378, 74, 59, -55, -26], + [1954, 378, 74, 59, -55, -26] + ], + [ + [0, 438, 78, 56, -59, -34], + [79, 438, 78, 56, -59, -34], + [158, 438, 78, 56, -59, -34], + [237, 438, 78, 56, -59, -34], + [316, 438, 78, 56, -59, -34], + [395, 438, 78, 56, -59, -34], + [474, 438, 78, 56, -59, -34], + [553, 438, 78, 56, -59, -34], + [632, 438, 78, 56, -59, -34], + [711, 438, 78, 56, -59, -34], + [790, 438, 78, 56, -59, -34], + [869, 438, 78, 56, -59, -34], + [948, 438, 78, 56, -59, -34], + [1027, 438, 78, 56, -59, -34] + ], + [ + [1106, 438, 84, 51, -46, -36], + [1191, 438, 84, 51, -46, -36], + [1276, 438, 84, 51, -46, -36], + [1361, 438, 84, 51, -46, -36], + [1446, 438, 84, 51, -46, -36], + [1531, 438, 84, 51, -46, -36], + [1616, 438, 84, 51, -46, -36], + [1701, 438, 84, 51, -46, -36], + [1786, 438, 84, 51, -46, -36], + [1871, 438, 84, 51, -46, -36], + [1956, 438, 84, 51, -46, -36], + [0, 495, 84, 51, -46, -36], + [85, 495, 84, 51, -46, -36], + [170, 495, 84, 51, -46, -36] + ] + ], +} + export const BLIZZARD4_META: MissileMeta = { ...BLIZZARD3_META, name: 'blizzard4', @@ -5192,6 +6345,81 @@ export const FIREMEDIUM_META: MissileMeta = { name: 'firemedium', } +export const ELECTRICNOVA_META: MissileMeta = { + ...NOVA_META, + name: 'electricnova', +} + +export const CHAINLIGHTNING_META: MissileMeta = { + ...LIGHTNINGSTRIKE_META, + name: 'chainlightning', +} + +export const LIGHTNINGHIT_META: MissileMeta = { + ...LIGHTNINGSTRIKE_META, + name: 'lightninghit', +} + +export const THUNDERSTORM_META: MissileMeta = { + ...THUNDERSTORM1_META, + name: 'thunderstorm', +} + +export const LIGHTNINGBOLTBIG_META: MissileMeta = { + ...THUNDERSTORM1_META, + name: 'lightningboltbig', +} + +export const GLEAM_META: MissileMeta = { + ...SPARKLE_META, + name: 'gleam', +} + +export const FREEZEEXPLODEEJECTA_META: MissileMeta = { + ...FREEZINGARROWEXP2_META, + name: 'freezeexplodeejecta', +} + +export const GLACIALSPIKEEJECTA_META: MissileMeta = { + ...FREEZINGARROWEXP2_META, + name: 'glacialspikeejecta', +} + +export const BLAZE_META: MissileMeta = { + ...FIREWALL_META, + name: 'blaze', +} + +export const FIREWALLMAKER_META: MissileMeta = { + ...FIREWALL_META, + name: 'firewallmaker', +} + +export const GROUNDFIREBIG_META: MissileMeta = { + ...FIREWALL_META, + name: 'groundfirebig', +} + +export const FLAMETHROWER_META: MissileMeta = { + ...INFERNOFLAME1_META, + name: 'flamethrower', +} + +export const FLAMETHROWER2_META: MissileMeta = { + ...INFERNOFLAME2_META, + name: 'flamethrower2', +} + +export const COLDUNIQUE_META: MissileMeta = { + ...FROSTNOVA_META, + name: 'coldunique', +} + +export const MEPHFROSTNOVA_META: MissileMeta = { + ...FROSTNOVA_META, + name: 'mephfrostnova', +} + export const MISSILE_METAS: Readonly> = Object.freeze({ 'firebolt': FIREBOLT_META, 'fireball': FIREBALL_META, @@ -5228,10 +6456,96 @@ export const MISSILE_METAS: Readonly> = Object.freez 'meteorexplode': METEOREXPLODE_META, 'meteorfire': METEORFIRE_META, 'firesmall': FIRESMALL_META, + 'nova': NOVA_META, + 'lightningstrike': LIGHTNINGSTRIKE_META, + 'thunderstorm1': THUNDERSTORM1_META, + 'sparkle': SPARKLE_META, + 'freezingarrowexp2': FREEZINGARROWEXP2_META, + 'firewall': FIREWALL_META, + 'infernoflame1': INFERNOFLAME1_META, + 'infernoflame2': INFERNOFLAME2_META, + 'frostnova': FROSTNOVA_META, 'blizzard4': BLIZZARD4_META, 'blizzardexplode3': BLIZZARDEXPLODE3_META, 'hydra': HYDRA_META, 'hydrafire': HYDRAFIRE_META, 'meteortargetindicator': METEORTARGETINDICATOR_META, 'firemedium': FIREMEDIUM_META, + 'electricnova': ELECTRICNOVA_META, + 'chainlightning': CHAINLIGHTNING_META, + 'lightninghit': LIGHTNINGHIT_META, + 'thunderstorm': THUNDERSTORM_META, + 'lightningboltbig': LIGHTNINGBOLTBIG_META, + 'gleam': GLEAM_META, + 'freezeexplodeejecta': FREEZEEXPLODEEJECTA_META, + 'glacialspikeejecta': GLACIALSPIKEEJECTA_META, + 'blaze': BLAZE_META, + 'firewallmaker': FIREWALLMAKER_META, + 'groundfirebig': GROUNDFIREBIG_META, + 'flamethrower': FLAMETHROWER_META, + 'flamethrower2': FLAMETHROWER2_META, + 'coldunique': COLDUNIQUE_META, + 'mephfrostnova': MEPHFROSTNOVA_META, + + // Exact CelFile aliases for 18 Sorceress Skills Missiles & Ground Truth CelFiles + 'ElectricNova': ELECTRICNOVA_META, + 'LightningStrike': LIGHTNINGSTRIKE_META, + 'ChainLightning': CHAINLIGHTNING_META, + 'LightningHit': LIGHTNINGHIT_META, + 'Thunderstorm': THUNDERSTORM_META, + 'LightningboltBig': LIGHTNINGBOLTBIG_META, + 'Gleam': GLEAM_META, + 'FreezeExplodeEjecta': FREEZEEXPLODEEJECTA_META, + 'GlacialSpikeEjecta': GLACIALSPIKEEJECTA_META, + 'Blaze': BLAZE_META, + 'FirewallMaker': FIREWALLMAKER_META, + 'groundFireBig': GROUNDFIREBIG_META, + 'Flamethrower': FLAMETHROWER_META, + 'Flamethrower2': FLAMETHROWER2_META, + 'ColdUnique': COLDUNIQUE_META, + 'MephFrostNova': MEPHFROSTNOVA_META, + 'FrostNova': FROSTNOVA_META, + + // Base missiles CelFiles + 'Firebolt': FIREBOLT_META, + 'Fireball': FIREBALL_META, + 'FireArrowExplode2': FIREEXPLODE_META, + 'firearrowexplode2': FIREEXPLODE_META, + 'Icebolt': ICEBOLT_META, + 'IceBlast': ICEBLAST_META, + 'GlacialSpike': GLACIALSPIKE_META, + 'IceArrowExplode': ICEEXPLODE_META, + 'icearrowexplode': ICEEXPLODE_META, + 'FreezeExplodeCenter': FREEZEEXPLODE_META, + 'freezeexplodecenter': FREEZEEXPLODE_META, + 'IceOrb': FROZENORB_META, + 'iceorb': FROZENORB_META, + 'IceOrbExplode': FROZENORBEXPLODE_META, + 'iceorbexplode': FROZENORBEXPLODE_META, + 'Blizzard': BLIZZARD3_META, + 'blizzard': BLIZZARD3_META, + 'ChargedBolt': CHARGEDBOLT_META, + 'teethMissile': TEETH_META, + 'teethmissile': TEETH_META, + 'BoneSpear': BONESPEAR_META, + 'BoneSpirit': BONESPIRIT_META, + 'BoneSpiritExplode': BONESPIRITEXPLODE_META, + 'poisonNova': POISONNOVA_META, + 'HolyBoltMissile': HOLYBOLT_META, + 'holyboltmissile': HOLYBOLT_META, + 'SafeArrow': MAGICARROW_META, + 'safearrow': MAGICARROW_META, + 'FireArrow': FIREARROW_META, + 'IceArrow': ICEARROW_META, + 'Arrow': ARROW_META, + 'LightningJavelin': LIGHTNINGJAVELIN_META, + 'Meteor': METEOR_META, + 'MeteorTail': METEORTAIL_META, + 'MeteorTargetIndicator': METEORTARGETINDICATOR_META, + 'ExpArrowExplode': METEOREXPLODE_META, + 'exparrowexplode': METEOREXPLODE_META, + 'groundFireMedium': FIREMEDIUM_META, + 'groundfiremedium': FIREMEDIUM_META, + 'groundFireSmall': FIRESMALL_META, + 'groundfiresmall': FIRESMALL_META, }) diff --git a/src/render/overlays-meta.ts b/src/render/overlays-meta.ts index d2d1c10..cbb9463 100644 --- a/src/render/overlays-meta.ts +++ b/src/render/overlays-meta.ts @@ -7171,6 +7171,1339 @@ export const SALVATION_BACK_AURA_META: OverlayMeta = { ] } +export const LIGHTNING_OVERLAY_META: OverlayMeta = { + "name": "lightning", + "celFile": "ShockHitSm", + "width": 512, + "height": 215, + "directions": 1, + "frames": 20, + "framesPerDirection": 20, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 11, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -33, + "top": -75, + "width": 65, + "height": 71 + }, + "groups": [ + [ + [ + 0, + 0, + 65, + 71, + -33, + -75 + ], + [ + 66, + 0, + 65, + 71, + -33, + -75 + ], + [ + 132, + 0, + 65, + 71, + -33, + -75 + ], + [ + 198, + 0, + 65, + 71, + -33, + -75 + ], + [ + 264, + 0, + 65, + 71, + -33, + -75 + ], + [ + 330, + 0, + 65, + 71, + -33, + -75 + ], + [ + 396, + 0, + 65, + 71, + -33, + -75 + ], + [ + 0, + 72, + 65, + 71, + -33, + -75 + ], + [ + 66, + 72, + 65, + 71, + -33, + -75 + ], + [ + 132, + 72, + 65, + 71, + -33, + -75 + ], + [ + 198, + 72, + 65, + 71, + -33, + -75 + ], + [ + 264, + 72, + 65, + 71, + -33, + -75 + ], + [ + 330, + 72, + 65, + 71, + -33, + -75 + ], + [ + 396, + 72, + 65, + 71, + -33, + -75 + ], + [ + 0, + 144, + 65, + 71, + -33, + -75 + ], + [ + 66, + 144, + 65, + 71, + -33, + -75 + ], + [ + 132, + 144, + 65, + 71, + -33, + -75 + ], + [ + 198, + 144, + 65, + 71, + -33, + -75 + ], + [ + 264, + 144, + 65, + 71, + -33, + -75 + ], + [ + 330, + 144, + 65, + 71, + -33, + -75 + ] + ] + ] +} + +export const FROZEN_ARMOR_OVERLAY_META: OverlayMeta = { + "name": "frozenarmor", + "celFile": "FrozenArmor", + "width": 512, + "height": 491, + "directions": 1, + "frames": 24, + "framesPerDirection": 24, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 13, + "lightColor": [ + 200, + 200, + 255 + ], + "box": { + "left": -36, + "top": -107, + "width": 72, + "height": 122 + }, + "groups": [ + [ + [ + 0, + 0, + 72, + 122, + -36, + -107 + ], + [ + 73, + 0, + 72, + 122, + -36, + -107 + ], + [ + 146, + 0, + 72, + 122, + -36, + -107 + ], + [ + 219, + 0, + 72, + 122, + -36, + -107 + ], + [ + 292, + 0, + 72, + 122, + -36, + -107 + ], + [ + 365, + 0, + 72, + 122, + -36, + -107 + ], + [ + 438, + 0, + 72, + 122, + -36, + -107 + ], + [ + 0, + 123, + 72, + 122, + -36, + -107 + ], + [ + 73, + 123, + 72, + 122, + -36, + -107 + ], + [ + 146, + 123, + 72, + 122, + -36, + -107 + ], + [ + 219, + 123, + 72, + 122, + -36, + -107 + ], + [ + 292, + 123, + 72, + 122, + -36, + -107 + ], + [ + 365, + 123, + 72, + 122, + -36, + -107 + ], + [ + 438, + 123, + 72, + 122, + -36, + -107 + ], + [ + 0, + 246, + 72, + 122, + -36, + -107 + ], + [ + 73, + 246, + 72, + 122, + -36, + -107 + ], + [ + 146, + 246, + 72, + 122, + -36, + -107 + ], + [ + 219, + 246, + 72, + 122, + -36, + -107 + ], + [ + 292, + 246, + 72, + 122, + -36, + -107 + ], + [ + 365, + 246, + 72, + 122, + -36, + -107 + ], + [ + 438, + 246, + 72, + 122, + -36, + -107 + ], + [ + 0, + 369, + 72, + 122, + -36, + -107 + ], + [ + 73, + 369, + 72, + 122, + -36, + -107 + ], + [ + 146, + 369, + 72, + 122, + -36, + -107 + ] + ] + ] +} + +export const FROZEN_ARMOR_HIT_OVERLAY_META: OverlayMeta = { + "name": "frozenarmor_hit", + "celFile": "AuraResistColdCast", + "width": 512, + "height": 575, + "directions": 1, + "frames": 11, + "framesPerDirection": 11, + "animRate": 24, + "trans": 3, + "preDraw": true, + "lightRadius": 6, + "lightColor": [ + 81, + 81, + 255 + ], + "box": { + "left": -56, + "top": -133, + "width": 104, + "height": 191 + }, + "groups": [ + [ + [ + 0, + 0, + 104, + 191, + -56, + -133 + ], + [ + 105, + 0, + 104, + 191, + -56, + -133 + ], + [ + 210, + 0, + 104, + 191, + -56, + -133 + ], + [ + 315, + 0, + 104, + 191, + -56, + -133 + ], + [ + 0, + 192, + 104, + 191, + -56, + -133 + ], + [ + 105, + 192, + 104, + 191, + -56, + -133 + ], + [ + 210, + 192, + 104, + 191, + -56, + -133 + ], + [ + 315, + 192, + 104, + 191, + -56, + -133 + ], + [ + 0, + 384, + 104, + 191, + -56, + -133 + ], + [ + 105, + 384, + 104, + 191, + -56, + -133 + ], + [ + 210, + 384, + 104, + 191, + -56, + -133 + ] + ] + ] +} + +export const ENERGY_SHIELD_OVERLAY_META: OverlayMeta = { + "name": "energyshield", + "celFile": "ManaShieldBall", + "width": 512, + "height": 21, + "directions": 1, + "frames": 8, + "framesPerDirection": 8, + "animRate": 8, + "trans": 5, + "preDraw": false, + "lightRadius": 0, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -11, + "top": -94, + "width": 21, + "height": 21 + }, + "groups": [ + [ + [ + 0, + 0, + 21, + 21, + -11, + -94 + ], + [ + 22, + 0, + 21, + 21, + -11, + -94 + ], + [ + 44, + 0, + 21, + 21, + -11, + -94 + ], + [ + 66, + 0, + 21, + 21, + -11, + -94 + ], + [ + 88, + 0, + 21, + 21, + -11, + -94 + ], + [ + 110, + 0, + 21, + 21, + -11, + -94 + ], + [ + 132, + 0, + 21, + 21, + -11, + -94 + ], + [ + 154, + 0, + 21, + 21, + -11, + -94 + ] + ] + ] +} + +export const ENERGY_SHIELD_HIT_OVERLAY_META: OverlayMeta = { + "name": "energyshieldhit0", + "celFile": "ManaShieldDir00", + "width": 512, + "height": 101, + "directions": 1, + "frames": 9, + "framesPerDirection": 9, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 3, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -27, + "top": -93, + "width": 51, + "height": 101 + }, + "groups": [ + [ + [ + 0, + 0, + 51, + 101, + -27, + -93 + ], + [ + 52, + 0, + 51, + 101, + -27, + -93 + ], + [ + 104, + 0, + 51, + 101, + -27, + -93 + ], + [ + 156, + 0, + 51, + 101, + -27, + -93 + ], + [ + 208, + 0, + 51, + 101, + -27, + -93 + ], + [ + 260, + 0, + 51, + 101, + -27, + -93 + ], + [ + 312, + 0, + 51, + 101, + -27, + -93 + ], + [ + 364, + 0, + 51, + 101, + -27, + -93 + ], + [ + 416, + 0, + 51, + 101, + -27, + -93 + ] + ] + ] +} + +export const THUNDERSTORM_CAST_OVERLAY_META: OverlayMeta = { + "name": "thunderstormcast", + "celFile": "ThunderstormCast", + "width": 512, + "height": 105, + "directions": 1, + "frames": 10, + "framesPerDirection": 10, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -39, + "top": -30, + "width": 79, + "height": 52 + }, + "groups": [ + [ + [ + 0, + 0, + 79, + 52, + -39, + -30 + ], + [ + 80, + 0, + 79, + 52, + -39, + -30 + ], + [ + 160, + 0, + 79, + 52, + -39, + -30 + ], + [ + 240, + 0, + 79, + 52, + -39, + -30 + ], + [ + 320, + 0, + 79, + 52, + -39, + -30 + ], + [ + 400, + 0, + 79, + 52, + -39, + -30 + ], + [ + 0, + 53, + 79, + 52, + -39, + -30 + ], + [ + 80, + 53, + 79, + 52, + -39, + -30 + ], + [ + 160, + 53, + 79, + 52, + -39, + -30 + ], + [ + 240, + 53, + 79, + 52, + -39, + -30 + ] + ] + ] +} + +export const THUNDERSTORM_BACK_OVERLAY_META: OverlayMeta = { + "name": "thunderstormback", + "celFile": "ThunderstormCast_operate", + "width": 512, + "height": 243, + "directions": 1, + "frames": 19, + "framesPerDirection": 19, + "animRate": 16, + "trans": 3, + "preDraw": true, + "lightRadius": 8, + "lightColor": [ + 255, + 255, + 255 + ], + "box": { + "left": -41, + "top": -21, + "width": 81, + "height": 60 + }, + "groups": [ + [ + [ + 0, + 0, + 81, + 60, + -41, + -21 + ], + [ + 82, + 0, + 81, + 60, + -41, + -21 + ], + [ + 164, + 0, + 81, + 60, + -41, + -21 + ], + [ + 246, + 0, + 81, + 60, + -41, + -21 + ], + [ + 328, + 0, + 81, + 60, + -41, + -21 + ], + [ + 410, + 0, + 81, + 60, + -41, + -21 + ], + [ + 0, + 61, + 81, + 60, + -41, + -21 + ], + [ + 82, + 61, + 81, + 60, + -41, + -21 + ], + [ + 164, + 61, + 81, + 60, + -41, + -21 + ], + [ + 246, + 61, + 81, + 60, + -41, + -21 + ], + [ + 328, + 61, + 81, + 60, + -41, + -21 + ], + [ + 410, + 61, + 81, + 60, + -41, + -21 + ], + [ + 0, + 122, + 81, + 60, + -41, + -21 + ], + [ + 82, + 122, + 81, + 60, + -41, + -21 + ], + [ + 164, + 122, + 81, + 60, + -41, + -21 + ], + [ + 246, + 122, + 81, + 60, + -41, + -21 + ], + [ + 328, + 122, + 81, + 60, + -41, + -21 + ], + [ + 410, + 122, + 81, + 60, + -41, + -21 + ], + [ + 0, + 183, + 81, + 60, + -41, + -21 + ] + ] + ] +} + +export const ENCHANT_OVERLAY_META: OverlayMeta = { + "name": "enchant", + "celFile": "FireEnchant", + "width": 1024, + "height": 407, + "directions": 1, + "frames": 17, + "framesPerDirection": 17, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 9, + "lightColor": [ + 255, + 178, + 64 + ], + "box": { + "left": -57, + "top": -106, + "width": 116, + "height": 135 + }, + "groups": [ + [ + [ + 0, + 0, + 116, + 135, + -57, + -106 + ], + [ + 117, + 0, + 116, + 135, + -57, + -106 + ], + [ + 234, + 0, + 116, + 135, + -57, + -106 + ], + [ + 351, + 0, + 116, + 135, + -57, + -106 + ], + [ + 468, + 0, + 116, + 135, + -57, + -106 + ], + [ + 585, + 0, + 116, + 135, + -57, + -106 + ], + [ + 702, + 0, + 116, + 135, + -57, + -106 + ], + [ + 819, + 0, + 116, + 135, + -57, + -106 + ], + [ + 0, + 136, + 116, + 135, + -57, + -106 + ], + [ + 117, + 136, + 116, + 135, + -57, + -106 + ], + [ + 234, + 136, + 116, + 135, + -57, + -106 + ], + [ + 351, + 136, + 116, + 135, + -57, + -106 + ], + [ + 468, + 136, + 116, + 135, + -57, + -106 + ], + [ + 585, + 136, + 116, + 135, + -57, + -106 + ], + [ + 702, + 136, + 116, + 135, + -57, + -106 + ], + [ + 819, + 136, + 116, + 135, + -57, + -106 + ], + [ + 0, + 272, + 116, + 135, + -57, + -106 + ] + ] + ] +} + +export const ICE_EXPLODE_OVERLAY_META: OverlayMeta = { + "name": "ice_explode", + "celFile": "IceExplode", + "width": 512, + "height": 332, + "directions": 1, + "frames": 16, + "framesPerDirection": 16, + "animRate": 16, + "trans": 3, + "preDraw": false, + "lightRadius": 14, + "lightColor": [ + 210, + 210, + 255 + ], + "box": { + "left": -43, + "top": -90, + "width": 83, + "height": 110 + }, + "groups": [ + [ + [ + 0, + 0, + 83, + 110, + -43, + -90 + ], + [ + 84, + 0, + 83, + 110, + -43, + -90 + ], + [ + 168, + 0, + 83, + 110, + -43, + -90 + ], + [ + 252, + 0, + 83, + 110, + -43, + -90 + ], + [ + 336, + 0, + 83, + 110, + -43, + -90 + ], + [ + 420, + 0, + 83, + 110, + -43, + -90 + ], + [ + 0, + 111, + 83, + 110, + -43, + -90 + ], + [ + 84, + 111, + 83, + 110, + -43, + -90 + ], + [ + 168, + 111, + 83, + 110, + -43, + -90 + ], + [ + 252, + 111, + 83, + 110, + -43, + -90 + ], + [ + 336, + 111, + 83, + 110, + -43, + -90 + ], + [ + 420, + 111, + 83, + 110, + -43, + -90 + ], + [ + 0, + 222, + 83, + 110, + -43, + -90 + ], + [ + 84, + 222, + 83, + 110, + -43, + -90 + ], + [ + 168, + 222, + 83, + 110, + -43, + -90 + ], + [ + 252, + 222, + 83, + 110, + -43, + -90 + ] + ] + ] +} + // Backward compatibility aliases for primary aura constants export const MIGHT_AURA_META: OverlayMeta = MIGHT_FRONT_AURA_META @@ -7187,6 +8520,14 @@ export const SANCTUARY_AURA_META: OverlayMeta = SANCTUARY_FRONT_AURA_META export const FANATICISM_AURA_META: OverlayMeta = FANATICISM_BACK_AURA_META export const SALVATION_AURA_META: OverlayMeta = SALVATION_FRONT_AURA_META +// Backward compatibility aliases for cold armor and energy shield overlays +export const SHIVER_ARMOR_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_OVERLAY_META +export const CHILLING_ARMOR_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_OVERLAY_META +export const SHIVER_ARMOR_HIT_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_HIT_OVERLAY_META +export const CHILLING_ARMOR_HIT_OVERLAY_META: OverlayMeta = FROZEN_ARMOR_HIT_OVERLAY_META +export const ENERGY_SHIELD_BALL_OVERLAY_META: OverlayMeta = ENERGY_SHIELD_OVERLAY_META +export const THUNDERSTORM_FRONT_OVERLAY_META: OverlayMeta = THUNDERSTORM_CAST_OVERLAY_META + export const ALL_OVERLAY_NAMES: readonly string[] = [ "fire_cast_1", @@ -7230,6 +8571,15 @@ export const ALL_OVERLAY_NAMES: readonly string[] = [ "redemption", "salvation_front", "salvation_back", + "lightning", + "frozenarmor", + "frozenarmor_hit", + "energyshield", + "energyshieldhit0", + "thunderstormcast", + "thunderstormback", + "enchant", + "ice_explode", ] export const OVERLAY_METAS: Readonly> = { @@ -7400,4 +8750,53 @@ export const OVERLAY_METAS: Readonly> = { "AuraResistAllBack": SALVATION_BACK_AURA_META, "auraresistallback": SALVATION_BACK_AURA_META, "aura_resistall_back": SALVATION_BACK_AURA_META, + "lightning": LIGHTNING_OVERLAY_META, + "ShockHitSm": LIGHTNING_OVERLAY_META, + "shockhitsm": LIGHTNING_OVERLAY_META, + "holyshockhit": LIGHTNING_OVERLAY_META, + "lightning_hit": LIGHTNING_OVERLAY_META, + "frozenarmor": FROZEN_ARMOR_OVERLAY_META, + "FrozenArmor": FROZEN_ARMOR_OVERLAY_META, + "shiverarmor": FROZEN_ARMOR_OVERLAY_META, + "chillarmor": FROZEN_ARMOR_OVERLAY_META, + "frozen_armor": FROZEN_ARMOR_OVERLAY_META, + "shiver_armor": FROZEN_ARMOR_OVERLAY_META, + "chill_armor": FROZEN_ARMOR_OVERLAY_META, + "chilling_armor": FROZEN_ARMOR_OVERLAY_META, + "frozenarmor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "AuraResistColdCast": FROZEN_ARMOR_HIT_OVERLAY_META, + "auraresistcoldcast": FROZEN_ARMOR_HIT_OVERLAY_META, + "cast_shivers": FROZEN_ARMOR_HIT_OVERLAY_META, + "shiverarmor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "chillarmor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "frozen_armor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "shiver_armor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "chill_armor_hit": FROZEN_ARMOR_HIT_OVERLAY_META, + "energyshield": ENERGY_SHIELD_OVERLAY_META, + "ManaShieldBall": ENERGY_SHIELD_OVERLAY_META, + "manashieldball": ENERGY_SHIELD_OVERLAY_META, + "manashield": ENERGY_SHIELD_OVERLAY_META, + "energy_shield": ENERGY_SHIELD_OVERLAY_META, + "energyshieldhit0": ENERGY_SHIELD_HIT_OVERLAY_META, + "ManaShieldDir00": ENERGY_SHIELD_HIT_OVERLAY_META, + "manashielddir00": ENERGY_SHIELD_HIT_OVERLAY_META, + "energyshield_hit": ENERGY_SHIELD_HIT_OVERLAY_META, + "energyshieldhit": ENERGY_SHIELD_HIT_OVERLAY_META, + "energy_shield_hit": ENERGY_SHIELD_HIT_OVERLAY_META, + "thunderstormcast": THUNDERSTORM_CAST_OVERLAY_META, + "ThunderstormCast": THUNDERSTORM_CAST_OVERLAY_META, + "thunderstorm_front": THUNDERSTORM_CAST_OVERLAY_META, + "thunderstorm_cast": THUNDERSTORM_CAST_OVERLAY_META, + "thunderstormback": THUNDERSTORM_BACK_OVERLAY_META, + "ThunderstormCast_operate": THUNDERSTORM_BACK_OVERLAY_META, + "thunderstormcast_operate": THUNDERSTORM_BACK_OVERLAY_META, + "thunderstorm_back": THUNDERSTORM_BACK_OVERLAY_META, + "thunderstormoperate": THUNDERSTORM_BACK_OVERLAY_META, + "enchant": ENCHANT_OVERLAY_META, + "FireEnchant": ENCHANT_OVERLAY_META, + "fireenchant": ENCHANT_OVERLAY_META, + "fire_enchant": ENCHANT_OVERLAY_META, + "ice_explode": ICE_EXPLODE_OVERLAY_META, + "IceExplode": ICE_EXPLODE_OVERLAY_META, + "iceexplode": ICE_EXPLODE_OVERLAY_META, } diff --git a/src/scene/act-scene.ts b/src/scene/act-scene.ts index 7b2632f..ce790b5 100644 --- a/src/scene/act-scene.ts +++ b/src/scene/act-scene.ts @@ -3699,7 +3699,7 @@ export async function loadMissileArtMap( ): Promise> { const map = new Map() if (typeof fetch === 'undefined') return map - const targets = Object.keys(MISSILE_METAS) + const targets = Array.from(new Set(Object.values(MISSILE_METAS).map(m => m.name))) const baseCandidates = [ '/missiles', packBase ? `${packBase}/missiles` : '', @@ -3743,6 +3743,15 @@ export async function loadMissileArtMap( } }), ) + + // Map all alias keys to the loaded art handle to prevent duplicate atlas uploads + for (const [alias, meta] of Object.entries(MISSILE_METAS)) { + const art = map.get(meta.name) + if (art && !map.has(alias)) { + map.set(alias, art) + } + } + if (map.has('icebolt')) { const iceboltArt = map.get('icebolt')! map.set('frozenorbbolt', iceboltArt) diff --git a/tests/assets/m0-assets-zero-mpq.test.ts b/tests/assets/m0-assets-zero-mpq.test.ts new file mode 100644 index 0000000..cb381ba --- /dev/null +++ b/tests/assets/m0-assets-zero-mpq.test.ts @@ -0,0 +1,552 @@ +import { describe, expect, it, vi } from 'vitest' +import fs from 'node:fs' +import path from 'node:path' +import zlib from 'node:zlib' +import { execSync } from 'node:child_process' +import { MISSILE_METAS } from '../../src/render/missiles-meta.ts' +import { OVERLAY_METAS } from '../../src/render/overlays-meta.ts' +import { SpriteRenderer } from '../../src/render/renderer.ts' + +// Helper function to decode 32-bit RGBA PNG +function decodeRgbaPng(buf: Buffer) { + const width = buf.readUInt32BE(16) + const height = buf.readUInt32BE(20) + const bitDepth = buf[24]! + const colorType = buf[25]! + + const idatParts: Buffer[] = [] + let offset = 8 + while (offset < buf.length) { + const len = buf.readUInt32BE(offset) + const type = buf.subarray(offset + 4, offset + 8).toString('ascii') + if (type === 'IDAT') { + idatParts.push(buf.subarray(offset + 8, offset + 8 + len)) + } + offset += 12 + len + } + const idat = Buffer.concat(idatParts) + const raw = zlib.inflateSync(idat) + + const bpp = 4 + const rowBytes = width * bpp + const pixels = new Uint8Array(width * height * 4) + let srcAt = 0 + let dstAt = 0 + + for (let y = 0; y < height; y++) { + const filter = raw[srcAt++] + const row = raw.subarray(srcAt, srcAt + rowBytes) + srcAt += rowBytes + + const prevRow = y > 0 ? pixels.subarray((y - 1) * rowBytes, y * rowBytes) : null + const curRow = pixels.subarray(dstAt, dstAt + rowBytes) + + for (let x = 0; x < rowBytes; x++) { + const left = x >= bpp ? curRow[x - bpp]! : 0 + const up = prevRow ? prevRow[x]! : 0 + const upLeft = prevRow && x >= bpp ? prevRow[x - bpp]! : 0 + + let val = row[x]! + if (filter === 0) { + // None + } else if (filter === 1) { + // Sub + val = (val + left) & 0xff + } else if (filter === 2) { + // Up + val = (val + up) & 0xff + } else if (filter === 3) { + // Average + val = (val + Math.floor((left + up) / 2)) & 0xff + } else if (filter === 4) { + // Paeth + const p = left + up - upLeft + const pa = Math.abs(p - left) + const pb = Math.abs(p - up) + const pc = Math.abs(p - upLeft) + let pr = upLeft + if (pa <= pb && pa <= pc) pr = left + else if (pb <= pc) pr = up + val = (val + pr) & 0xff + } + curRow[x] = val + } + dstAt += rowBytes + } + + return { width, height, bitDepth, colorType, pixels } +} + +describe('Milestone M0 — Asset Thresholding & Zero-MPQ Invariants', () => { + const publicMissilesDir = path.resolve(__dirname, '../../public/missiles') + const packMissilesDir = path.resolve(__dirname, '../../samples/d2-packs/missiles') + const publicOverlaysDir = path.resolve(__dirname, '../../public/overlays') + const packOverlaysDir = path.resolve(__dirname, '../../samples/d2-packs/overlays') + + const MISSILE_NAMES = [ + // 35 Base Missiles + 'firebolt', 'fireball', 'fireexplode', 'icebolt', 'iceblast', 'glacialspike', + 'iceexplode', 'freezeexplode', 'frozenorb', 'frozenorbexplode', + 'blizzard1', 'blizzard2', 'blizzard3', 'blizzardexplode1', 'blizzardexplode2', + 'chargedbolt', 'teeth', 'teethexplode', 'bonespear', 'bonespirit', 'bonespiritexplode', + 'poisonnova', 'holybolt', 'blessedhammer', 'magicarrow', 'firearrow', 'icearrow', + 'arrow', 'lightningjavelin', 'meteor', 'meteortail', 'meteorcenter', 'meteorexplode', + 'meteorfire', 'firesmall', + // 9 New M0 Missiles + 'nova', 'lightningstrike', 'thunderstorm1', 'sparkle', 'freezingarrowexp2', + 'firewall', 'infernoflame1', 'infernoflame2', 'frostnova', + // Aliases + 'blizzard4', 'blizzardexplode3', 'meteortargetindicator', 'firemedium', + 'electricnova', 'chainlightning', 'lightninghit', 'thunderstorm', 'lightningboltbig', + 'gleam', 'freezeexplodeejecta', 'glacialspikeejecta', 'blaze', 'firewallmaker', + 'groundfirebig', 'flamethrower', 'flamethrower2', 'coldunique', 'mephfrostnova', + ] + + const OVERLAY_NAMES = [ + // 8 Cast Overlays + 'fire_cast_1', 'fire_cast_2', 'ice_cast_1', 'ice_cast_2', 'ice_cast_3', + 'light_cast_1', 'light_cast_2', 'teleport', + // 9 New M0 Overlays + 'lightning', 'frozenarmor', 'frozenarmor_hit', 'energyshield', 'energyshieldhit0', + 'thunderstormcast', 'thunderstormback', 'enchant', 'ice_explode', + ] + + describe('Suite 1: Asset File Existence & Mirroring Invariants', () => { + it('1.1 Verifies all missile PNG and JSON files exist in public/ and samples/d2-packs/', () => { + for (const name of MISSILE_NAMES) { + for (const dir of [publicMissilesDir, packMissilesDir]) { + const pngPath = path.join(dir, `${name}.png`) + const jsonPath = path.join(dir, `${name}.json`) + expect(fs.existsSync(pngPath), `Missing missile PNG: ${pngPath}`).toBe(true) + expect(fs.existsSync(jsonPath), `Missing missile JSON: ${jsonPath}`).toBe(true) + + const stat = fs.statSync(pngPath) + expect(stat.size).toBeGreaterThan(1000) + + const buf = fs.readFileSync(pngPath) + expect(buf[0]).toBe(0x89) + expect(buf[1]).toBe(0x50) // 'P' + expect(buf[2]).toBe(0x4e) // 'N' + expect(buf[3]).toBe(0x47) // 'G' + } + } + }) + + it('1.2 Verifies all overlay PNG and JSON files exist in public/ and samples/d2-packs/', () => { + for (const name of OVERLAY_NAMES) { + for (const dir of [publicOverlaysDir, packOverlaysDir]) { + const pngPath = path.join(dir, `${name}.png`) + const jsonPath = path.join(dir, `${name}.json`) + expect(fs.existsSync(pngPath), `Missing overlay PNG: ${pngPath}`).toBe(true) + expect(fs.existsSync(jsonPath), `Missing overlay JSON: ${jsonPath}`).toBe(true) + + const stat = fs.statSync(pngPath) + expect(stat.size).toBeGreaterThan(1000) + + const buf = fs.readFileSync(pngPath) + expect(buf[0]).toBe(0x89) + expect(buf[1]).toBe(0x50) + expect(buf[2]).toBe(0x4e) + expect(buf[3]).toBe(0x47) + } + } + }) + }) + + describe('Suite 2: Metadata Registry & Schema Typing Invariants', () => { + it('2.1 Verifies MISSILE_METAS contains complete, valid entries for all missiles', () => { + for (const name of MISSILE_NAMES) { + const meta = MISSILE_METAS[name] + expect(meta, `MISSILE_METAS missing entry: ${name}`).toBeDefined() + expect(meta!.name).toBe(name) + expect(meta!.celFile.length).toBeGreaterThan(0) + expect(meta!.width).toBeGreaterThan(0) + expect(meta!.height).toBeGreaterThan(0) + expect(meta!.directions).toBeGreaterThan(0) + expect(meta!.framesPerDirection).toBeGreaterThan(0) + expect(meta!.animSpeed).toBeGreaterThan(0) + expect(meta!.groups.length).toBe(meta!.directions) + + for (const group of meta!.groups) { + expect(group.length).toBe(meta!.framesPerDirection) + for (const [x, y, w, h, ax, ay] of group) { + expect(x).toBeGreaterThanOrEqual(0) + expect(y).toBeGreaterThanOrEqual(0) + expect(x + w).toBeLessThanOrEqual(meta!.width) + expect(y + h).toBeLessThanOrEqual(meta!.height) + expect(w).toBeGreaterThan(0) + expect(h).toBeGreaterThan(0) + expect(typeof ax).toBe('number') + expect(typeof ay).toBe('number') + } + } + } + }) + + it('2.2 Verifies OVERLAY_METAS contains complete, valid entries for all overlays', () => { + for (const name of OVERLAY_NAMES) { + const meta = OVERLAY_METAS[name] + expect(meta, `OVERLAY_METAS missing entry: ${name}`).toBeDefined() + expect(meta!.name).toBe(name) + expect(meta!.celFile.length).toBeGreaterThan(0) + expect(meta!.width).toBeGreaterThan(0) + expect(meta!.height).toBeGreaterThan(0) + expect(meta!.directions).toBeGreaterThan(0) + expect(meta!.frames).toBeGreaterThan(0) + expect(meta!.framesPerDirection).toBeGreaterThan(0) + expect(meta!.animRate).toBeGreaterThan(0) + expect(meta!.groups.length).toBe(meta!.directions) + expect(meta!.groups[0]?.length).toBe(meta!.frames) + } + }) + + it('2.3 Verifies CelFile casing lookups for MISSILE_METAS (e.g. ElectricNova !== undefined)', () => { + const CEL_CASING_CHECKS = [ + // 9 New M0 Missiles & Aliases + 'ElectricNova', + 'LightningStrike', + 'LightningboltBig', + 'Gleam', + 'FreezeExplodeEjecta', + 'groundFireBig', + 'Flamethrower', + 'Flamethrower2', + 'FrostNova', + // Primary Class Missiles + 'ChargedBolt', + 'Firebolt', + 'Fireball', + 'FireArrowExplode2', + 'Icebolt', + 'IceBlast', + 'GlacialSpike', + 'IceOrb', + 'Blizzard', + 'BoneSpear', + 'BoneSpirit', + 'HolyBoltMissile', + 'SafeArrow', + ] + + for (const celFile of CEL_CASING_CHECKS) { + const meta = MISSILE_METAS[celFile] + expect(meta, `MISSILE_METAS['${celFile}'] must not be undefined`).toBeDefined() + expect(meta!.width, `${celFile} width > 0`).toBeGreaterThan(0) + expect(meta!.height, `${celFile} height > 0`).toBeGreaterThan(0) + expect(meta!.groups.length, `${celFile} groups > 0`).toBeGreaterThan(0) + + // Also assert lowercased variant resolves + const lowerMeta = MISSILE_METAS[celFile.toLowerCase()] + expect(lowerMeta, `MISSILE_METAS['${celFile.toLowerCase()}'] must not be undefined`).toBeDefined() + } + }) + + it('2.4 Verifies CelFile casing lookups for OVERLAY_METAS', () => { + const OVERLAY_CEL_CHECKS = [ + 'ShockHitSm', + 'FrozenArmor', + 'AuraResistColdCast', + 'ManaShieldBall', + 'ManaShieldDir00', + 'ThunderstormCast', + 'ThunderstormCast_operate', + 'FireEnchant', + 'IceExplode', + 'FireCast_for_Sorceress', + 'FireCast2', + 'IceCastNew01', + 'LightningCast', + 'Teleport', + ] + + for (const celFile of OVERLAY_CEL_CHECKS) { + const meta = OVERLAY_METAS[celFile] + expect(meta, `OVERLAY_METAS['${celFile}'] must not be undefined`).toBeDefined() + expect(meta!.width, `${celFile} width > 0`).toBeGreaterThan(0) + expect(meta!.height, `${celFile} height > 0`).toBeGreaterThan(0) + expect(meta!.frames, `${celFile} frames > 0`).toBeGreaterThan(0) + + const lowerMeta = OVERLAY_METAS[celFile.toLowerCase()] + expect(lowerMeta, `OVERLAY_METAS['${celFile.toLowerCase()}'] must not be undefined`).toBeDefined() + } + }) + }) + + describe('Suite 3: 32-bit RGBA Decoding, Boundary & Zero Black Border Thresholding Invariants', () => { + const MAGICAL_MISSILES = [ + 'nova', 'lightningstrike', 'thunderstorm1', 'sparkle', 'freezingarrowexp2', + 'firewall', 'infernoflame1', 'infernoflame2', 'frostnova', + 'firebolt', 'fireball', 'icebolt', 'chargedbolt', + ] + + it('3.1 Verifies magical missiles have 32-bit RGBA color type and zero opaque black pixels', () => { + for (const name of MAGICAL_MISSILES) { + const pngPath = path.join(publicMissilesDir, `${name}.png`) + const buf = fs.readFileSync(pngPath) + const decoded = decodeRgbaPng(buf) + + expect(decoded.colorType).toBe(6) // 32-bit RGBA + expect(decoded.bitDepth).toBe(8) + + let blackOpaqueCount = 0 + let visibleSpellCount = 0 + let edgeGradientCount = 0 + + for (let i = 0; i < decoded.pixels.length; i += 4) { + const r = decoded.pixels[i]! + const g = decoded.pixels[i + 1]! + const b = decoded.pixels[i + 2]! + const a = decoded.pixels[i + 3]! + const m = Math.max(r, g, b) + + if (m <= 4 && a > 0) { + blackOpaqueCount++ + } + if (m >= 30 && a > 0) { + visibleSpellCount++ + } + if (m > 4 && m < 60 && a > 0 && a < 255) { + edgeGradientCount++ + } + } + + expect(blackOpaqueCount, `${name}.png contains ${blackOpaqueCount} opaque black pixels!`).toBe(0) + expect(visibleSpellCount, `${name}.png must contain visible core spell pixels`).toBeGreaterThan(0) + expect(edgeGradientCount, `${name}.png must contain smoothed edge gradient pixels`).toBeGreaterThan(0) + } + }) + + it('3.2 Verifies physical arrow preserves opaque black outline pixels (trans: 0)', () => { + const arrowPath = path.join(publicMissilesDir, 'arrow.png') + const buf = fs.readFileSync(arrowPath) + const decoded = decodeRgbaPng(buf) + + expect(decoded.colorType).toBe(6) + expect(decoded.bitDepth).toBe(8) + + let blackOpaqueCount = 0 + for (let i = 0; i < decoded.pixels.length; i += 4) { + const r = decoded.pixels[i]! + const g = decoded.pixels[i + 1]! + const b = decoded.pixels[i + 2]! + const a = decoded.pixels[i + 3]! + const m = Math.max(r, g, b) + if (m <= 4 && a === 255) { + blackOpaqueCount++ + } + } + + // arrow has physical black outline pixels per trans: 0 + expect(blackOpaqueCount, 'arrow.png must retain physical black outline pixels').toBeGreaterThan(0) + }) + }) + + describe('Suite 4: Zero Runtime MPQ Invariant (Static Code Scan)', () => { + it('4.1 Verifies metadata modules contain zero MPQ, DLL or fs imports', () => { + const missilesMetaPath = path.resolve(__dirname, '../../src/render/missiles-meta.ts') + const overlaysMetaPath = path.resolve(__dirname, '../../src/render/overlays-meta.ts') + + for (const p of [missilesMetaPath, overlaysMetaPath]) { + const content = fs.readFileSync(p, 'utf-8') + expect(content).not.toContain('node:fs') + expect(content).not.toContain('src/mpq') + expect(content).not.toContain('.mpq') + expect(content).not.toContain('.dll') + } + }) + + it('4.2 Verifies core missile engine contains zero MPQ imports', () => { + const enginePath = path.resolve(__dirname, '../../src/game/engine/missile-engine.ts') + if (fs.existsSync(enginePath)) { + const content = fs.readFileSync(enginePath, 'utf-8') + expect(content).not.toContain('src/mpq') + expect(content).not.toContain('.mpq') + } + }) + + it('4.3 Verifies public/ assets are self-contained JSON and PNG with no external MPQ dependencies', () => { + for (const name of ['nova', 'lightning', 'firewall', 'energyshield']) { + const jsonPath = fs.existsSync(path.join(publicMissilesDir, `${name}.json`)) + ? path.join(publicMissilesDir, `${name}.json`) + : path.join(publicOverlaysDir, `${name}.json`) + const content = JSON.parse(fs.readFileSync(jsonPath, 'utf-8')) + expect(content.name).toBe(name) + expect(content.groups.length).toBeGreaterThan(0) + } + }) + + it('4.4 Verifies package.json scripts contain pack:missiles and pack:overlays', () => { + const pkgPath = path.resolve(__dirname, '../../package.json') + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) + expect(pkg.scripts, 'package.json missing scripts').toBeDefined() + expect(pkg.scripts['pack:missiles'], 'package.json missing pack:missiles').toBe('tsx scripts/pack-missiles.ts') + expect(pkg.scripts['pack:overlays'], 'package.json missing pack:overlays').toBe('tsx scripts/pack-overlays.ts') + + // Verify physical script files exist on disk + const missilesScript = path.resolve(__dirname, '../../scripts/pack-missiles.ts') + const overlaysScript = path.resolve(__dirname, '../../scripts/pack-overlays.ts') + expect(fs.existsSync(missilesScript), 'scripts/pack-missiles.ts missing').toBe(true) + expect(fs.existsSync(overlaysScript), 'scripts/pack-overlays.ts missing').toBe(true) + }) + + it('4.5 Verifies npm run pack:overlays executes cleanly with zero exit code', () => { + const projectRoot = path.resolve(__dirname, '../..') + const output = execSync('npm run pack:overlays', { + cwd: projectRoot, + encoding: 'utf-8', + timeout: 30000, + }) + expect(output).toContain('[Overlay Packer] Baked') + expect(output).toContain('overlays-meta.ts') + }) + }) + + describe('Suite 5: WebGL Additive Blending & Renderer State Isolation', () => { + function createMockRenderer() { + let currentBlendMode = 'normal' + let flushCount = 0 + let blendFuncCalls: [number, number][] = [] + + const gl: any = { + FLOAT: 5126, + UNSIGNED_SHORT: 5123, + TRIANGLES: 4, + ARRAY_BUFFER: 34962, + ELEMENT_ARRAY_BUFFER: 34963, + STATIC_DRAW: 35044, + DYNAMIC_DRAW: 35048, + RGBA: 6408, + UNSIGNED_BYTE: 5121, + TEXTURE_2D: 3553, + LINEAR: 9729, + TEXTURE_MIN_FILTER: 10241, + TEXTURE_MAG_FILTER: 10240, + TEXTURE_WRAP_S: 10242, + TEXTURE_WRAP_T: 10243, + CLAMP_TO_EDGE: 33071, + NEAREST: 9728, + UNPACK_ALIGNMENT: 3317, + BLEND: 3042, + SRC_ALPHA: 770, + ONE: 1, + ONE_MINUS_SRC_ALPHA: 771, + DEPTH_TEST: 2929, + COLOR_BUFFER_BIT: 16384, + TEXTURE0: 33984, + drawingBufferWidth: 800, + drawingBufferHeight: 600, + isContextLost: () => false, + createProgram: () => ({ id: 1, type: 'program' }), + deleteProgram: () => {}, + attachShader: () => {}, + detachShader: () => {}, + linkProgram: () => {}, + getProgramParameter: () => true, + getProgramInfoLog: () => '', + useProgram: () => {}, + createShader: (type: number) => ({ id: 1, type }), + shaderSource: () => {}, + compileShader: () => {}, + getShaderParameter: () => true, + getShaderInfoLog: () => '', + deleteShader: () => {}, + createVertexArray: () => ({ id: 1, type: 'vao' }), + deleteVertexArray: () => {}, + bindVertexArray: () => {}, + createBuffer: () => ({ id: 1, type: 'buffer' }), + deleteBuffer: () => {}, + bindBuffer: () => {}, + bufferData: () => {}, + bufferSubData: () => {}, + getAttribLocation: () => 0, + enableVertexAttribArray: () => {}, + vertexAttribPointer: () => {}, + createTexture: () => ({ id: 1, type: 'texture' }), + deleteTexture: () => {}, + bindTexture: () => {}, + texParameteri: () => {}, + pixelStorei: () => {}, + texImage2D: () => {}, + getParameter: (param: number) => (param === 3379 ? 4096 : param === 34930 ? 16 : 0), + getUniformLocation: (_p: any, name: string) => ({ name }), + uniform2f: () => {}, + uniform1f: () => {}, + uniform1i: () => {}, + uniform1iv: () => {}, + enable: () => {}, + disable: () => {}, + blendFunc: (s: number, d: number) => { + blendFuncCalls.push([s, d]) + }, + viewport: () => {}, + clearColor: () => {}, + clear: () => {}, + activeTexture: () => {}, + drawArrays: () => {}, + drawElements: () => {}, + } + const canvas: any = { + width: 800, + height: 600, + clientWidth: 800, + clientHeight: 600, + getContext: (type: string) => (type === 'webgl2' ? gl : null), + addEventListener: () => {}, + removeEventListener: () => {}, + } + const renderer = new SpriteRenderer(canvas as HTMLCanvasElement) + const origFlush = renderer.flush.bind(renderer) + renderer.flush = () => { + flushCount++ + origFlush() + } + return { renderer, gl, getBlendCalls: () => blendFuncCalls, getFlushCount: () => flushCount } + } + + it('5.1 Verifies setBlendMode switches blendFunc between additive and normal with batch flush', () => { + const { renderer, gl, getBlendCalls, getFlushCount } = createMockRenderer() + + // Default is 'normal' + expect(renderer.blendMode).toBe('normal') + + // Switch to 'additive' + renderer.setBlendMode('additive') + expect(renderer.blendMode).toBe('additive') + const callsAfterAdd = getBlendCalls() + expect(callsAfterAdd.length).toBeGreaterThan(0) + const lastAddCall = callsAfterAdd[callsAfterAdd.length - 1]! + expect(lastAddCall[0]).toBe(gl.SRC_ALPHA) + expect(lastAddCall[1]).toBe(gl.ONE) + expect(getFlushCount()).toBeGreaterThan(0) + + // Redundant setBlendMode('additive') must not flush again or re-invoke blendFunc + const flushesBeforeNoop = getFlushCount() + const callsBeforeNoop = callsAfterAdd.length + renderer.setBlendMode('additive') + expect(getFlushCount()).toBe(flushesBeforeNoop) + expect(getBlendCalls().length).toBe(callsBeforeNoop) + + // Switch back to 'normal' + renderer.setBlendMode('normal') + expect(renderer.blendMode).toBe('normal') + const callsAfterNorm = getBlendCalls() + const lastNormCall = callsAfterNorm[callsAfterNorm.length - 1]! + expect(lastNormCall[0]).toBe(gl.SRC_ALPHA) + expect(lastNormCall[1]).toBe(gl.ONE_MINUS_SRC_ALPHA) + expect(getFlushCount()).toBeGreaterThan(flushesBeforeNoop) + }) + + it('5.2 Verifies renderer disposal safely inhibits blendMode state mutations', () => { + const { renderer, getBlendCalls } = createMockRenderer() + renderer.setBlendMode('additive') + const callsCount = getBlendCalls().length + + renderer.dispose() + expect(renderer.isDisposed).toBe(true) + + // Calls after disposal must safely no-op + renderer.setBlendMode('normal') + expect(getBlendCalls().length).toBe(callsCount) + }) + }) +}) diff --git a/tests/overlay-assets-m0.test.ts b/tests/overlay-assets-m0.test.ts new file mode 100644 index 0000000..e8494bc --- /dev/null +++ b/tests/overlay-assets-m0.test.ts @@ -0,0 +1,153 @@ +import { describe, expect, it } from 'vitest' +import fs from 'node:fs' +import path from 'node:path' +import { execSync } from 'node:child_process' +import { MISSILE_METAS } from '../src/render/missiles-meta.ts' +import { + OVERLAY_METAS, + LIGHTNING_OVERLAY_META, + FROZEN_ARMOR_OVERLAY_META, + FROZEN_ARMOR_HIT_OVERLAY_META, + ENERGY_SHIELD_OVERLAY_META, + ENERGY_SHIELD_HIT_OVERLAY_META, + THUNDERSTORM_CAST_OVERLAY_META, + THUNDERSTORM_BACK_OVERLAY_META, + ENCHANT_OVERLAY_META, + ICE_EXPLODE_OVERLAY_META, +} from '../src/render/overlays-meta.ts' + +describe('Milestone M0 — 9 Sorceress Skill & Hit Overlays Parity', () => { + const publicDir = path.resolve(__dirname, '../public/overlays') + const packDir = path.resolve(__dirname, '../samples/d2-packs/overlays') + + const TARGETS = [ + { name: 'lightning', meta: LIGHTNING_OVERLAY_META, celFile: 'ShockHitSm', frames: 20, trans: 3, preDraw: false }, + { name: 'frozenarmor', meta: FROZEN_ARMOR_OVERLAY_META, celFile: 'FrozenArmor', frames: 24, trans: 3, preDraw: false }, + { name: 'frozenarmor_hit', meta: FROZEN_ARMOR_HIT_OVERLAY_META, celFile: 'AuraResistColdCast', frames: 11, trans: 3, preDraw: true }, + { name: 'energyshield', meta: ENERGY_SHIELD_OVERLAY_META, celFile: 'ManaShieldBall', frames: 8, trans: 5, preDraw: false }, + { name: 'energyshieldhit0', meta: ENERGY_SHIELD_HIT_OVERLAY_META, celFile: 'ManaShieldDir00', frames: 9, trans: 3, preDraw: false }, + { name: 'thunderstormcast', meta: THUNDERSTORM_CAST_OVERLAY_META, celFile: 'ThunderstormCast', frames: 10, trans: 3, preDraw: false }, + { name: 'thunderstormback', meta: THUNDERSTORM_BACK_OVERLAY_META, celFile: 'ThunderstormCast_operate', frames: 19, trans: 3, preDraw: true }, + { name: 'enchant', meta: ENCHANT_OVERLAY_META, celFile: 'FireEnchant', frames: 17, trans: 3, preDraw: false }, + { name: 'ice_explode', meta: ICE_EXPLODE_OVERLAY_META, celFile: 'IceExplode', frames: 16, trans: 3, preDraw: false }, + ] + + it('1. Verifies physical PNG and JSON files exist in public/overlays/ and samples/d2-packs/overlays/', () => { + for (const t of TARGETS) { + for (const dir of [publicDir, packDir]) { + const pngPath = path.join(dir, `${t.name}.png`) + const jsonPath = path.join(dir, `${t.name}.json`) + expect(fs.existsSync(pngPath), `Missing ${pngPath}`).toBe(true) + expect(fs.existsSync(jsonPath), `Missing ${jsonPath}`).toBe(true) + expect(fs.statSync(pngPath).size).toBeGreaterThan(1000) + + const raw = JSON.parse(fs.readFileSync(jsonPath, 'utf-8')) + expect(raw.name).toBe(t.name) + expect(raw.celFile).toBe(t.celFile) + expect(raw.frames).toBe(t.frames) + expect(raw.trans).toBe(t.trans) + expect(raw.preDraw).toBe(t.preDraw) + } + } + }) + + it('2. Verifies typed metadata constants and properties match 1.13c ground truth', () => { + for (const t of TARGETS) { + expect(t.meta.name).toBe(t.name) + expect(t.meta.celFile).toBe(t.celFile) + expect(t.meta.frames).toBe(t.frames) + expect(t.meta.framesPerDirection).toBe(t.frames) + expect(t.meta.directions).toBe(1) + expect(t.meta.trans).toBe(t.trans) + expect(t.meta.preDraw).toBe(t.preDraw) + expect(t.meta.groups[0]?.length).toBe(t.frames) + expect(t.meta.box.width).toBeGreaterThan(0) + expect(t.meta.box.height).toBeGreaterThan(0) + } + }) + + it('3. Verifies OVERLAY_METAS maps primary keys, celFiles, and aliases cleanly', () => { + expect(OVERLAY_METAS['lightning']).toBe(LIGHTNING_OVERLAY_META) + expect(OVERLAY_METAS['ShockHitSm']).toBe(LIGHTNING_OVERLAY_META) + expect(OVERLAY_METAS['holyshockhit']).toBe(LIGHTNING_OVERLAY_META) + + expect(OVERLAY_METAS['frozenarmor']).toBe(FROZEN_ARMOR_OVERLAY_META) + expect(OVERLAY_METAS['shiverarmor']).toBe(FROZEN_ARMOR_OVERLAY_META) + expect(OVERLAY_METAS['chillarmor']).toBe(FROZEN_ARMOR_OVERLAY_META) + + expect(OVERLAY_METAS['frozenarmor_hit']).toBe(FROZEN_ARMOR_HIT_OVERLAY_META) + expect(OVERLAY_METAS['cast_shivers']).toBe(FROZEN_ARMOR_HIT_OVERLAY_META) + expect(OVERLAY_METAS['shiverarmor_hit']).toBe(FROZEN_ARMOR_HIT_OVERLAY_META) + + expect(OVERLAY_METAS['energyshield']).toBe(ENERGY_SHIELD_OVERLAY_META) + expect(OVERLAY_METAS['energyshieldhit0']).toBe(ENERGY_SHIELD_HIT_OVERLAY_META) + + expect(OVERLAY_METAS['thunderstormcast']).toBe(THUNDERSTORM_CAST_OVERLAY_META) + expect(OVERLAY_METAS['thunderstormback']).toBe(THUNDERSTORM_BACK_OVERLAY_META) + + expect(OVERLAY_METAS['enchant']).toBe(ENCHANT_OVERLAY_META) + expect(OVERLAY_METAS['ice_explode']).toBe(ICE_EXPLODE_OVERLAY_META) + }) + + it('4. Verifies package.json contains "pack:overlays" script and execution succeeds', () => { + const pkgPath = path.resolve(__dirname, '../package.json') + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')) + expect(pkg.scripts, 'package.json missing scripts section').toBeDefined() + expect(pkg.scripts['pack:overlays'], 'package.json missing pack:overlays').toBe('tsx scripts/pack-overlays.ts') + expect(pkg.scripts['pack:missiles'], 'package.json missing pack:missiles').toBe('tsx scripts/pack-missiles.ts') + + // Execute npm run pack:overlays and verify zero exit code & console logging + const output = execSync('npm run pack:overlays', { + cwd: path.resolve(__dirname, '..'), + encoding: 'utf-8', + timeout: 30000, + }) + expect(output).toContain('[Overlay Packer] Baked') + expect(output).toContain('overlays-meta.ts') + }) + + it('5. Verifies CelFile casing lookups in OVERLAY_METAS', () => { + const CEL_FILE_CASING_TESTS = [ + { key: 'ShockHitSm', expectedMeta: LIGHTNING_OVERLAY_META }, + { key: 'FrozenArmor', expectedMeta: FROZEN_ARMOR_OVERLAY_META }, + { key: 'AuraResistColdCast', expectedMeta: FROZEN_ARMOR_HIT_OVERLAY_META }, + { key: 'ManaShieldBall', expectedMeta: ENERGY_SHIELD_OVERLAY_META }, + { key: 'ManaShieldDir00', expectedMeta: ENERGY_SHIELD_HIT_OVERLAY_META }, + { key: 'ThunderstormCast', expectedMeta: THUNDERSTORM_CAST_OVERLAY_META }, + { key: 'ThunderstormCast_operate', expectedMeta: THUNDERSTORM_BACK_OVERLAY_META }, + { key: 'FireEnchant', expectedMeta: ENCHANT_OVERLAY_META }, + { key: 'IceExplode', expectedMeta: ICE_EXPLODE_OVERLAY_META }, + ] + + for (const { key, expectedMeta } of CEL_FILE_CASING_TESTS) { + expect(OVERLAY_METAS[key], `OVERLAY_METAS['${key}'] should resolve directly`).toBe(expectedMeta) + expect(OVERLAY_METAS[key.toLowerCase()], `OVERLAY_METAS['${key.toLowerCase()}'] should resolve`).toBe(expectedMeta) + } + }) + + it('6. Verifies CelFile casing lookups in MISSILE_METAS', () => { + const MISSILE_CASING_KEYS = [ + 'ElectricNova', + 'LightningStrike', + 'LightningboltBig', + 'Gleam', + 'FreezeExplodeEjecta', + 'groundFireBig', + 'Flamethrower', + 'Flamethrower2', + 'FrostNova', + 'Firebolt', + 'Fireball', + 'ChargedBolt', + 'Icebolt', + 'IceBlast', + 'GlacialSpike', + 'Blizzard', + ] + + for (const key of MISSILE_CASING_KEYS) { + expect(MISSILE_METAS[key], `MISSILE_METAS['${key}'] should resolve directly`).toBeDefined() + expect(MISSILE_METAS[key.toLowerCase()], `MISSILE_METAS['${key.toLowerCase()}'] should resolve`).toBeDefined() + } + }) +})