Browse Source

Rework of validation checks.

master
MagicBot 2 years ago
parent
commit
8ef5cb4e22
  1. 77
      src/engine/net/client/handlers/PlaceAssetMsgHandler.java

77
src/engine/net/client/handlers/PlaceAssetMsgHandler.java

@ -335,42 +335,30 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
serverCity = ZoneManager.getCityAtLocation(buildingList.getLoc()); serverCity = ZoneManager.getCityAtLocation(buildingList.getLoc());
//no city found //no city found
//check if attacker city.
if (serverCity == null){ if (serverCity == null) {
Bane bane = Bane.getBaneByAttackerGuild(player.getGuild()); PlaceAssetMsg.sendPlaceAssetError(origin, 41, ""); // Cannot place outisde a guild zone
City attackerCity = null; return false;
if (bane != null)
attackerCity = bane.getCity();
if (attackerCity != null)
if (buildingList.getLoc().isInsideCircle(attackerCity.getLoc(), Enum.CityBoundsType.SIEGE.extents))
serverCity = attackerCity;
} }
//no city found for attacker city,
//check if defender city
if (serverCity == null){ // No bane no bow
if (player.getGuild().getOwnedCity() != null)
if (buildingList.getLoc().isInsideCircle(player.getGuild().getOwnedCity().getLoc(), Enum.CityBoundsType.SIEGE.extents)) if (serverCity.getBane() == null) {
serverCity = player.getGuild().getOwnedCity(); PlaceAssetMsg.sendPlaceAssetError(origin, 66, ""); // There is no bane circle to support this building of war
return false;
} }
if ((serverCity != null) &&
(serverCity.getBane() != null)) {
// Set the server zone to the city zone in order to account for being inside // Set the server zone to the city zone in order to account for being inside
// the siege bounds buffer area // the siege bounds buffer area
serverZone = serverCity.getParent(); serverZone = serverCity.getParent();
if ((player.getGuild().equals(serverCity.getBane().getOwner().getGuild()) == false) if ((player.getGuild().equals(serverCity.getBane().getOwner().getGuild()) == false)
&& (player.getGuild().equals(serverCity.getGuild()) == false)) { && (player.getGuild().equals(serverCity.getGuild()) == false)) {
PlaceAssetMsg.sendPlaceAssetError(origin, 54, ""); // Must belong to attacker or defender PlaceAssetMsg.sendPlaceAssetError(origin, 54, ""); // Must belong to attacker or defender
return false; return false;
} }
}
// cant place siege equipment off city zone.
// If there is a bane placed, we limit placement to 2x the stone rank's worth of attacker assets // If there is a bane placed, we limit placement to 2x the stone rank's worth of attacker assets
// and 1x the tree rank for defenders // and 1x the tree rank for defenders
@ -413,27 +401,29 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
for (AbstractWorldObject awo : awoList) { for (AbstractWorldObject awo : awoList) {
Building building = (Building) awo; Building building = (Building) awo;
if (building.getBlueprint() != null) if (building.getBlueprint() != null)
if (!building.getBlueprint().isSiegeEquip()) if (!building.getBlueprint().isSiegeEquip())
continue;
if (!building.getLoc().isInsideCircle(serverCity.getLoc(), Enum.CityBoundsType.SIEGE.extents))
continue; continue;
if (!building.getLoc().isInsideCircle(serverCity.getLoc(), Enum.CityBoundsType.SIEGE.extents)) if (building.getGuild() == null)
continue; continue;
if (building.getGuild() == null) if (building.getGuild().isErrant())
continue; continue;
if (building.getGuild().isErrant()) if (!building.getGuild().equals(serverCity.getGuild()) && !building.getGuild().equals(serverCity.getBane().getOwner().getGuild()))
continue; continue;
if (!building.getGuild().equals(serverCity.getGuild()) && !building.getGuild().equals(serverCity.getBane().getOwner().getGuild())) if (building.getGuild().equals(serverCity.getGuild()))
continue; defenderBuildings.add(building);
if (building.getGuild().equals(serverCity.getGuild())) if (building.getGuild().equals(serverCity.getBane().getOwner().getGuild()))
defenderBuildings.add(building); attackerBuildings.add(building);
if (building.getGuild().equals(serverCity.getBane().getOwner().getGuild())) }
attackerBuildings.add(building);
// Validate bane limits on siege assets // Validate bane limits on siege assets
if (playerCharacter.getGuild().equals(serverCity.getGuild())) { if (playerCharacter.getGuild().equals(serverCity.getGuild())) {
@ -451,8 +441,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
return false; return false;
} }
} }
}
// Passed validation // Passed validation
return true; return true;

Loading…
Cancel
Save