rpgmaker-mz-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +425 -0
  3. package/dist/events/commandBuilders.d.ts +405 -0
  4. package/dist/events/commandBuilders.d.ts.map +1 -0
  5. package/dist/events/commandBuilders.js +554 -0
  6. package/dist/events/commandBuilders.js.map +1 -0
  7. package/dist/index.d.ts +3 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +105 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/registry.d.ts +81 -0
  12. package/dist/registry.d.ts.map +1 -0
  13. package/dist/registry.js +49 -0
  14. package/dist/registry.js.map +1 -0
  15. package/dist/tiles/autotile.d.ts +65 -0
  16. package/dist/tiles/autotile.d.ts.map +1 -0
  17. package/dist/tiles/autotile.js +201 -0
  18. package/dist/tiles/autotile.js.map +1 -0
  19. package/dist/tiles/catalog/dungeon.d.ts +16 -0
  20. package/dist/tiles/catalog/dungeon.d.ts.map +1 -0
  21. package/dist/tiles/catalog/dungeon.js +765 -0
  22. package/dist/tiles/catalog/dungeon.js.map +1 -0
  23. package/dist/tiles/catalog/index.d.ts +78 -0
  24. package/dist/tiles/catalog/index.d.ts.map +1 -0
  25. package/dist/tiles/catalog/index.js +115 -0
  26. package/dist/tiles/catalog/index.js.map +1 -0
  27. package/dist/tiles/catalog/inside.d.ts +16 -0
  28. package/dist/tiles/catalog/inside.d.ts.map +1 -0
  29. package/dist/tiles/catalog/inside.js +765 -0
  30. package/dist/tiles/catalog/inside.js.map +1 -0
  31. package/dist/tiles/catalog/outside.d.ts +16 -0
  32. package/dist/tiles/catalog/outside.d.ts.map +1 -0
  33. package/dist/tiles/catalog/outside.js +799 -0
  34. package/dist/tiles/catalog/outside.js.map +1 -0
  35. package/dist/tiles/catalog/overworld.d.ts +16 -0
  36. package/dist/tiles/catalog/overworld.d.ts.map +1 -0
  37. package/dist/tiles/catalog/overworld.js +585 -0
  38. package/dist/tiles/catalog/overworld.js.map +1 -0
  39. package/dist/tiles/catalog/sf.d.ts +16 -0
  40. package/dist/tiles/catalog/sf.d.ts.map +1 -0
  41. package/dist/tiles/catalog/sf.js +1313 -0
  42. package/dist/tiles/catalog/sf.js.map +1 -0
  43. package/dist/tiles/paint.d.ts +20 -0
  44. package/dist/tiles/paint.d.ts.map +1 -0
  45. package/dist/tiles/paint.js +65 -0
  46. package/dist/tiles/paint.js.map +1 -0
  47. package/dist/tiles/png.d.ts +11 -0
  48. package/dist/tiles/png.d.ts.map +1 -0
  49. package/dist/tiles/png.js +180 -0
  50. package/dist/tiles/png.js.map +1 -0
  51. package/dist/tiles/tileCodec.d.ts +95 -0
  52. package/dist/tiles/tileCodec.d.ts.map +1 -0
  53. package/dist/tiles/tileCodec.js +186 -0
  54. package/dist/tiles/tileCodec.js.map +1 -0
  55. package/dist/tiles/tileFlags.d.ts +98 -0
  56. package/dist/tiles/tileFlags.d.ts.map +1 -0
  57. package/dist/tiles/tileFlags.js +129 -0
  58. package/dist/tiles/tileFlags.js.map +1 -0
  59. package/dist/tiles/tilegeom.d.ts +29 -0
  60. package/dist/tiles/tilegeom.d.ts.map +1 -0
  61. package/dist/tiles/tilegeom.js +111 -0
  62. package/dist/tiles/tilegeom.js.map +1 -0
  63. package/dist/tiles/transparency.d.ts +22 -0
  64. package/dist/tiles/transparency.d.ts.map +1 -0
  65. package/dist/tiles/transparency.js +59 -0
  66. package/dist/tiles/transparency.js.map +1 -0
  67. package/dist/tools/actorTools.d.ts +48 -0
  68. package/dist/tools/actorTools.d.ts.map +1 -0
  69. package/dist/tools/actorTools.js +154 -0
  70. package/dist/tools/actorTools.js.map +1 -0
  71. package/dist/tools/allTools.d.ts +8 -0
  72. package/dist/tools/allTools.d.ts.map +1 -0
  73. package/dist/tools/allTools.js +56 -0
  74. package/dist/tools/allTools.js.map +1 -0
  75. package/dist/tools/assetTools.d.ts +113 -0
  76. package/dist/tools/assetTools.d.ts.map +1 -0
  77. package/dist/tools/assetTools.js +97 -0
  78. package/dist/tools/assetTools.js.map +1 -0
  79. package/dist/tools/batchTools.d.ts +3 -0
  80. package/dist/tools/batchTools.d.ts.map +1 -0
  81. package/dist/tools/batchTools.js +138 -0
  82. package/dist/tools/batchTools.js.map +1 -0
  83. package/dist/tools/battleTools.d.ts +72 -0
  84. package/dist/tools/battleTools.d.ts.map +1 -0
  85. package/dist/tools/battleTools.js +322 -0
  86. package/dist/tools/battleTools.js.map +1 -0
  87. package/dist/tools/catalogTools.d.ts +3 -0
  88. package/dist/tools/catalogTools.d.ts.map +1 -0
  89. package/dist/tools/catalogTools.js +134 -0
  90. package/dist/tools/catalogTools.js.map +1 -0
  91. package/dist/tools/classTools.d.ts +85 -0
  92. package/dist/tools/classTools.d.ts.map +1 -0
  93. package/dist/tools/classTools.js +279 -0
  94. package/dist/tools/classTools.js.map +1 -0
  95. package/dist/tools/commonEventTools.d.ts +32 -0
  96. package/dist/tools/commonEventTools.d.ts.map +1 -0
  97. package/dist/tools/commonEventTools.js +150 -0
  98. package/dist/tools/commonEventTools.js.map +1 -0
  99. package/dist/tools/eventCommandTools.d.ts +37 -0
  100. package/dist/tools/eventCommandTools.d.ts.map +1 -0
  101. package/dist/tools/eventCommandTools.js +893 -0
  102. package/dist/tools/eventCommandTools.js.map +1 -0
  103. package/dist/tools/eventPageTools.d.ts +112 -0
  104. package/dist/tools/eventPageTools.d.ts.map +1 -0
  105. package/dist/tools/eventPageTools.js +597 -0
  106. package/dist/tools/eventPageTools.js.map +1 -0
  107. package/dist/tools/itemTools.d.ts +82 -0
  108. package/dist/tools/itemTools.d.ts.map +1 -0
  109. package/dist/tools/itemTools.js +380 -0
  110. package/dist/tools/itemTools.js.map +1 -0
  111. package/dist/tools/listTools.d.ts +58 -0
  112. package/dist/tools/listTools.d.ts.map +1 -0
  113. package/dist/tools/listTools.js +99 -0
  114. package/dist/tools/listTools.js.map +1 -0
  115. package/dist/tools/mapTools.d.ts +270 -0
  116. package/dist/tools/mapTools.d.ts.map +1 -0
  117. package/dist/tools/mapTools.js +1066 -0
  118. package/dist/tools/mapTools.js.map +1 -0
  119. package/dist/tools/moveTools.d.ts +43 -0
  120. package/dist/tools/moveTools.d.ts.map +1 -0
  121. package/dist/tools/moveTools.js +240 -0
  122. package/dist/tools/moveTools.js.map +1 -0
  123. package/dist/tools/objectTools.d.ts +12 -0
  124. package/dist/tools/objectTools.d.ts.map +1 -0
  125. package/dist/tools/objectTools.js +221 -0
  126. package/dist/tools/objectTools.js.map +1 -0
  127. package/dist/tools/paintTools.d.ts +3 -0
  128. package/dist/tools/paintTools.d.ts.map +1 -0
  129. package/dist/tools/paintTools.js +134 -0
  130. package/dist/tools/paintTools.js.map +1 -0
  131. package/dist/tools/pluginScanTools.d.ts +22 -0
  132. package/dist/tools/pluginScanTools.d.ts.map +1 -0
  133. package/dist/tools/pluginScanTools.js +119 -0
  134. package/dist/tools/pluginScanTools.js.map +1 -0
  135. package/dist/tools/pluginTools.d.ts +11 -0
  136. package/dist/tools/pluginTools.d.ts.map +1 -0
  137. package/dist/tools/pluginTools.js +63 -0
  138. package/dist/tools/pluginTools.js.map +1 -0
  139. package/dist/tools/projectTools.d.ts +11 -0
  140. package/dist/tools/projectTools.d.ts.map +1 -0
  141. package/dist/tools/projectTools.js +74 -0
  142. package/dist/tools/projectTools.js.map +1 -0
  143. package/dist/tools/skillTools.d.ts +83 -0
  144. package/dist/tools/skillTools.d.ts.map +1 -0
  145. package/dist/tools/skillTools.js +369 -0
  146. package/dist/tools/skillTools.js.map +1 -0
  147. package/dist/tools/stateTools.d.ts +28 -0
  148. package/dist/tools/stateTools.d.ts.map +1 -0
  149. package/dist/tools/stateTools.js +161 -0
  150. package/dist/tools/stateTools.js.map +1 -0
  151. package/dist/tools/systemTools.d.ts +86 -0
  152. package/dist/tools/systemTools.d.ts.map +1 -0
  153. package/dist/tools/systemTools.js +342 -0
  154. package/dist/tools/systemTools.js.map +1 -0
  155. package/dist/tools/tileTools.d.ts +9 -0
  156. package/dist/tools/tileTools.d.ts.map +1 -0
  157. package/dist/tools/tileTools.js +34 -0
  158. package/dist/tools/tileTools.js.map +1 -0
  159. package/dist/tools/tileTransparency.d.ts +40 -0
  160. package/dist/tools/tileTransparency.d.ts.map +1 -0
  161. package/dist/tools/tileTransparency.js +156 -0
  162. package/dist/tools/tileTransparency.js.map +1 -0
  163. package/dist/tools/tilesetTools.d.ts +23 -0
  164. package/dist/tools/tilesetTools.d.ts.map +1 -0
  165. package/dist/tools/tilesetTools.js +209 -0
  166. package/dist/tools/tilesetTools.js.map +1 -0
  167. package/dist/tools/validationTools.d.ts +50 -0
  168. package/dist/tools/validationTools.d.ts.map +1 -0
  169. package/dist/tools/validationTools.js +229 -0
  170. package/dist/tools/validationTools.js.map +1 -0
  171. package/dist/utils/commit.d.ts +62 -0
  172. package/dist/utils/commit.d.ts.map +1 -0
  173. package/dist/utils/commit.js +119 -0
  174. package/dist/utils/commit.js.map +1 -0
  175. package/dist/utils/fileHandler.d.ts +49 -0
  176. package/dist/utils/fileHandler.d.ts.map +1 -0
  177. package/dist/utils/fileHandler.js +137 -0
  178. package/dist/utils/fileHandler.js.map +1 -0
  179. package/dist/utils/records.d.ts +8 -0
  180. package/dist/utils/records.d.ts.map +1 -0
  181. package/dist/utils/records.js +10 -0
  182. package/dist/utils/records.js.map +1 -0
  183. package/dist/utils/types.d.ts +465 -0
  184. package/dist/utils/types.d.ts.map +1 -0
  185. package/dist/utils/types.js +5 -0
  186. package/dist/utils/types.js.map +1 -0
  187. package/dist/validation/assets.d.ts +53 -0
  188. package/dist/validation/assets.d.ts.map +1 -0
  189. package/dist/validation/assets.js +198 -0
  190. package/dist/validation/assets.js.map +1 -0
  191. package/dist/validation/createRefs.d.ts +37 -0
  192. package/dist/validation/createRefs.d.ts.map +1 -0
  193. package/dist/validation/createRefs.js +89 -0
  194. package/dist/validation/createRefs.js.map +1 -0
  195. package/dist/validation/eventCommands.d.ts +70 -0
  196. package/dist/validation/eventCommands.d.ts.map +1 -0
  197. package/dist/validation/eventCommands.js +273 -0
  198. package/dist/validation/eventCommands.js.map +1 -0
  199. package/dist/validation/gate.d.ts +56 -0
  200. package/dist/validation/gate.d.ts.map +1 -0
  201. package/dist/validation/gate.js +50 -0
  202. package/dist/validation/gate.js.map +1 -0
  203. package/dist/validation/moveCommands.d.ts +31 -0
  204. package/dist/validation/moveCommands.d.ts.map +1 -0
  205. package/dist/validation/moveCommands.js +123 -0
  206. package/dist/validation/moveCommands.js.map +1 -0
  207. package/dist/validation/pluginCommands.d.ts +83 -0
  208. package/dist/validation/pluginCommands.d.ts.map +1 -0
  209. package/dist/validation/pluginCommands.js +134 -0
  210. package/dist/validation/pluginCommands.js.map +1 -0
  211. package/dist/validation/pluginManifest.d.ts +67 -0
  212. package/dist/validation/pluginManifest.d.ts.map +1 -0
  213. package/dist/validation/pluginManifest.js +199 -0
  214. package/dist/validation/pluginManifest.js.map +1 -0
  215. package/dist/validation/references.d.ts +57 -0
  216. package/dist/validation/references.d.ts.map +1 -0
  217. package/dist/validation/references.js +314 -0
  218. package/dist/validation/references.js.map +1 -0
  219. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sf.js","sourceRoot":"","sources":["../../../src/tiles/catalog/sf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** Read/write access to one z-layer of a map, addressed by tile (x, y). */
2
+ export interface LayerAccess {
3
+ width: number;
4
+ height: number;
5
+ get(x: number, y: number): number;
6
+ set(x: number, y: number, tileId: number): void;
7
+ }
8
+ /**
9
+ * After painting `cells` (each already set to its target tile id), fix autotile
10
+ * shapes across the painted cells **and their 1-cell border ring** — a painted
11
+ * cell changes the neighbour set of everything adjacent to it, so those must be
12
+ * reshaped too. Order-independent: a cell's shape depends only on neighbour
13
+ * *kinds*, which are fixed once painting is done, so a single deduped pass is
14
+ * exact.
15
+ */
16
+ export declare function applyAutotiling(layer: LayerAccess, cells: {
17
+ x: number;
18
+ y: number;
19
+ }[]): void;
20
+ //# sourceMappingURL=paint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/tiles/paint.ts"],"names":[],"mappings":"AAcA,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACjD;AAsCD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,CAe3F"}
@@ -0,0 +1,65 @@
1
+ import { computeAutotileShape } from './autotile.js';
2
+ import { autotileType, getAutotileKind, isSameKindTile, makeAutotileId } from './tileCodec.js';
3
+ /**
4
+ * Same-kind connectivity of a cell's 8 neighbours (off-map = not connected, i.e.
5
+ * a border). `ref` is the cell's own tile id, so autotile kinds compare by kind
6
+ * and flat tiles by exact id (see {@link isSameKindTile}).
7
+ */
8
+ function neighborsOf(layer, x, y, ref) {
9
+ const same = (dx, dy) => {
10
+ const nx = x + dx;
11
+ const ny = y + dy;
12
+ if (nx < 0 || nx >= layer.width || ny < 0 || ny >= layer.height)
13
+ return false;
14
+ return isSameKindTile(layer.get(nx, ny), ref);
15
+ };
16
+ return {
17
+ n: same(0, -1),
18
+ s: same(0, 1),
19
+ w: same(-1, 0),
20
+ e: same(1, 0),
21
+ nw: same(-1, -1),
22
+ ne: same(1, -1),
23
+ sw: same(-1, 1),
24
+ se: same(1, 1),
25
+ };
26
+ }
27
+ /**
28
+ * Recompute one cell's autotile shape in place from its neighbours. No-op for
29
+ * flat (non-autotile) tiles and empty cells — they have no shape to fit.
30
+ */
31
+ function reshapeCell(layer, x, y) {
32
+ const tile = layer.get(x, y);
33
+ const type = autotileType(tile);
34
+ if (type === null)
35
+ return;
36
+ const shape = computeAutotileShape(type, neighborsOf(layer, x, y, tile));
37
+ layer.set(x, y, makeAutotileId(getAutotileKind(tile), shape));
38
+ }
39
+ /**
40
+ * After painting `cells` (each already set to its target tile id), fix autotile
41
+ * shapes across the painted cells **and their 1-cell border ring** — a painted
42
+ * cell changes the neighbour set of everything adjacent to it, so those must be
43
+ * reshaped too. Order-independent: a cell's shape depends only on neighbour
44
+ * *kinds*, which are fixed once painting is done, so a single deduped pass is
45
+ * exact.
46
+ */
47
+ export function applyAutotiling(layer, cells) {
48
+ const seen = new Set();
49
+ for (const { x, y } of cells) {
50
+ for (let dy = -1; dy <= 1; dy++) {
51
+ for (let dx = -1; dx <= 1; dx++) {
52
+ const nx = x + dx;
53
+ const ny = y + dy;
54
+ if (nx < 0 || nx >= layer.width || ny < 0 || ny >= layer.height)
55
+ continue;
56
+ const key = ny * layer.width + nx;
57
+ if (seen.has(key))
58
+ continue;
59
+ seen.add(key);
60
+ reshapeCell(layer, nx, ny);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=paint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/tiles/paint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** A decoded image: `data` is `width * height * 4` RGBA bytes. */
2
+ export interface DecodedImage {
3
+ width: number;
4
+ height: number;
5
+ data: Buffer;
6
+ }
7
+ /** Decode a PNG buffer into `{ width, height, data }` where data is RGBA bytes. */
8
+ export declare function decodePng(buf: Buffer): DecodedImage;
9
+ /** Encode an RGBA buffer as an 8-bit RGBA PNG (filter 0 on every row). */
10
+ export declare function encodePng(width: number, height: number, rgba: Buffer): Buffer;
11
+ //# sourceMappingURL=png.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/tiles/png.ts"],"names":[],"mappings":"AAgBA,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAyGnD;AAqBD,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB7E"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Minimal, dependency-free PNG codec (Node built-in `zlib` only) — the `src/`
3
+ * (server-build) counterpart of the standalone codec in
4
+ * `.claude/skills/tileset-catalog/scripts/png.mjs`.
5
+ *
6
+ * Just enough to read the PNG sheets RPG Maker MZ ships (8-bit palette, RGB,
7
+ * grayscale, or RGBA) into a flat RGBA buffer — so the transparency classifier
8
+ * can inspect a tile's alpha channel without pulling in `sharp`/`canvas`/`pngjs`.
9
+ * Not a general PNG library: 8-bit channels only, no interlacing (RPG Maker
10
+ * never interlaces). `encodePng` is included for tests/round-trips; the server
11
+ * only needs `decodePng`.
12
+ */
13
+ import zlib from 'node:zlib';
14
+ const SIG = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
15
+ function paeth(a, b, c) {
16
+ const p = a + b - c;
17
+ const pa = Math.abs(p - a);
18
+ const pb = Math.abs(p - b);
19
+ const pc = Math.abs(p - c);
20
+ if (pa <= pb && pa <= pc)
21
+ return a;
22
+ if (pb <= pc)
23
+ return b;
24
+ return c;
25
+ }
26
+ /** Decode a PNG buffer into `{ width, height, data }` where data is RGBA bytes. */
27
+ export function decodePng(buf) {
28
+ if (!buf.subarray(0, 8).equals(SIG))
29
+ throw new Error('not a PNG');
30
+ let width = 0;
31
+ let height = 0;
32
+ let bitDepth = 0;
33
+ let colorType = 0;
34
+ let palette = null;
35
+ let trns = null;
36
+ const idat = [];
37
+ let off = 8;
38
+ while (off < buf.length) {
39
+ const len = buf.readUInt32BE(off);
40
+ const type = buf.toString('ascii', off + 4, off + 8);
41
+ const start = off + 8;
42
+ const data = buf.subarray(start, start + len);
43
+ if (type === 'IHDR') {
44
+ width = data.readUInt32BE(0);
45
+ height = data.readUInt32BE(4);
46
+ bitDepth = data[8];
47
+ colorType = data[9];
48
+ if (bitDepth !== 8)
49
+ throw new Error(`unsupported bit depth ${bitDepth}`);
50
+ if (data[12] !== 0)
51
+ throw new Error('interlaced PNG not supported');
52
+ }
53
+ else if (type === 'PLTE') {
54
+ palette = Buffer.from(data);
55
+ }
56
+ else if (type === 'tRNS') {
57
+ trns = Buffer.from(data);
58
+ }
59
+ else if (type === 'IDAT') {
60
+ idat.push(Buffer.from(data));
61
+ }
62
+ else if (type === 'IEND') {
63
+ break;
64
+ }
65
+ off = start + len + 4; // skip data + CRC
66
+ }
67
+ const channels = { 0: 1, 2: 3, 3: 1, 4: 2, 6: 4 }[colorType];
68
+ if (!channels)
69
+ throw new Error(`unsupported color type ${colorType}`);
70
+ const raw = zlib.inflateSync(Buffer.concat(idat));
71
+ const stride = width * channels;
72
+ const out = Buffer.alloc(width * height * 4);
73
+ // Unfilter into a contiguous per-pixel-byte buffer, then expand to RGBA.
74
+ const unfiltered = Buffer.alloc(height * stride);
75
+ for (let y = 0; y < height; y++) {
76
+ const filter = raw[y * (stride + 1)];
77
+ const rowStart = y * (stride + 1) + 1;
78
+ const cur = unfiltered.subarray(y * stride, y * stride + stride);
79
+ const prev = y > 0 ? unfiltered.subarray((y - 1) * stride, (y - 1) * stride + stride) : null;
80
+ for (let i = 0; i < stride; i++) {
81
+ const x = raw[rowStart + i];
82
+ const a = i >= channels ? cur[i - channels] : 0;
83
+ const b = prev ? prev[i] : 0;
84
+ const c = prev && i >= channels ? prev[i - channels] : 0;
85
+ let v;
86
+ switch (filter) {
87
+ case 0:
88
+ v = x;
89
+ break;
90
+ case 1:
91
+ v = x + a;
92
+ break;
93
+ case 2:
94
+ v = x + b;
95
+ break;
96
+ case 3:
97
+ v = x + ((a + b) >> 1);
98
+ break;
99
+ case 4:
100
+ v = x + paeth(a, b, c);
101
+ break;
102
+ default:
103
+ throw new Error(`bad filter ${filter}`);
104
+ }
105
+ cur[i] = v & 0xff;
106
+ }
107
+ }
108
+ for (let p = 0; p < width * height; p++) {
109
+ const s = p * channels;
110
+ const d = p * 4;
111
+ if (colorType === 6) {
112
+ out[d] = unfiltered[s];
113
+ out[d + 1] = unfiltered[s + 1];
114
+ out[d + 2] = unfiltered[s + 2];
115
+ out[d + 3] = unfiltered[s + 3];
116
+ }
117
+ else if (colorType === 2) {
118
+ out[d] = unfiltered[s];
119
+ out[d + 1] = unfiltered[s + 1];
120
+ out[d + 2] = unfiltered[s + 2];
121
+ out[d + 3] = 255;
122
+ }
123
+ else if (colorType === 0) {
124
+ out[d] = out[d + 1] = out[d + 2] = unfiltered[s];
125
+ out[d + 3] = 255;
126
+ }
127
+ else if (colorType === 4) {
128
+ out[d] = out[d + 1] = out[d + 2] = unfiltered[s];
129
+ out[d + 3] = unfiltered[s + 1];
130
+ }
131
+ else {
132
+ // palette
133
+ const idx = unfiltered[s];
134
+ out[d] = palette[idx * 3];
135
+ out[d + 1] = palette[idx * 3 + 1];
136
+ out[d + 2] = palette[idx * 3 + 2];
137
+ out[d + 3] = trns && idx < trns.length ? trns[idx] : 255;
138
+ }
139
+ }
140
+ return { width, height, data: out };
141
+ }
142
+ function crc32(buf) {
143
+ let c = ~0;
144
+ for (let i = 0; i < buf.length; i++) {
145
+ c ^= buf[i];
146
+ for (let k = 0; k < 8; k++)
147
+ c = (c >>> 1) ^ (0xedb88320 & -(c & 1));
148
+ }
149
+ return ~c >>> 0;
150
+ }
151
+ function chunk(type, data) {
152
+ const len = Buffer.alloc(4);
153
+ len.writeUInt32BE(data.length, 0);
154
+ const typeBuf = Buffer.from(type, 'ascii');
155
+ const body = Buffer.concat([typeBuf, data]);
156
+ const crc = Buffer.alloc(4);
157
+ crc.writeUInt32BE(crc32(body), 0);
158
+ return Buffer.concat([len, body, crc]);
159
+ }
160
+ /** Encode an RGBA buffer as an 8-bit RGBA PNG (filter 0 on every row). */
161
+ export function encodePng(width, height, rgba) {
162
+ const stride = width * 4;
163
+ const raw = Buffer.alloc(height * (stride + 1));
164
+ for (let y = 0; y < height; y++) {
165
+ raw[y * (stride + 1)] = 0; // filter: none
166
+ rgba.copy(raw, y * (stride + 1) + 1, y * stride, y * stride + stride);
167
+ }
168
+ const ihdr = Buffer.alloc(13);
169
+ ihdr.writeUInt32BE(width, 0);
170
+ ihdr.writeUInt32BE(height, 4);
171
+ ihdr[8] = 8; // bit depth
172
+ ihdr[9] = 6; // color type RGBA
173
+ return Buffer.concat([
174
+ SIG,
175
+ chunk('IHDR', ihdr),
176
+ chunk('IDAT', zlib.deflateSync(raw)),
177
+ chunk('IEND', Buffer.alloc(0)),
178
+ ]);
179
+ }
180
+ //# sourceMappingURL=png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/tiles/png.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * RPG Maker MZ tile-ID codec.
3
+ *
4
+ * A raw map tile is a single integer that encodes *which tileset sheet* it comes
5
+ * from and, for autotiles, *which "kind"* (a themed autotile, e.g. a grass or
6
+ * water set) and *which of the 48 shape slots* within that kind. None of that is
7
+ * legible from the integer alone — this module is the decode/encode layer every
8
+ * higher tile tool (catalog, autotile calculator, paint commands) builds on.
9
+ *
10
+ * All functions are pure (no I/O) and mirror the engine's own `Tilemap` helpers
11
+ * in `rmmz_core.js` name-for-name, so anyone cross-referencing the core script
12
+ * recognises them. Constants and boundaries are taken verbatim from the engine
13
+ * (corescript v1.7.0).
14
+ */
15
+ /**
16
+ * Base ids for each region of the tile-id number line. A tile id `>=` one base
17
+ * and `<` the next belongs to that sheet. Autotile sheets (A1–A4) pack 48 shape
18
+ * slots per "kind"; A5/B/C/D/E are flat sheets of single tiles.
19
+ */
20
+ export declare const TILE_ID: {
21
+ readonly B: 0;
22
+ readonly C: 256;
23
+ readonly D: 512;
24
+ readonly E: 768;
25
+ readonly A5: 1536;
26
+ readonly A1: 2048;
27
+ readonly A2: 2816;
28
+ readonly A3: 4352;
29
+ readonly A4: 5888;
30
+ readonly MAX: 8192;
31
+ };
32
+ /** Number of shape slots a single autotile "kind" occupies (47 usable + 1). */
33
+ export declare const AUTOTILE_SLOTS_PER_KIND = 48;
34
+ /** The tilesets image sheets a tile id can come from. */
35
+ export type TileSheet = 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'B' | 'C' | 'D' | 'E';
36
+ /** The three autotile geometries — each picks a different shape table (see 3b). */
37
+ export type AutotileType = 'floor' | 'wall' | 'waterfall';
38
+ /** True if the tile id is an autotile (A1–A4), i.e. shape-driven by neighbours. */
39
+ export declare function isAutotile(tileId: number): boolean;
40
+ /** The autotile "kind" (which themed set), or a nonsense value for non-autotiles. */
41
+ export declare function getAutotileKind(tileId: number): number;
42
+ /** The shape slot 0–47 within the kind (which of the 48 adjacency variants). */
43
+ export declare function getAutotileShape(tileId: number): number;
44
+ /** Rebuild a tile id from an autotile kind + shape slot. Inverse of the two above. */
45
+ export declare function makeAutotileId(kind: number, shape: number): number;
46
+ /**
47
+ * Whether two tiles are "the same kind" for autotile-adjacency purposes: same
48
+ * autotile kind if both are autotiles, else an exact id match. This is the
49
+ * predicate the shape calculator (3b) uses to decide if a neighbour connects.
50
+ */
51
+ export declare function isSameKindTile(a: number, b: number): boolean;
52
+ export declare function isTileA1(tileId: number): boolean;
53
+ export declare function isTileA2(tileId: number): boolean;
54
+ export declare function isTileA3(tileId: number): boolean;
55
+ export declare function isTileA4(tileId: number): boolean;
56
+ export declare function isTileA5(tileId: number): boolean;
57
+ /** A1 water autotiles: the animated sea/lake sets (kinds without a waterfall). */
58
+ export declare function isWaterTile(tileId: number): boolean;
59
+ /** A1 waterfall autotiles: the vertically-tiling falls (odd kinds in the fall band). */
60
+ export declare function isWaterfallTile(tileId: number): boolean;
61
+ /** A3 roof autotiles (the upper half of each A3 kind pair). */
62
+ export declare function isRoofTile(tileId: number): boolean;
63
+ /** A4 wall-top autotiles (floor-type tops that cap a wall). */
64
+ export declare function isWallTopTile(tileId: number): boolean;
65
+ /** A3/A4 wall-side autotiles (the vertical wall faces). */
66
+ export declare function isWallSideTile(tileId: number): boolean;
67
+ /**
68
+ * The autotile geometry of a tile — which of the three shape tables governs it —
69
+ * or `null` for non-autotiles. Floor-type: A1 water/ground, A2, and A4 wall
70
+ * tops (tile in all 8 directions, 47 shapes). Wall-type: A3 roofs and A3/A4 wall
71
+ * sides (tile with the 16-shape wall table). Waterfall-type: A1 falls (4 shapes).
72
+ */
73
+ export declare function autotileType(tileId: number): AutotileType | null;
74
+ /** Which flat sheet a non-autotile id belongs to, or `null` if it's an autotile. */
75
+ export declare function flatSheet(tileId: number): TileSheet | null;
76
+ /** A fully decoded view of a raw tile id — the shape `describe_tile` returns. */
77
+ export interface DecodedTile {
78
+ tileId: number;
79
+ /** tileId 0 is the "no tile" marker (a blank cell on that layer). */
80
+ empty: boolean;
81
+ sheet: TileSheet | null;
82
+ /** Index within its sheet (autotile kind for A1–A4, else offset from sheet base). */
83
+ sheetIndex: number;
84
+ autotile: boolean;
85
+ kind?: number;
86
+ shape?: number;
87
+ autotileType?: AutotileType;
88
+ }
89
+ /**
90
+ * Decode a raw tile id into its sheet, kind/shape and autotile geometry. This is
91
+ * the single lens the `describe_tile` tool exposes and that the catalog builds
92
+ * meanings on top of.
93
+ */
94
+ export declare function decodeTile(tileId: number): DecodedTile;
95
+ //# sourceMappingURL=tileCodec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileCodec.d.ts","sourceRoot":"","sources":["../../src/tiles/tileCodec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;CAWV,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,yDAAyD;AACzD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEjF,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAI1D,mFAAmF;AACnF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAK5D;AAID,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AAID,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAUhE;AAID,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQ1D;AAOD,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAUD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAyBtD"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * RPG Maker MZ tile-ID codec.
3
+ *
4
+ * A raw map tile is a single integer that encodes *which tileset sheet* it comes
5
+ * from and, for autotiles, *which "kind"* (a themed autotile, e.g. a grass or
6
+ * water set) and *which of the 48 shape slots* within that kind. None of that is
7
+ * legible from the integer alone — this module is the decode/encode layer every
8
+ * higher tile tool (catalog, autotile calculator, paint commands) builds on.
9
+ *
10
+ * All functions are pure (no I/O) and mirror the engine's own `Tilemap` helpers
11
+ * in `rmmz_core.js` name-for-name, so anyone cross-referencing the core script
12
+ * recognises them. Constants and boundaries are taken verbatim from the engine
13
+ * (corescript v1.7.0).
14
+ */
15
+ /**
16
+ * Base ids for each region of the tile-id number line. A tile id `>=` one base
17
+ * and `<` the next belongs to that sheet. Autotile sheets (A1–A4) pack 48 shape
18
+ * slots per "kind"; A5/B/C/D/E are flat sheets of single tiles.
19
+ */
20
+ export const TILE_ID = {
21
+ B: 0,
22
+ C: 256,
23
+ D: 512,
24
+ E: 768,
25
+ A5: 1536,
26
+ A1: 2048,
27
+ A2: 2816,
28
+ A3: 4352,
29
+ A4: 5888,
30
+ MAX: 8192,
31
+ };
32
+ /** Number of shape slots a single autotile "kind" occupies (47 usable + 1). */
33
+ export const AUTOTILE_SLOTS_PER_KIND = 48;
34
+ // --- Core autotile arithmetic (mirrors Tilemap.*) --------------------------
35
+ /** True if the tile id is an autotile (A1–A4), i.e. shape-driven by neighbours. */
36
+ export function isAutotile(tileId) {
37
+ return tileId >= TILE_ID.A1;
38
+ }
39
+ /** The autotile "kind" (which themed set), or a nonsense value for non-autotiles. */
40
+ export function getAutotileKind(tileId) {
41
+ return Math.floor((tileId - TILE_ID.A1) / AUTOTILE_SLOTS_PER_KIND);
42
+ }
43
+ /** The shape slot 0–47 within the kind (which of the 48 adjacency variants). */
44
+ export function getAutotileShape(tileId) {
45
+ return (tileId - TILE_ID.A1) % AUTOTILE_SLOTS_PER_KIND;
46
+ }
47
+ /** Rebuild a tile id from an autotile kind + shape slot. Inverse of the two above. */
48
+ export function makeAutotileId(kind, shape) {
49
+ return TILE_ID.A1 + kind * AUTOTILE_SLOTS_PER_KIND + shape;
50
+ }
51
+ /**
52
+ * Whether two tiles are "the same kind" for autotile-adjacency purposes: same
53
+ * autotile kind if both are autotiles, else an exact id match. This is the
54
+ * predicate the shape calculator (3b) uses to decide if a neighbour connects.
55
+ */
56
+ export function isSameKindTile(a, b) {
57
+ if (isAutotile(a) && isAutotile(b)) {
58
+ return getAutotileKind(a) === getAutotileKind(b);
59
+ }
60
+ return a === b;
61
+ }
62
+ // --- Sheet classification (mirrors Tilemap.isTileA1 … isTileA5) -------------
63
+ export function isTileA1(tileId) {
64
+ return tileId >= TILE_ID.A1 && tileId < TILE_ID.A2;
65
+ }
66
+ export function isTileA2(tileId) {
67
+ return tileId >= TILE_ID.A2 && tileId < TILE_ID.A3;
68
+ }
69
+ export function isTileA3(tileId) {
70
+ return tileId >= TILE_ID.A3 && tileId < TILE_ID.A4;
71
+ }
72
+ export function isTileA4(tileId) {
73
+ return tileId >= TILE_ID.A4 && tileId < TILE_ID.MAX;
74
+ }
75
+ export function isTileA5(tileId) {
76
+ return tileId >= TILE_ID.A5 && tileId < TILE_ID.A1;
77
+ }
78
+ // --- Autotile sub-type predicates (mirrors Tilemap.*) ----------------------
79
+ /** A1 water autotiles: the animated sea/lake sets (kinds without a waterfall). */
80
+ export function isWaterTile(tileId) {
81
+ if (!isTileA1(tileId))
82
+ return false;
83
+ return !(tileId >= TILE_ID.A1 + 96 && tileId < TILE_ID.A1 + 192);
84
+ }
85
+ /** A1 waterfall autotiles: the vertically-tiling falls (odd kinds in the fall band). */
86
+ export function isWaterfallTile(tileId) {
87
+ if (tileId >= TILE_ID.A1 + 192 && tileId < TILE_ID.A2) {
88
+ return getAutotileKind(tileId) % 2 === 1;
89
+ }
90
+ return false;
91
+ }
92
+ /** A3 roof autotiles (the upper half of each A3 kind pair). */
93
+ export function isRoofTile(tileId) {
94
+ return isTileA3(tileId) && getAutotileKind(tileId) % 16 < 8;
95
+ }
96
+ /** A4 wall-top autotiles (floor-type tops that cap a wall). */
97
+ export function isWallTopTile(tileId) {
98
+ return isTileA4(tileId) && getAutotileKind(tileId) % 16 < 8;
99
+ }
100
+ /** A3/A4 wall-side autotiles (the vertical wall faces). */
101
+ export function isWallSideTile(tileId) {
102
+ return (isTileA3(tileId) || isTileA4(tileId)) && getAutotileKind(tileId) % 16 >= 8;
103
+ }
104
+ /**
105
+ * The autotile geometry of a tile — which of the three shape tables governs it —
106
+ * or `null` for non-autotiles. Floor-type: A1 water/ground, A2, and A4 wall
107
+ * tops (tile in all 8 directions, 47 shapes). Wall-type: A3 roofs and A3/A4 wall
108
+ * sides (tile with the 16-shape wall table). Waterfall-type: A1 falls (4 shapes).
109
+ */
110
+ export function autotileType(tileId) {
111
+ if (!isAutotile(tileId))
112
+ return null;
113
+ if (isWaterfallTile(tileId))
114
+ return 'waterfall';
115
+ if (isRoofTile(tileId) || isWallSideTile(tileId))
116
+ return 'wall';
117
+ // Floor-type: A1 (non-waterfall), A2, and A4 wall tops.
118
+ if ((isTileA1(tileId) && !isWaterfallTile(tileId)) || isTileA2(tileId) || isWallTopTile(tileId)) {
119
+ return 'floor';
120
+ }
121
+ // A3 roofs are handled above; anything left (shouldn't occur) is floor-ish.
122
+ return 'floor';
123
+ }
124
+ // --- High-level decode ------------------------------------------------------
125
+ /** Which flat sheet a non-autotile id belongs to, or `null` if it's an autotile. */
126
+ export function flatSheet(tileId) {
127
+ if (isAutotile(tileId))
128
+ return null;
129
+ if (isTileA5(tileId))
130
+ return 'A5';
131
+ if (tileId >= TILE_ID.E && tileId < TILE_ID.A5)
132
+ return 'E';
133
+ if (tileId >= TILE_ID.D)
134
+ return 'D';
135
+ if (tileId >= TILE_ID.C)
136
+ return 'C';
137
+ if (tileId >= TILE_ID.B)
138
+ return 'B';
139
+ return null;
140
+ }
141
+ /** The base id for a flat sheet, used to compute an index within that sheet. */
142
+ function flatSheetBase(sheet) {
143
+ return TILE_ID[sheet];
144
+ }
145
+ /** Which A-sheet an autotile kind lives on, from its raw id. */
146
+ function autotileSheet(tileId) {
147
+ if (isTileA1(tileId))
148
+ return 'A1';
149
+ if (isTileA2(tileId))
150
+ return 'A2';
151
+ if (isTileA3(tileId))
152
+ return 'A3';
153
+ return 'A4';
154
+ }
155
+ /**
156
+ * Decode a raw tile id into its sheet, kind/shape and autotile geometry. This is
157
+ * the single lens the `describe_tile` tool exposes and that the catalog builds
158
+ * meanings on top of.
159
+ */
160
+ export function decodeTile(tileId) {
161
+ if (tileId === 0) {
162
+ return { tileId, empty: true, sheet: 'B', sheetIndex: 0, autotile: false };
163
+ }
164
+ if (isAutotile(tileId)) {
165
+ const sheet = autotileSheet(tileId);
166
+ return {
167
+ tileId,
168
+ empty: false,
169
+ sheet,
170
+ sheetIndex: getAutotileKind(tileId),
171
+ autotile: true,
172
+ kind: getAutotileKind(tileId),
173
+ shape: getAutotileShape(tileId),
174
+ autotileType: autotileType(tileId) ?? undefined,
175
+ };
176
+ }
177
+ const sheet = flatSheet(tileId);
178
+ return {
179
+ tileId,
180
+ empty: false,
181
+ sheet,
182
+ sheetIndex: sheet ? tileId - flatSheetBase(sheet) : tileId,
183
+ autotile: false,
184
+ };
185
+ }
186
+ //# sourceMappingURL=tileCodec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tileCodec.js","sourceRoot":"","sources":["../../src/tiles/tileCodec.ts"],"names":[],"mappings":"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"}