lavaclient
Version:
A simple, easy-to-use, and flexible lavalink client for node.js
42 lines • 3.39 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Penalties = void 0;
class Penalties {
node;
tracksStuck = 0;
tracksFailed = 0;
loadsFailed = 0;
loadsAttempted = 0;
constructor(node) {
this.node = node;
}
clear() {
this.tracksStuck = 0;
this.tracksFailed = 0;
this.loadsFailed = 0;
this.loadsAttempted = 0;
}
calculate() {
const stats = this.node.ws.stats;
if (!this.node.ws.active || !stats) {
return Number.MAX_SAFE_INTEGER;
}
if (this.loadsAttempted > 0 && this.loadsAttempted === this.loadsFailed) {
return Number.MAX_SAFE_INTEGER;
}
let penalties = 0;
penalties += stats.playingPlayers;
penalties += 1.05 ** (stats.cpu.systemLoad * 100) * 10 - 10;
if (stats.frameStats) {
const calc = (n) => 1.03 ** ((n / 3000) * 500) * 600 - 600;
penalties += calc(stats.frameStats.deficit);
penalties += calc(stats.frameStats.nulled) * 2;
}
penalties += this.tracksStuck * 100 - 100;
penalties += this.tracksFailed * 100 - 100;
penalties += this.loadsFailed > 0 ? this.loadsFailed / this.loadsAttempted : 0;
return penalties;
}
}
exports.Penalties = Penalties;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuYWx0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbHVzdGVyL3BlbmFsdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOEJBLE1BQWEsU0FBUztJQVNHO0lBUnJCLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFFaEIsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUVqQixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBRWhCLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFbkIsWUFBcUIsSUFBVTtRQUFWLFNBQUksR0FBSixJQUFJLENBQU07SUFBRyxDQUFDO0lBRW5DLEtBQUs7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2hDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixDQUFDO1NBQ2xDO1FBR0QsSUFBSSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckUsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7U0FDbEM7UUFHRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsU0FBUyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDbEMsU0FBUyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFFNUQsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ25FLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUMxQyxTQUFTLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzNDLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHL0UsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKO0FBL0NELDhCQStDQyJ9