added random. Use Embed messages for Help and Skill list

This commit is contained in:
Marcus Netz
2020-11-26 21:40:23 +01:00
parent 33a998a680
commit 9f7f87ee07
11 changed files with 133 additions and 71 deletions

45
package-lock.json generated
View File

@ -37,6 +37,15 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"binary-search-tree": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz",
@ -53,6 +62,11 @@
"delayed-stream": "~1.0.0"
}
},
"core-js": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
"integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@ -154,11 +168,42 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
},
"ow": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/ow/-/ow-0.4.0.tgz",
"integrity": "sha512-kJNzxUgVd6EF5LoGs+s2/etJPwjfRDLXPTCfEgV8At77sRrV+PSFA8lcoW2HF15Qd455mIR2Stee/2MzDiFBDA=="
},
"ow-lite": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/ow-lite/-/ow-lite-0.0.2.tgz",
"integrity": "sha1-359QDmdAtlkKHpqWVzDUmo61l9E="
},
"prism-media": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.2.tgz",
"integrity": "sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw=="
},
"random": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/random/-/random-2.2.0.tgz",
"integrity": "sha512-4HBR4Xye4jJ41QBi6RfIaO1yKQpxVUZafQtdE6NvvjzirNlwWgsk3tkGLTbQtWUarF4ofZsUVEmWqB1TDQlkwA==",
"requires": {
"babel-runtime": "^6.26.0",
"ow": "^0.4.0",
"ow-lite": "^0.0.2",
"seedrandom": "^3.0.5"
}
},
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"seedrandom": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz",
"integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",

View File

@ -13,7 +13,8 @@
"discord.js": "^12.5.0",
"dotenv": "^8.2.0",
"nedb": "^1.8.0",
"node-fetch": "^2.6.1"
"node-fetch": "^2.6.1",
"random": "^2.2.0"
},
"devDependencies": {
"jest": "^26.6.3"

View File

@ -1,5 +1,7 @@
const globals = require('../globals');
const Random = require('random')
module.exports = async (message, args, db) => {
const coin = Math.floor(Math.random() * 2);
Random.use(message.author.tag)
const coin = Random.int(0,1)
message.reply('Die Münze bleibt auf **' + globals.Coin[coin] + '** liegen.');
};

View File

@ -1,4 +1,5 @@
const globals = require('../globals');
const Random = require('random')
module.exports = async (message, args, db) => {
try {
// user calls without arguments.
@ -40,11 +41,12 @@ module.exports = async (message, args, db) => {
else {
level = args[0];
}
Random.use(message.author.tag)
const countOccurrences = (arr, val) => arr.reduce((a, v) => (v === val ? a + 1 : a), 0);
const dice = [];
dice.push(Math.floor(Math.random() * 20) + 1);
dice.push(Random.int(1,20));
if (dice[0] == 1 || dice[0] == 20) {
dice.push(Math.floor(Math.random() * 20) + 1);
dice.push(Random.int(1,20));
}
// handle crits
if (countOccurrences(dice, 1) == 2) {

View File

@ -1,38 +1,60 @@
const cmdprefix = process.env.CMDPREFIX || '!';
const Discord = require('discord.js')
const cmdprefix = process.env.CMDPREFIX||'!'
module.exports = async (message, args, db) => {
message.author.send(
'Hinweis: Werte in Klammern müssen nicht angegeben werden.\n\n' +
cmdprefix + '**kopf**\n' +
' Wirf eine Münze. Kopf oder Zahl?\n\n' +
const Help = new Discord.MessageEmbed()
.setColor('#0099ff')
.setTitle('Hilfe')
.setDescription('Das sind die Befehle, die du verwenden kannst.\n' +
'Werte in Klammern müssen nicht mit angegeben werden.')
cmdprefix + '**roll __Anzahl__ W __Augenzahl__**\n' +
' Lass die Würfel rollen. Benötigt wird die Anzahl sowie die Augenzahl auf den Würfeln.\n\n' +
cmdprefix + '**ep/ap __Eigenschaftswert__** \n' +
' Du machst eine Eigenschaftsprobe / Attributprobe.\n' +
.addFields({
name: cmdprefix + 'kopf',
value: 'Wirf eine Münze. Kopf oder Zahl?',
inline: false
}, {
name: cmdprefix + 'roll <Anzahl> W <Augenzahl>',
value: 'Lass die Würfel rollen. Benötigt wird die Anzahl sowie die Augenzahl auf den Würfeln.',
inline: false
}, {
name: cmdprefix + 'ep/ap <Eigenschaftswert>',
value: ' Du machst eine Eigenschaftsprobe / Attributprobe.\n' +
' Du würfelst mit einem W20 auf deinen Eigenschaftswert.\n' +
' Bei einer 1 oder 20 wird der Bestätigungswurf ausgeführt.\n\n' +
cmdprefix + '**tp/fp __Eigenschaftswert1__ __Eigenschaftswert2__ __Eigenschaftswert3__ (Fertigkeitswert) (+Eleichtert/-Erschwert)**\n' +
' Du machst eine Fertigkeitsprobe.\n' +
' Es werden drei Würfel auf deine Eigenschaftswerte geworfen. Hast du Boni auf dein Talent und/oder ' +
'ist der Wurf erleichtert oder erschwert, wird dies in die Berechnung einbezogen.\n\n' +
cmdprefix + '**talents**\\n' +
' Du erhälst eine Liste mit den Talentnamen, die du für ' + cmdprefix + 'talent/skill nutzen kannst.\n\n' +
'Folgendes funktioniert, wenn du mir deine `tda`-Datei zuschickst:\n\n' +
cmdprefix + '**ep/ap Klugheit** oder ' + cmdprefix + '**ep/ap FF**\n\n' +
cmdprefix + '**talent __Talentname__ (+Erleichtert/-Erschwert)**\n' +
' siehe ' + cmdprefix + 'tp.\n' +
' Hier musst du allerdings deine Eigenschaftswerte und Fertigkeitswerte nicht raussuchen.\n\n' +
cmdprefix + '**skill __Talentname__**\n' +
' Ich sage dir deinen Fertigkeitswert im Talent.\n\n' +
cmdprefix + '**remove**\n' +
' Ich lösche deinen Charakter aus meiner Datenbank. Schicke mir gerne erneut eine `tda`-Datei zu.'
);
' Bei einer 1 oder 20 wird der Bestätigungswurf ausgeführt.',
inline: false
}, {
name: cmdprefix + 'tp/fp <Eigenschaftswert1> <Eigenschaftswert2> <Eigenschaftswert3> (Fertigkeitswert) (+Erleichtert/-Erschwert)',
value: ' Du machst eine Fertigkeitsprobe.\n' +
' Es werden drei Würfel auf deine Eigenschaftswerte geworfen. Hast du Boni auf dein Talent und/oder' +
' ist der Wurf erleichtert oder erschwert, wird dies in die Berechnung einbezogen.',
inline: false
}, {
name: cmdprefix + 'talents',
value: ' Du erhälst eine Liste mit den Talentnamen, die du für ' +
cmdprefix + 'talent/' + cmdprefix + 'skill nutzen kannst.',
inline: false
}, {
name: '\u200B',
value: '\u200B'
}, {
name: '\u200B',
value: 'Wenn du mir deine .tdc Datei zusendest, kannst du folgendes nutzen:'
}, {
name: cmdprefix + 'ep/ap [Klugheit] oder ' + cmdprefix + 'ep/ap [FF]',
value: 'siehe oben. Du brauchst deinen Wert nicht wissen.',
inline: false
}, {
name: cmdprefix + 'talent <Talentname> (+Erleichtert/-Erschwert)',
value: 'siehe tp. Allerdings musst du deine Werte nicht wissen.',
inline: false
}, {
name: cmdprefix + 'skill <Talentname>',
value: 'Zeigt dir deinen Fertigkeitswert im jeweiligen Talent.',
inline: false
}, {
name: cmdprefix + 'remove',
value: 'Löscht deinen Charakter aus der Datenbank. Sinnvoll, wenn du mir eine neue zusenden möchtest.',
inline: false
}
)
message.author.send(Help);
};

View File

@ -1,19 +1,21 @@
// eslint-disable-next-line no-unused-vars
const globals = require('../globals')
const Random = require('random')
module.exports = async (message, args, db) => {
Random.use(message.author.tag)
let msg;
let arguments = args.join('');
const regex = /\s?[DdWw]\s?/;
arguments = arguments.split(regex);
arguments = arguments.split(globals.DiceRegex);
if (arguments.length == 2) {
let numberOfDice = arguments[0];
const diceValues = arguments[1];
const roll = [];
for (let i = 0; i < numberOfDice; i++) {
const a = Math.floor(Math.random() * diceValues) + 1;
const a = Random.int(1,diceValues);
roll.push(a);
}
if(numberOfDice == 1) { let = 'n';}
if(numberOfDice == 1) { msg = 'n';}
else { msg = ' ' + numberOfDice;}
message.reply('Das sind deine Ergebnisse für deine' + msg + ' ' + diceValues + '-seitigen 🎲: ' + roll.join(', ') + '.');
}

View File

@ -20,17 +20,4 @@ module.exports = async (message, args, db) => {
catch (e) {
throw e;
}
/* db.query('SELECT * FROM dsageld WHERE userName = ' + '"' + message.author.tag + '"', function(err, row) { //the row is the user's data
if(row && err) {
message.reply('Es gab einen Fehler.');
}
if(row.length < 1) { //if the user is not in the database
message.reply('Es existiert kein Eintrag für dich füge ihn mit !create hinzu.');
} else if(row.length >= 1){
message.reply('du hast: ' + row[0].GD + ' GD, ' + row[0].ST + ' ST, ' + row[0].BH + ' BH, ' + row[0].EK + ' EK.' + row[0].LP + ' LeP.');
}
}
);*/
};

View File

@ -1,4 +1,5 @@
const globals = require('../globals');
const Random = require('random')
module.exports = async (message, args, db) => {
try {
db.find({
@ -6,7 +7,14 @@ module.exports = async (message, args, db) => {
}, 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){
message.reply('Sorry, du musst mir schon etwas zum prüfen geben.');
return
}
Random.use(message.author.tag)
if (args[1]) {
var erschwernis = parseInt(args[1]);
}
@ -47,13 +55,9 @@ module.exports = async (message, args, db) => {
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++) {
const a = Math.floor(Math.random() * 20 + 1);
roll.push(a);
roll.push(Random.int(1,20));
}
// compare results
for (i = 0; i < 3; i++) {
@ -89,8 +93,6 @@ module.exports = async (message, args, db) => {
'Das waren deine 🎲: ' + roll.join(', ') + '. Damit hast du ' + ok + '/3 Proben bestanden. Dein Bonus: ' + bonus + '/' + bonus_orig + '.',
);
}
}
});
}

View File

@ -1,10 +1,12 @@
// eslint-disable-next-line no-unused-vars
const Random = require('random')
module.exports = async (message, args, db) => {
if (args.length < 3) {
message.reply('Der Talentwurf funktioniert so:\n' +
'!tp Eigenschaftswert1 Eigenschaftswert2 Eigenschaftswert3 [Bonus] [Erschwernis]');
}
else {
Random.use(message.author.tag)
const roll = [];
if (args[3]) {
var bonus = parseInt(args[3]);
@ -19,8 +21,7 @@ module.exports = async (message, args, db) => {
erschwernis = 0;
}
for (i = 1; i <= 3; i++) {
const a = Math.floor(Math.random() * 20 + 1);
roll.push(a);
roll.push(Random.int(1,20));
}
let ok = 0;
let patzer = 0;

View File

@ -1,9 +1,8 @@
const money = [{
'GD': 'Golddukaten',
'ST': 'Silbertaler',
}];
const DiceRegex = /\s?[DdWw]\s?/;
const Coin = ['Kopf', 'Zahl'];
const Werte = [
{ id: 'mut', kuerzel: 'MU', name: 'Mut' },
@ -86,4 +85,4 @@ const Talente = [
{ id: 'stoffbearbeitung', name: 'Stoffbearbeitung', values: ['KL', 'FF', 'FF'], categoryid: 4 },
];
module.exports = { Werte, Talente, Coin, TalentKategorien };
module.exports = { Werte, Talente, Coin, TalentKategorien, DiceRegex };

View File

@ -1,7 +1,6 @@
require('dotenv').config();
const Discord = require('discord.js');
const client = new Discord.Client();
const SERVERID = process.env.SERVERID;
const commandHandler = require('./commands');
client.on('message', commandHandler);