Rolador de Ataques
body {
display: flex;
justify-content: flex-end;
align-items: center;
height: 100vh;
margin: 0;
font-family: Verdana, Geneva, sans-serif;
background-color: #f4f4f4;
}
.container {
text-align: right;
padding: 20px;
border: 1px solid #ccc;
border-radius: 5px;
background-color: #fff;
max-width: 400px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.container h1 {
margin-top: 0;
}
.container label {
display: block;
margin-bottom: 5px;
}
.container input {
margin-bottom: 10px;
}
.container button {
background-color: #1da1f2;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
border-radius: 5px;
cursor: pointer;
margin-right: 10px;
}
Rolador de Ataques
Bônus de Ataque:
Dado de Dano da Arma (Ex: 1d8):
Bônus de Dano:
Margem de Ameaça de Acerto Crítico:
Rolar Ataque
Compartilhar no Twitter
Copiar Resultado
function rolarAtaque() {
const bonusAtaque = parseInt(document.getElementById(“bonusAtaque”).value) || 0;
const danoArma = document.getElementById(“danoArma”).value;
const bonusDano = parseInt(document.getElementById(“bonusDano”).value) || 0;
const margemAmeaca = parseInt(document.getElementById(“margemAmeaca”).value) || 20;
if (!danoArma.match(/^\d+d\d+$/)) {
alert(“Digite o dado de dano da arma no formato correto (Ex: 1d8).”);
return;
}
const [numDados, ladosDados] = danoArma.split(“d”).map(Number);
// Rolagem do dado de ataque (1d20)
const dadoAtaque = Math.floor(Math.random() * 20) + 1;
const totalAtaque = dadoAtaque + bonusAtaque;
let resultado = `Resultado do dado de ataque: ${dadoAtaque} (${totalAtaque})\n`;
if (dadoAtaque >= margemAmeaca) {
// Rolagem do dado de dano dobrado
const danoRolado = Array.from({ length: numDados * 2 }, () => Math.floor(Math.random() * ladosDados) + 1);
const totalDano = danoRolado.reduce((sum, roll) => sum + roll, 0) + bonusDano;
resultado += `Dado de dano dobrado (2x ${numDados}d${ladosDados}): ${danoRolado.join(“, “)}\n`;
resultado += `Total de dano dobrado: ${totalDano}`;
} else {
// Rolagem do dado de dano normal
const danoRolado = Array.from({ length: numDados }, () => Math.floor(Math.random() * ladosDados) + 1);
const totalDano = danoRolado.reduce((sum, roll) => sum + roll, 0) + bonusDano;
resultado += `Dado de dano (1x ${numDados}d${ladosDados}): ${danoRolado.join(“, “)}\n`;
resultado += `Total de dano: ${totalDano}`;
}
// Adiciona o bônus de ataque no resultado final
resultado += `\nBônus de ataque: ${bonusAtaque}`;
document.getElementById(“resultado”).innerText = resultado;
}
function compartilharTwitter() {
const resultado = document.getElementById(“resultado”).innerText;
const textoCompartilhamento = “Este foi meu resultado no rolador de ataques: ” + resultado;
const url = `https://twitter.com/intent/tweet?text=${encodeURIComponent(textoCompartilhamento)}`;
abrirNovaAba(url);
}
function copiarResultado() {
const resultado = document.getElementById(“resultado”).innerText;
const textarea = document.createElement(“textarea”);
textarea.value = resultado;
document.body.appendChild(textarea);
textarea.select();
document.execCommand(“copy”);
document.body.removeChild(textarea);
alert(“Resultado copiado para a área de transferência!”);
}
function abrirNovaAba(url) {
window.open(url, “_blank”, “width=600,height=400”);
}
Últimos comentários