|  |  |  | @ -32,10 +32,13 @@ public enum ForgeManager implements Runnable {@@ -32,10 +32,13 @@ public enum ForgeManager implements Runnable { | 
			
		
	
		
			
				
					|  |  |  |  |     // Class implements forge rolling mechanics for Magicbane.
 | 
			
		
	
		
			
				
					|  |  |  |  |     //
 | 
			
		
	
		
			
				
					|  |  |  |  |     // .submit(workOrder) may be called from any thread: (ItemProductionMsgHandler).
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Concurrency is managed by the same lock used by the warehouse (city.cityTransactionLock).
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Concurrency is managed by same lock used for warehouse (city.cityTransactionLock).
 | 
			
		
	
		
			
				
					|  |  |  |  |     // WorkOrders are persisted then reconstituted at bootstrap using table dyn.workorders.
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Forge window (ManageNPCMsg) uses item.upgradeDate to serialize completion time.
 | 
			
		
	
		
			
				
					|  |  |  |  |     //
 | 
			
		
	
		
			
				
					|  |  |  |  |     // Replaces garbage code that looked as if written by a mental patient with face boils.
 | 
			
		
	
		
			
				
					|  |  |  |  |     //
 | 
			
		
	
		
			
				
					|  |  |  |  |     // @TODO Reuse same set of virtual items for each workOrder cycle.
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     FORGE_MANAGER; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -52,8 +55,7 @@ public enum ForgeManager implements Runnable {@@ -52,8 +55,7 @@ public enum ForgeManager implements Runnable { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         while (true) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             // .forge is a delayQueue (blocking priority queue using an epoc sort)
 | 
			
		
	
		
			
				
					|  |  |  |  |             // workOrders are popped and processed when their completion time has passed.
 | 
			
		
	
		
			
				
					|  |  |  |  |             // workOrders are popped then processed once completion time has passed.
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             try { | 
			
		
	
		
			
				
					|  |  |  |  |                 workOrder = forge.take(); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |