|  |  | @ -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())) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -452,7 +442,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  | 				} |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Passed validation
 |  |  |  | 		// Passed validation
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		 |  |  |  | 		 | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return  true; |  |  |  | 		return  true; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |