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
```json
{
@ -278,6 +287,7 @@ Array of timeframes that allows to override options based on local time. See exa
"channelID": "112233445566778899",
"persistentDataFile": "",
"timezone": 2,
"minimumVotesToAcceptResult": 1,
"timeFrames": [
{
"name": "follow layer rotation list",

View File

@ -170,6 +170,11 @@ export default class MapVote extends DiscordBasePlugin {
required: false,
description: 'Array of timeframes to override options',
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) {
// setTimeout(()=>{this.msgDirect('76561198419229279',"MV\ntest\ntest")},1000)
// this.msgBroadcast("[MapVote] Seeding mode active")
const baseDataExist = this && this.options && this.server && this.server.players;
if (baseDataExist) {
@ -970,15 +974,17 @@ export default class MapVote extends DiscordBasePlugin {
let highestScore = -Infinity;
for (let choice in this.tallies) {
const score = this.tallies[ choice ];
if (score < highestScore)
continue;
else if (score > highestScore) {
highestScore = score;
ties.length = 0;
ties.push(choice);
if (score >= this.options.minimumVotesToAcceptResult) {
if (score < highestScore)
continue;
else if (score > highestScore) {
highestScore = score;
ties.length = 0;
ties.push(choice);
}
else // equal
ties.push(choice);
}
else // equal
ties.push(choice);
}
return ties.map(i => this.nominations[ i ]);