enfusion-mcp 0.4.5 → 0.4.7
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/data/patterns/admin-tool.json +1 -1
- package/data/patterns/custom-action.json +1 -1
- package/data/patterns/custom-component.json +1 -1
- package/data/patterns/custom-faction.json +1 -1
- package/data/patterns/custom-vehicle.json +1 -1
- package/data/patterns/game-mode.json +1 -1
- package/data/patterns/hud-widget.json +1 -1
- package/data/patterns/modded-behavior.json +1 -1
- package/data/patterns/spawn-system.json +1 -1
- package/data/patterns/weapon-reskin.json +1 -1
- package/dist/index.js +1 -1
- package/dist/prompts/create-mod.d.ts.map +1 -1
- package/dist/prompts/create-mod.js +32 -1
- package/dist/prompts/create-mod.js.map +1 -1
- package/dist/prompts/modify-mod.d.ts.map +1 -1
- package/dist/prompts/modify-mod.js +4 -2
- package/dist/prompts/modify-mod.js.map +1 -1
- package/dist/templates/prefab.d.ts.map +1 -1
- package/dist/templates/prefab.js +2 -1
- package/dist/templates/prefab.js.map +1 -1
- package/dist/tools/prefab-create.d.ts.map +1 -1
- package/dist/tools/prefab-create.js +5 -2
- package/dist/tools/prefab-create.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,5 +20,5 @@
|
|
|
20
20
|
],
|
|
21
21
|
"prefabs": [],
|
|
22
22
|
"configs": [],
|
|
23
|
-
"instructions": "
|
|
23
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_PlayerController, InputManager, and any other classes you need — verify methods exist before using them\n2. Edit the AdminComponent to implement your admin commands — only call methods confirmed by api_search\n3. Add keybind checks in the AdminKeyHandler — verify input handling methods via api_search\n4. IMPORTANT: Add authority checks — verify the player has admin privileges before executing commands\n5. Use Rpc methods for server-authoritative commands (teleport, spawn)\n6. Attach the AdminComponent to the player controller prefab\n7. Test with host player in a local server"
|
|
24
24
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call on Enfusion classes. Never guess method names.\n1. Use api_search to find ScriptedUserAction methods and any other classes your action interacts with (e.g., damage managers, inventory, etc.)\n2. Edit the InteractAction script to define what happens on interaction — ONLY use methods confirmed by api_search\n3. Customize CanBePerformedScript to control when the action is available\n4. Customize CanBeShownScript to control visibility\n5. Create the interactive prefab — the MeshObject component MUST reference a base game .xob model or the entity will be invisible\n6. Add the action to the ActionsManagerComponent in the prefab\n7. Place the prefab in a world and test interaction"
|
|
25
25
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up ScriptComponent and any classes your component interacts with — verify methods exist before using them\n2. Edit the component script to add your member variables and logic — only call methods confirmed by api_search\n3. Use [Attribute()] to expose configuration in Workbench\n4. Override EOnInit for initialization, OnPostInit for post-setup — verify these exist on your parent class via api_search\n5. Override OnDelete for cleanup\n6. Attach the component to entity prefabs via their 'components' block\n7. Access the component at runtime: entity.FindComponent(YourComponent)"
|
|
17
17
|
}
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"content": "SCR_Faction {\n m_sKey \"{PREFIX}_faction\"\n m_sName \"{PREFIX} Faction\"\n m_Color \"0,100,200,255\"\n m_sFlagPath \"\"\n}"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"instructions": "
|
|
36
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_Faction, SCR_BaseGameMode, SCR_LoadoutManager, and any faction/loadout classes — verify methods exist before using them\n2. Edit the FactionInit script to set your faction key, name, and color — only call methods confirmed by api_search\n3. Edit the LoadoutConfig to define weapons and equipment\n4. Create the character prefab with prefab_create — characters MUST inherit from a base game character prefab for animations and physics\n5. Add your faction to the game mode's faction list in a modded SCR_BaseGameMode — verify the override method exists first\n6. Test in Game Master by placing faction spawn points"
|
|
37
37
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up VehicleControllerComponent, CarControllerComponent, and any vehicle-related classes — verify methods exist before using them\n2. Find a base vehicle prefab to inherit from (e.g., M151A2, UAZ469)\n3. Create your vehicle prefab inheriting from the base — vehicles MUST inherit from a base game vehicle prefab or they won't have physics/driving setup\n4. Modify vehicle properties (speed, armor, fuel capacity) in the prefab\n5. Add the custom VehicleController component for special behavior — only call methods confirmed by api_search\n6. Place the vehicle in a world or use Game Master to spawn it\n7. Test driving, collision, and vehicle entry/exit"
|
|
25
25
|
}
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"content": "SCR_MissionHeader {\n m_sName \"{PREFIX} Scenario\"\n m_sDescription \"Custom game mode scenario\"\n m_sWorldFile \"\"\n m_sIcon \"\"\n m_bIsModded 1\n}"
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
|
-
"instructions": "
|
|
36
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names.\n1. Use api_search to look up SCR_BaseGameMode, SCR_RespawnSystemComponent, and any other classes you need — verify methods exist before using them\n2. Edit the GameMode script to define round logic, win conditions, and player flow\n3. Edit the ScoringSystem to implement your scoring rules\n4. Create the game mode prefab and attach both components\n5. Create a test world with the game mode prefab placed\n6. Add spawn points for each faction\n7. Test with 'Play' in Workbench"
|
|
37
37
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard.\n1. Use api_search to look up HUD-related classes and verify available methods before writing code\n2. Create a .layout file using layout_create for the widget visual design\n3. Edit the HudComponent to load and manage the layout\n4. Implement UpdateDisplay to show dynamic content\n5. Attach the component to the player controller prefab\n6. Test by joining a game and verifying the widget appears"
|
|
17
17
|
}
|
|
@@ -13,5 +13,5 @@
|
|
|
13
13
|
],
|
|
14
14
|
"prefabs": [],
|
|
15
15
|
"configs": [],
|
|
16
|
-
"instructions": "
|
|
16
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call or override. Never guess Enfusion API method names.\nThis pattern scaffolds a config constants class. You need to add the actual modded scripts yourself:\n1. Use api_search to find the class you want to modify — read its full method list\n2. Verify the method you want to override actually exists in the search results\n3. Use script_create with scriptType 'modded' and the target class as parentClass\n4. Reference constants from the {PREFIX}_Config class for tunable values\n5. ALWAYS call super.MethodName() in overrides unless you want to completely replace the behavior\n6. Use [Attribute()] for values you want editable in Workbench\n7. IMPORTANT: modded classes apply globally — they affect ALL instances of the base class\n8. Only ONE modded class per target class — do not create multiple files modding the same parent"
|
|
17
17
|
}
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
}
|
|
29
29
|
],
|
|
30
30
|
"configs": [],
|
|
31
|
-
"instructions": "
|
|
31
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_RespawnSystemComponent, SCR_SpawnPoint, and any other spawn-related classes — verify methods exist before using them\n2. Edit SpawnManager to implement spawn point selection logic — only call methods confirmed by api_search\n3. Edit SpawnPointComponent to define availability rules\n4. Create the spawn point prefab with prefab_create\n5. Attach SpawnManager to your game mode prefab\n6. Mod the SCR_RespawnSystemComponent to use your custom manager — verify the override method exists first\n7. Place spawn point prefabs in the world\n8. Test with multiple players connecting and respawning"
|
|
32
32
|
}
|
|
@@ -21,5 +21,5 @@
|
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"configs": [],
|
|
24
|
-
"instructions": "
|
|
24
|
+
"instructions": "CRITICAL: Use api_search to verify EVERY method you call. Never guess Enfusion API method names — they are non-standard and many obvious-sounding methods don't exist.\n1. Use api_search to look up SCR_WeaponAttachmentsStorageComponent, BaseWeaponComponent, and weapon-related classes — verify methods exist before using them\n2. Find the base weapon prefab you want to modify\n3. Create a new weapon prefab inheriting from the base weapon — weapons MUST inherit from a base game weapon prefab or they won't function\n4. Modify weapon properties (damage, rate of fire, recoil) in the prefab\n5. Optionally add the modded script for runtime behavior changes — only override methods confirmed by api_search\n6. Add the weapon to a loadout or spawn it in Game Master for testing"
|
|
25
25
|
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"create-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAqKzF"}
|
|
@@ -66,15 +66,45 @@ Before writing any code, assess the scope of what the user is asking for. Think
|
|
|
66
66
|
|
|
67
67
|
This file is the handoff document. A future Claude instance with zero context will read this file and know exactly what the mod is, what's done, and what to build next. Be specific — list actual file names, class names, and system relationships. The user can then use \`/modify-mod\` to continue with subsequent phases.
|
|
68
68
|
|
|
69
|
+
## CRITICAL: API VERIFICATION RULE
|
|
70
|
+
|
|
71
|
+
**NEVER guess, assume, or invent Enfusion API method names.** The Enfusion scripting API is non-standard and poorly documented. Methods that seem obvious often do not exist (e.g., \`HitZone.SetHealth()\`, \`IEntity.GetVelocity()\`, \`AIWorld.GetAIGroups()\`).
|
|
72
|
+
|
|
73
|
+
Before writing ANY script that calls an Enfusion API method, you MUST:
|
|
74
|
+
1. Use **api_search** to find the class
|
|
75
|
+
2. Read the method list in the results
|
|
76
|
+
3. Only use methods that appear in the search results
|
|
77
|
+
4. If the method you need doesn't exist, search for alternative classes or approaches
|
|
78
|
+
5. For damage/health: use \`SCR_CharacterDamageManagerComponent.FullHeal()\`, NOT per-hitzone SetHealth
|
|
79
|
+
6. For any class interaction: search the class first, read its methods, then write code
|
|
80
|
+
|
|
81
|
+
If you cannot find a method via api_search, it probably does not exist. Do NOT write code that calls unverified methods — it will fail to compile silently in Workbench.
|
|
82
|
+
|
|
83
|
+
## CRITICAL: VISIBLE ENTITIES NEED A MESH
|
|
84
|
+
|
|
85
|
+
Any entity that should be visible in the game world MUST have a **MeshObject** component with its \`Object\` property set to an actual 3D model (\`.xob\` file) from the base game. Without this, the entity will be **completely invisible** — no model, no collision, nothing.
|
|
86
|
+
|
|
87
|
+
You don't need to create custom models. Just borrow one from the base game that looks reasonable:
|
|
88
|
+
- Use **api_search** or **project_browse** on the base Arma Reforger data to find \`.xob\` paths
|
|
89
|
+
- Example paths (format: \`{GUID}path/to/model.xob\`):
|
|
90
|
+
- Military barrel: \`{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob\`
|
|
91
|
+
- Ammo crate: \`{1E648E8B6B28E837}Assets/Props/Military/AmmoBoxes/AmmoBox_545x39_60rnd.xob\`
|
|
92
|
+
- Medical box: \`{D26ABAE8B017EC4E}Assets/Props/Military/CasualtyBag/CasualtyBag_01.xob\`
|
|
93
|
+
- Pick something that vaguely fits the purpose — a healing station could use a medical box, a terminal could use a radio, etc.
|
|
94
|
+
- After creating a prefab with **prefab_create**, use **project_read** + **project_write** to set the MeshObject \`Object\` property to a real model path
|
|
95
|
+
|
|
96
|
+
This applies to ALL physical in-game objects: interactive props, spawn points with markers, placed items, vehicles, weapons, etc.
|
|
97
|
+
|
|
69
98
|
## STEP 1: BUILD
|
|
70
99
|
|
|
71
|
-
1. Use **api_search** to find the relevant Enfusion API classes
|
|
100
|
+
1. Use **api_search** to find the relevant Enfusion API classes AND verify that the methods you plan to use actually exist. Search every class you intend to call methods on. Do this BEFORE writing any scripts.
|
|
72
101
|
|
|
73
102
|
2. Use **mod_create** to scaffold the addon project. Pick a good name, class prefix, and pattern based on the description.
|
|
74
103
|
|
|
75
104
|
3. Use **script_create** for each script:
|
|
76
105
|
- Correct scriptType (component, gamemode, action, modded, etc.)
|
|
77
106
|
- Proper method stubs and description comments
|
|
107
|
+
- ONLY call methods verified via api_search
|
|
78
108
|
|
|
79
109
|
4. Use **prefab_create** for any prefabs needed (spawn points, entities, game mode, etc.)
|
|
80
110
|
|
|
@@ -99,6 +129,7 @@ This file is the handoff document. A future Claude instance with zero context wi
|
|
|
99
129
|
## STEP 2: SUMMARIZE
|
|
100
130
|
|
|
101
131
|
Enfusion rules:
|
|
132
|
+
- NEVER guess API methods — if you didn't find it via api_search, it doesn't exist
|
|
102
133
|
- All scripts go in Scripts/Game/ (other folders are silently ignored)
|
|
103
134
|
- Use a consistent class prefix (e.g., ZS_ for Zombie Survival)
|
|
104
135
|
- modded classes affect ALL instances globally
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-mod.js","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,QAAwB;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE1C,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,gGAAgG,CAAC;SAC9G;KACF,EACD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0CAA0C,WAAW
|
|
1
|
+
{"version":3,"file":"create-mod.js","sourceRoot":"","sources":["../../src/prompts/create-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,QAAwB;IACjF,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;IAE1C,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,gGAAgG,CAAC;SAC9G;KACF,EACD,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0CAA0C,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0IrE,WAAW,EAAE;iBACJ;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"modify-mod.d.ts","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiG/D"}
|
|
@@ -34,9 +34,9 @@ Follow this workflow — every step is mandatory:
|
|
|
34
34
|
- Read existing scripts, prefabs, configs, and layouts
|
|
35
35
|
- Identify the class prefix convention in use
|
|
36
36
|
|
|
37
|
-
3. **Research the API** — Use **api_search** to find relevant classes and methods.
|
|
37
|
+
3. **Research the API** — Use **api_search** to find relevant classes and methods. **CRITICAL: NEVER guess or assume Enfusion API method names.** The API is non-standard — methods that seem obvious often don't exist (e.g., \`HitZone.SetHealth()\`, \`IEntity.GetVelocity()\`). You MUST search every class you plan to call methods on and verify the methods exist in the search results. If a method isn't listed, it does not exist — find an alternative.
|
|
38
38
|
|
|
39
|
-
4. **Plan the changes** — Determine what to modify, create, or remove. For phased projects, verify your plan aligns with the MODPLAN.
|
|
39
|
+
4. **Plan the changes** — Determine what to modify, create, or remove. For phased projects, verify your plan aligns with the MODPLAN. Only use API methods verified via api_search.
|
|
40
40
|
|
|
41
41
|
5. **Implement** — Make all modifications:
|
|
42
42
|
- Existing files: **project_read** then **project_write**
|
|
@@ -66,11 +66,13 @@ Follow this workflow — every step is mandatory:
|
|
|
66
66
|
11. Summarize what changed and how the mod works now.
|
|
67
67
|
|
|
68
68
|
Enfusion rules:
|
|
69
|
+
- NEVER guess API methods — if you didn't verify it via api_search, assume it doesn't exist
|
|
69
70
|
- Read existing code BEFORE modifying it. Understand what's there first.
|
|
70
71
|
- Match existing code style, class prefix, and naming conventions.
|
|
71
72
|
- All scripts go in Scripts/Game/ (other folders are silently ignored)
|
|
72
73
|
- modded classes affect ALL instances globally
|
|
73
74
|
- Always call super.MethodName() in overrides unless intentionally replacing
|
|
75
|
+
- VISIBLE ENTITIES NEED A MESH: Any entity placed in the world MUST have a MeshObject component with its \`Object\` property set to a base game \`.xob\` model path. Without this, the entity is invisible. You don't need custom models — just pick any existing base game model that roughly fits (e.g., a medical box for a healing station, a radio for a terminal). After creating a prefab, always set the MeshObject Object property to a real path like \`{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob\`.
|
|
74
76
|
|
|
75
77
|
YOUR FINAL SUMMARY MUST ONLY contain:
|
|
76
78
|
- What files were changed/added and what each change does
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modify-mod.js","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,0EAA0E,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,2HAA2H,CAAC;SACzI;KACF,EACD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4CAA4C,WAAW;;aAE5D,IAAI
|
|
1
|
+
{"version":3,"file":"modify-mod.js","sourceRoot":"","sources":["../../src/prompts/modify-mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,cAAc,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,mHAAmH;QACrH,UAAU,EAAE;YACV,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,0EAA0E,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,2HAA2H,CAAC;SACzI;KACF,EACD,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4CAA4C,WAAW;;aAE5D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8IAmE6H;iBACnI;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab.d.ts","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"prefab.d.ts","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA4ED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA4D1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/templates/prefab.js
CHANGED
|
@@ -50,7 +50,8 @@ const PREFAB_CONFIGS = {
|
|
|
50
50
|
defaultParent: "",
|
|
51
51
|
subdirectory: "Prefabs/Props",
|
|
52
52
|
defaultComponents: [
|
|
53
|
-
{ type: "MeshObject", properties: {} },
|
|
53
|
+
{ type: "MeshObject", properties: { Object: "" } },
|
|
54
|
+
{ type: "RigidBody", properties: { ModelGeometry: "1" } },
|
|
54
55
|
{ type: "ActionsManagerComponent", properties: {} },
|
|
55
56
|
],
|
|
56
57
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAqB,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwClD,MAAM,cAAc,GAAyC;IAC3D,SAAS,EAAE;QACT,UAAU,EAAE,sBAAsB;QAClC,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,oBAAoB;QAClC,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5D,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,EAAE,EAAE;SAC7D;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE;YACtD,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACvC;KACF;IACD,MAAM,EAAE;QACN,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,EAAE;YAC3C,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACvC;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,EAAE,EAAE;SAC3C;KACF;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE,EAAE;YAC5C,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,EAAE,EAAE;SACvD;KACF;IACD,WAAW,EAAE;QACX,UAAU,EAAE,eAAe;QAC3B,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE;YACjB,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"prefab.js","sourceRoot":"","sources":["../../src/templates/prefab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab-create.d.ts","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"prefab-create.d.ts","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAuH5E"}
|
|
@@ -5,7 +5,7 @@ import { generatePrefab, getPrefabSubdirectory, getPrefabFilename, } from "../te
|
|
|
5
5
|
import { validateFilename } from "../utils/safe-path.js";
|
|
6
6
|
export function registerPrefabCreate(server, config) {
|
|
7
7
|
server.registerTool("prefab_create", {
|
|
8
|
-
description: "Create a new Entity Template (.et) prefab file for an Arma Reforger mod. Generates a properly structured prefab with components in valid Enfusion text serialization format.",
|
|
8
|
+
description: "Create a new Entity Template (.et) prefab file for an Arma Reforger mod. Generates a properly structured prefab with components in valid Enfusion text serialization format. IMPORTANT: For 'interactive' and other visible prefabs, the MeshObject component MUST have its 'Object' property set to a base game .xob model path (e.g., '{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob') or the entity will be invisible in-game. Use api_search to find model paths.",
|
|
9
9
|
inputSchema: {
|
|
10
10
|
name: z
|
|
11
11
|
.string()
|
|
@@ -73,11 +73,14 @@ export function registerPrefabCreate(server, config) {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
writeFileSync(targetPath, content, "utf-8");
|
|
76
|
+
const meshWarning = (prefabType === "interactive" || prefabType === "generic")
|
|
77
|
+
? "\n\n⚠️ IMPORTANT: The MeshObject 'Object' property is empty. You MUST set it to a base game .xob model path (e.g., '{5F4C4181F065B447}Assets/Props/Military/Barrels/BarrelGreen_01.xob') or the entity will be INVISIBLE in-game. Use project_write to update the prefab."
|
|
78
|
+
: "";
|
|
76
79
|
return {
|
|
77
80
|
content: [
|
|
78
81
|
{
|
|
79
82
|
type: "text",
|
|
80
|
-
text: `Prefab created: ${subdir}/${filename}\n\n\`\`\`\n${content}\n
|
|
83
|
+
text: `Prefab created: ${subdir}/${filename}\n\n\`\`\`\n${content}\n\`\`\`${meshWarning}`,
|
|
81
84
|
},
|
|
82
85
|
],
|
|
83
86
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefab-create.js","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAc;IACpE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"prefab-create.js","sourceRoot":"","sources":["../../src/tools/prefab-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAc;IACpE,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,4dAA4d;QAC9d,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,qDAAqD,CAAC;YAClE,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC;gBACJ,WAAW;gBACX,SAAS;gBACT,QAAQ;gBACR,YAAY;gBACZ,UAAU;gBACV,aAAa;gBACb,SAAS;aACV,CAAC;iBACD,QAAQ,CACP,+FAA+F,CAChG;YACH,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4GAA4G,CAC7G;YACH,UAAU,EAAE,CAAC;iBACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;gBACnF,UAAU,EAAE,CAAC;qBACV,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBAClB,QAAQ,EAAE;qBACV,QAAQ,CAAC,oCAAoC,CAAC;aAClD,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACpF,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,sEAAsE,CACvE;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SACpE;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QACjF,MAAM,QAAQ,GAAG,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC;QAEnD,IAAI,CAAC;YACH,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEvB,MAAM,OAAO,GAAG,cAAc,CAAC;gBAC7B,IAAI;gBACJ,UAAU,EAAE,UAAwB;gBACpC,YAAY;gBACZ,UAAU,EAAE,UAAwC;gBACpD,WAAW;aACZ,CAAC,CAAC;YAEH,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAwB,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAE7C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE1C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,wBAAwB,MAAM,IAAI,QAAQ,mDAAmD,OAAO,UAAU;6BACrH;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAED,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAE5C,MAAM,WAAW,GAAG,CAAC,UAAU,KAAK,aAAa,IAAI,UAAU,KAAK,SAAS,CAAC;oBAC5E,CAAC,CAAC,2QAA2Q;oBAC7Q,CAAC,CAAC,EAAE,CAAC;gBAEP,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,mBAAmB,MAAM,IAAI,QAAQ,eAAe,OAAO,WAAW,WAAW,EAAE;yBAC1F;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mFAAmF,OAAO,qEAAqE;qBACtK;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,GAAG,EAAE,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|