diff --git a/core/assets/maps/veins.msav b/core/assets/maps/veins.msav index 87e62486c7..24fcb45cb5 100644 Binary files a/core/assets/maps/veins.msav and b/core/assets/maps/veins.msav differ diff --git a/core/src/io/anuke/mindustry/core/Control.java b/core/src/io/anuke/mindustry/core/Control.java index b4fbdc2151..2406ca7556 100644 --- a/core/src/io/anuke/mindustry/core/Control.java +++ b/core/src/io/anuke/mindustry/core/Control.java @@ -84,7 +84,7 @@ public class Control implements ApplicationListener{ }); Events.on(PlayEvent.class, event -> { - player.setTeam(state.rules.pvp ? netServer.assignTeam(playerGroup.all()) : defaultTeam); + player.setTeam(state.rules.pvp ? netServer.assignTeam(player, playerGroup.all()) : defaultTeam); player.setDead(true); player.add(); diff --git a/core/src/io/anuke/mindustry/core/NetServer.java b/core/src/io/anuke/mindustry/core/NetServer.java index ede04df856..8d210cb930 100644 --- a/core/src/io/anuke/mindustry/core/NetServer.java +++ b/core/src/io/anuke/mindustry/core/NetServer.java @@ -176,7 +176,7 @@ public class NetServer implements ApplicationListener{ //playing in pvp mode automatically assigns players to teams if(state.rules.pvp){ - player.setTeam(assignTeam(playerGroup.all())); + player.setTeam(assignTeam(player, playerGroup.all())); Log.info("Auto-assigned player {0} to team {1}.", player.name, player.getTeam()); } @@ -194,13 +194,13 @@ public class NetServer implements ApplicationListener{ }); } - public Team assignTeam(Iterable players){ + public Team assignTeam(Player current, Iterable players){ //find team with minimum amount of players and auto-assign player to that. return Structs.findMin(Team.all, team -> { if(state.teams.isActive(team) && !state.teams.get(team).cores.isEmpty()){ int count = 0; for(Player other : players){ - if(other.getTeam() == team){ + if(other.getTeam() == team && other != current){ count++; } } diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index 0cffac9591..42bc75d0ef 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -700,10 +700,11 @@ public class ServerControl implements ApplicationListener{ run.run(); logic.play(); state.rules = world.getMap().applyRules(lastMode); + for(Player p : players){ p.reset(); if(state.rules.pvp){ - p.setTeam(netServer.assignTeam(new ArrayIterable<>(players))); + p.setTeam(netServer.assignTeam(p, new ArrayIterable<>(players))); } netServer.sendWorldData(p, p.con.id); }