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
JavaScript
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;