|  |  | @ -26,6 +26,7 @@ import org.joda.time.DateTime; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.pmw.tinylog.Logger; |  |  |  | import org.pmw.tinylog.Logger; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.ArrayList; |  |  |  | import java.util.ArrayList; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.Random; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.concurrent.ConcurrentHashMap; |  |  |  | import java.util.concurrent.ConcurrentHashMap; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.concurrent.ThreadLocalRandom; |  |  |  | import java.util.concurrent.ThreadLocalRandom; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -679,58 +680,40 @@ public class ItemFactory { | 
			
		
	
		
		
			
				
					
					|  |  |  |             return null; |  |  |  |             return null; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         for (byte temp : vendor.getItemModTable()) { |  |  |  |         Random random = new Random(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |         prefixMod = vendor.getModTypeTable().get(random.nextInt(vendor.getModTypeTable().size())); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if (itemModTable != temp) |  |  |  |         suffixMod = vendor.getModSuffixTable().get(random.nextInt(vendor.getModTypeTable().size())); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 continue; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             prefixMod = vendor.getModTypeTable().get(vendor.getItemModTable().indexOf(temp)); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             suffixMod = vendor.getModSuffixTable().get(vendor.getItemModTable().indexOf(temp)); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (prefixMod == 0 && suffixMod == 0) { |  |  |  |         if (prefixMod == 0 && suffixMod == 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             Logger.info("Failed to find modTables for item " + ib.getName()); |  |  |  |             Logger.info("Failed to find modTables for item " + ib.getName()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             return null; |  |  |  |             return null; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Roll on the tables for this vendor
 |  |  |  |         ArrayList<ModTypeTableEntry> prefixTable = LootManager._modTypeTables.get(prefixMod); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         ArrayList<ModTypeTableEntry> suffixTable = LootManager._modTypeTables.get(suffixMod); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         ModTypeTableEntry prefixTypeTable = ModTypeTableEntry.rollTable(prefixMod, ThreadLocalRandom.current().nextInt(1, 100 + 1)); |  |  |  |         ModTypeTableEntry prefixTypeTable = prefixTable.get(random.nextInt(prefixTable.size())); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         ModTypeTableEntry suffixTypeTable = ModTypeTableEntry.rollTable(suffixMod, ThreadLocalRandom.current().nextInt(1, 100 + 1)); |  |  |  |         ModTypeTableEntry suffixTypeTable = suffixTable.get(random.nextInt(suffixTable.size())); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Sanity check.
 |  |  |  |         // Sanity check.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (prefixTypeTable == null || suffixTypeTable == null) |  |  |  |         if (prefixTypeTable == null || suffixTypeTable == null) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return null; |  |  |  |             return null; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int rollPrefix = ThreadLocalRandom.current().nextInt(1, 100 + 1); |  |  |  |         int rollPrefix = ThreadLocalRandom.current().nextInt(100); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (rollPrefix < vendor.getLevel() + 30) { |  |  |  |         if (rollPrefix < vendor.getLevel() + 30) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             int randomPrefix = TableRoll(vendor.getLevel()); |  |  |  |             int randomPrefix = TableRoll(vendor.getLevel()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(vendor.contract.getName().contains("Heavy") || vendor.contract.getName().contains("Medium") || vendor.contract.getName().contains("Leather")) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 randomPrefix += vendor.level * 0.5f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(randomPrefix > 320) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 randomPrefix = 320; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             prefixEntry = ModTableEntry.rollTable(prefixTypeTable.modTableID, randomPrefix); |  |  |  |             prefixEntry = ModTableEntry.rollTable(prefixTypeTable.modTableID, randomPrefix); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (prefixEntry != null) |  |  |  |             if (prefixEntry != null) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 prefix = prefixEntry.action; |  |  |  |                 prefix = prefixEntry.action; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int rollSuffix = ThreadLocalRandom.current().nextInt(1, 100 + 1); |  |  |  |         int rollSuffix = ThreadLocalRandom.current().nextInt( 100); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Always have at least one mod on a magic rolled item.
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Suffix will be our backup plan.
 |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (rollSuffix < vendor.getLevel() + 30) { |  |  |  |         if (rollSuffix < vendor.getLevel() + 30) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             int randomSuffix = TableRoll(vendor.getLevel()); |  |  |  |             int randomSuffix = TableRoll(vendor.getLevel()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(vendor.contract.getName().contains("Heavy") || vendor.contract.getName().contains("Medium") || vendor.contract.getName().contains("Leather")) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 randomSuffix += vendor.level * 0.25f; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             if(randomSuffix > 320) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 randomSuffix = 320; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             suffixEntry = ModTableEntry.rollTable(suffixTypeTable.modTableID, randomSuffix); |  |  |  |             suffixEntry = ModTableEntry.rollTable(suffixTypeTable.modTableID, randomSuffix); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (suffixEntry != null) |  |  |  |             if (suffixEntry != null) | 
			
		
	
	
		
		
			
				
					|  |  | @ -1092,4 +1075,5 @@ public class ItemFactory { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return ml; |  |  |  |         return ml; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |