|  |  | @ -57,6 +57,21 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (contract.canSlotinBuilding(building)) |  |  |  |                 if (contract.canSlotinBuilding(building)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                     ItemLists.add(hirelings); |  |  |  |                     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 { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return false; |  |  |  |                 return false; | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (building.getBlueprint().getMaxSlots() == building.getHirelings().size()) |  |  |  |             if (building.getBlueprint().getSlotsForRank(building.getRank()) == building.getHirelings().size()) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 return false; |  |  |  |                 return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             Item contractItem = Item.getFromCache(msg.getContractItem()); |  |  |  |             Item contractItem = Item.getFromCache(msg.getContractItem()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (contractItem == null) |  |  |  |             if (contractItem == null) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return false; |  |  |  |                 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())) { |  |  |  |             if (!player.getCharItemManager().doesCharOwnThisItem(contractItem.getObjectUUID())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 Logger.error(player.getName() + "has attempted to place Hireling : " + contractItem.getName() + "without a valid contract!"); |  |  |  |                 Logger.error(player.getName() + "has attempted to place Hireling : " + contractItem.getName() + "without a valid contract!"); | 
			
		
	
	
		
		
			
				
					|  |  | @ -104,10 +126,33 @@ public class ActivateNPCMsgHandler extends AbstractClientMsgHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return false; |  |  |  |                 return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             // Check if contract can be slotted in this building
 |  |  |  |             // Check if contract can be slotted in this building
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |             //Logger.error("inserting contract: " + contract.getContractID());
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if (contract.canSlotinBuilding(building) == false) |  |  |  |             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; |  |  |  |                     return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                 } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //Logger.error("override successful: " + contract.getContractID());
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (!BuildingManager.addHireling(building, player, zone, contract, contractItem)) |  |  |  |             if (!BuildingManager.addHireling(building, player, zone, contract, contractItem)) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return false; |  |  |  |                 return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |