81 lines
3.3 KiB
JavaScript
81 lines
3.3 KiB
JavaScript
const globals = require('../globals')
|
|
module.exports = async (message, args, db) => {
|
|
try {
|
|
db.find({
|
|
user: message.author.tag
|
|
}, function (err, docs) {
|
|
if (!docs.length > 0)
|
|
message.reply('Sorry, Für dich habe ich keinen Eintrag 😥')
|
|
else {
|
|
if (!args) message.reply('Sorry, du musst mir schon etwas zum prüfen geben.')
|
|
if (args[1]) {
|
|
var erschwernis = parseInt(args[1]);
|
|
} else {
|
|
erschwernis = 0;
|
|
}
|
|
let values = []
|
|
var roll = [];
|
|
let bonus = 0;
|
|
var ok = 0;
|
|
var patzer = 0;
|
|
var crit = 0;
|
|
for (i in docs[0].character.skills) {
|
|
if (docs[0].character.skills[i].id == args[0]) bonus = docs[0].character.skills[i].level
|
|
}
|
|
let bonus_orig = bonus
|
|
const result = globals.Talente.find(talent => talent.id === args[0]);
|
|
|
|
for (i in result.values) {
|
|
let kuerzel = globals.Werte.find(wert => wert.kuerzel === result.values[i])
|
|
for (val in docs[0].character.attributes) {
|
|
if (docs[0].character.attributes[val].id == kuerzel.id) values.push(docs[0].character.attributes[val].level)
|
|
}
|
|
}
|
|
//message.reply(`Du musst mit ${result.values.join(", ")} würfeln. Die werte sind: ${values.join(", ")}. Dein Bonus auf ${result.name}: ${bonus}`)
|
|
|
|
|
|
// roll dice.
|
|
for (i = 1; i <= 3; i++) {
|
|
var a = Math.floor(Math.random() * 20 + 1);
|
|
roll.push(a);
|
|
}
|
|
// compare results
|
|
for (i = 0; i < 3; i++) {
|
|
if (Math.floor(values[i] + parseInt(erschwernis)) >= roll[i])
|
|
ok++;
|
|
else if ((Math.floor(values[i]) + parseInt(bonus) + parseInt(erschwernis)) >= roll[i]) {
|
|
ok++;
|
|
bonus = bonus - (roll[i] - parseInt(erschwernis) - values[i]);
|
|
}
|
|
if (roll[i] == 1) crit++;
|
|
if (roll[i] == 20) patzer++;
|
|
}
|
|
if (patzer >= 2) {
|
|
message.reply("Du würfelst auf das Talent " + result.name + ".\n"+
|
|
"Deine Werte für " + result.values.join(", ") + " sind " + values.join(", ") + ".\n" +
|
|
"Deine 🎲: " + roll.join(", ") + ". Patzer! Du hast aber auch Pech 😥"
|
|
);
|
|
} else if (crit >= 2) {
|
|
message.reply("Du würfelst auf das Talent " + result.name + ".\n"+
|
|
"Deine Werte für " + result.values.join(", ") + " sind " + values.join(", ") + ".\n" +
|
|
"Deine 🎲: " + roll.join(", ") + ". Damit hast du einen kritischen Erfolg erzielt 🎈✨🥳"
|
|
);
|
|
} else if (ok < 3) {
|
|
message.reply("Du würfelst auf das Talent " + result.name + ".\n"+
|
|
"Deine Werte für " + result.values.join(", ") + " sind " + values.join(", ") + ". (Bonus: " + bonus_orig + ")\n" +
|
|
"Deine 🎲: " + roll.join(", ") + ". Damit hast du nur " + ok + "/3 Proben bestanden. 😪"
|
|
);
|
|
} else {
|
|
message.reply("Du würfelst auf das Talent " + result.name + ".\n"+
|
|
"Deine Werte für " + result.values.join(", ") + " sind " + values.join(", ") + ". (Bonus: " + bonus_orig + ")\n" +
|
|
"Das waren deine 🎲: " + roll.join(", ") + ". Damit hast du " + ok + "/3 Proben bestanden. Dein Bonus: " + bonus + "/" + bonus_orig + "."
|
|
);
|
|
}
|
|
|
|
|
|
}
|
|
});
|
|
} catch (e) {
|
|
throw e
|
|
}
|
|
}; |