diff --git a/src/commands/create.js b/src/commands/create.js index b70e96e..a932caa 100644 --- a/src/commands/create.js +++ b/src/commands/create.js @@ -4,8 +4,6 @@ module.exports = async (message, args, db) => { db.find({ user: message.author.tag }, function (err, docs) { - // docs is an array containing documents Mars, Earth, Jupiter If no document is - // found, docs is equal to [] if(!docs.length>0) db.insert({user: message.author.tag, gold: 0, @@ -13,25 +11,10 @@ module.exports = async (message, args, db) => { bronce: 0, iron: 0, hp: 0 - }) - console.log(docs) }); } catch (e) { throw e } -} - - - // eslint-disable-next-line no-undef - /*db.query('SELECT * FROM dsageld WHERE userName = ' + '"' + message.author.tag + '"', function(err, row) { //the row is the user's data - if(row.length < 1) { - // eslint-disable-next-line no-undef - db.query('INSERT INTO `dsageld` (`userName`, `GD`,`ST`, `BH`, `EK`, `LP`) VALUES (' + '"' + message.author.tag + '"' + ', 0, 0, 0, 0, 0)'); - message.reply('Dein Eintrag wurde registriert.'); - } else if(row.length >= 1) { - message.reply('Dein Eintrag existiert bereits.'); - } - }); -};*/ \ No newline at end of file +} \ No newline at end of file diff --git a/src/commands/createFromFile.js b/src/commands/createFromFile.js index 3ded293..e1ef7b5 100644 --- a/src/commands/createFromFile.js +++ b/src/commands/createFromFile.js @@ -1,37 +1,24 @@ module.exports = async (message, data, db) => { try { - db.find({ - user: message.author.tag - }, function (err, docs) { - // docs is an array containing documents Mars, Earth, Jupiter If no document is - // found, docs is equal to [] - if(!docs.length>0) - db.insert({user: message.author.tag, - gold: 0, - silver: 0, - bronce: 0, - iron: 0, - hp: 0, - character: data - - }) - - console.log(docs) - }); + console.log(message.channel) + db.find({ + user: message.author.tag + }, function (err, docs) { + if (!docs.length > 0) + db.insert({ + user: message.author.tag, + gold: 0, + silver: 0, + bronce: 0, + iron: 0, + hp: 0, + character: data + }, function (err, docs) { + message.reply('Ich habe deine Daten abgespeichert.') + //console.log(docs[0].character.name) + }) + }); } catch (e) { - throw e + throw e } -} - - - // eslint-disable-next-line no-undef - /*db.query('SELECT * FROM dsageld WHERE userName = ' + '"' + message.author.tag + '"', function(err, row) { //the row is the user's data - if(row.length < 1) { - // eslint-disable-next-line no-undef - db.query('INSERT INTO `dsageld` (`userName`, `GD`,`ST`, `BH`, `EK`, `LP`) VALUES (' + '"' + message.author.tag + '"' + ', 0, 0, 0, 0, 0)'); - message.reply('Dein Eintrag wurde registriert.'); - } else if(row.length >= 1) { - message.reply('Dein Eintrag existiert bereits.'); - } - }); -};*/ \ No newline at end of file +} \ No newline at end of file diff --git a/src/commands/index.js b/src/commands/index.js index 02467d2..c8ea0bd 100644 --- a/src/commands/index.js +++ b/src/commands/index.js @@ -5,6 +5,7 @@ const create = require('./create'); const add = require('./add'); const remove = require('./remove'); const show = require('./show'); +const tp = require('./tp') const talent = require('./talent') const skill = require('./skill') const createFromFile = require('./createFromFile') @@ -19,6 +20,7 @@ const commands = { remove, show, skill, + tp, talent, }; var Datastore = require('nedb'), @@ -28,8 +30,7 @@ var Datastore = require('nedb'), }); module.exports = async (message) => { - - if ((message.attachments.length > 0) && message.channel.type == 'dm') { + if ((message.attachments.size > 0) && message.channel.type == 'dm') { try { let response = await fetch(message.attachments.first().url) let data = await validateJSON(response); diff --git a/src/commands/skill.js b/src/commands/skill.js index c23e335..3c0e383 100644 --- a/src/commands/skill.js +++ b/src/commands/skill.js @@ -1,13 +1,8 @@ -// eslint-disable-next-line no-unused-vars module.exports = async (message, args, db) => { - // eslint-disable-next-line no-undef try { - //console.log(message) db.find({ user: message.author.tag }, function (err, docs) { - // docs is an array containing documents Mars, Earth, Jupiter If no document is - // found, docs is equal to [] if (!docs.length > 0) message.reply('Sorry, Für dich habe ich keinen Eintrag 😥') else { diff --git a/src/commands/talent.js b/src/commands/talent.js index dc696c3..a5707f0 100644 --- a/src/commands/talent.js +++ b/src/commands/talent.js @@ -1,56 +1,81 @@ -// eslint-disable-next-line no-unused-vars +const globals = require('../globals') module.exports = async (message, args, db) => { - if (args.length < 3) { - message.reply("Der Talentwurf funktioniert so:"); - message.reply( - "!talent Eigenschaftswert1 Eigenschaftswert2 Eigenschaftswert3 [Bonus] [Erschwernis]" - ); - } else { + 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 = []; - if (args[3]) { - var bonus = parseInt(args[3]); - } else { - bonus = 0; - } - if (args[4]) { - var erschwernis = parseInt(args[4]); - } else { - erschwernis = 0; - } - for (i = 1; i <= 3; i++) { - var a = Math.floor(Math.random() * 20 + 1); - roll.push(a); - } + 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(parseInt(args[i]) + parseInt(erschwernis)) >= roll[i]) - ok++; - else if ( - Math.floor(parseInt(args[i]) + parseInt(bonus) + parseInt(erschwernis)) >= roll[i]) { - ok++; - bonus = bonus - (roll[i] - parseInt(erschwernis) - parseInt(args[i])); - } - if (roll[i] == 1) crit++; - if (roll[i] == 20) patzer++; + 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( - "Deine 🎲: " + roll.join(", ") + ". Patzer! Du hast aber auch Pech 😥" - ); + 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( - "Deine 🎲: " + roll.join(", ") + ". Damit hast du einen kritischen Erfolg erzielt 🎈✨🥳" - ); + 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( - "Deine 🎲: " + roll.join(", ") + ". Damit hast du nur " + ok + "/3 Proben bestanden. 😪" - ); + 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( - "Das waren deine 🎲: " + roll.join(", ") + ". Damit hast du " + ok + "/3 Proben bestanden. Dein Bonus: " + bonus + "/" + args[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" + + "Das waren deine 🎲: " + roll.join(", ") + ". Damit hast du " + ok + "/3 Proben bestanden. Dein Bonus: " + bonus + "/" + bonus_orig + "." + ); } - } -}; + + + } + }); + } catch (e) { + throw e + } +}; \ No newline at end of file diff --git a/src/commands/tp.js b/src/commands/tp.js new file mode 100644 index 0000000..5a446ec --- /dev/null +++ b/src/commands/tp.js @@ -0,0 +1,54 @@ +// eslint-disable-next-line no-unused-vars +module.exports = async (message, args, db) => { + if (args.length < 3) { + message.reply("Der Talentwurf funktioniert so:\n"+ + "!tp Eigenschaftswert1 Eigenschaftswert2 Eigenschaftswert3 [Bonus] [Erschwernis]"); + } else { + var roll = []; + if (args[3]) { + var bonus = parseInt(args[3]); + } else { + bonus = 0; + } + if (args[4]) { + var erschwernis = parseInt(args[4]); + } else { + erschwernis = 0; + } + for (i = 1; i <= 3; i++) { + var a = Math.floor(Math.random() * 20 + 1); + roll.push(a); + } + var ok = 0; + var patzer = 0; + var crit = 0; + for (i = 0; i < 3; i++) { + if (Math.floor(parseInt(args[i]) + parseInt(erschwernis)) >= roll[i]) + ok++; + else if ( + Math.floor(parseInt(args[i]) + parseInt(bonus) + parseInt(erschwernis)) >= roll[i]) { + ok++; + bonus = bonus - (roll[i] - parseInt(erschwernis) - parseInt(args[i])); + } + if (roll[i] == 1) crit++; + if (roll[i] == 20) patzer++; + } + if (patzer >= 2) { + message.reply( + "Deine 🎲: " + roll.join(", ") + ". Patzer! Du hast aber auch Pech 😥" + ); + } else if (crit >= 2) { + message.reply( + "Deine 🎲: " + roll.join(", ") + ". Damit hast du einen kritischen Erfolg erzielt 🎈✨🥳" + ); + } else if (ok < 3) { + message.reply( + "Deine 🎲: " + roll.join(", ") + ". Damit hast du nur " + ok + "/3 Proben bestanden. 😪" + ); + } else { + message.reply( + "Das waren deine 🎲: " + roll.join(", ") + ". Damit hast du " + ok + "/3 Proben bestanden. Dein Bonus: " + bonus + "/" + args[3] + "." + ); + } + } +}; diff --git a/src/globals.js b/src/globals.js index cbe0d81..b991b33 100644 --- a/src/globals.js +++ b/src/globals.js @@ -3,4 +3,86 @@ const money = [{ "ST": "Silbertaler", -}] \ No newline at end of file +}] + +const Werte = [ + { id: "mut", kuerzel: "MU", name: "Mut" }, + { id: "klugheit", kuerzel: "KL", name: "Klugheit"}, + { id: "intuition", kuerzel: "IN", name: "Intuition"}, + { id: "charisma", kuerzel: "CH", name: "Charisma"}, + { id: "fingerfertigkeit", kuerzel: "FF", name: "Fingerfertigkeit"}, + { id: "gewandtheit", kuerzel: "GE", name: "Gewandheit" }, + { id: "konstitution", kuerzel: "KO", name: "Konstitution"}, + { id: "koerperkraft", kuerzel: "KK", name: "Körperkraft"} +] + +const Talente = [ + // Körpertalente + { id: "fliegen", name: "Fliegen", values: ["MU","IN","GE"]}, + { id: "gaukeleien", name: "Gaugekleien", values: ["MU","CH","FF"]}, + { id: "klettern", name:"Klettern",values: ["MU","GE","KK"]}, + { id: "koerperbeherrschung", name: "Körperbeherrschung", values: ["GE","GE","KO"]}, + { id: "kraftakt", name: "Kraftakt", values: ["KO","KK","KK"]}, + { id: "reiten", name: "Reiten", values: ["CH","GE","KK"]}, + { id: "schwimmen", name: "Schwimmen", values: ["GE","KO","KK"]}, + { id: "selbstbeherrschung", name: "Selbstbeherrschung", values: ["MU","MU","KO"]}, + { id: "singen", name: "Singen", values: ["KL","CH","KO"]}, + { id: "sinnesschaerfe", name: "Sinnesschärfe", values: ["KL","IN","IN"]}, + { id: "tanzen", name: "Tanzen", values: ["KL","CH","GE"]}, + { id: "taschendiebstahl", name: "Taschendiebstahl", values: ["MU","FF","GE"]}, + { id: "verbergen", name: "Verbergen", values: ["MU","IN","GE"]}, + { id: "zechen", name: "Zechen", values: ["KL","KO","KK"]}, + + // Gesellschaftstalente + { id: "bekehrenueberzeugen", name: "Bekehren & Überzeugen", values: ["MU","KL","CH"]}, + { id: "betoeren", name: "Betören", values: ["MU","CH","CH"]}, + { id: "einschuechtern", name: "Einschüchtern", values: ["MU","IN","CH"]}, + { id: "etikette", name: "Etikette", values: ["KL","IN","CH"]}, + { id: "gassenwissen", name: "Gassenwissen", values: ["KL","IN","CH"]}, + { id: "menschenkenntnis", name: "Menschenkenntnis", values: ["KL","IN","CH"]}, + { id: "ueberreden", name: "Überreden", values: ["MU","IN","CH"]}, + { id: "willenskraft", name: "Willenskraft", values: ["MU","IN","CH"]}, + + // Naturtalente + { id: "faehrtensuchen", name: "Fährtensuchen", values: ["MU","IN","GE"]}, + { id: "fesseln", name: "Fesseln", values: ["KL","FF","KK"]}, + { id: "fischenangeln", name: "Fischen & Angeln", values: ["FF","GE","KO"]}, + { id: "orientierung", name: "Orientierung", values: ["KL","IN","IN"]}, + { id: "pflanzenkunde", name: "Pflanzenkunde", values: ["KL","FF","KO"]}, + { id: "tierkunde", name: "Tierkunde", values: ["MU","MU","CH"]}, + { id: "wildnisleben", name: "Wildnisleben", values: ["MU","GE","KO"]}, + + // Wissenstalente + { id: "brettspiel", name: "Brett- & Glücksspiel", values: ["KL","KL","IN"]}, + { id: "geographie", name: "Geographie", values: ["KL","KL","IN"]}, + { id: "geschichtswissen", name: "Geschichtswissen", values: ["KL","KL","IN"]}, + { id: "goetterkulte", name: "Götter & Kulte", values: ["KL","KL","IN"]}, + { id: "kriegkunst", name: "Kriegskunst", values: ["MU","KL","IN"]}, + { id: "magiekunde", name: "Magiekunde", values: ["KL","KL","IN"]}, + { id: "mechanik", name: "Mechanik", values: ["KL","KL","FF"]}, + { id: "rechnen", name: "Rechnen", values: ["KL","KL","IN"]}, + { id: "rechtskunde", name: "Rechtskunde", values: ["KL","KL","IN"]}, + { id: "sagenlegenden", name: "Sagen & Legenden", values: ["KL","KL","IN"]}, + { id: "sphaerenkunde", name: "Sphärenkunde", values: ["KL","KL","IN"]}, + { id: "sternkunde", name: "Sternkunde", values: ["KL","KL","IN"]}, + + // Handwerkstalente + { id: "alchimie", name: "Alchimie", values: ["MU","KL","FF"]}, + { id: "boote", name: "Boote & Schiffe", values: ["FF","GE","KK"]}, + { id: "fahrzeuge", name: "Fahrzeuge", values: ["CH","FF","KO"]}, + { id: "handel", name: "Handel", values: ["KL","IN","CH"]}, + { id: "heilkundegift", name: "Heilkunde: Gift", values: ["MU","KL","IN"]}, + { id: "heilkundekrankheiten", name: "Heilkunde: Krankheiten", values: ["MU","IN","KO"]}, + { id: "heilkundeseele", name: "Heilkunde: Seele", values: ["IN","CH","KO"]}, + { id: "heilkundewunden", name: "Heilkunde: Wunden", values: ["KL","FF","FF"]}, + { id: "holzbearbeitung", name: "Holzbearbeitung", values: ["FF","GE","KK"]}, + { id: "lebensmittel", name: "Lebensmittelbearbeitung", values: ["IN","FF","FF"]}, + { id: "lederbearbeitung", name: "Lederbearbeitung", values: ["FF","GE","KO"]}, + { id: "malenzeichnen", name: "Malen & Zeichnen", values: ["IN","FF","FF"]}, + { id: "musizieren", name: "Musizieren", values: ["CH","FF","KO"]}, + { id: "schloesserknacken", name: "Schlösserknacken", values: ["IN","FF","FF"]}, + { id: "steinbearbeitung", name: "Steinbearbeitung", values: ["FF","FF","KK"]}, + { id: "stoffbearbeitung", name: "Stoffbearbeitung", values: ["KL","FF","FF"]} + +] +module.exports = { Werte, Talente } \ No newline at end of file