forked from hydrum/PickupDiscord
-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO.txt
106 lines (89 loc) · 3.75 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
TODO:
URGENT:
///
- !ringer function
- !game ID -> match details.
\\\
- gtv (needs !enablegtv/!disablegtv option)
- !pro
- Enhanced 2v2 with mate !2v2 @gost0r to play your 2v2 with him.
( ) rework match abort/cancel/end behaviour to be more consistent
( ) !showmatch starttime
( ) !reset 19 didn't stop the server monitor
( ) don't display default port if serverip is a domain
( ) when server is added, check via rcon call whether its working
( ) add kick msg to kick
( ) appropriate info msg on failure
( ) add !commentate functionality (connection, score, CTF stats difference)
( ) make admin cmds accessible in ADMIN channels
( ) add round ending conditions (timelimit, fraglimit, caplimit, maxrounds)
( ) !expire 15m timer until autoremove
( ) admin cmds to lookup user/auths/ips etc
( ) !player profiles (stats stats stats (matches played etc...))
( ) match history
( ) allow channels to have two functions (PUBLIC + ADMIN for example)
// Discord:
( ) reconnect (resume) function
( ) get gateway if fails to connect
( ) ability to reply to heartbeat event
IDEA:
- display newly connected/disconnected people in the chat
- ringer system? how would that look like
- report/auto-ban system
- multiple guilds
IDEA:
select the highest 2 players of the game,
let them select teams on discord.
PLAYER PROFILES:
- **urtauth** -
Elo: badge elo
Rank: number of allnumber
---
Total matches: number
Winrate: number
First match: date
Stats - more details: !player urtauth gametype
CTF: wins-draw-loss - percentage
TS: wins-draw-loss - percentage
AUTO BAN SYSTEM:
Penalty for noshow: 2h, 12h, 1d, 3d, 1w, 2w, 1m, 3m, perm
Penalty for ragequit: 12h, 1d, 3d, 1w, 2w, 1m, 3m, perm
expire time: double the last ban, but minimum 1 week
need !pardon <auth>
TEAM SYSTEM:
!create <team>
!join <team>
!leave <team>
!accept <team> <urtauth>
!reject <team> <urtauth>
!kick <team> <urtauth>
!teamadd <team> <gametype> : teammates may join the pickup - limit: ciel/floor(gametype.teamnum) || fullTeamAllowed
!remove - removing from pickup regardless
When someone queries up, GroupEntity is created. solo players are the groups of their own, other are grouped in a group.
ISSUE: how to create fair teams? what if 5x duo queue up (we need to break them up? based on what rule?)
approach:
- if we have a group, we try to assemble from the other players a group that has the same avg elo together
for example, we have one duo group with 1000 avg elo, we iterate through the 8 remaining and try to find the closest avg elo between them
psuedo: #team = playercount, |team = avgelo
for team : teams > 1 player
find #team players AS otherTeam that equals |team the most
condition: players may not be included in List<> and other teams are handled as own group entity
if we do not have enough free players: team abandons
store in List<GroupEntity[]> AS groupList mit GroupEntity[] = {team, otherTeam}
Result: groupList with groups that are against eachother + some lose groups with # = 1
for groupEntity[] : groupList
better = groupEntity[x] && worse = groupEntity[y]
if |red < |blue => red.add groupEnitity[x] && blue.add groupEntity[y]
Result: teams should be now "somewhat" equal
with the remaining players, use the current algo to assign them to equal teams (teamsize as condition needs to be adjusted though!)
Remaining issue: e.g.: TeamSize=4, 1x 3p, 2x 2p : solution: 2 2 vs 3 1 = algo: 3 vs 2 1 => break up 3rd team
//REPORT SYSTEM:
//!report auth leave/noshow/insult/troll
//to defend yourself: !excuse <reason>
//if 3 games a report
//msg to admins to review case !review <number>
//!accept !decline
//suspended for 1d, 3d, 1w, 2w, 1m, 3m, perm
//show bans and time !banlist
//ability to ban ppl as admin !permban <auth> ? if temp bans wished: !ban <auth> <1d> ex.?
//end bans: !pardon <auth>