kulmapaikka-ircbot/plugins/dice.js
2019-11-20 20:28:11 +02:00

69 lines
1.6 KiB
JavaScript

var BasePlugin = require('./base.js')
class Dice extends BasePlugin {
constructor (config) {
super(config)
this.name = 'Dice'
}
help () {
// | Command | Description
return '.heita | .heitä 1d4 Heitä noppaa. Esim. 1d4'
}
test (input) {
if (input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)) {
return true
}
if (input.match(/^\.heit(a|ä) voltti homo$/i)) {
return true
}
return false
}
getDiceString (numThrows, sides) {
var total = 0
var totalThrows = []
numThrows = Number(numThrows)
sides = Number(sides)
if (numThrows === 0 || sides === 0) {
return 'Tyhjää ei voi heittää'
}
if (numThrows > 100) {
return 'Ei jaksa...'
}
for (var a = 0; a < numThrows; a++) {
var t = Math.floor(Math.random() * sides) + 1
totalThrows.push(t)
total += t
}
var resultString = ''
totalThrows.forEach(function (value) {
resultString += value + ', '
})
resultString = resultString.substring(0, resultString.length - 2)
resultString += ' (yhteensä: ' + total + '. ' + (total / numThrows).toFixed(2) + ' per heitto)'
return resultString
}
result (input) {
// Different cases
let res = null
res = input.match(/^\.heit(a|ä) ([0-9]+)d([0-9]+)( ([ \w])*)*$/i)
if (res !== null) {
var th = this.getDiceString(res[2], res[3])
return 'Heitettiin: ' + th
}
if (input.match(/^\.heit(a|ä) voltti homo$/i)) {
return 'steam://run/1250'
}
}
}
module.exports = Dice