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.
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/dist/events/commandBuilders.d.ts +405 -0
- package/dist/events/commandBuilders.d.ts.map +1 -0
- package/dist/events/commandBuilders.js +554 -0
- package/dist/events/commandBuilders.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +105 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +81 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +49 -0
- package/dist/registry.js.map +1 -0
- package/dist/tiles/autotile.d.ts +65 -0
- package/dist/tiles/autotile.d.ts.map +1 -0
- package/dist/tiles/autotile.js +201 -0
- package/dist/tiles/autotile.js.map +1 -0
- package/dist/tiles/catalog/dungeon.d.ts +16 -0
- package/dist/tiles/catalog/dungeon.d.ts.map +1 -0
- package/dist/tiles/catalog/dungeon.js +765 -0
- package/dist/tiles/catalog/dungeon.js.map +1 -0
- package/dist/tiles/catalog/index.d.ts +78 -0
- package/dist/tiles/catalog/index.d.ts.map +1 -0
- package/dist/tiles/catalog/index.js +115 -0
- package/dist/tiles/catalog/index.js.map +1 -0
- package/dist/tiles/catalog/inside.d.ts +16 -0
- package/dist/tiles/catalog/inside.d.ts.map +1 -0
- package/dist/tiles/catalog/inside.js +765 -0
- package/dist/tiles/catalog/inside.js.map +1 -0
- package/dist/tiles/catalog/outside.d.ts +16 -0
- package/dist/tiles/catalog/outside.d.ts.map +1 -0
- package/dist/tiles/catalog/outside.js +799 -0
- package/dist/tiles/catalog/outside.js.map +1 -0
- package/dist/tiles/catalog/overworld.d.ts +16 -0
- package/dist/tiles/catalog/overworld.d.ts.map +1 -0
- package/dist/tiles/catalog/overworld.js +585 -0
- package/dist/tiles/catalog/overworld.js.map +1 -0
- package/dist/tiles/catalog/sf.d.ts +16 -0
- package/dist/tiles/catalog/sf.d.ts.map +1 -0
- package/dist/tiles/catalog/sf.js +1313 -0
- package/dist/tiles/catalog/sf.js.map +1 -0
- package/dist/tiles/paint.d.ts +20 -0
- package/dist/tiles/paint.d.ts.map +1 -0
- package/dist/tiles/paint.js +65 -0
- package/dist/tiles/paint.js.map +1 -0
- package/dist/tiles/png.d.ts +11 -0
- package/dist/tiles/png.d.ts.map +1 -0
- package/dist/tiles/png.js +180 -0
- package/dist/tiles/png.js.map +1 -0
- package/dist/tiles/tileCodec.d.ts +95 -0
- package/dist/tiles/tileCodec.d.ts.map +1 -0
- package/dist/tiles/tileCodec.js +186 -0
- package/dist/tiles/tileCodec.js.map +1 -0
- package/dist/tiles/tileFlags.d.ts +98 -0
- package/dist/tiles/tileFlags.d.ts.map +1 -0
- package/dist/tiles/tileFlags.js +129 -0
- package/dist/tiles/tileFlags.js.map +1 -0
- package/dist/tiles/tilegeom.d.ts +29 -0
- package/dist/tiles/tilegeom.d.ts.map +1 -0
- package/dist/tiles/tilegeom.js +111 -0
- package/dist/tiles/tilegeom.js.map +1 -0
- package/dist/tiles/transparency.d.ts +22 -0
- package/dist/tiles/transparency.d.ts.map +1 -0
- package/dist/tiles/transparency.js +59 -0
- package/dist/tiles/transparency.js.map +1 -0
- package/dist/tools/actorTools.d.ts +48 -0
- package/dist/tools/actorTools.d.ts.map +1 -0
- package/dist/tools/actorTools.js +154 -0
- package/dist/tools/actorTools.js.map +1 -0
- package/dist/tools/allTools.d.ts +8 -0
- package/dist/tools/allTools.d.ts.map +1 -0
- package/dist/tools/allTools.js +56 -0
- package/dist/tools/allTools.js.map +1 -0
- package/dist/tools/assetTools.d.ts +113 -0
- package/dist/tools/assetTools.d.ts.map +1 -0
- package/dist/tools/assetTools.js +97 -0
- package/dist/tools/assetTools.js.map +1 -0
- package/dist/tools/batchTools.d.ts +3 -0
- package/dist/tools/batchTools.d.ts.map +1 -0
- package/dist/tools/batchTools.js +138 -0
- package/dist/tools/batchTools.js.map +1 -0
- package/dist/tools/battleTools.d.ts +72 -0
- package/dist/tools/battleTools.d.ts.map +1 -0
- package/dist/tools/battleTools.js +322 -0
- package/dist/tools/battleTools.js.map +1 -0
- package/dist/tools/catalogTools.d.ts +3 -0
- package/dist/tools/catalogTools.d.ts.map +1 -0
- package/dist/tools/catalogTools.js +134 -0
- package/dist/tools/catalogTools.js.map +1 -0
- package/dist/tools/classTools.d.ts +85 -0
- package/dist/tools/classTools.d.ts.map +1 -0
- package/dist/tools/classTools.js +279 -0
- package/dist/tools/classTools.js.map +1 -0
- package/dist/tools/commonEventTools.d.ts +32 -0
- package/dist/tools/commonEventTools.d.ts.map +1 -0
- package/dist/tools/commonEventTools.js +150 -0
- package/dist/tools/commonEventTools.js.map +1 -0
- package/dist/tools/eventCommandTools.d.ts +37 -0
- package/dist/tools/eventCommandTools.d.ts.map +1 -0
- package/dist/tools/eventCommandTools.js +893 -0
- package/dist/tools/eventCommandTools.js.map +1 -0
- package/dist/tools/eventPageTools.d.ts +112 -0
- package/dist/tools/eventPageTools.d.ts.map +1 -0
- package/dist/tools/eventPageTools.js +597 -0
- package/dist/tools/eventPageTools.js.map +1 -0
- package/dist/tools/itemTools.d.ts +82 -0
- package/dist/tools/itemTools.d.ts.map +1 -0
- package/dist/tools/itemTools.js +380 -0
- package/dist/tools/itemTools.js.map +1 -0
- package/dist/tools/listTools.d.ts +58 -0
- package/dist/tools/listTools.d.ts.map +1 -0
- package/dist/tools/listTools.js +99 -0
- package/dist/tools/listTools.js.map +1 -0
- package/dist/tools/mapTools.d.ts +270 -0
- package/dist/tools/mapTools.d.ts.map +1 -0
- package/dist/tools/mapTools.js +1066 -0
- package/dist/tools/mapTools.js.map +1 -0
- package/dist/tools/moveTools.d.ts +43 -0
- package/dist/tools/moveTools.d.ts.map +1 -0
- package/dist/tools/moveTools.js +240 -0
- package/dist/tools/moveTools.js.map +1 -0
- package/dist/tools/objectTools.d.ts +12 -0
- package/dist/tools/objectTools.d.ts.map +1 -0
- package/dist/tools/objectTools.js +221 -0
- package/dist/tools/objectTools.js.map +1 -0
- package/dist/tools/paintTools.d.ts +3 -0
- package/dist/tools/paintTools.d.ts.map +1 -0
- package/dist/tools/paintTools.js +134 -0
- package/dist/tools/paintTools.js.map +1 -0
- package/dist/tools/pluginScanTools.d.ts +22 -0
- package/dist/tools/pluginScanTools.d.ts.map +1 -0
- package/dist/tools/pluginScanTools.js +119 -0
- package/dist/tools/pluginScanTools.js.map +1 -0
- package/dist/tools/pluginTools.d.ts +11 -0
- package/dist/tools/pluginTools.d.ts.map +1 -0
- package/dist/tools/pluginTools.js +63 -0
- package/dist/tools/pluginTools.js.map +1 -0
- package/dist/tools/projectTools.d.ts +11 -0
- package/dist/tools/projectTools.d.ts.map +1 -0
- package/dist/tools/projectTools.js +74 -0
- package/dist/tools/projectTools.js.map +1 -0
- package/dist/tools/skillTools.d.ts +83 -0
- package/dist/tools/skillTools.d.ts.map +1 -0
- package/dist/tools/skillTools.js +369 -0
- package/dist/tools/skillTools.js.map +1 -0
- package/dist/tools/stateTools.d.ts +28 -0
- package/dist/tools/stateTools.d.ts.map +1 -0
- package/dist/tools/stateTools.js +161 -0
- package/dist/tools/stateTools.js.map +1 -0
- package/dist/tools/systemTools.d.ts +86 -0
- package/dist/tools/systemTools.d.ts.map +1 -0
- package/dist/tools/systemTools.js +342 -0
- package/dist/tools/systemTools.js.map +1 -0
- package/dist/tools/tileTools.d.ts +9 -0
- package/dist/tools/tileTools.d.ts.map +1 -0
- package/dist/tools/tileTools.js +34 -0
- package/dist/tools/tileTools.js.map +1 -0
- package/dist/tools/tileTransparency.d.ts +40 -0
- package/dist/tools/tileTransparency.d.ts.map +1 -0
- package/dist/tools/tileTransparency.js +156 -0
- package/dist/tools/tileTransparency.js.map +1 -0
- package/dist/tools/tilesetTools.d.ts +23 -0
- package/dist/tools/tilesetTools.d.ts.map +1 -0
- package/dist/tools/tilesetTools.js +209 -0
- package/dist/tools/tilesetTools.js.map +1 -0
- package/dist/tools/validationTools.d.ts +50 -0
- package/dist/tools/validationTools.d.ts.map +1 -0
- package/dist/tools/validationTools.js +229 -0
- package/dist/tools/validationTools.js.map +1 -0
- package/dist/utils/commit.d.ts +62 -0
- package/dist/utils/commit.d.ts.map +1 -0
- package/dist/utils/commit.js +119 -0
- package/dist/utils/commit.js.map +1 -0
- package/dist/utils/fileHandler.d.ts +49 -0
- package/dist/utils/fileHandler.d.ts.map +1 -0
- package/dist/utils/fileHandler.js +137 -0
- package/dist/utils/fileHandler.js.map +1 -0
- package/dist/utils/records.d.ts +8 -0
- package/dist/utils/records.d.ts.map +1 -0
- package/dist/utils/records.js +10 -0
- package/dist/utils/records.js.map +1 -0
- package/dist/utils/types.d.ts +465 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +5 -0
- package/dist/utils/types.js.map +1 -0
- package/dist/validation/assets.d.ts +53 -0
- package/dist/validation/assets.d.ts.map +1 -0
- package/dist/validation/assets.js +198 -0
- package/dist/validation/assets.js.map +1 -0
- package/dist/validation/createRefs.d.ts +37 -0
- package/dist/validation/createRefs.d.ts.map +1 -0
- package/dist/validation/createRefs.js +89 -0
- package/dist/validation/createRefs.js.map +1 -0
- package/dist/validation/eventCommands.d.ts +70 -0
- package/dist/validation/eventCommands.d.ts.map +1 -0
- package/dist/validation/eventCommands.js +273 -0
- package/dist/validation/eventCommands.js.map +1 -0
- package/dist/validation/gate.d.ts +56 -0
- package/dist/validation/gate.d.ts.map +1 -0
- package/dist/validation/gate.js +50 -0
- package/dist/validation/gate.js.map +1 -0
- package/dist/validation/moveCommands.d.ts +31 -0
- package/dist/validation/moveCommands.d.ts.map +1 -0
- package/dist/validation/moveCommands.js +123 -0
- package/dist/validation/moveCommands.js.map +1 -0
- package/dist/validation/pluginCommands.d.ts +83 -0
- package/dist/validation/pluginCommands.d.ts.map +1 -0
- package/dist/validation/pluginCommands.js +134 -0
- package/dist/validation/pluginCommands.js.map +1 -0
- package/dist/validation/pluginManifest.d.ts +67 -0
- package/dist/validation/pluginManifest.d.ts.map +1 -0
- package/dist/validation/pluginManifest.js +199 -0
- package/dist/validation/pluginManifest.js.map +1 -0
- package/dist/validation/references.d.ts +57 -0
- package/dist/validation/references.d.ts.map +1 -0
- package/dist/validation/references.js +314 -0
- package/dist/validation/references.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapTools.js","sourceRoot":"","sources":["../../src/tools/mapTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { MapEvent, EventCommand, MoveCommand, MoveRoute } from '../utils/types.js';
|
|
2
|
+
import { ToolDefinition } from '../registry.js';
|
|
3
|
+
import { PreCommit } from '../validation/gate.js';
|
|
4
|
+
export type MovePattern = 'patrol' | 'approach' | 'flee' | 'wander' | 'custom';
|
|
5
|
+
export interface MoveRouteOptions {
|
|
6
|
+
/** Primary direction for `patrol` (walks there and back). Default `right`. */
|
|
7
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
8
|
+
/** Step count for `patrol` (each leg). Default 3. */
|
|
9
|
+
steps?: number;
|
|
10
|
+
/** Raw move commands for `custom`. */
|
|
11
|
+
commands?: MoveCommand[];
|
|
12
|
+
/** Loop the route. Defaults per pattern (see REPEAT_BY_DEFAULT). */
|
|
13
|
+
repeat?: boolean;
|
|
14
|
+
/** Skip the step if movement is blocked. Default false. */
|
|
15
|
+
skippable?: boolean;
|
|
16
|
+
/** Wait for the route to finish before continuing the event. Default false. */
|
|
17
|
+
wait?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build a MoveRoute from a named pattern instead of hand-rolling raw move codes.
|
|
21
|
+
* The returned route is terminated by the Route-End marker (code 0) and can be
|
|
22
|
+
* used two ways: as an event page's autonomous `moveRoute` (via update_map_event
|
|
23
|
+
* with moveType 3), or as the forced route inserted by {@link setMovementRoute}.
|
|
24
|
+
* Pure (no I/O) so the shape is unit-testable.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMoveRoute(pattern: MovePattern, options?: MoveRouteOptions): MoveRoute;
|
|
27
|
+
/**
|
|
28
|
+
* Build the event-command sequence the editor writes for a forced "Set Movement
|
|
29
|
+
* Route" (command 205): the 205 carrying the full route in its parameters, then
|
|
30
|
+
* one 505 continuation row per move step (including the terminator) so the editor
|
|
31
|
+
* can display and re-edit the route. Both the runtime (reads the 205) and the
|
|
32
|
+
* editor (reads the 505 rows) stay happy.
|
|
33
|
+
*/
|
|
34
|
+
export declare function moveRouteCommands(characterId: number, route: MoveRoute, indent?: number): EventCommand[];
|
|
35
|
+
/**
|
|
36
|
+
* Insert a forced "Set Movement Route" (command 205 + its 505 continuation rows)
|
|
37
|
+
* into an event page's command list, so the character moves as part of that page's
|
|
38
|
+
* event processing. Writes through the commit choke point. `characterId`: -1 =
|
|
39
|
+
* player, 0 = this event, N = event id N on the map.
|
|
40
|
+
*/
|
|
41
|
+
export declare function setMovementRoute(projectPath: string, mapId: number, eventId: number, pageIndex: number, characterId: number, route: MoveRoute, indent?: number, position?: number, precommit?: PreCommit<MapEvent>): Promise<MapEvent>;
|
|
42
|
+
export declare const moveToolDefinitions: ToolDefinition[];
|
|
43
|
+
//# sourceMappingURL=moveTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveTools.d.ts","sourceRoot":"","sources":["../../src/tools/moveTools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAa,MAAM,uBAAuB,CAAC;AAgC7D,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7C,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,oEAAoE;IACpE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAyCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAS/F;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,MAAM,SAAI,GACT,YAAY,EAAE,CAShB;AAMD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,MAAM,SAAI,EACV,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC9B,OAAO,CAAC,QAAQ,CAAC,CAwBnB;AA+BD,eAAO,MAAM,mBAAmB,EAAE,cAAc,EAoF/C,CAAC"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { readJsonFile, getMapPath } from '../utils/fileHandler.js';
|
|
3
|
+
import { commitChange } from '../utils/commit.js';
|
|
4
|
+
import { validateMoveRoute } from '../validation/moveCommands.js';
|
|
5
|
+
import { validateEvent } from '../validation/eventCommands.js';
|
|
6
|
+
import { writeGate } from '../validation/gate.js';
|
|
7
|
+
/** Event command code for "Set Movement Route" (force a character along a route). */
|
|
8
|
+
const SET_MOVEMENT_ROUTE_CODE = 205;
|
|
9
|
+
/** Continuation command code the editor writes per move step under a 205. */
|
|
10
|
+
const MOVE_ROUTE_STEP_CODE = 505;
|
|
11
|
+
/** Move-route command codes used by the named-pattern builders. */
|
|
12
|
+
const ROUTE_END = 0;
|
|
13
|
+
const ROUTE_MOVE_RANDOM = 9;
|
|
14
|
+
const ROUTE_MOVE_TOWARD = 10;
|
|
15
|
+
const ROUTE_MOVE_AWAY = 11;
|
|
16
|
+
/** A cardinal direction's "move" move-command code (Game_Character ROUTE_MOVE_*). */
|
|
17
|
+
const DIR_MOVE = { down: 1, left: 2, right: 3, up: 4 };
|
|
18
|
+
/** The opposite direction's move code — used to walk a patrol back to its start. */
|
|
19
|
+
const DIR_OPPOSITE = { down: 4, up: 1, left: 3, right: 2 };
|
|
20
|
+
/** Build a single move command with an always-present parameters array. */
|
|
21
|
+
function mc(code, ...parameters) {
|
|
22
|
+
return { code, parameters };
|
|
23
|
+
}
|
|
24
|
+
/** Whether a pattern loops by default (a patrol/wander repeats; a one-shot does not). */
|
|
25
|
+
const REPEAT_BY_DEFAULT = {
|
|
26
|
+
patrol: true,
|
|
27
|
+
approach: true,
|
|
28
|
+
flee: true,
|
|
29
|
+
wander: true,
|
|
30
|
+
custom: false,
|
|
31
|
+
};
|
|
32
|
+
/** Build the move-command list (without the Route-End terminator) for a pattern. */
|
|
33
|
+
function patternList(pattern, options) {
|
|
34
|
+
switch (pattern) {
|
|
35
|
+
case 'patrol': {
|
|
36
|
+
const direction = options.direction ?? 'right';
|
|
37
|
+
const steps = options.steps ?? 3;
|
|
38
|
+
const forward = DIR_MOVE[direction];
|
|
39
|
+
const back = DIR_OPPOSITE[direction];
|
|
40
|
+
if (forward === undefined) {
|
|
41
|
+
throw new Error(`Unknown patrol direction: ${direction}`);
|
|
42
|
+
}
|
|
43
|
+
if (!Number.isInteger(steps) || steps <= 0) {
|
|
44
|
+
throw new Error(`patrol steps must be a positive integer (got ${steps})`);
|
|
45
|
+
}
|
|
46
|
+
return [
|
|
47
|
+
...Array.from({ length: steps }, () => mc(forward)),
|
|
48
|
+
...Array.from({ length: steps }, () => mc(back)),
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
case 'approach':
|
|
52
|
+
return [mc(ROUTE_MOVE_TOWARD)];
|
|
53
|
+
case 'flee':
|
|
54
|
+
return [mc(ROUTE_MOVE_AWAY)];
|
|
55
|
+
case 'wander':
|
|
56
|
+
return [mc(ROUTE_MOVE_RANDOM)];
|
|
57
|
+
case 'custom': {
|
|
58
|
+
const commands = options.commands ?? [];
|
|
59
|
+
if (commands.length === 0) {
|
|
60
|
+
throw new Error('custom pattern requires a non-empty `commands` array');
|
|
61
|
+
}
|
|
62
|
+
// Normalize each to a { code, parameters } shape and drop any terminator
|
|
63
|
+
// the caller included (createMoveRoute re-adds exactly one).
|
|
64
|
+
return commands
|
|
65
|
+
.filter((c) => c.code !== ROUTE_END)
|
|
66
|
+
.map((c) => mc(c.code, ...(Array.isArray(c.parameters) ? c.parameters : [])));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Build a MoveRoute from a named pattern instead of hand-rolling raw move codes.
|
|
72
|
+
* The returned route is terminated by the Route-End marker (code 0) and can be
|
|
73
|
+
* used two ways: as an event page's autonomous `moveRoute` (via update_map_event
|
|
74
|
+
* with moveType 3), or as the forced route inserted by {@link setMovementRoute}.
|
|
75
|
+
* Pure (no I/O) so the shape is unit-testable.
|
|
76
|
+
*/
|
|
77
|
+
export function createMoveRoute(pattern, options = {}) {
|
|
78
|
+
const list = patternList(pattern, options);
|
|
79
|
+
list.push(mc(ROUTE_END));
|
|
80
|
+
return {
|
|
81
|
+
list,
|
|
82
|
+
repeat: options.repeat ?? REPEAT_BY_DEFAULT[pattern],
|
|
83
|
+
skippable: options.skippable ?? false,
|
|
84
|
+
wait: options.wait ?? false,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/** Coerce an arbitrary route object into a well-formed, terminated MoveRoute. */
|
|
88
|
+
function normalizeRoute(route) {
|
|
89
|
+
const list = (Array.isArray(route.list) ? route.list : []).map((c) => mc(c.code, ...(Array.isArray(c.parameters) ? c.parameters : [])));
|
|
90
|
+
// A move route only functions if it ends with the Route-End marker.
|
|
91
|
+
if (list.length === 0 || list[list.length - 1].code !== ROUTE_END) {
|
|
92
|
+
list.push(mc(ROUTE_END));
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
list,
|
|
96
|
+
repeat: route.repeat ?? false,
|
|
97
|
+
skippable: route.skippable ?? false,
|
|
98
|
+
wait: route.wait ?? false,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Build the event-command sequence the editor writes for a forced "Set Movement
|
|
103
|
+
* Route" (command 205): the 205 carrying the full route in its parameters, then
|
|
104
|
+
* one 505 continuation row per move step (including the terminator) so the editor
|
|
105
|
+
* can display and re-edit the route. Both the runtime (reads the 205) and the
|
|
106
|
+
* editor (reads the 505 rows) stay happy.
|
|
107
|
+
*/
|
|
108
|
+
export function moveRouteCommands(characterId, route, indent = 0) {
|
|
109
|
+
const normalized = normalizeRoute(route);
|
|
110
|
+
const commands = [
|
|
111
|
+
{ code: SET_MOVEMENT_ROUTE_CODE, indent, parameters: [characterId, normalized] },
|
|
112
|
+
];
|
|
113
|
+
for (const step of normalized.list) {
|
|
114
|
+
commands.push({ code: MOVE_ROUTE_STEP_CODE, indent, parameters: [step] });
|
|
115
|
+
}
|
|
116
|
+
return commands;
|
|
117
|
+
}
|
|
118
|
+
async function getMap(projectPath, mapId) {
|
|
119
|
+
return await readJsonFile(getMapPath(projectPath, mapId));
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Insert a forced "Set Movement Route" (command 205 + its 505 continuation rows)
|
|
123
|
+
* into an event page's command list, so the character moves as part of that page's
|
|
124
|
+
* event processing. Writes through the commit choke point. `characterId`: -1 =
|
|
125
|
+
* player, 0 = this event, N = event id N on the map.
|
|
126
|
+
*/
|
|
127
|
+
export async function setMovementRoute(projectPath, mapId, eventId, pageIndex, characterId, route, indent = 0, position, precommit) {
|
|
128
|
+
const map = await getMap(projectPath, mapId);
|
|
129
|
+
if (!map.events[eventId]) {
|
|
130
|
+
throw new Error(`Event ${eventId} not found on map ${mapId}`);
|
|
131
|
+
}
|
|
132
|
+
const event = map.events[eventId];
|
|
133
|
+
if (!event.pages[pageIndex]) {
|
|
134
|
+
throw new Error(`Page ${pageIndex} not found on event ${eventId}`);
|
|
135
|
+
}
|
|
136
|
+
const commandList = event.pages[pageIndex].list;
|
|
137
|
+
const commands = moveRouteCommands(characterId, route, indent);
|
|
138
|
+
const insertAt = position !== undefined && position >= 0 && position < commandList.length - 1
|
|
139
|
+
? position
|
|
140
|
+
: commandList.length - 1; // before the end-of-list command (code 0)
|
|
141
|
+
commandList.splice(insertAt, 0, ...commands);
|
|
142
|
+
await precommit?.(event);
|
|
143
|
+
await commitChange(getMapPath(projectPath, mapId), map);
|
|
144
|
+
return event;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The pre-commit gate `set_movement_route` installs: the move route's own
|
|
148
|
+
* findings plus the resulting page's, with a structural problem in either
|
|
149
|
+
* refusing the write before it happens.
|
|
150
|
+
*/
|
|
151
|
+
function moveWriteGate(force, route) {
|
|
152
|
+
return writeGate(force, 'movement route', (event) => [
|
|
153
|
+
...validateMoveRoute(route, `event ${event.id} move route`),
|
|
154
|
+
...validateEvent(event).warnings,
|
|
155
|
+
]);
|
|
156
|
+
}
|
|
157
|
+
/** Zod shape for a raw move command (parameters optional; defaulted to []). */
|
|
158
|
+
const moveCommandShape = z.object({
|
|
159
|
+
code: z.number().int().describe('Move-route command code (Game_Character ROUTE_*)'),
|
|
160
|
+
parameters: z.array(z.unknown()).optional().describe('Command parameters (default [])'),
|
|
161
|
+
});
|
|
162
|
+
/** Zod shape for a move route object (e.g. the output of create_move_route). */
|
|
163
|
+
const moveRouteShape = z.object({
|
|
164
|
+
list: z.array(moveCommandShape).describe('Move commands; auto-terminated with code 0 if missing'),
|
|
165
|
+
repeat: z.boolean().optional(),
|
|
166
|
+
skippable: z.boolean().optional(),
|
|
167
|
+
wait: z.boolean().optional(),
|
|
168
|
+
});
|
|
169
|
+
export const moveToolDefinitions = [
|
|
170
|
+
{
|
|
171
|
+
name: 'create_move_route',
|
|
172
|
+
description: 'Build a movement route from a named pattern (patrol/approach/flee/wander/custom) instead of raw move-command codes. Read-only: returns { moveRoute, warnings? }. Use the route as an event page’s autonomous moveRoute (update_map_event with moveType 3), or feed it to set_movement_route for a forced route in an event command list.',
|
|
173
|
+
inputSchema: {
|
|
174
|
+
pattern: z
|
|
175
|
+
.enum(['patrol', 'approach', 'flee', 'wander', 'custom'])
|
|
176
|
+
.describe('patrol (walk a direction and back), approach (toward player), flee (away from player), wander (random), or custom (your own move commands)'),
|
|
177
|
+
direction: z
|
|
178
|
+
.enum(['up', 'down', 'left', 'right'])
|
|
179
|
+
.optional()
|
|
180
|
+
.describe('patrol only: primary direction, walked out and back (default right)'),
|
|
181
|
+
steps: z
|
|
182
|
+
.number()
|
|
183
|
+
.int()
|
|
184
|
+
.positive()
|
|
185
|
+
.optional()
|
|
186
|
+
.describe('patrol only: steps per leg (default 3)'),
|
|
187
|
+
commands: z
|
|
188
|
+
.array(moveCommandShape)
|
|
189
|
+
.optional()
|
|
190
|
+
.describe('custom only: raw move commands { code, parameters }'),
|
|
191
|
+
repeat: z.boolean().optional().describe('Loop the route (patterns loop by default)'),
|
|
192
|
+
skippable: z.boolean().optional().describe('Skip a step when movement is blocked'),
|
|
193
|
+
wait: z.boolean().optional().describe('Wait for the route to finish before continuing'),
|
|
194
|
+
},
|
|
195
|
+
handler: async (_ctx, args) => {
|
|
196
|
+
const route = createMoveRoute(args.pattern, {
|
|
197
|
+
direction: args.direction,
|
|
198
|
+
steps: args.steps,
|
|
199
|
+
commands: args.commands,
|
|
200
|
+
repeat: args.repeat,
|
|
201
|
+
skippable: args.skippable,
|
|
202
|
+
wait: args.wait,
|
|
203
|
+
});
|
|
204
|
+
const warnings = validateMoveRoute(route);
|
|
205
|
+
return warnings.length > 0 ? { moveRoute: route, warnings } : { moveRoute: route };
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'set_movement_route',
|
|
210
|
+
mutates: true,
|
|
211
|
+
forceable: true,
|
|
212
|
+
description: 'Insert a forced "Set Movement Route" (event command 205, plus the 505 continuation rows the editor expects) into an event page’s command list, moving a character as part of that page. characterId: -1 player, 0 this event, N event id. Pass a moveRoute from create_move_route. A structurally invalid route or page refuses the write (nothing is saved) — pass force: true to override.',
|
|
213
|
+
inputSchema: {
|
|
214
|
+
mapId: z.number().int().positive().describe('The ID of the map'),
|
|
215
|
+
eventId: z.number().int().positive().describe('The ID of the event'),
|
|
216
|
+
pageIndex: z.number().int().min(0).describe('Zero-based page index'),
|
|
217
|
+
characterId: z
|
|
218
|
+
.number()
|
|
219
|
+
.int()
|
|
220
|
+
.describe('Target character: -1 player, 0 this event, N event id on the map'),
|
|
221
|
+
moveRoute: moveRouteShape.describe('The move route to force (e.g. from create_move_route)'),
|
|
222
|
+
indent: z.number().int().optional().describe('Indentation level in the list (default 0)'),
|
|
223
|
+
position: z
|
|
224
|
+
.number()
|
|
225
|
+
.int()
|
|
226
|
+
.min(0)
|
|
227
|
+
.optional()
|
|
228
|
+
.describe('Insertion index; defaults to the end of the list'),
|
|
229
|
+
},
|
|
230
|
+
handler: async (ctx, args) => {
|
|
231
|
+
// Normalize before gating: the gate must judge the route as written (with the
|
|
232
|
+
// auto-appended Route-End the schema promises), not the raw caller input.
|
|
233
|
+
const route = normalizeRoute(args.moveRoute);
|
|
234
|
+
const gate = moveWriteGate(args.force, route);
|
|
235
|
+
const event = await setMovementRoute(ctx.projectPath, args.mapId, args.eventId, args.pageIndex, args.characterId, route, args.indent ?? 0, args.position, gate.precommit);
|
|
236
|
+
return gate.respond({ event });
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
//# sourceMappingURL=moveTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveTools.js","sourceRoot":"","sources":["../../src/tools/moveTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ToolDefinition } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Expand a top-left flat tile id + a WxH size into the rectangular grid of tile
|
|
4
|
+
* ids that object occupies on the sheet, handling the two-half-column wrap (the
|
|
5
|
+
* fiddly bit `place_object` deferred). Pure (no I/O) so the wrap math is
|
|
6
|
+
* unit-testable. Throws when `topLeftId` isn't a flat id (0/autotile), when it's
|
|
7
|
+
* outside a sheet's 0–255 local range, or when the WxH rectangle runs off the
|
|
8
|
+
* 16×16 sheet.
|
|
9
|
+
*/
|
|
10
|
+
export declare function flatObjectGrid(topLeftId: number, width: number, height: number): number[][];
|
|
11
|
+
export declare const objectToolDefinitions: ToolDefinition[];
|
|
12
|
+
//# sourceMappingURL=objectTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectTools.d.ts","sourceRoot":"","sources":["../../src/tools/objectTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAoLhD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CA+B3F;AAKD,eAAO,MAAM,qBAAqB,EAAE,cAAc,EA0EjD,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getMapPath } from '../utils/fileHandler.js';
|
|
3
|
+
import { commitChange } from '../utils/commit.js';
|
|
4
|
+
import { getMap, tileIndex } from './mapTools.js';
|
|
5
|
+
import { getTileset } from './tilesetTools.js';
|
|
6
|
+
import { layeredPassability, layeredTerrainTag } from '../tiles/tileFlags.js';
|
|
7
|
+
import { isAutotile, flatSheet, TILE_ID } from '../tiles/tileCodec.js';
|
|
8
|
+
import { baseAwareTransparencyWarning } from './tileTransparency.js';
|
|
9
|
+
/**
|
|
10
|
+
* Smart multi-tile object placement. A B/C "object" (a house, tree,
|
|
11
|
+
* fountain, …) is a rectangular block of *flat* sheet tiles that occupies more
|
|
12
|
+
* than one cell. `place_object` stamps such a block onto a map — by default the
|
|
13
|
+
* upper tile layer (2), so the object draws over the ground — and, using the
|
|
14
|
+
* tileset flags, reports the placement's passability: which ground it
|
|
15
|
+
* covered was walkable, and which footprint cells the object turns into a solid
|
|
16
|
+
* (impassable) obstacle. Warn-by-default, like the rest of the validation layer:
|
|
17
|
+
* it never refuses a placement, it tells you what the placement did.
|
|
18
|
+
*
|
|
19
|
+
* The differentiator from `paint_tiles`: no autotiling (objects are flat), plus
|
|
20
|
+
* the passability site-check + collision report that `paint_tiles` has no notion
|
|
21
|
+
* of. The object grid is supplied explicitly (rows of tile ids, 0 = a transparent
|
|
22
|
+
* hole so L-shaped objects work) — obtain the ids from `find_tile`/`get_tile_catalog`.
|
|
23
|
+
*/
|
|
24
|
+
/** Upper tile layer — objects draw above the ground tiles on layers 0-1. */
|
|
25
|
+
const DEFAULT_LAYER = 2;
|
|
26
|
+
/** Layers that hold real tiles (0-3); 4 is the shadow pen, 5 region ids. */
|
|
27
|
+
const MAX_TILE_LAYER = 3;
|
|
28
|
+
/** The four stacked tile ids at a cell, upper layer first (z 3,2,1,0). */
|
|
29
|
+
function layeredTileIds(map, x, y) {
|
|
30
|
+
const ids = [];
|
|
31
|
+
for (let z = 3; z >= 0; z--) {
|
|
32
|
+
ids.push(map.data[tileIndex(map.width, map.height, x, y, z)] || 0);
|
|
33
|
+
}
|
|
34
|
+
return ids;
|
|
35
|
+
}
|
|
36
|
+
/** Layered passability + terrain tag of a cell as the map currently stands. */
|
|
37
|
+
function cellPassability(map, tileset, x, y) {
|
|
38
|
+
const flags = layeredTileIds(map, x, y).map((id) => tileset.flags[id] ?? 0);
|
|
39
|
+
return { passable: layeredPassability(flags), terrainTag: layeredTerrainTag(flags) };
|
|
40
|
+
}
|
|
41
|
+
/** A cell with no walkable direction is impassable ground (water, cliff, wall, …). */
|
|
42
|
+
function isBlocked(p) {
|
|
43
|
+
return !p.down && !p.left && !p.right && !p.up;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Stamp a rectangular grid of flat object tiles onto a map layer and report the
|
|
47
|
+
* placement's passability. `tiles` is rows (top→bottom) of tile ids (left→right);
|
|
48
|
+
* a 0 leaves that cell untouched so non-rectangular objects can be described.
|
|
49
|
+
*/
|
|
50
|
+
async function placeObject(projectPath, mapId, originX, originY, tiles, layer) {
|
|
51
|
+
const width = tiles[0].length;
|
|
52
|
+
if (tiles.some((row) => row.length !== width)) {
|
|
53
|
+
throw new Error('Object grid must be rectangular (every row the same length)');
|
|
54
|
+
}
|
|
55
|
+
const map = await getMap(projectPath, mapId);
|
|
56
|
+
const tileset = await getTileset(projectPath, map.tilesetId);
|
|
57
|
+
const warnings = [];
|
|
58
|
+
const written = [];
|
|
59
|
+
for (let dy = 0; dy < tiles.length; dy++) {
|
|
60
|
+
for (let dx = 0; dx < width; dx++) {
|
|
61
|
+
const tileId = tiles[dy][dx];
|
|
62
|
+
if (tileId === 0)
|
|
63
|
+
continue; // transparent hole in the stamp — leave the cell as-is
|
|
64
|
+
const x = originX + dx;
|
|
65
|
+
const y = originY + dy;
|
|
66
|
+
if (x < 0 || x >= map.width || y < 0 || y >= map.height) {
|
|
67
|
+
warnings.push(`(${x}, ${y}) is out of bounds (${map.width}x${map.height}) — skipped`);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (isAutotile(tileId)) {
|
|
71
|
+
warnings.push(`tile ${tileId} at (${x}, ${y}) is an autotile — place_object does not autotile; use paint_tiles for terrain`);
|
|
72
|
+
}
|
|
73
|
+
// Site check against the ground *before* we cover it.
|
|
74
|
+
if (isBlocked(cellPassability(map, tileset, x, y).passable)) {
|
|
75
|
+
warnings.push(`(${x}, ${y}) sits on impassable terrain — object placed over it`);
|
|
76
|
+
}
|
|
77
|
+
const existing = map.data[tileIndex(map.width, map.height, x, y, layer)] || 0;
|
|
78
|
+
if (existing !== 0) {
|
|
79
|
+
warnings.push(`overwrote existing tile ${existing} on layer ${layer} at (${x}, ${y})`);
|
|
80
|
+
}
|
|
81
|
+
map.data[tileIndex(map.width, map.height, x, y, layer)] = tileId;
|
|
82
|
+
written.push({ x, y, tileId });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Resulting passability, now that the object tiles are in the stack.
|
|
86
|
+
const footprint = written.map(({ x, y, tileId }) => {
|
|
87
|
+
const { passable, terrainTag } = cellPassability(map, tileset, x, y);
|
|
88
|
+
return { x, y, tileId, passable, terrainTag };
|
|
89
|
+
});
|
|
90
|
+
const collision = footprint.filter((c) => isBlocked(c.passable)).map(({ x, y }) => ({ x, y }));
|
|
91
|
+
// A see-through object tile with no opaque tile beneath shows the map's void
|
|
92
|
+
// (e.g. placed over bare ground with nothing on a lower layer).
|
|
93
|
+
const voidWarning = await baseAwareTransparencyWarning(projectPath, map, tileset, written.map((c) => ({ ...c, layer })));
|
|
94
|
+
if (voidWarning)
|
|
95
|
+
warnings.push(voidWarning);
|
|
96
|
+
await commitChange(getMapPath(projectPath, mapId), map);
|
|
97
|
+
const result = {
|
|
98
|
+
mapId,
|
|
99
|
+
layer,
|
|
100
|
+
placed: written.length,
|
|
101
|
+
footprint,
|
|
102
|
+
collision,
|
|
103
|
+
};
|
|
104
|
+
return warnings.length > 0 ? { ...result, warnings } : result;
|
|
105
|
+
}
|
|
106
|
+
// --- object_tiles: expand a top-left flat id into an id grid (P2-5) ----------
|
|
107
|
+
/**
|
|
108
|
+
* Flat sheets (A5/B–E) are laid out as two side-by-side 8-wide half-columns, so
|
|
109
|
+
* a sheet is visually 16 tiles wide × 16 tall (256 tiles). A local index maps to
|
|
110
|
+
* a visual (col, row): the first 128 indices fill the left half (cols 0–7), the
|
|
111
|
+
* next 128 the right half (cols 8–15). "The tile below index i" is therefore NOT
|
|
112
|
+
* `i + 16` — these two helpers convert between a local index and its visual cell
|
|
113
|
+
* so a multi-tile object's grid can be reconstructed correctly.
|
|
114
|
+
*/
|
|
115
|
+
function flatIndexToColRow(localIndex) {
|
|
116
|
+
const half = Math.floor(localIndex / 128) % 2; // 0 = left half (cols 0-7), 1 = right (8-15)
|
|
117
|
+
const x = localIndex % 8;
|
|
118
|
+
const row = Math.floor((localIndex % 128) / 8); // 0..15
|
|
119
|
+
return { col: half * 8 + x, row };
|
|
120
|
+
}
|
|
121
|
+
function flatColRowToIndex(col, row) {
|
|
122
|
+
const half = Math.floor(col / 8); // 0 (cols 0-7) or 1 (cols 8-15)
|
|
123
|
+
const x = col % 8;
|
|
124
|
+
return half * 128 + row * 8 + x;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Expand a top-left flat tile id + a WxH size into the rectangular grid of tile
|
|
128
|
+
* ids that object occupies on the sheet, handling the two-half-column wrap (the
|
|
129
|
+
* fiddly bit `place_object` deferred). Pure (no I/O) so the wrap math is
|
|
130
|
+
* unit-testable. Throws when `topLeftId` isn't a flat id (0/autotile), when it's
|
|
131
|
+
* outside a sheet's 0–255 local range, or when the WxH rectangle runs off the
|
|
132
|
+
* 16×16 sheet.
|
|
133
|
+
*/
|
|
134
|
+
export function flatObjectGrid(topLeftId, width, height) {
|
|
135
|
+
if (!Number.isInteger(width) || !Number.isInteger(height) || width < 1 || height < 1) {
|
|
136
|
+
throw new Error(`object_tiles width/height must be positive integers (got ${width}x${height})`);
|
|
137
|
+
}
|
|
138
|
+
const sheet = flatSheet(topLeftId);
|
|
139
|
+
if (topLeftId <= 0 || sheet === null) {
|
|
140
|
+
const why = isAutotile(topLeftId) ? ', an autotile — use paint_tiles for terrain' : '';
|
|
141
|
+
throw new Error(`object_tiles needs a flat B/C/D/E/A5 tile id as topLeftId (got ${topLeftId}${why})`);
|
|
142
|
+
}
|
|
143
|
+
const base = TILE_ID[sheet];
|
|
144
|
+
const local0 = topLeftId - base;
|
|
145
|
+
if (local0 < 0 || local0 > 255) {
|
|
146
|
+
throw new Error(`topLeftId ${topLeftId} is out of sheet ${sheet}'s flat range`);
|
|
147
|
+
}
|
|
148
|
+
const { col: col0, row: row0 } = flatIndexToColRow(local0);
|
|
149
|
+
if (col0 + width > 16 || row0 + height > 16) {
|
|
150
|
+
throw new Error(`a ${width}x${height} object at sheet ${sheet} position (col ${col0}, row ${row0}) runs off the 16x16 sheet`);
|
|
151
|
+
}
|
|
152
|
+
const grid = [];
|
|
153
|
+
for (let r = 0; r < height; r++) {
|
|
154
|
+
const rowIds = [];
|
|
155
|
+
for (let c = 0; c < width; c++) {
|
|
156
|
+
rowIds.push(base + flatColRowToIndex(col0 + c, row0 + r));
|
|
157
|
+
}
|
|
158
|
+
grid.push(rowIds);
|
|
159
|
+
}
|
|
160
|
+
return grid;
|
|
161
|
+
}
|
|
162
|
+
/** Which `tilesetNames` slot each flat sheet occupies (A1–A4 are 0–3). */
|
|
163
|
+
const FLAT_SHEET_SLOT = { A5: 4, B: 5, C: 6, D: 7, E: 8 };
|
|
164
|
+
export const objectToolDefinitions = [
|
|
165
|
+
{
|
|
166
|
+
name: 'object_tiles',
|
|
167
|
+
description: "Expand a top-left flat tile id + a width×height size into the grid of tile ids that object occupies on the sheet — feed the returned `tiles` straight into place_object. This handles the flat sheets' two-half-column layout, where the tile below id N is NOT N+16 (indices 0–127 are the left half of the sheet, 128–255 the right), which is otherwise painful to compute by hand. Get the top-left id from find_tile/get_tile_catalog. Read-only. Throws if topLeftId isn't a flat id or the rectangle runs off the 16×16 sheet; warns if the tileset lacks that sheet.",
|
|
168
|
+
inputSchema: {
|
|
169
|
+
tilesetId: z.number().int().positive().describe('The tileset id the object belongs to'),
|
|
170
|
+
topLeftId: z
|
|
171
|
+
.number()
|
|
172
|
+
.int()
|
|
173
|
+
.describe("Raw flat tile id of the object's top-left cell (from find_tile/get_tile_catalog)"),
|
|
174
|
+
width: z.number().int().positive().describe('Object width in tiles'),
|
|
175
|
+
height: z.number().int().positive().describe('Object height in tiles'),
|
|
176
|
+
},
|
|
177
|
+
handler: async (ctx, args) => {
|
|
178
|
+
const tiles = flatObjectGrid(args.topLeftId, args.width, args.height);
|
|
179
|
+
const sheet = flatSheet(args.topLeftId); // flatObjectGrid validated it
|
|
180
|
+
const tileset = await getTileset(ctx.projectPath, args.tilesetId); // throws if missing
|
|
181
|
+
const sheetName = tileset.tilesetNames[FLAT_SHEET_SLOT[sheet]] ?? '';
|
|
182
|
+
const warnings = [];
|
|
183
|
+
if (!sheetName) {
|
|
184
|
+
warnings.push(`tileset ${args.tilesetId} has no ${sheet} sheet — these ids may not render on it`);
|
|
185
|
+
}
|
|
186
|
+
const result = {
|
|
187
|
+
tilesetId: args.tilesetId,
|
|
188
|
+
sheet,
|
|
189
|
+
sheetName,
|
|
190
|
+
topLeftId: args.topLeftId,
|
|
191
|
+
width: args.width,
|
|
192
|
+
height: args.height,
|
|
193
|
+
tiles,
|
|
194
|
+
};
|
|
195
|
+
return warnings.length > 0 ? { ...result, warnings } : result;
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: 'place_object',
|
|
200
|
+
mutates: true,
|
|
201
|
+
description: "Place a multi-tile B/C object (a house, tree, fountain, …) on a map and report its passability. `tiles` is the object's block of flat tile ids as rows (top to bottom), each row left to right; a 0 leaves that cell untouched so L-shaped/irregular objects work. Stamped onto the upper tile layer (2) by default so it draws over the ground. Unlike paint_tiles this does NOT autotile (objects are flat sheet tiles) — instead it uses the tileset flags to warn when a footprint cell sits on impassable terrain or overwrites an existing tile, and returns the resulting per-cell passability plus the `collision` cells the object turns into a solid obstacle. Warn-by-default: never refuses a placement. Get tile ids from find_tile/get_tile_catalog.",
|
|
202
|
+
inputSchema: {
|
|
203
|
+
mapId: z.number().int().positive().describe('The ID of the map'),
|
|
204
|
+
x: z.number().int().describe('Left (top-left) tile x of where the object is placed'),
|
|
205
|
+
y: z.number().int().describe('Top (top-left) tile y of where the object is placed'),
|
|
206
|
+
tiles: z
|
|
207
|
+
.array(z.array(z.number().int().nonnegative()).min(1))
|
|
208
|
+
.min(1)
|
|
209
|
+
.describe('The object as a rectangular grid of tile ids: rows top→bottom, each row left→right. 0 = a transparent cell (left untouched).'),
|
|
210
|
+
layer: z
|
|
211
|
+
.number()
|
|
212
|
+
.int()
|
|
213
|
+
.min(0)
|
|
214
|
+
.max(MAX_TILE_LAYER)
|
|
215
|
+
.optional()
|
|
216
|
+
.describe('Z-layer 0-3 to stamp onto (default 2 = upper tile layer, drawn over the ground)'),
|
|
217
|
+
},
|
|
218
|
+
handler: (ctx, args) => placeObject(ctx.projectPath, args.mapId, args.x, args.y, args.tiles, args.layer ?? DEFAULT_LAYER),
|
|
219
|
+
},
|
|
220
|
+
];
|
|
221
|
+
//# sourceMappingURL=objectTools.js.map
|