Skip to content

v1.6.0

Choose a tag to compare

@shmitzas shmitzas released this 03 Apr 16:33
4dd65b2

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_readycommand.unready.already_unready

📦 Dependencies

  • Updated SwiftlyS2 from beta to stable

📈 Version

  • 1.5.41.6

Full changelog

v1.5.4...v1.6.0