import { world } from "@minecraft/server";
import { ActionFormData } from "@minecraft/server-ui";

export function dialogue_npc() {
  // =============================================
  // FUNÇÃO REUTILIZÁVEL PARA TODOS OS NPCS GENÉRICOS
  // =============================================
  function configurarNPCGenerico({
    npcTypeId,                      // ex: "well:npc11"
    som = "npc.homem.dialogue.jovem", // som padrão
    titulo = "wellforced:renderentidade",
    traducaoDialogo,                // ex: "npcdialogue.ninay.msg1"
    traduzirNome = false            // se quiser mostrar nome customizado no título
  }) {
    world.afterEvents.entityHitEntity.subscribe(ev => {
    const player = ev.damagingEntity;
    const target = ev.hitEntity;

    if (!player?.runCommand || target?.typeId !== npcTypeId) return;

    // Som e efeito de lentidão
    player.runCommand(`playsound ${som} @p[r=5]`);
    player.runCommand("effect @e[type=!player,r=5] slowness 20 60 true");

    // Animação aleatória
    const anims = ["dialogo1", "dialogo2", "dialogo3", "dialogo4"];
    const anim = anims[Math.floor(Math.random() * anims.length)];
    player.runCommand(`playanimation @e[type=!player,r=5] animation.humanoid.custom.well.${anim}`);

    // Formulário com renderização do NPC (botão invisível no final)
    const form = new ActionFormData()
        .title("wellforced:renderentidade")                    // título fixo que renderiza o NPC
        .body({ rawtext: [{ translate: traducaoDialogo }] })
        .button({ rawtext: [{ translate: "opcoes.contratar" }] })
        .button({ rawtext: [{ translate: "opcoes.legal" }] })
        .button(' ', "textures/ui/crossout.png")                                          // botão de fechar
        .button("", target.id);                                // botão invisível → renderiza o NPC na tela

    form.show(player).then(result => {
        if (result.canceled) return;

        // O botão invisível não entra no switch (selection vai até 2)
        switch (result.selection) {
            case 0:
                // Clicou em "Contratar"
                // Coloque aqui o que deve acontecer (exemplo):
                // player.runCommand("say Você me contratou!");
                // ou iniciar uma missão, dar item, etc.
                break;

            case 1:
                // Clicou em "Legal" (pode ser só fechar ou outra ação)
                // player.runCommand("say Beleza então!");
                break;

            case 2:
                // Clicou em  (fechar) → não precisa fazer nada
                break;
        }
    });
});
  }

  // =============================================
  // REGISTRO DE TODOS OS NPCS GENÉRICOS
  // =============================================

  // ELFOS GENÉRICOS
  configurarNPCGenerico({
    npcTypeId: "well:npc11",
    som: "npc.homem.dialogue.jovem",
    traducaoDialogo: "npcdialogue.ninay.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc12",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.12"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc13",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.13"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc14",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.14"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc15",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.15"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc16",
    som: "npc.homem.dialogue.velho",
    traducaoDialogo: "npc.dialogue.generic.16"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc17",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npc.dialogue.generic.17"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc18",
    som: "npc.homem.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.18"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc19",
    som: "npc.homem.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.19"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc20",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npc.dialogue.generic.20"
  });

  // HUMANOS GENÉRICOS
  configurarNPCGenerico({
    npcTypeId: "well:npc31",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npcdialogue.pedro.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc32",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npcdialogue.kraven.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc33",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npcdialogue.hendrick.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc34",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npcdialogue.gaby.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc35",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npcdialogue.sonya.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc36",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "dialogo.judite"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc37",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npcdialogue.cris.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc38",
    som: "npc.homem.dialogue.adulto",
    traducaoDialogo: "npcdialogue.tarell.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc39",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npcdialogue.allicy.msg1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc40",
    som: "npc.homem.dialogue.velho",
    traducaoDialogo: "npcdialogue.josh.msg1"
  });

  // MAGOS GENÉRICOS
  configurarNPCGenerico({
    npcTypeId: "well:npc51",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.51"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc52",
    som: "npc.homem.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.52"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc53",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.53"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc54",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.54"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc55",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.55"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc56",
    som: "npc.homem.dialogue.velho",
    traducaoDialogo: "npc.dialogue.generic.56"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc57",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.57"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc58",
    som: "npc.mulher.dialogue.jovem",
    traducaoDialogo: "npc.dialogue.generic.58"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc59",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.59"
  });

  configurarNPCGenerico({
    npcTypeId: "well:npc60",
    som: "npc.mulher.dialogue.adulta",
    traducaoDialogo: "npc.dialogue.generic.60"
  });

  // NPCS ESPECIAIS
  configurarNPCGenerico({
    npcTypeId: "well:npc61",
    som: "npc.mulher.dialogue.velha",
    traducaoDialogo: "npc.dialogue.generic.61"
  });

  configurarNPCGenerico({
    npcTypeId: "well:crianca_elfa1",
    som: "npc.homem.dialogue.crianca",
    traducaoDialogo: "npc.dialogue.generic.crianca_elfa1"
  });

  configurarNPCGenerico({
    npcTypeId: "well:crianca_elfa2",
    som: "npc.mulher.dialogue.crianca",
    traducaoDialogo: "npc.dialogue.generic.crianca_elfa2"
  });

  configurarNPCGenerico({
    npcTypeId: "well:crianca_elfa3",
    som: "npc.mulher.dialogue.crianca",
    traducaoDialogo: "npc.dialogue.generic.crianca_elfa3"
  });
}