const trait = this.actor.itemTags.trait.find(t => t.name === "Regenerieren");
const name = "Fäulnisregeneration";

if (!trait) return;

const effect = trait.effects.find(e => e.name === "Regenerieren");
const scriptData = effect.system.scriptData;

scriptData[0].script = `
  let chatData = {whisper: ChatMessage.getWhisperRecipients("GM")};
  let message = "";

  let wounds = foundry.utils.duplicate(this.actor.status.wounds);
  let regenRoll = await new Roll("1d10").roll({allowInteractive : false});
  let regen = regenRoll.total;

  if (wounds.value >= wounds.max)
    return;

  if (wounds.value > 0) {
    wounds.value += Math.floor(regen / 2);
    if (wounds.value > wounds.max) {
      wounds.value = wounds.max;
    }
    message += \`<b>\${this.actor.name}</b> regeneriert \${regen} Wunden.\`;

    if (regen === 10) {
      message += "<br>Außerdem regeneriert er eine Kritische Verletzung.";
    }
  } else if (regen >= 8) {
    message += \`<b>\${this.actor.name}</b> hat eine \${regen} erzielt und regeneriert 1 Wunde.\`;
    wounds.value += 1;
    if (regen === 10) {
      message += "<br>Außerdem regeneriert er eine Kritische Verletzung.";
    }
  } else {
    message += \`<b>\${this.actor.name}</b> Regenerationsergebnis von \${regen} - Kein Effekt.\`;
  }

  await this.actor.update({"system.status.wounds": wounds});
  this.script.message(message, {whisper: ChatMessage.getWhisperRecipients("GM")});
`

await effect.update({
  name,
  "system.scriptData": scriptData
});

await trait.update({ name });