|  |  |  | @ -23,7 +23,10 @@ import org.pmw.tinylog.Logger;@@ -23,7 +23,10 @@ import org.pmw.tinylog.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.ArrayList; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.HashMap; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.*; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.BlockingQueue; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.ConcurrentHashMap; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.DelayQueue; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.ThreadLocalRandom; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.atomic.AtomicInteger; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | public enum ForgeManager implements Runnable { | 
			
		
	
	
		
			
				
					|  |  |  | @ -146,7 +149,7 @@ public enum ForgeManager implements Runnable {@@ -146,7 +149,7 @@ public enum ForgeManager implements Runnable { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |  |             workOrder.workOrderID = workOrderCounter.incrementAndGet(); | 
			
		
	
		
			
				
					|  |  |  |  |             workOrder.rollingDuration = ForgeManager.calcRollingDuration(workOrder); | 
			
		
	
		
			
				
					|  |  |  |  |             workOrder.rollingDuration = NPCManager.calcRollingDuration(workOrder.vendor, workOrder.templateID); | 
			
		
	
		
			
				
					|  |  |  |  |             workOrder.completionTime = System.currentTimeMillis() + workOrder.rollingDuration; | 
			
		
	
		
			
				
					|  |  |  |  |             workOrder.slots_used.set(calcAvailableSlots(workOrder)); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -197,24 +200,6 @@ public enum ForgeManager implements Runnable {@@ -197,24 +200,6 @@ public enum ForgeManager implements Runnable { | 
			
		
	
		
			
				
					|  |  |  |  |         return validation_result; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public static long calcRollingDuration(WorkOrder workOrder) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         float rollingDuration; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         rollingDuration = workOrder.vendor.getBuilding().getRank() * -5L + 40; | 
			
		
	
		
			
				
					|  |  |  |  |         rollingDuration = TimeUnit.MINUTES.toMillis((long) rollingDuration); | 
			
		
	
		
			
				
					|  |  |  |  |         rollingDuration *= Float.parseFloat(ConfigManager.MB_PRODUCTION_RATE.getValue()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         ItemTemplate template = ItemTemplate.templates.get(workOrder.templateID); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         // Bane circle special case
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (template.item_bane_rank > 0) | 
			
		
	
		
			
				
					|  |  |  |  |             rollingDuration = (long) template.item_bane_rank * 60 * 60 * 3 * 1000 * Float.parseFloat(ConfigManager.MB_PRODUCTION_RATE.getValue()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return (long) rollingDuration; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public static int calcAvailableSlots(WorkOrder workOrder) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         // Slots available in a forge are based on the npc rank
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |