diff --git a/.editorconfig b/.editorconfig index b60821d..a3108ab 100644 --- a/.editorconfig +++ b/.editorconfig @@ -22,6 +22,7 @@ charset = utf-16le # Other [*.md] +indent_style = space trim_trailing_whitespace = false [*.yml] diff --git a/CVC/Classes/CVC.uc b/CVC/Classes/CVC.uc index 9037289..cc8459c 100644 --- a/CVC/Classes/CVC.uc +++ b/CVC/Classes/CVC.uc @@ -183,6 +183,13 @@ public function bool PlayerIsKickProtected(PlayerReplicationInfo PRI) return (KickProtectedPlayers.Find('Uid', PRI.UniqueId.Uid) != INDEX_NONE); } +public function bool PlayerPerkLoaded(PlayerReplicationInfo PRI) +{ + `Log_Trace(); + + return (KFPlayerReplicationInfo(PRI) != None && KFPlayerReplicationInfo(PRI).CurrentPerkClass != None); +} + public function bool PlayerIsStartWaveKickProtected(KFPlayerController KFPC) { `Log_Trace(); diff --git a/CVC/Classes/CVCMut.uc b/CVC/Classes/CVCMut.uc index b007ac3..fee7a24 100644 --- a/CVC/Classes/CVCMut.uc +++ b/CVC/Classes/CVCMut.uc @@ -35,7 +35,7 @@ public function AddMutator(Mutator Mut) if (Mut == Self) return; if (Mut.Class == Class) - Mut.Destroy(); + CVCMut(Mut).SafeDestroy(); else Super.AddMutator(Mut); } @@ -56,5 +56,5 @@ public function NotifyLogout(Controller C) defaultproperties { - + GroupNames.Add("VoteCollector") } \ No newline at end of file diff --git a/CVC/Classes/CVC_LocalMessage.uc b/CVC/Classes/CVC_LocalMessage.uc index 22207ca..9240dd5 100644 --- a/CVC/Classes/CVC_LocalMessage.uc +++ b/CVC/Classes/CVC_LocalMessage.uc @@ -10,6 +10,9 @@ var private localized String PlayerIsStartWaveKickProtected; var const String PlayerCantStartKickVoteDefault; var private localized String PlayerCantStartKickVote; +var const String PlayerPerkIsNotLoadedDefault; +var private localized String PlayerPerkIsNotLoaded; + var const String KickVoteNotEnoughPlayersDefault; var private localized String KickVoteNotEnoughPlayers; @@ -33,6 +36,7 @@ enum E_CVC_LocalMessageType CVC_PlayerIsKickProtected, CVC_PlayerIsStartWaveKickProtected, CVC_PlayerCantStartKickVote, + CVC_PlayerPerkIsNotLoaded, CVC_KickVoteNotEnoughPlayers, CVC_KickVoteStarted, @@ -88,6 +92,9 @@ public static function String GetLocalizedString( case CVC_PlayerCantStartKickVote: return ReplWaves(default.PlayerCantStartKickVote != "" ? default.PlayerCantStartKickVote : default.PlayerCantStartKickVoteDefault, String1); + case CVC_PlayerPerkIsNotLoaded: + return ReplKickee(default.PlayerPerkIsNotLoaded != "" ? default.PlayerPerkIsNotLoaded : default.PlayerPerkIsNotLoadedDefault, String1); + case CVC_KickVoteNotEnoughPlayers: return ReplWaves(default.KickVoteNotEnoughPlayers != "" ? default.KickVoteNotEnoughPlayers : default.KickVoteNotEnoughPlayersDefault, String1); @@ -136,6 +143,7 @@ defaultproperties PlayerIsKickProtectedDefault = " is protected from kick" PlayerIsStartWaveKickProtectedDefault = "You can't kick right now. He can be kicked when he plays at least wave(s)" PlayerCantStartKickVoteDefault = "You can't start kick vote now. You can start kick vote when you play at least wave(s)" + PlayerPerkIsNotLoadedDefault = "You can't kick a player who hasn't loaded yet ()" KickVoteNotEnoughPlayersDefault = "Not enough players to start vote (only players who have played at least wave(s) can vote)" KickVoteStartedDefault = " has started a vote to kick " KickVoteStartedForPlayerDefault = " started voting to kick you" diff --git a/CVC/Classes/CVC_VoteCollector.uc b/CVC/Classes/CVC_VoteCollector.uc index 2e7f53d..f38ade7 100644 --- a/CVC/Classes/CVC_VoteCollector.uc +++ b/CVC/Classes/CVC_VoteCollector.uc @@ -92,6 +92,16 @@ public function ServerStartVoteKick(PlayerReplicationInfo PRI_Kickee, PlayerRepl return; } + if (!CVC.PlayerPerkLoaded(PRI_Kickee)) + { + CVC.WriteToChatLocalized( + KFPC_Kicker, + CVC_PlayerPerkIsNotLoaded, + CfgKickVote.default.WarningColorHex, + KickeeName); + return; + } + if (CVC.PlayerIsStartWaveKickProtected(KFPC_Kickee)) { CVC.WriteToChatLocalized( diff --git a/Localization/INT/CVC.int b/Localization/INT/CVC.int index 118aaf2..63745e0 100644 Binary files a/Localization/INT/CVC.int and b/Localization/INT/CVC.int differ diff --git a/Localization/RUS/CVC.rus b/Localization/RUS/CVC.rus index 706ecf1..10e2e78 100644 Binary files a/Localization/RUS/CVC.rus and b/Localization/RUS/CVC.rus differ