added roll for character attributes.
This commit is contained in:
77
src/commands/attribute.js
Normal file
77
src/commands/attribute.js
Normal file
@ -0,0 +1,77 @@
|
||||
const globals = require('../globals')
|
||||
module.exports = async (message, args, db) => {
|
||||
try {
|
||||
// user calls without arguments.
|
||||
if (!args) {
|
||||
message.reply('Bitte gib mir ein Attributswert, oder das Attribut auf welches du würfeln möchtest.')
|
||||
return
|
||||
}
|
||||
|
||||
let level = 8
|
||||
// user calls with text.
|
||||
if (isNaN(args[0])) {
|
||||
db.find({
|
||||
user: message.author.tag,
|
||||
}, function (err, docs) {
|
||||
if (!docs.length > 0) {
|
||||
message.reply('Sorry, Für dich habe ich keinen Eintrag 😥\n' +
|
||||
'Bitte gib mir den Attributswert, auf welchen du würfeln möchtest.');
|
||||
return
|
||||
} else {
|
||||
let attributename
|
||||
// try to get id of short formatted attributes.
|
||||
if (args[0].length == 2) {
|
||||
for (let i in globals.Werte) {
|
||||
if (globals.Werte[i].kuerzel == args[0].toUpperCase()) attributename = globals.Werte[i].id;
|
||||
}
|
||||
} else {
|
||||
attributename = args[0].toLowerCase();
|
||||
}
|
||||
|
||||
for (let i in docs[0].character.attributes) {
|
||||
if (docs[0].character.attributes[i].id == attributename) level = docs[0].character.attributes[i].level;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
level = args[0];
|
||||
}
|
||||
|
||||
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
|
||||
let dice = []
|
||||
dice.push(Math.floor(Math.random() * 20) + 1);
|
||||
if (dice[0] == 1 || dice[0] == 20) {
|
||||
dice.push(Math.floor(Math.random() * 20) + 1);
|
||||
}
|
||||
|
||||
// handle crits
|
||||
if (countOccurrences(dice, 1) == 2) {
|
||||
message.reply('Du hast einen kritischen Erfolg erzielt (' + dice.join(', ') + ')! 🎉🥳🎆');
|
||||
return
|
||||
} else if (countOccurrences(dice, 20) == 2) {
|
||||
message.reply('Du hast einen Patzer (' + dice.join(', ') + ')! 😭 Viel Erfolg beim nächsten mal!')
|
||||
return
|
||||
}
|
||||
|
||||
if ((dice.length == 2 && dice[1] <= level) || (dice.length == 1 && dice[0] <= level)) {
|
||||
if (attributename) {
|
||||
message.reply('Du hast die Probe auf ' + attributename + ' (Stufe ' + level + ') bestanden.\n' +
|
||||
'Deine 🎲: ' + dice.join(', '))
|
||||
} else {
|
||||
message.reply('Du hast die Probe (Stufe ' + level + ') bestanden.\n' +
|
||||
'Deine 🎲: ' + dice.join(', '))
|
||||
}
|
||||
} else {
|
||||
if (attributename) {
|
||||
message.reply('Du hast die Probe auf ' + attributename + ' (Stufe ' + level + ') leider nicht bestanden 😢.\n' +
|
||||
'Deine 🎲: ' + dice.join(', '))
|
||||
} else {
|
||||
message.reply('Du hast die Probe (Stufe ' + level + ') leider nicht bestanden 😢.\n' +
|
||||
'Deine 🎲: ' + dice.join(', '))
|
||||
}
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
throw e;
|
||||
}
|
||||
};
|
@ -9,7 +9,8 @@ const tp = require('./tp');
|
||||
const talent = require('./talent');
|
||||
const skill = require('./skill');
|
||||
const createFromFile = require('./createFromFile');
|
||||
const {münze, kopf, zahl, heads, tails} = require('./HeadsOrTails')
|
||||
const {münze, kopf, zahl, heads, tails} = require('./HeadsOrTails');
|
||||
const {attribute, eigenschaft, e, a} = require('./attribute')
|
||||
require('dotenv').config();
|
||||
|
||||
const cmdprefix = process.env.CMDPREFIX || '!';
|
||||
@ -27,7 +28,11 @@ const commands = {
|
||||
kopf,
|
||||
zahl,
|
||||
heads,
|
||||
tails
|
||||
tails,
|
||||
e,
|
||||
a,
|
||||
attribute,
|
||||
eigenschaft
|
||||
};
|
||||
const Datastore = require('nedb'),
|
||||
db = new Datastore({
|
||||
|
Reference in New Issue
Block a user