Releases
v1.6.0
Compare
Sorry, something went wrong.
No results found
✨ New Features
Added MovePlayersToSpecDuringTeamPicking config option (set to false to keep players on their teams during picking) (closes #40 )
Added !votekick / !vk command — team-based unanimous vote kick, active only during Match state (closes #43 )
Added VoteKickConfig (Enabled, VoteKickTime — default 30s)
Restructured commands into individual files (Commands/Admin/, Commands/Player/)
🔧 Bug Fixes
Captain & Side Selection
Fixed captain comparison in !stay / !switch to use PlayerID instead of object reference
Added validation to prevent non-winner team from voting (error.not_winner_team)
Fixed OnSwitch missing player validation and wrong log message ("OnStay")
Fixed SwitchStartingSides / StayStartingSides to accept nullable captain
Fixed ProcessTeamSideVotes not handling empty vote case correctly
Fixed SurrenderVoteResult and TimeoutVoteResult using re-derived team instead of stored vote team
Removed Timeout state from captain disconnect handling
Team Picking
Fixed player list filtering to use PlayerID equality
Fixed duplicate player check in HandlePlayerJoinTeam for CT/T during Match
Removed stray CloseMenuForPlayer(captain) after CT captain pick
Player Management
Replaced all player.Controller?.PlayerName with player.Name (20+ occurrences)
Fixed GetPlayerByName comparison to use player.Name
Event Handling
Added duplicate disconnect prevention via recentlyDisconnectedPlayers
Fixed HandleClientPutInServer to only auto-assign during Warmup/MapVoting/MapChosen
Added freshlyJoinedPlayers cleanup on disconnect
Map & Configuration
Fixed workshop map change — removed redundant ds_workshop_changelevel, use only host_workshop_map
Fixed LeavePunishment.Sensitivity missing { get; set; } accessor
Fixed GetRandomMap to use GetMapsToVote() so DisallowVotePreviousMaps is respected
State Management
Changed ResetPluginState to call StartWarmup instead of LoadSelectedMap
Expanded ResetVariables to clear all state (vote kick, timeout, surrender, side votes, player tracking lists, isFreezeTime, playerColors, etc.)
timeoutCountCt / timeoutCountT now reset to cfg.Timeouts instead of hardcoded 3
UI & Menus
Replaced deprecated GetCurrentMenu + CloseMenuForPlayer pattern with CloseActiveMenu
Fixed player radar color allocation (addresses #41 )
🌐 Translations
Added error.not_winner_team (EN/PT-BR)
Added all command.votekick.* and menu.votekick keys (EN/PT-BR)
Fixed key: command.unready.not_ready → command.unready.already_unready
📦 Dependencies
Updated SwiftlyS2 from beta to stable
📈 Version
Full changelog
v1.5.4...v1.6.0
You can’t perform that action at this time.