|  |  | @ -26,7 +26,9 @@ import org.pmw.tinylog.Logger; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.ArrayList; |  |  |  | import java.util.ArrayList; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.HashSet; |  |  |  | import java.util.HashSet; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.List; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.concurrent.ConcurrentHashMap; |  |  |  | import java.util.concurrent.ConcurrentHashMap; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | /** |  |  |  | /** | 
			
		
	
		
		
			
				
					
					|  |  |  |  * Order NPC |  |  |  |  * Order NPC | 
			
		
	
	
		
		
			
				
					|  |  | @ -362,6 +364,7 @@ public class ManageNPCMsg extends ClientNetMsg { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 long curTime = System.currentTimeMillis() / 1000; |  |  |  |                                 long curTime = System.currentTimeMillis() / 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 long upgradeTime = (mob.deathTime + (mob.spawnTime * 1000)) / 1000; |  |  |  |                                 long upgradeTime = (mob.deathTime + (mob.spawnTime * 1000)) / 1000; | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 long timeLife = upgradeTime - curTime; |  |  |  |                                 long timeLife = upgradeTime - curTime; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 if (upgradeTime * 1000 > System.currentTimeMillis()) { |  |  |  |                                 if (upgradeTime * 1000 > System.currentTimeMillis()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     if (mob.npcOwner.isAlive()) { |  |  |  |                                     if (mob.npcOwner.isAlive()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                         writer.put((byte) 0);//shows respawning timer
 |  |  |  |                                         writer.put((byte) 0);//shows respawning timer
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -402,13 +405,14 @@ public class ManageNPCMsg extends ClientNetMsg { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.putInt(0); |  |  |  |                             writer.putInt(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         else |  |  |  |                         else | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.putInt(npc.getRank()); //vendor slots
 |  |  |  |                             writer.putInt(npc.getRank()); //vendor slots
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         writer.putInt(0); //artilerist slots
 |  |  |  |                         writer.putInt(0); //artilerist slots
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         writer.putInt(0); //runemaster slots
 |  |  |  |                         writer.putInt(0); //runemaster slots
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         writer.putInt(1); //is this static?
 |  |  |  |                         writer.putInt(1); //is this static?
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         for (int i = 0; i < 4; i++) { |  |  |  | 
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         for (int i = 0; i < 4; i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.putInt(0); //statics
 |  |  |  |                             writer.putInt(0); //statics
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         HashSet<Integer> rollableSet = npc.getCanRoll(); |  |  |  |                         HashSet<Integer> rollableSet = npc.getCanRoll(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -428,17 +432,19 @@ public class ManageNPCMsg extends ClientNetMsg { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.put((byte) item.getModTable()); |  |  |  |                             writer.put((byte) item.getModTable()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.put((byte) item.getModTable());//EffectItemType
 |  |  |  |                             writer.put((byte) item.getModTable());//EffectItemType
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |                         ArrayList<MobLoot> itemList = npc.getRolling(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                             writer.putInt(itemList.size()); |  |  |  |                         List<MobLoot> itemList = npc.getRolling(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         itemList = itemList.stream().limit(npc.getRank()).collect(Collectors.toList()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         writer.putInt(itemList.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                             for (Item i : itemList) { |  |  |  |                         for (Item i : itemList) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 ItemBase ib = i.getItemBase(); |  |  |  |                             ItemBase ib = i.getItemBase(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 writer.put((byte) 0); // ? Unknown45
 |  |  |  |                             writer.put((byte) 0); // ? Unknown45
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                                 writer.putInt(i.getObjectType().ordinal()); |  |  |  |                             writer.putInt(i.getObjectType().ordinal()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                                 writer.putInt(i.getObjectUUID()); |  |  |  |                             writer.putInt(i.getObjectUUID()); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 writer.putInt(0); |  |  |  |                                 writer.putInt(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 writer.putInt(i.getItemBaseID()); |  |  |  |                                 writer.putInt(i.getItemBaseID()); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |