In the RecieveSkipTraderTimeVote function of KFVoteCollector.uc:
if (PlayersThatHaveVoted.Find(PRI) == INDEX_NONE)
{
The PlayersThatHaveVoted array is for kickvotes, it should instead be checking PlayersReadyToSkipTrader here.
Currently, this might allow the same player to be added twice if they were added previously and the vote wasn't successful.
As such, the end of the ShouldSkipTrader function will find more players ready to skip than exist currently and the vote never succeeds:
return PlayersReadyToSkipTrader.length == PRIs.length;
Looking at this, the skip vote might also fail permanently if a player votes and then leaves as they're in the PlayersReadyToSkipTrader array but no longer counted towards the PRI amount.
if (PlayersThatHaveVoted.Find(PRI) == INDEX_NONE)
{
The PlayersThatHaveVoted array is for kickvotes, it should instead be checking PlayersReadyToSkipTrader here.
Currently, this might allow the same player to be added twice if they were added previously and the vote wasn't successful.
As such, the end of the ShouldSkipTrader function will find more players ready to skip than exist currently and the vote never succeeds:
return PlayersReadyToSkipTrader.length == PRIs.length;
Looking at this, the skip vote might also fail permanently if a player votes and then leaves as they're in the PlayersReadyToSkipTrader array but no longer counted towards the PRI amount.