@ -17,7 +17,6 @@ import engine.net.client.msg.ItemProductionMsg;
				@@ -17,7 +17,6 @@ import engine.net.client.msg.ItemProductionMsg;
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.objects.* ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.powers.EffectsBase ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.powers.poweractions.AbstractPowerAction ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  engine.server.MBServerStatics ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  org.pmw.tinylog.Logger ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					import  java.util.ArrayList ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -58,38 +57,18 @@ public enum ForgeManager implements Runnable {
				@@ -58,38 +57,18 @@ public enum ForgeManager implements Runnable {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( Objects . requireNonNull ( workOrder ) . runCanceled  | |  workOrder . runCompleted )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                continue ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Persist current items that are currently cooking for this
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // workOrder
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ArrayList < Item >  toRemove  =  new  ArrayList < > ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Item  completed_item  =  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( Item  cooked_item  :  workOrder . cooking )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                toRemove . add ( cooked_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                cooked_item . containerType  =  mbEnums . ItemContainerType . INVENTORY ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                completed_item  =  DbManager . ItemQueries . PERSIST ( cooked_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                workOrder . vendor . charItemManager . addItemToInventory ( completed_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Remove the fake negativeID item from all collections.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // set the items as 'completed'
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            for  ( Item  memoryItem  :  toRemove )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Logger . info ( "item forged:"  +  workOrder . workOrderID  +  " ("  +  workOrder . total_produced  +  "/"  +  workOrder . total_to_produce  +  ")" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // Update vendor windows
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Complete this workOrder.  Persist items currently in memory
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // and set the items as completed.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                ItemProductionMsg  outMsg1  =  new  ItemProductionMsg ( workOrder . vendor . building ,  workOrder . vendor ,  memoryItem ,  mbEnums . ProductionActionType . COMPLETE ,  true ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                DispatchMessage . dispatchMsgToInterestArea ( workOrder . vendor ,  outMsg1 ,  mbEnums . DispatchChannel . SECONDARY ,  MBServerStatics . STRUCTURE_LOAD_RANGE ,  false ,  false ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( workOrder . total_produced  > =  workOrder . total_to_produce )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                workOrder . cooking . remove ( memoryItem ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                inMemoryItemLookup . remove ( memoryItem . objectUUID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                vendorItemLookup . get ( workOrder . vendor ) . remove ( memoryItem ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                for  ( Item  workOrderItem  :  workOrder . cooking )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    workOrderItem . setDateToUpgrade ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Logger . info ( "item forged:"  +  workOrder . workOrderID  +  " ("  +  workOrder . total_produced  +  "/"  +  workOrder . total_to_produce  +  ")" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( workOrder . total_produced  > =  workOrder . total_to_produce )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                Logger . info ( "workOrder has completed: "  +  workOrder . workOrderID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                workOrder . runCompleted  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                continue ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -319,7 +298,6 @@ public enum ForgeManager implements Runnable {
				@@ -319,7 +298,6 @@ public enum ForgeManager implements Runnable {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            inMemoryItemLookup . put ( forged_item . objectUUID ,  forged_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            vendorItemLookup . computeIfAbsent ( workOrder . vendor ,  k  - >  new  ArrayList < > ( ) ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            vendorItemLookup . get ( workOrder . vendor ) . add ( forged_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            vendorItemLookup . get ( workOrder . vendor ) . add ( forged_item ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            vendorWorkOrderLookup . get ( workOrder . vendor ) . add ( workOrder ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // Update NPC window