@ -57,6 +57,21 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
				@@ -57,6 +57,21 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                if  ( contract . canSlotinBuilding ( building ) )   
			
		
	
		
			
				
					                    ItemLists . add ( hirelings ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                if ( building . getBlueprint ( ) . getBuildingGroup ( ) . equals ( Enum . BuildingGroup . TOL ) ) {   
			
		
	
		
			
				
					                    if ( contract . getContractID ( )  = =  899 ) //alchemist
   
			
		
	
		
			
				
					                        ItemLists . add ( hirelings ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    if ( contract . getContractID ( )  = =  866 ) //banker
   
			
		
	
		
			
				
					                        ItemLists . add ( hirelings ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    if ( contract . getContractID ( )  = =  865 ) //siege engineer
   
			
		
	
		
			
				
					                        ItemLists . add ( hirelings ) ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					                if ( building . getBlueprint ( ) . getBuildingGroup ( ) . equals ( Enum . BuildingGroup . SIEGETENT ) ) {   
			
		
	
		
			
				
					                    if ( contract . getContractID ( )  = =  865 ) //siege engineer
   
			
		
	
		
			
				
					                        ItemLists . add ( hirelings ) ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -78,13 +93,20 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
				@@ -78,13 +93,20 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					                return  false ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  ( building . getBlueprint ( ) . getMax Slots ( )  = =  building . getHirelings ( ) . size ( ) )   
			
		
	
		
			
				
					            if  ( building . getBlueprint ( ) . getSlotsForRank  ( building . getRank ( ) )  = =  building . getHirelings ( ) . size ( ) )   
			
		
	
		
			
				
					                return  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            Item  contractItem  =  Item . getFromCache ( msg . getContractItem ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  ( contractItem  = =  null )   
			
		
	
		
			
				
					                return  false ;   
			
		
	
		
			
				
					            if  ( msg . getContractItem ( )  = =  850 )  { //runemaster
   
			
		
	
		
			
				
					                for  ( AbstractCharacter  abs  :  building . getHirelings ( ) . keySet ( ) )  {   
			
		
	
		
			
				
					                    NPC  npc  =  ( NPC )  abs ;   
			
		
	
		
			
				
					                    if  ( npc . contract . getContractID ( )  = =  850 )   
			
		
	
		
			
				
					                        return  false ;  //can only have 1 runemaster
   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  ( ! player . getCharItemManager ( ) . doesCharOwnThisItem ( contractItem . getObjectUUID ( ) ) )  {   
			
		
	
		
			
				
					                Logger . error ( player . getName ( )  +  "has attempted to place Hireling : "  +  contractItem . getName ( )  +  "without a valid contract!" ) ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -104,10 +126,33 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
				@@ -104,10 +126,33 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					                return  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            // Check if contract can be slotted in this building
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  ( contract . canSlotinBuilding ( building )  = =  false )   
			
		
	
		
			
				
					                return  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            //Logger.error("inserting contract: " + contract.getContractID());
   
			
		
	
		
			
				
					            if  ( contract . canSlotinBuilding ( building )  = =  false )  {   
			
		
	
		
			
				
					                boolean  override  =  false ;   
			
		
	
		
			
				
					                if  ( building . getBlueprint ( ) . getBuildingGroup ( ) . equals ( Enum . BuildingGroup . TOL ) )  {   
			
		
	
		
			
				
					                    if  ( contract . getContractID ( )  = =  899 ) //alchemist
   
			
		
	
		
			
				
					                        override  =  true ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    if  ( contract . getContractID ( )  = =  866 ) //banker
   
			
		
	
		
			
				
					                        override  =  true ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    if  ( contract . getContractID ( )  = =  865 ) //siege engineer
   
			
		
	
		
			
				
					                        override  =  true ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					                if  ( building . getBlueprint ( ) . getBuildingGroup ( ) . equals ( Enum . BuildingGroup . SIEGETENT ) )  {   
			
		
	
		
			
				
					                    if  ( contract . getContractID ( )  = =  865 ) //siege engineer
   
			
		
	
		
			
				
					                        override  =  true ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					                if ( building . getBlueprint ( ) . getBuildingGroup ( ) . equals ( Enum . BuildingGroup . SIEGETENT ) ) {   
			
		
	
		
			
				
					                    if ( contract . getContractID ( )  = =  865 ) //siege engineer
   
			
		
	
		
			
				
					                        override  =  true ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					                if ( override  = =  false )  {   
			
		
	
		
			
				
					                    Logger . error ( "failed at override with contract: "  +  contract . getContractID ( ) ) ;   
			
		
	
		
			
				
					                    return  false ;   
			
		
	
		
			
				
					                }   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					            //Logger.error("override successful: " + contract.getContractID());
   
			
		
	
		
			
				
					            if  ( ! BuildingManager . addHireling ( building ,  player ,  zone ,  contract ,  contractItem ) )   
			
		
	
		
			
				
					                return  false ;