← Return to asset pack
Log in with itch.io to leave a comment.
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
← Return to asset pack
Comments
Log in with itch.io to leave a comment.
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