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,369 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { readJsonFile, readJsonArraySoft, getDataPath } from '../utils/fileHandler.js';
|
|
3
|
+
import { commitChange } from '../utils/commit.js';
|
|
4
|
+
import { firstMissingEffectRef } from '../validation/createRefs.js';
|
|
5
|
+
/**
|
|
6
|
+
* Get all skills from the project
|
|
7
|
+
*/
|
|
8
|
+
export async function getSkills(projectPath) {
|
|
9
|
+
const skillsPath = getDataPath(projectPath, 'Skills.json');
|
|
10
|
+
return await readJsonFile(skillsPath);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build one new skill record against the current array — the shared per-record
|
|
14
|
+
* source of truth for both `create_skill` and `batch_create`. Pure: allocates the
|
|
15
|
+
* next unused id (max existing + 1) and fills every unsupplied field with the
|
|
16
|
+
* new-skill default. Does not push or commit, and does not run the effect
|
|
17
|
+
* reference check (that needs cross-file reads) — the caller owns both.
|
|
18
|
+
*/
|
|
19
|
+
export function buildSkillRecord(existing, input) {
|
|
20
|
+
const maxId = existing.reduce((max, skill) => (skill && skill.id > max ? skill.id : max), 0);
|
|
21
|
+
return {
|
|
22
|
+
id: maxId + 1,
|
|
23
|
+
name: input.name,
|
|
24
|
+
description: input.description || '',
|
|
25
|
+
iconIndex: input.iconIndex || 64,
|
|
26
|
+
mpCost: input.mpCost || 0,
|
|
27
|
+
tpCost: input.tpCost || 0,
|
|
28
|
+
tpGain: 0,
|
|
29
|
+
scope: input.scope || 1, // Default: enemy single
|
|
30
|
+
occasion: 1, // Battle only
|
|
31
|
+
speed: 0,
|
|
32
|
+
successRate: 100,
|
|
33
|
+
repeats: 1,
|
|
34
|
+
hitType: input.damage?.type === 1 || input.damage?.type === 5 ? 1 : 2,
|
|
35
|
+
animationId: input.animationId || 0,
|
|
36
|
+
damage: {
|
|
37
|
+
type: input.damage?.type || 0,
|
|
38
|
+
elementId: input.damage?.elementId || 0,
|
|
39
|
+
formula: input.damage?.formula || '0',
|
|
40
|
+
variance: input.damage?.variance !== undefined ? input.damage.variance : 20,
|
|
41
|
+
critical: input.damage?.critical !== undefined ? input.damage.critical : false,
|
|
42
|
+
},
|
|
43
|
+
effects: input.effects || [],
|
|
44
|
+
message1: input.message1 || '',
|
|
45
|
+
message2: '',
|
|
46
|
+
note: '',
|
|
47
|
+
stypeId: input.stypeId || 1, // Default: Magic
|
|
48
|
+
requiredWtypeId1: 0,
|
|
49
|
+
requiredWtypeId2: 0,
|
|
50
|
+
messageType: 1,
|
|
51
|
+
traits: [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Reject a skill/item whose effects point at a non-existent state / skill /
|
|
56
|
+
* common event (P2-3: throw at author time, like add_class_learning /
|
|
57
|
+
* create_troop). Shared by `create_skill` and `batch_create`.
|
|
58
|
+
*/
|
|
59
|
+
export async function assertSkillEffectRefs(projectPath, skill, skills) {
|
|
60
|
+
const [states, commonEvents] = await Promise.all([
|
|
61
|
+
readJsonArraySoft(getDataPath(projectPath, 'States.json')),
|
|
62
|
+
readJsonArraySoft(getDataPath(projectPath, 'CommonEvents.json')),
|
|
63
|
+
]);
|
|
64
|
+
const missing = firstMissingEffectRef(skill.effects, { states, skills, commonEvents });
|
|
65
|
+
if (missing) {
|
|
66
|
+
throw new Error(`Cannot create skill "${skill.name}": ${missing}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a new skill
|
|
71
|
+
*/
|
|
72
|
+
export async function createSkill(projectPath, skillData) {
|
|
73
|
+
const skills = await getSkills(projectPath);
|
|
74
|
+
const newSkill = buildSkillRecord(skills, skillData);
|
|
75
|
+
await assertSkillEffectRefs(projectPath, newSkill, skills);
|
|
76
|
+
skills.push(newSkill);
|
|
77
|
+
const skillsPath = getDataPath(projectPath, 'Skills.json');
|
|
78
|
+
await commitChange(skillsPath, skills);
|
|
79
|
+
return newSkill;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update a skill's data
|
|
83
|
+
*/
|
|
84
|
+
export async function updateSkill(projectPath, skillId, updates) {
|
|
85
|
+
const skills = await getSkills(projectPath);
|
|
86
|
+
const skillIndex = skills.findIndex((skill) => skill && skill.id === skillId);
|
|
87
|
+
if (skillIndex === -1) {
|
|
88
|
+
throw new Error(`Skill with ID ${skillId} not found`);
|
|
89
|
+
}
|
|
90
|
+
skills[skillIndex] = { ...skills[skillIndex], ...updates, id: skillId };
|
|
91
|
+
const skillsPath = getDataPath(projectPath, 'Skills.json');
|
|
92
|
+
await commitChange(skillsPath, skills);
|
|
93
|
+
return skills[skillIndex];
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Delete a skill
|
|
97
|
+
*/
|
|
98
|
+
export async function deleteSkill(projectPath, skillId) {
|
|
99
|
+
const skills = await getSkills(projectPath);
|
|
100
|
+
const skillIndex = skills.findIndex((skill) => skill && skill.id === skillId);
|
|
101
|
+
if (skillIndex === -1) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
// Don't delete core skills (1, 2)
|
|
105
|
+
if (skillId === 1 || skillId === 2) {
|
|
106
|
+
throw new Error('Cannot delete core skills (Attack/Guard)');
|
|
107
|
+
}
|
|
108
|
+
skills[skillIndex] = null;
|
|
109
|
+
const skillsPath = getDataPath(projectPath, 'Skills.json');
|
|
110
|
+
await commitChange(skillsPath, skills);
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Search skills by name
|
|
115
|
+
*/
|
|
116
|
+
export async function searchSkills(projectPath, searchTerm) {
|
|
117
|
+
const skills = await getSkills(projectPath);
|
|
118
|
+
const lowerSearchTerm = searchTerm.toLowerCase();
|
|
119
|
+
return skills.filter((skill) => !!skill &&
|
|
120
|
+
(skill.name.toLowerCase().includes(lowerSearchTerm) ||
|
|
121
|
+
skill.description.toLowerCase().includes(lowerSearchTerm)));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Create a damage skill (attack spell or physical skill)
|
|
125
|
+
*/
|
|
126
|
+
export async function createDamageSkill(projectPath, name, damageFormula, mpCost, scope, elementId, description) {
|
|
127
|
+
return await createSkill(projectPath, {
|
|
128
|
+
name,
|
|
129
|
+
description: description || `Deals damage with ${name}.`,
|
|
130
|
+
mpCost,
|
|
131
|
+
scope,
|
|
132
|
+
damage: {
|
|
133
|
+
type: 1, // HP damage
|
|
134
|
+
elementId: elementId || 0,
|
|
135
|
+
formula: damageFormula,
|
|
136
|
+
variance: 20,
|
|
137
|
+
critical: true,
|
|
138
|
+
},
|
|
139
|
+
animationId: 1,
|
|
140
|
+
message1: '%1 casts %2!', // %1 = subject name, %2 = skill name
|
|
141
|
+
stypeId: 1, // Magic
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a healing skill
|
|
146
|
+
*/
|
|
147
|
+
export async function createHealingSkill(projectPath, name, healFormula, mpCost, scope, description) {
|
|
148
|
+
return await createSkill(projectPath, {
|
|
149
|
+
name,
|
|
150
|
+
description: description || `Restores HP with ${name}.`,
|
|
151
|
+
mpCost,
|
|
152
|
+
scope,
|
|
153
|
+
damage: {
|
|
154
|
+
type: 3, // HP recovery
|
|
155
|
+
elementId: 0,
|
|
156
|
+
formula: healFormula,
|
|
157
|
+
variance: 20,
|
|
158
|
+
critical: false,
|
|
159
|
+
},
|
|
160
|
+
animationId: 47,
|
|
161
|
+
message1: '%1 casts %2!', // %1 = subject name, %2 = skill name
|
|
162
|
+
stypeId: 1,
|
|
163
|
+
iconIndex: 72,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Create a buff skill
|
|
168
|
+
*/
|
|
169
|
+
export async function createBuffSkill(projectPath, name, buffType, turns, mpCost, scope, description) {
|
|
170
|
+
return await createSkill(projectPath, {
|
|
171
|
+
name,
|
|
172
|
+
description: description || `Strengthens allies with ${name}.`,
|
|
173
|
+
mpCost,
|
|
174
|
+
scope,
|
|
175
|
+
effects: [
|
|
176
|
+
{
|
|
177
|
+
code: 31, // Add buff
|
|
178
|
+
dataId: buffType,
|
|
179
|
+
value1: turns,
|
|
180
|
+
value2: 0,
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
animationId: 52,
|
|
184
|
+
message1: '%1 uses %2!', // %1 = subject name, %2 = skill name
|
|
185
|
+
stypeId: 1,
|
|
186
|
+
iconIndex: 73,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Create a debuff skill
|
|
191
|
+
*/
|
|
192
|
+
export async function createDebuffSkill(projectPath, name, debuffType, turns, mpCost, scope, description) {
|
|
193
|
+
return await createSkill(projectPath, {
|
|
194
|
+
name,
|
|
195
|
+
description: description || `Weakens enemies with ${name}.`,
|
|
196
|
+
mpCost,
|
|
197
|
+
scope,
|
|
198
|
+
effects: [
|
|
199
|
+
{
|
|
200
|
+
code: 32, // Add debuff
|
|
201
|
+
dataId: debuffType,
|
|
202
|
+
value1: turns,
|
|
203
|
+
value2: 0,
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
animationId: 40,
|
|
207
|
+
message1: '%1 uses %2!', // %1 = subject name, %2 = skill name
|
|
208
|
+
stypeId: 1,
|
|
209
|
+
iconIndex: 74,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Create a state-inflicting skill
|
|
214
|
+
*/
|
|
215
|
+
export async function createStateSkill(projectPath, name, stateId, chance, mpCost, scope, description) {
|
|
216
|
+
return await createSkill(projectPath, {
|
|
217
|
+
name,
|
|
218
|
+
description: description || `Inflicts a status ailment with ${name}.`,
|
|
219
|
+
mpCost,
|
|
220
|
+
scope,
|
|
221
|
+
effects: [
|
|
222
|
+
{
|
|
223
|
+
code: 21, // Add state
|
|
224
|
+
dataId: stateId,
|
|
225
|
+
value1: chance,
|
|
226
|
+
value2: 0,
|
|
227
|
+
},
|
|
228
|
+
],
|
|
229
|
+
damage: {
|
|
230
|
+
type: 0,
|
|
231
|
+
elementId: 0,
|
|
232
|
+
formula: '0',
|
|
233
|
+
variance: 20,
|
|
234
|
+
critical: false,
|
|
235
|
+
},
|
|
236
|
+
animationId: 1,
|
|
237
|
+
message1: '%1 uses %2!', // %1 = subject name, %2 = skill name
|
|
238
|
+
stypeId: 1,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
export const skillToolDefinitions = [
|
|
242
|
+
{
|
|
243
|
+
name: 'create_skill',
|
|
244
|
+
mutates: true,
|
|
245
|
+
description: 'Create a new skill with custom properties. An effect referencing a missing record throws: Add/Remove State (code 21/22) → state, Learn Skill (43) → skill, Common Event (44) → common event.',
|
|
246
|
+
inputSchema: {
|
|
247
|
+
name: z.string().describe('Skill name'),
|
|
248
|
+
description: z.string().optional().describe('Skill description'),
|
|
249
|
+
iconIndex: z.number().int().min(0).optional().describe('Icon index (0-1000+)'),
|
|
250
|
+
mpCost: z.number().optional().describe('MP cost'),
|
|
251
|
+
tpCost: z.number().optional().describe('TP cost'),
|
|
252
|
+
scope: z
|
|
253
|
+
.number()
|
|
254
|
+
.int()
|
|
255
|
+
.min(0)
|
|
256
|
+
.optional()
|
|
257
|
+
.describe('Target scope (1=enemy single, 2=enemy all, 7=ally all, etc.)'),
|
|
258
|
+
damage: z
|
|
259
|
+
.object({
|
|
260
|
+
type: z
|
|
261
|
+
.number()
|
|
262
|
+
.int()
|
|
263
|
+
.min(0)
|
|
264
|
+
.optional()
|
|
265
|
+
.describe('Damage type (0=none, 1=HP damage, 3=HP recover, etc.)'),
|
|
266
|
+
elementId: z
|
|
267
|
+
.number()
|
|
268
|
+
.int()
|
|
269
|
+
.min(0)
|
|
270
|
+
.optional()
|
|
271
|
+
.describe('Element ID (0=none, 2=fire, 3=ice, etc.)'),
|
|
272
|
+
formula: z.string().optional().describe('Damage formula (e.g., "a.mat * 4 - b.mdf * 2")'),
|
|
273
|
+
variance: z.number().optional(),
|
|
274
|
+
critical: z.boolean().optional(),
|
|
275
|
+
})
|
|
276
|
+
.optional()
|
|
277
|
+
.describe('Damage configuration'),
|
|
278
|
+
effects: z
|
|
279
|
+
.array(z.unknown())
|
|
280
|
+
.optional()
|
|
281
|
+
.describe('Skill effects (buffs, debuffs, states, etc.)'),
|
|
282
|
+
animationId: z.number().int().min(0).optional().describe('Animation ID'),
|
|
283
|
+
message1: z.string().optional().describe('Battle message'),
|
|
284
|
+
stypeId: z.number().int().min(0).optional().describe('Skill type (1=magic, 2=special, etc.)'),
|
|
285
|
+
},
|
|
286
|
+
handler: (ctx, args) => createSkill(ctx.projectPath, args),
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: 'create_damage_skill',
|
|
290
|
+
mutates: true,
|
|
291
|
+
description: 'Create a damage-dealing skill (simplified)',
|
|
292
|
+
inputSchema: {
|
|
293
|
+
name: z.string().describe('Skill name'),
|
|
294
|
+
damageFormula: z.string().describe('Damage formula (e.g., "a.mat * 4")'),
|
|
295
|
+
mpCost: z.number().describe('MP cost'),
|
|
296
|
+
scope: z.number().int().min(0).describe('Target scope (1=enemy single, 2=enemy all)'),
|
|
297
|
+
elementId: z
|
|
298
|
+
.number()
|
|
299
|
+
.int()
|
|
300
|
+
.min(0)
|
|
301
|
+
.optional()
|
|
302
|
+
.describe('Element ID (0=none, 2=fire, 3=ice, 4=thunder)'),
|
|
303
|
+
description: z.string().optional().describe('Skill description'),
|
|
304
|
+
},
|
|
305
|
+
handler: (ctx, args) => createDamageSkill(ctx.projectPath, args.name, args.damageFormula, args.mpCost, args.scope, args.elementId, args.description),
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: 'create_healing_skill',
|
|
309
|
+
mutates: true,
|
|
310
|
+
description: 'Create a healing skill (simplified)',
|
|
311
|
+
inputSchema: {
|
|
312
|
+
name: z.string().describe('Skill name'),
|
|
313
|
+
healFormula: z.string().describe('Heal formula (e.g., "a.mat * 3 + 100")'),
|
|
314
|
+
mpCost: z.number().describe('MP cost'),
|
|
315
|
+
scope: z.number().int().min(0).describe('Target scope (7=ally all, 11=user)'),
|
|
316
|
+
description: z.string().optional().describe('Skill description'),
|
|
317
|
+
},
|
|
318
|
+
handler: (ctx, args) => createHealingSkill(ctx.projectPath, args.name, args.healFormula, args.mpCost, args.scope, args.description),
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: 'create_buff_skill',
|
|
322
|
+
mutates: true,
|
|
323
|
+
description: 'Create a buff skill (simplified)',
|
|
324
|
+
inputSchema: {
|
|
325
|
+
name: z.string().describe('Skill name'),
|
|
326
|
+
buffType: z.number().int().min(0).describe('Buff type (2=ATK, 3=DEF, 4=MAT, 5=MDF, 6=AGI)'),
|
|
327
|
+
turns: z.number().describe('Number of turns the buff lasts'),
|
|
328
|
+
mpCost: z.number().describe('MP cost'),
|
|
329
|
+
scope: z.number().int().min(0).describe('Target scope (7=ally all, 11=user)'),
|
|
330
|
+
description: z.string().optional().describe('Skill description'),
|
|
331
|
+
},
|
|
332
|
+
handler: (ctx, args) => createBuffSkill(ctx.projectPath, args.name, args.buffType, args.turns, args.mpCost, args.scope, args.description),
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: 'create_state_skill',
|
|
336
|
+
mutates: true,
|
|
337
|
+
description: 'Create a state-inflicting skill (poison, sleep, etc.). Throws if `stateId` does not exist in States.json (create the state first with create_state).',
|
|
338
|
+
inputSchema: {
|
|
339
|
+
name: z.string().describe('Skill name'),
|
|
340
|
+
stateId: z
|
|
341
|
+
.number()
|
|
342
|
+
.int()
|
|
343
|
+
.positive()
|
|
344
|
+
.describe('State ID (4=poison, 5=blind, 6=silence, 8=confusion, etc.)'),
|
|
345
|
+
chance: z.number().describe('Success chance (0.0-1.0)'),
|
|
346
|
+
mpCost: z.number().describe('MP cost'),
|
|
347
|
+
scope: z.number().int().min(0).describe('Target scope (1=enemy single, 2=enemy all)'),
|
|
348
|
+
description: z.string().optional().describe('Skill description'),
|
|
349
|
+
},
|
|
350
|
+
handler: (ctx, args) => createStateSkill(ctx.projectPath, args.name, args.stateId, args.chance, args.mpCost, args.scope, args.description),
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
name: 'update_skill',
|
|
354
|
+
mutates: true,
|
|
355
|
+
description: "Update a skill's properties",
|
|
356
|
+
inputSchema: {
|
|
357
|
+
skillId: z.number().int().positive().describe('The skill ID to update'),
|
|
358
|
+
updates: z.record(z.string(), z.unknown()).describe('Properties to update'),
|
|
359
|
+
},
|
|
360
|
+
handler: (ctx, args) => updateSkill(ctx.projectPath, args.skillId, args.updates),
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
name: 'search_skills',
|
|
364
|
+
description: 'Search skills by name or description',
|
|
365
|
+
inputSchema: { searchTerm: z.string().describe('Search term') },
|
|
366
|
+
handler: (ctx, args) => searchSkills(ctx.projectPath, args.searchTerm),
|
|
367
|
+
},
|
|
368
|
+
];
|
|
369
|
+
//# sourceMappingURL=skillTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillTools.js","sourceRoot":"","sources":["../../src/tools/skillTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { State } from '../utils/types.js';
|
|
2
|
+
import { ToolDefinition } from '../registry.js';
|
|
3
|
+
/**
|
|
4
|
+
* Blank state mirroring what the RPG Maker MZ editor writes for a freshly-created
|
|
5
|
+
* state: no restriction, priority 50, no auto-removal, 1-turn min/max, no
|
|
6
|
+
* messages/icon/traits. Pure so the template shape can be unit-tested. There is no
|
|
7
|
+
* canonical "blank" state in the editor's newdata template (all 30 samples are
|
|
8
|
+
* hand-tuned), so this reproduces the editor's "New State" default field values.
|
|
9
|
+
*/
|
|
10
|
+
export declare function defaultState(): Omit<State, 'id'>;
|
|
11
|
+
/** Get all states from the project. */
|
|
12
|
+
export declare function getStates(projectPath: string): Promise<(State | null)[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new state. Only `name` is required; any omitted field falls back to
|
|
15
|
+
* the editor's new-state default (see {@link defaultState}). Allocates the next
|
|
16
|
+
* unused id (max existing + 1) and writes through the commit choke point.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Build one new state record against the current array — the shared per-record
|
|
20
|
+
* source of truth for both `create_state` and `batch_create`. Pure: template
|
|
21
|
+
* first, caller's defined fields next, computed id last so it always wins.
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildStateRecord(existing: (State | null)[], input: Partial<Omit<State, 'id'>>): State;
|
|
24
|
+
export declare function createState(projectPath: string, overrides: Partial<Omit<State, 'id'>>): Promise<State>;
|
|
25
|
+
/** Update an existing state's properties (shallow merge). */
|
|
26
|
+
export declare function updateState(projectPath: string, stateId: number, updates: Partial<State>): Promise<State>;
|
|
27
|
+
export declare const stateToolDefinitions: ToolDefinition[];
|
|
28
|
+
//# sourceMappingURL=stateTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateTools.d.ts","sourceRoot":"","sources":["../../src/tools/stateTools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CA0BhD;AAED,uCAAuC;AACvC,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAE9E;AAED;;;;GAIG;AACH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAC1B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GAChC,KAAK,CAOP;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,GACpC,OAAO,CAAC,KAAK,CAAC,CAMhB;AAED,6DAA6D;AAC7D,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GACtB,OAAO,CAAC,KAAK,CAAC,CAUhB;AAED,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAoFhD,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { readJsonFile, getDataPath } from '../utils/fileHandler.js';
|
|
3
|
+
import { commitChange } from '../utils/commit.js';
|
|
4
|
+
import { definedOnly } from '../utils/records.js';
|
|
5
|
+
/**
|
|
6
|
+
* Blank state mirroring what the RPG Maker MZ editor writes for a freshly-created
|
|
7
|
+
* state: no restriction, priority 50, no auto-removal, 1-turn min/max, no
|
|
8
|
+
* messages/icon/traits. Pure so the template shape can be unit-tested. There is no
|
|
9
|
+
* canonical "blank" state in the editor's newdata template (all 30 samples are
|
|
10
|
+
* hand-tuned), so this reproduces the editor's "New State" default field values.
|
|
11
|
+
*/
|
|
12
|
+
export function defaultState() {
|
|
13
|
+
return {
|
|
14
|
+
name: '',
|
|
15
|
+
restriction: 0,
|
|
16
|
+
priority: 50,
|
|
17
|
+
motion: 0,
|
|
18
|
+
overlay: 0,
|
|
19
|
+
removeAtBattleEnd: false,
|
|
20
|
+
removeByRestriction: false,
|
|
21
|
+
autoRemovalTiming: 0,
|
|
22
|
+
minTurns: 1,
|
|
23
|
+
maxTurns: 1,
|
|
24
|
+
removeByDamage: false,
|
|
25
|
+
chanceByDamage: 100,
|
|
26
|
+
removeByWalking: false,
|
|
27
|
+
stepsToRemove: 100,
|
|
28
|
+
releaseByDamage: false,
|
|
29
|
+
iconIndex: 0,
|
|
30
|
+
message1: '',
|
|
31
|
+
message2: '',
|
|
32
|
+
message3: '',
|
|
33
|
+
message4: '',
|
|
34
|
+
messageType: 1,
|
|
35
|
+
traits: [],
|
|
36
|
+
note: '',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Get all states from the project. */
|
|
40
|
+
export async function getStates(projectPath) {
|
|
41
|
+
return await readJsonFile(getDataPath(projectPath, 'States.json'));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a new state. Only `name` is required; any omitted field falls back to
|
|
45
|
+
* the editor's new-state default (see {@link defaultState}). Allocates the next
|
|
46
|
+
* unused id (max existing + 1) and writes through the commit choke point.
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* Build one new state record against the current array — the shared per-record
|
|
50
|
+
* source of truth for both `create_state` and `batch_create`. Pure: template
|
|
51
|
+
* first, caller's defined fields next, computed id last so it always wins.
|
|
52
|
+
*/
|
|
53
|
+
export function buildStateRecord(existing, input) {
|
|
54
|
+
const maxId = existing.reduce((max, s) => (s && s.id > max ? s.id : max), 0);
|
|
55
|
+
return {
|
|
56
|
+
...defaultState(),
|
|
57
|
+
...definedOnly(input),
|
|
58
|
+
id: maxId + 1,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export async function createState(projectPath, overrides) {
|
|
62
|
+
const states = await getStates(projectPath);
|
|
63
|
+
const state = buildStateRecord(states, overrides);
|
|
64
|
+
states.push(state);
|
|
65
|
+
await commitChange(getDataPath(projectPath, 'States.json'), states);
|
|
66
|
+
return state;
|
|
67
|
+
}
|
|
68
|
+
/** Update an existing state's properties (shallow merge). */
|
|
69
|
+
export async function updateState(projectPath, stateId, updates) {
|
|
70
|
+
const states = await getStates(projectPath);
|
|
71
|
+
const index = states.findIndex((s) => s && s.id === stateId);
|
|
72
|
+
if (index === -1) {
|
|
73
|
+
throw new Error(`State with ID ${stateId} not found`);
|
|
74
|
+
}
|
|
75
|
+
states[index] = { ...states[index], ...updates, id: stateId };
|
|
76
|
+
await commitChange(getDataPath(projectPath, 'States.json'), states);
|
|
77
|
+
return states[index];
|
|
78
|
+
}
|
|
79
|
+
export const stateToolDefinitions = [
|
|
80
|
+
{
|
|
81
|
+
name: 'create_state',
|
|
82
|
+
mutates: true,
|
|
83
|
+
description: "Create a new state (status condition like Poison/Sleep) in data/States.json. Only `name` is required; omitted fields use the editor's new-state defaults (no restriction, priority 50, no auto-removal, 1-turn duration). Allocates and returns the next unused state id.",
|
|
84
|
+
inputSchema: {
|
|
85
|
+
name: z.string().describe('State name shown in the database and battle messages'),
|
|
86
|
+
restriction: z
|
|
87
|
+
.number()
|
|
88
|
+
.int()
|
|
89
|
+
.optional()
|
|
90
|
+
.describe('Behavior restriction: 0 none, 1 attack enemy, 2 attack anyone, 3 attack ally, 4 cannot move'),
|
|
91
|
+
priority: z
|
|
92
|
+
.number()
|
|
93
|
+
.int()
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Icon-slot display priority 0-100 (default 50)'),
|
|
96
|
+
motion: z
|
|
97
|
+
.number()
|
|
98
|
+
.int()
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('SV-actor motion (0 normal, 2 sleep, 3 dead, …)'),
|
|
101
|
+
overlay: z.number().int().optional().describe('Overlay animation index (0 = none)'),
|
|
102
|
+
removeAtBattleEnd: z
|
|
103
|
+
.boolean()
|
|
104
|
+
.optional()
|
|
105
|
+
.describe('Remove automatically when the battle ends'),
|
|
106
|
+
removeByRestriction: z
|
|
107
|
+
.boolean()
|
|
108
|
+
.optional()
|
|
109
|
+
.describe("Remove when the battler's restriction changes"),
|
|
110
|
+
autoRemovalTiming: z
|
|
111
|
+
.number()
|
|
112
|
+
.int()
|
|
113
|
+
.optional()
|
|
114
|
+
.describe('Auto-removal timing: 0 none, 1 at action end, 2 at turn end'),
|
|
115
|
+
minTurns: z.number().int().optional().describe('Minimum duration in turns when auto-removed'),
|
|
116
|
+
maxTurns: z.number().int().optional().describe('Maximum duration in turns when auto-removed'),
|
|
117
|
+
removeByDamage: z.boolean().optional().describe('Remove when the battler takes damage'),
|
|
118
|
+
chanceByDamage: z
|
|
119
|
+
.number()
|
|
120
|
+
.int()
|
|
121
|
+
.optional()
|
|
122
|
+
.describe('Chance (%) of removal per damage instance when removeByDamage'),
|
|
123
|
+
removeByWalking: z.boolean().optional().describe('Remove after walking a number of steps'),
|
|
124
|
+
stepsToRemove: z
|
|
125
|
+
.number()
|
|
126
|
+
.int()
|
|
127
|
+
.optional()
|
|
128
|
+
.describe('Steps to walk off the state when removeByWalking'),
|
|
129
|
+
releaseByDamage: z.boolean().optional().describe('Whether damage can release the state'),
|
|
130
|
+
iconIndex: z
|
|
131
|
+
.number()
|
|
132
|
+
.int()
|
|
133
|
+
.optional()
|
|
134
|
+
.describe('Icon shown on the battler/status (0 = none)'),
|
|
135
|
+
message1: z.string().optional().describe('Message when an actor gains the state'),
|
|
136
|
+
message2: z.string().optional().describe('Message when an enemy gains the state'),
|
|
137
|
+
message3: z.string().optional().describe('Message when the state persists'),
|
|
138
|
+
message4: z.string().optional().describe('Message when the state is removed'),
|
|
139
|
+
messageType: z.number().int().optional().describe("Engine's message routing form"),
|
|
140
|
+
traits: z.array(z.unknown()).optional().describe('Trait objects { code, dataId, value }'),
|
|
141
|
+
note: z.string().optional().describe('Note field'),
|
|
142
|
+
},
|
|
143
|
+
handler: (ctx, args) => {
|
|
144
|
+
const { dryRun: _dryRun, ...overrides } = args;
|
|
145
|
+
return createState(ctx.projectPath, overrides);
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'update_state',
|
|
150
|
+
mutates: true,
|
|
151
|
+
description: "Update a state's properties (shallow merge into the existing record)",
|
|
152
|
+
inputSchema: {
|
|
153
|
+
stateId: z.number().int().positive().describe('The ID of the state to update'),
|
|
154
|
+
updates: z
|
|
155
|
+
.record(z.string(), z.unknown())
|
|
156
|
+
.describe('Object containing state properties to update'),
|
|
157
|
+
},
|
|
158
|
+
handler: (ctx, args) => updateState(ctx.projectPath, args.stateId, args.updates),
|
|
159
|
+
},
|
|
160
|
+
];
|
|
161
|
+
//# sourceMappingURL=stateTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stateTools.js","sourceRoot":"","sources":["../../src/tools/stateTools.ts"],"names":[],"mappings":"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"}
|