|
|
@ -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; |
|
|
|