Fixing Upload of Character Sheets. Adding talent which rolls dice on stored values.

This commit is contained in:
Marcus Netz
2020-11-22 22:02:14 +01:00
parent 210062b185
commit 072ae06253
7 changed files with 230 additions and 103 deletions

View File

@ -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.');
}
});
};*/

View File

@ -1,37 +1,24 @@
module.exports = async (message, data, db) => {
try {
console.log(message.channel)
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,
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)
})
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.');
}
});
};*/

View File

@ -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);

View File

@ -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 {

View File

@ -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 {
var roll = [];
if (args[3]) {
var bonus = parseInt(args[3]);
} else {
bonus = 0;
}
if (args[4]) {
var erschwernis = parseInt(args[4]);
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);
}
var ok = 0;
var patzer = 0;
var crit = 0;
// compare results
for (i = 0; i < 3; i++) {
if (Math.floor(parseInt(args[i]) + parseInt(erschwernis)) >= roll[i])
if (Math.floor(values[i] + parseInt(erschwernis)) >= roll[i])
ok++;
else if (
Math.floor(parseInt(args[i]) + parseInt(bonus) + parseInt(erschwernis)) >= roll[i]) {
else if ((Math.floor(values[i]) + parseInt(bonus) + parseInt(erschwernis)) >= roll[i]) {
ok++;
bonus = bonus - (roll[i] - parseInt(erschwernis) - parseInt(args[i]));
bonus = bonus - (roll[i] - parseInt(erschwernis) - values[i]);
}
if (roll[i] == 1) crit++;
if (roll[i] == 20) patzer++;
}
if (patzer >= 2) {
message.reply(
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(
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(
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
}
};

54
src/commands/tp.js Normal file
View File

@ -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] + "."
);
}
}
};

View File

@ -4,3 +4,85 @@ const money = [{
}]
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 }