@ -373,24 +373,34 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
@@ -373,24 +373,34 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
ManageNPCMsg outMsg ;
Dispatch dispatch ;
virtualItem = Item . getFromCache ( itemUUID ) ;
PlayerCharacter player = origin . getPlayerCharacter ( ) ;
if ( player = = null )
return ;
// Cannot junk items without a forge!
if ( vendor . getBuilding ( ) = = null )
return ;
// junk nothing?
virtualItem = Item . getFromCache ( itemUUID ) ;
if ( virtualItem = = null )
return ;
// Cannot junk items without a forge!
WorkOrder workOrder = ForgeManager . itemWorkOrderLookup . get ( virtualItem ) ;
if ( vendor . getBuilding ( ) = = null )
// If this virtual item was already processed then
// it will have been removed from the workOrder.
if ( workOrder = = null )
return ;
WorkOrder workOrder = ForgeManager . itemWorkOrderLookup . get ( virtualItem ) ;
if ( workOrder . cooking . contains ( virtualItem ) = = false )
return ;
;
City city = workOrder . vendor . building . getCity ( ) ;
@ -405,6 +415,16 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
@@ -405,6 +415,16 @@ public class ItemProductionMsgHandler extends AbstractClientMsgHandler {
DbManager . removeFromCache ( virtualItem ) ;
ForgeManager . itemWorkOrderLookup . remove ( virtualItem ) ;
// Update total_to_produce accounting for the slot being
// removed while workOrder is not completed.
if ( workOrder . runCompleted = = false ) {
int itemsPerSlot = workOrder . total_to_produce / workOrder . slots_used ;
workOrder . total_to_produce = workOrder . total_to_produce - itemsPerSlot ;
}
// Slot is no longer allocated to this workOrder.
workOrder . slots_used = workOrder . slots_used - 1 ;
// Update workOrder on disk