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