Threads for Zerg Mechanics

This commit is contained in:
2024-04-17 20:46:59 -05:00
parent 7e3e337de0
commit f98f54139a
8 changed files with 140 additions and 397 deletions
+37 -13
View File
@@ -47,12 +47,10 @@ public boolean isMine = false;
@Override
public void run() {
if(mine != null)
while(mine.isActive)
while(mine != null && mine.isActive)
RunMineMechanic();
if(bane != null)
while(bane.getSiegePhase().equals(Enum.SiegePhase.WAR))
while(bane != null && bane.getSiegePhase().equals(Enum.SiegePhase.WAR))
RunBaneMechanic();
}
@@ -103,42 +101,68 @@ public boolean isMine = false;
if(mine.dividedPlayers.containsKey(player.getGuild().getNation())){
int count = mine.dividedPlayers.get(player.getGuild().getNation()).size();
switch(mine.capSize){
case 3:
player.ZergMultiplier = ZergManager.getMultiplier3Man(count);
break;
case 5:
player.ZergMultiplier = ZergManager.getMultiplier5Man(count,player);
player.ZergMultiplier = ZergManager.getMultiplier5Man(count);
break;
case 10:
player.ZergMultiplier = ZergManager.getMultiplier10Man(count,player);
player.ZergMultiplier = ZergManager.getMultiplier10Man(count);
break;
case 20:
player.ZergMultiplier = ZergManager.getMultiplier20Man(count,player);
player.ZergMultiplier = ZergManager.getMultiplier20Man(count);
break;
}
player.mineAppliedID = mine.getObjectUUID();
} else{
player.ZergMultiplier = 1.0f;
player.mineAppliedID = 0;
}
}
}
public void RunBaneMechanic(){
HashSet<AbstractWorldObject> currentPlayers;
PlayerCharacter player;
currentPlayers = WorldGrid.getObjectsInRangePartial(bane.getCity().loc, Enum.CityBoundsType.GRID.extents * 2.0f, MBServerStatics.MASK_PLAYER);
Guild attacker = bane.getStone().getGuild().getNation();
Guild defender = bane.getCity().getGuild().getNation();
int attackers = 0;
int defenders = 0;
ArrayList<PlayerCharacter> attackers = new ArrayList<>();
ArrayList<PlayerCharacter> defenders = new ArrayList<>();
for(AbstractWorldObject awo : currentPlayers){
PlayerCharacter pc = (PlayerCharacter) awo;
if(pc.getGuild().getNation().equals(attacker) == false && pc.getGuild().getNation().equals(defender) == false)
if(!pc.getGuild().getNation().equals(attacker) && !pc.getGuild().getNation().equals(defender)) {
pc.teleport(pc.bindLoc);
pc.ZergMultiplier = 1.0f;
}
if(pc.getGuild().getNation().equals(attacker))
attackers++;
attackers.add(pc);
if(pc.getGuild().getNation().equals(defender))
defenders++;
defenders.add(pc);
}
int treeRank = bane.getCity().getTOL().getRank();
for(PlayerCharacter pc : attackers){
if(treeRank == 8){
pc.ZergMultiplier = ZergManager.getMultiplier40Man(attackers.size());
}else{
pc.ZergMultiplier = ZergManager.getMultiplier20Man(attackers.size());
}
}
for(PlayerCharacter pc : defenders){
if(treeRank == 8){
pc.ZergMultiplier = ZergManager.getMultiplier40Man(defenders.size());
}else{
pc.ZergMultiplier = ZergManager.getMultiplier20Man(defenders.size());
}
}
}