Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Teuri, eu fiz uma macro mais massa para rodar os resultados do Sistema.

Tu consegue implementar na ficha?

Segue a Macro:

// Solicita a quantidade de dados a serem rolados para o jogador que executa a macro

let diceCount = await new Promise((resolve) => {

    new Dialog({

        title: "Quantidade de Dados",

        content: `<p>Escolha a quantidade de dados d6 a serem rolados:</p>

                  <input type="number" id="dice-count" value="1" min="1">`,

        buttons: {

            roll: {

                icon: "<i class='fas fa-dice'></i>",

                label: "Rolar",

                callback: (html) => resolve(parseInt(html.find('#dice-count').val()))

            }

        },

        default: "roll",

    }).render(true);

});

// Função para rolar os dados e contar sucessos

async function rollDice(diceCount) {

    let totalSuccesses = 0;

    let extraRolls = 0;

    let allRolls = [];

    // Cria uma fórmula de rolagem para todos os dados ao mesmo tempo

    let formula = `${diceCount}d6`;

    let roll = await new Roll(formula).roll({async: true});

    

    // Exibe a animação dos dados para todos os jogadores

    game.dice3d.showForRoll(roll, game.users.get(game.userId), true);

    roll.dice[0].results.forEach(r => {

        let result = r.result;

        allRolls.push(result);

        if (result % 2 === 0) totalSuccesses++; // Sucessos em números pares

        if (result === 6) extraRolls++; // Conta os 6 para rolarem novamente

    });

    // Se houver dados extras a serem rolados, rola novamente

    if (extraRolls > 0) {

        let extraResult = await rollDice(extraRolls);

        totalSuccesses += extraResult.totalSuccesses;

        allRolls = allRolls.concat(extraResult.rolls);

    }

    return { totalSuccesses, rolls: allRolls };

}

// Executa a rolagem inicial

let { totalSuccesses, rolls } = await rollDice(diceCount);

// Formata a lista de rolagens para exibir no chat

let rollsText = rolls.join(", ");

// Cria a mensagem para o chat com os resultados após todas as rolagens serem concluídas

let messageContent = `

    <h2>Resultado da Rolagem</h2>

    <p>Dados rolados: ${diceCount}</p>

    <p>Rolagens: [${rollsText}]</p>

    <p><span style="font-size: 22px; font-weight: bold; color: ${totalSuccesses > 0 ? 'green' : 'red'};">Total de sucessos:</span> <span style="font-size: 22px; font-weight: bold; color: ${totalSuccesses > 0 ? 'green' : 'red'};">${totalSuccesses}</span></p>

`;

// Aguarda a conclusão da animação do Dice So Nice antes de enviar a mensagem para o chat

await new Promise(resolve => setTimeout(resolve, 3000)); // Ajuste o valor do timeout conforme necessário

// Envia a mensagem para o chat do Foundry

ChatMessage.create({

    speaker: ChatMessage.getSpeaker(),

    content: messageContent

});

Muito massa mano. Vou adicionar na ficha aqui