diff --git a/src/engine/objects/City.java b/src/engine/objects/City.java index 7a8bde23..7c177df8 100644 --- a/src/engine/objects/City.java +++ b/src/engine/objects/City.java @@ -306,91 +306,103 @@ public class City extends AbstractWorldObject { if (city.parentZone == null) continue; - if (city.parentZone.guild_zone && city.isOpen() && city.getTOL().rank > 4) { - - // Filter Lore cities + if(repledge && city.getGuild().equals(playerCharacter.guild)){ + //can't repledge to a guild you're already part of + continue; + } - if (ConfigManager.MB_RULESET.getValue().equals("LORE")) { + if (city.parentZone.guild_zone) { - if (!repledge) - if (!city.getGuild().charter.equals(playerCharacter.guild.charter)) - continue; - else - if (!city.getGuild().charter.canJoin(playerCharacter)) - continue; + if(city.getGuild().getNation().equals(playerCharacter.guild.getNation())){ + //players can all port and repledge inside their own nation + cities.add(city); + continue; } - Integer playerUUID = playerCharacter.objectUUID; - Integer guildUUID = playerCharacter.guildUUID; - Integer nationUUID = playerCharacter.guild.getNation().getObjectUUID(); - boolean allowed = false; - if (city.getTOL().reverseKOS) { - //reverse KOS, specific values are allowed - if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) { - //individual is cleared for teleport/repledge - allowed = true; - } else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) { - //player guild is cleared for teleport/repledge - allowed = true; - } else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) { - //player nation is cleared for teleport/repledge + if (city.isOpen() && city.getTOL().rank > 4) { + + // Filter Lore cities + + if (ConfigManager.MB_RULESET.getValue().equals("LORE")) { + + if (!repledge) + if (!city.getGuild().charter.equals(playerCharacter.guild.charter)) + continue; + else if (!city.getGuild().charter.canJoin(playerCharacter)) + continue; + } + Integer playerUUID = playerCharacter.objectUUID; + Integer guildUUID = playerCharacter.guildUUID; + Integer nationUUID = playerCharacter.guild.getNation().getObjectUUID(); + boolean allowed = false; + if (city.getTOL().reverseKOS) { + //reverse KOS, specific values are allowed + if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) { + //individual is cleared for teleport/repledge + allowed = true; + } else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) { + //player guild is cleared for teleport/repledge + allowed = true; + } else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) { + //player nation is cleared for teleport/repledge + allowed = true; + } + } else { + //not reverse KOS, everyone is allowed by default allowed = true; + //specific values are not allowed + if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) { + //individual is cleared for teleport/repledge + allowed = false; + } else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) { + //player guild is cleared for teleport/repledge + allowed = false; + } else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) { + //player nation is cleared for teleport/repledge + allowed = false; + } } - } else { - //not reverse KOS, everyone is allowed by default - allowed = true; - //specific values are not allowed - if (city.getTOL().getCondemned().contains(playerUUID) && city.getTOL().getCondemned().get(playerUUID).active) { - //individual is cleared for teleport/repledge - allowed = false; - } else if (city.getTOL().getCondemned().contains(guildUUID) && city.getTOL().getCondemned().get(guildUUID).active) { - //player guild is cleared for teleport/repledge - allowed = false; - } else if (city.getTOL().getCondemned().contains(nationUUID) && city.getTOL().getCondemned().get(nationUUID).active) { - //player nation is cleared for teleport/repledge - allowed = false; + if (allowed) { + cities.add(city); + continue; } } - if (allowed) { - cities.add(city); - continue; - } - } + } else { - // Filter NPC cities + // Filter NPC cities - if (city.isNoobIsle == 1) { + if (city.isNoobIsle == 1) { - if (playerCharacter.level < 20) - cities.add(city); // everyone can go to noob island if they are under level 20 + if (playerCharacter.level < 20) + cities.add(city); // everyone can go to noob island if they are under level 20 - continue; - } + continue; + } - // Players cannot teleport to perdition or bastion + // Players cannot teleport to perdition or bastion - if (city.cityName.equals("Perdition") || city.cityName.equals("Bastion")) - continue; + if (city.cityName.equals("Perdition") || city.cityName.equals("Bastion")) + continue; - // These cities are available for anyone off noob island + // These cities are available for anyone off noob island - if (playerCharacter.level >= 20 && (city.cityName.equals("Sea Dog's Rest") || city.cityName.equals("Khan'Ov Srekel") || city.cityName.equals("City of Khar Th'Sekt"))) { - cities.add(city); - continue; - } + if (playerCharacter.level >= 20 && (city.cityName.equals("Sea Dog's Rest") || city.cityName.equals("Khan'Ov Srekel") || city.cityName.equals("City of Khar Th'Sekt"))) { + cities.add(city); + continue; + } - // Add Lore cities + // Add Lore cities - if (ConfigManager.MB_RULESET.getValue().equals("LORE")) { + if (ConfigManager.MB_RULESET.getValue().equals("LORE")) { - if (repledge) { - if (city.getGuild().charter.canJoin(playerCharacter)) + if (repledge) { + if (city.getGuild().charter.canJoin(playerCharacter)) + cities.add(city); + } else if (city.getGuild().charter.equals(playerCharacter.guild.charter)) cities.add(city); - } else if (city.getGuild().charter.equals(playerCharacter.guild.charter)) - cities.add(city); - } + } + } } - return cities; }