@ -307,6 +307,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -307,6 +307,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
							Building  siegeBuilding ;   
			
		
	
		
			
				
							PlacementInfo  buildingList ;   
			
		
	
		
			
				
							City  serverCity ;   
			
		
	
		
			
				
							Bane  bane ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// Retrieve the building details we're placing
   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -324,44 +325,56 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -324,44 +325,56 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// Checks validation conditions arising when placing
   
			
		
	
		
			
				
							// generic structures.
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( validateBuildingPlacement ( serverZone ,  msg ,  origin ,  player ,  buildingList )  = =  false )   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// If there is a bane placed, only the attackers and defenders can
   
			
		
	
		
			
				
							// place siege assets
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							serverCity  =  ZoneManager . getCityAtLocation ( buildingList . getLoc ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							//no  city found
   
			
		
	
		
			
				
							// No valid player city found
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( serverCity  = =  null )  {   
			
		
	
		
			
				
							if  ( serverCity  = =  null  | |  serverZone . isPlayerCity ( )  = =  false )  {   
			
		
	
		
			
				
								PlaceAssetMsg . sendPlaceAssetError ( origin ,  52 ,  "" ) ;  // Cannot place outisde a guild zone
   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// No bane no bow
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( serverCity . getBane ( )  = =  null )  {   
			
		
	
		
			
				
							bane  =  serverCity . getBane ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( bane  = =  null )  {   
			
		
	
		
			
				
								PlaceAssetMsg . sendPlaceAssetError ( origin ,  66 ,  "" ) ;  // There is no bane circle to support this building of war
   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// Set the server zone to the city zone in order to account for being inside
   
			
		
	
		
			
				
							// the siege bounds buffer area
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							serverZone  =  serverCity . getParent ( ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// Must belong to either attacker or defenders.
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( ( player . getGuild ( ) . equals ( serverCity . getBane ( ) . getOwner ( ) . getGuild ( ) )  = =  false )   
			
		
	
		
			
				
										& &  ( player . getGuild ( ) . equals ( serverCity . getGuild ( ) )  = =  false ) )  {   
			
		
	
		
			
				
								PlaceAssetMsg . sendPlaceAssetError ( origin ,  54 ,  "" ) ;  // Must belong to attacker or defender
   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// If there is a bane placed, we limit placement to  2x the stone rank's worth of attacker assets
   
			
		
	
		
			
				
							// Player must be  GL or IC of the bane guild to place bow.
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if ( GuildStatusController . isGuildLeader ( player . getGuildStatus ( ) )  = =  false   
			
		
	
		
			
				
									& &  GuildStatusController . isInnerCouncil ( player . getGuildStatus ( ) )  = =  false )   
			
		
	
		
			
				
							{   
			
		
	
		
			
				
								PlaceAssetMsg . sendPlaceAssetError ( origin ,  10 ,  player . getName ( ) ) ;   // You must be a guild leader to place this asset
   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							//cannot place on grid until bane is live
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if ( bane . getSiegePhase ( )  ! =  SiegePhase . WAR  & &   
			
		
	
		
			
				
									serverCity . isLocationOnCityGrid ( buildingList . getLoc ( ) )  = =  true )   
			
		
	
		
			
				
							{   
			
		
	
		
			
				
								PlaceAssetMsg . sendPlaceAssetError ( origin ,  53 ,  player . getName ( ) ) ;  // Buildings of war cannot be placed around a city grid unless there is an active bane
   
			
		
	
		
			
				
								return  false ;   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							// If there is a bane placed, we limit bow placement to 2x the stone rank's worth of attacker assets
   
			
		
	
		
			
				
							// and 1x the tree rank for defenders
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( validateSiegeLimits ( player ,  origin ,  serverCity . getBane ( ) )  = =  false )   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -380,8 +393,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -380,8 +393,6 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							siegeBuilding . setProtectionState ( ProtectionState . PROTECTED ) ;   
			
		
	
		
			
				
							  
			
		
	
		
			
				
							// No bane placed.  We're done!
   
			
		
	
		
			
				
							  
			
		
	
		
			
				
							return  true ;   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -1230,85 +1241,23 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -1230,85 +1241,23 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							RealmType  currentRealm ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if ( Blueprint . getBlueprint ( placementInfo . getBlueprintUUID ( ) ) . isSiegeEquip ( )  = =  false )   
			
		
	
		
			
				
							{   
			
		
	
		
			
				
								if  ( serverZone . isPlayerCity ( )  = =  false )  {   
			
		
	
		
			
				
									PlaceAssetMsg . sendPlaceAssetError ( origin ,  52 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
									return  false ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
								City  city  =  ZoneManager . getCityAtLocation ( placementInfo . getLoc ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
								if  ( player . getGuild ( ) . equals ( city . getGuild ( ) )  = =  false )  {   
			
		
	
		
			
				
									PlaceAssetMsg . sendPlaceAssetError ( origin ,  40 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
									return  false ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
								if  ( city . isLocationOnCityGrid ( placementInfo . getLoc ( ) )  = =  false )  {   
			
		
	
		
			
				
									PlaceAssetMsg . sendPlaceAssetError ( origin ,  41 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
									return  false ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
							else   
			
		
	
		
			
				
							{   
			
		
	
		
			
				
								City  city  =  ZoneManager . getCityAtLocation ( placementInfo . getLoc ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
								if ( city  = =  null )   
			
		
	
		
			
				
								{   
			
		
	
		
			
				
									PlaceAssetMsg . sendPlaceAssetError ( origin ,  52 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
									return  false ;   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
								Bane  bane  =  city . getBane ( ) ;   
			
		
	
		
			
				
								//check if player is owner/IC of tree or bane
   
			
		
	
		
			
				
								if  ( player . getGuild ( ) . equals ( city . getGuild ( ) )  = =  true )   
			
		
	
		
			
				
								{   
			
		
	
		
			
				
									//is from owners guild
   
			
		
	
		
			
				
									if ( GuildStatusController . isGuildLeader ( player . getGuildStatus ( ) )  = =  false  & &  GuildStatusController . isInnerCouncil ( player . getGuildStatus ( ) )  = =  false )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  57 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
								else   
			
		
	
		
			
				
								{   
			
		
	
		
			
				
									//is not from owners guild
   
			
		
	
		
			
				
									if ( bane  = =  null )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										//bane was null
   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  66 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
									if ( city  = =  null )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										//city was null
   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  67 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
									//check if player is from siege guild
   
			
		
	
		
			
				
									if ( player . getGuild ( ) . equals ( bane . getOwner ( ) . getGuild ( ) )  = =  false )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  54 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
									//check if player is GL or IC of the bane guild
   
			
		
	
		
			
				
									if ( GuildStatusController . isGuildLeader ( player . getGuildStatus ( ) )  = =  false  & &  GuildStatusController . isInnerCouncil ( player . getGuildStatus ( ) )  = =  false )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  71 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
									//cannot place on grid until bane is live
   
			
		
	
		
			
				
									if ( bane . getSiegePhase ( )  ! =  SiegePhase . WAR  & &  city . isLocationOnCityGrid ( placementInfo . getLoc ( ) )  = =  true )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  71 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
									if ( city . isLocationWithinSiegeBounds ( placementInfo . getLoc ( ) )  = =  false  & &  city . isLocationOnCityZone ( placementInfo . getLoc ( ) )  = =  false )   
			
		
	
		
			
				
									{   
			
		
	
		
			
				
										PlaceAssetMsg . sendPlaceAssetError ( origin ,  66 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
										return  false ;   
			
		
	
		
			
				
									}   
			
		
	
		
			
				
								}   
			
		
	
		
			
				
							}   
			
		
	
		
			
				
							// Retrieve the building details we're placing
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							if  ( serverZone . isNPCCity ( )  = =  true )  {