Merge pull request #9 from komatooo/master

Add minimum votes to accept result.
This commit is contained in:
Davide Fantino 2023-02-16 23:18:55 +01:00 committed by GitHub
commit dfe531cbd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 9 deletions

View File

@ -246,6 +246,15 @@ Array of timeframes that allows to override options based on local time. See exa
} }
} }
``` ```
#### minimumVotesToAcceptResult
###### Description
Minimum votes per map to accept result.
Can be used to prevent situation when insignificant number of players decide what map should be next, but most still wants to play map according to rotation.
###### Default
```json
1
```
### Example configuration ### Example configuration
```json ```json
{ {
@ -278,6 +287,7 @@ Array of timeframes that allows to override options based on local time. See exa
"channelID": "112233445566778899", "channelID": "112233445566778899",
"persistentDataFile": "", "persistentDataFile": "",
"timezone": 2, "timezone": 2,
"minimumVotesToAcceptResult": 1,
"timeFrames": [ "timeFrames": [
{ {
"name": "follow layer rotation list", "name": "follow layer rotation list",

View File

@ -170,6 +170,11 @@ export default class MapVote extends DiscordBasePlugin {
required: false, required: false,
description: 'Array of timeframes to override options', description: 'Array of timeframes to override options',
default: [] default: []
},
minimumVotesToAcceptResult: {
required: false,
description: "Minimum votes per map to accept result.",
default: 1
} }
}; };
} }
@ -301,7 +306,6 @@ export default class MapVote extends DiscordBasePlugin {
} }
} }
setSeedingMode(isNewGameEvent = false) { setSeedingMode(isNewGameEvent = false) {
// setTimeout(()=>{this.msgDirect('76561198419229279',"MV\ntest\ntest")},1000)
// this.msgBroadcast("[MapVote] Seeding mode active") // this.msgBroadcast("[MapVote] Seeding mode active")
const baseDataExist = this && this.options && this.server && this.server.players; const baseDataExist = this && this.options && this.server && this.server.players;
if (baseDataExist) { if (baseDataExist) {
@ -970,6 +974,7 @@ export default class MapVote extends DiscordBasePlugin {
let highestScore = -Infinity; let highestScore = -Infinity;
for (let choice in this.tallies) { for (let choice in this.tallies) {
const score = this.tallies[ choice ]; const score = this.tallies[ choice ];
if (score >= this.options.minimumVotesToAcceptResult) {
if (score < highestScore) if (score < highestScore)
continue; continue;
else if (score > highestScore) { else if (score > highestScore) {
@ -980,6 +985,7 @@ export default class MapVote extends DiscordBasePlugin {
else // equal else // equal
ties.push(choice); ties.push(choice);
} }
}
return ties.map(i => this.nominations[ i ]); return ties.map(i => this.nominations[ i ]);
} }