UNPKG

level-system-phoenix

Version:

Ein Levelsystem für WhatsApp Bots mit Baileys und Command-Handlern inklusive Cheat-Schutz, XP, Ränge und Speicher.

67 lines (57 loc) 3.12 kB
class LevelLogic { constructor({ xpPerCommand = 7, cooldown = 35, levelFormula, levelNames } = {}) { this.xpPerCommand = xpPerCommand; this.cooldown = cooldown; this.levelFormula = levelFormula || ((level) => 100 * level * level); this.levelNames = levelNames || [ // Level 1–10 (Asche / Entstehung) 'Staub', 'Ruß', 'Asche', 'Glutrest', 'Funken', 'Rauch', 'Kohle', 'Glühstaub', 'Erste Glut', 'Erwärmung', // Level 11–20 (Entfachung / Aufstieg) 'Glutfleck', 'Funkenflug', 'Hitzeschimmer', 'Glutpunkt', 'Schwelbrand', 'Flamme', 'Feuerlauf', 'Flammenschimmer', 'Glutkern', 'Glutbrand', // Level 21–30 (Brand / Feuersturm) 'Lodernd', 'Brennend', 'Hitzequell', 'Feuerkraft', 'Feuerschimmer', 'Brennpunkt', 'Hitzepol', 'Flammenwirbel', 'Feuersturm', 'Brandherd', // Level 31–40 (Geburt des Phoenix) 'Erwachender Phoenix', 'Schwacher Flügelschlag', 'Erste Feder', 'Zitternde Glut', 'Junge Flamme', 'Flügel der Glut', 'Feder der Asche', 'Feder der Glut', 'Erwachtes Feuer', 'Erwachter Phoenix', // Level 41–50 (Phönixflug) 'Phönixflug', 'Phönixschwingen', 'Federsturm', 'Glutschwingen', 'Feuerschwingen', 'Lodernde Schwingen', 'Brennende Feder', 'Hitzeschwingen', 'Feuerschweif', 'Glutfeder', // Level 51–60 (Herrschaft / Reife) 'Phoenixkind', 'Phoenixblut', 'Phönixkraft', 'Feuergeist', 'Feuerschatten', 'Feuerherz', 'Glutherz', 'Aschenherz', 'Feuertänzer', 'Flammenseele', // Level 61–70 (Wächter des Feuers) 'Hüter der Asche', 'Wächter der Glut', 'Wächter der Flammen', 'Bote des Feuers', 'Flammenwächter', 'Feuerhüter', 'Flammenmeister', 'Meister der Glut', 'Hüter der Wiedergeburt', 'Herr der Asche', // Level 71–80 (Unsterblichkeit / Macht) 'Aschefürst', 'Glutfürst', 'Feuergott', 'Feuermagistrat', 'Flammenkaiser', 'König der Asche', 'König der Flammen', 'Thron der Glut', 'Erneuerer', 'Wiedergeburt', // Level 81–90 (Ewigkeit) 'Ewige Glut', 'Ewige Feder', 'Ewige Schwingen', 'Feuerkrone', 'Glutkrone', 'Unsterbliche Asche', 'Unsterbliches Feuer', 'Unsterblicher Flug', 'Phönix der Nacht', 'Phönix des Morgens', // Level 91–100 (Legende / Finale) 'Ultima Glut', 'Ultima Feuer', 'Ultima Phoenix', 'Ewiges Feuer', 'Unendliche Flamme', 'Unendliche Asche', 'Ursprung der Glut', 'Ursprung des Feuers', 'Ursprung des Phoenix', 'Der Phoenix selbst' ]; } getLevelName(level) { return this.levelNames[Math.min(level - 1, this.levelNames.length - 1)]; } processXP(user, now) { if (now - user.lastXP < this.cooldown) { return { xpGained: 0, levelUp: false, ...user, levelName: this.getLevelName(user.level) }; } user.xp += this.xpPerCommand; user.lastXP = now; let newLevel = user.level; while (user.xp >= this.levelFormula(newLevel)) { newLevel++; } const levelUp = newLevel !== user.level; user.level = newLevel; return { xpGained: this.xpPerCommand, levelUp, ...user, levelName: this.getLevelName(user.level) }; } } module.exports = LevelLogic;