Skip to main content

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

Enlevo

2
Posts
1
Following
A member registered Sep 27, 2020

Recent community posts

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

});