{ "label": "Macros (Mutationen)", "entries": { "Generate Mutation": { "name": "Mutation erzeugen", "command": "if (!game.wfrp4eMutationRoll) {\n ui.notifications.error(\"Mutations-Wurf-Funktion nicht gefunden. Stelle sicher, dass das Weltskript geladen ist.\");\n return;\n}\n\nconst actors = game.actors.contents;\nconst folders = game.folders.filter(f => f.type === \"Actor\");\n\nif (!actors.length) {\n ui.notifications.warn(\"Keine Akteure zur Auswahl verfügbar.\");\n return;\n}\n\nconst folderOptions = folders.reduce((html, folder) => {\n return html + ``;\n}, \"\");\n\nfunction getActorsByFolder(folderId) {\n return actors.filter(actor => folderId === \"all\" || actor.folder?.id === folderId);\n}\n\nfunction updateActorDropdown(html, folderId) {\n const actorSelect = html.find(\"#actor-select\");\n const filteredActors = getActorsByFolder(folderId);\n actorSelect.html(filteredActors.map(actor => ``).join(\"\"));\n}\n\nnew Dialog({\n title: \"Auflösung von Körper und Geist\",\n content: `\n
\n `,\n render: (html) => {\n html.find(\"#folder-select\").change(event => {\n updateActorDropdown(html, event.target.value);\n });\n },\n buttons: {\n roll: {\n label: \"Mutation würfeln\",\n callback: (html) => {\n const selectedActor = game.actors.get(html.find(\"#actor-select\").val());\n const selectedMutationSource = html.find(\"#mutation-type\").val();\n if (selectedActor) {\n game.wfrp4eMutationRoll(selectedActor, selectedMutationSource);\n } else {\n ui.notifications.error(\"Ungültige Akteursauswahl.\");\n }\n }\n },\n cancel: { label: \"Abbrechen\" }\n },\n default: \"roll\"\n}).render(true);" } } }