|  |  |  | @ -377,7 +377,6 @@ public class NPC extends AbstractCharacter {@@ -377,7 +377,6 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		this.minDamageHandTwo = 1; | 
			
		
	
		
			
				
					|  |  |  |  | 		this.maxDamageHandTwo = 4; | 
			
		
	
		
			
				
					|  |  |  |  | 		this.atrHandOne = 300; | 
			
		
	
		
			
				
					|  |  |  |  | 		this.atrHandOne = 300; | 
			
		
	
		
			
				
					|  |  |  |  | 		this.defenseRating = 200; | 
			
		
	
		
			
				
					|  |  |  |  | 		this.isActive = true; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -484,10 +483,6 @@ public class NPC extends AbstractCharacter {@@ -484,10 +483,6 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 	 * Serialization | 
			
		
	
		
			
				
					|  |  |  |  | 	 */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public static void __serializeForClientMsg(NPC npc,ByteBufferWriter writer) throws SerializationException { | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public static void serializeNpcForClientMsgOtherPlayer(NPC npc,ByteBufferWriter writer, boolean hideAsciiLastName) | 
			
		
	
		
			
				
					|  |  |  |  | 			throws SerializationException { | 
			
		
	
		
			
				
					|  |  |  |  | 		serializeForClientMsgOtherPlayer(npc,writer); | 
			
		
	
	
		
			
				
					|  |  |  | @ -538,10 +533,8 @@ public class NPC extends AbstractCharacter {@@ -538,10 +533,8 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (classID != 0) | 
			
		
	
		
			
				
					|  |  |  |  | 			cnt++; | 
			
		
	
		
			
				
					|  |  |  |  | 		 | 
			
		
	
		
			
				
					|  |  |  |  | 				if (extraRune != 0 && extraRune != contractID) { | 
			
		
	
		
			
				
					|  |  |  |  | 					cnt++; | 
			
		
	
		
			
				
					|  |  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (extraRune != 0 && extraRune != contractID) | 
			
		
	
		
			
				
					|  |  |  |  | 			cnt++; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(cnt); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -561,9 +554,9 @@ public class NPC extends AbstractCharacter {@@ -561,9 +554,9 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(5); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null) | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(contractID); | 
			
		
	
		
			
				
					|  |  |  |  | 		}else | 
			
		
	
		
			
				
					|  |  |  |  | 		else | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(2500); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(GameObjectType.NPCClassRune.ordinal()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -598,14 +591,6 @@ public class NPC extends AbstractCharacter {@@ -598,14 +591,6 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 			cnt = serializeExtraRune(npc,252654, cnt, writer); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//		if (extraRune != 0 && extraRune != contractID) {
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(3);
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(0);
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(extraRune);
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(GameObjectType.NPCExtraRune.ordinal());
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(npc.getObjectUUID());
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//		}
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//Shopkeeper
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(5); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
	
		
			
				
					|  |  |  | @ -648,20 +633,18 @@ public class NPC extends AbstractCharacter {@@ -648,20 +633,18 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		//writer.putInt(0); wHy do i see 4 in recording?
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.put((byte) 0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(npc.getObjectType().ordinal()); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(npc.currentID); | 
			
		
	
		
			
				
					|  |  |  |  | 		//		writer.putLong(npc.getCompositeID());
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putFloat(1.0f); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putFloat(1.0f); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putFloat(1.0f); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.region != null){ | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.region != null) | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putVector3f(npc.inBuildingLoc); | 
			
		
	
		
			
				
					|  |  |  |  | 		}else{ | 
			
		
	
		
			
				
					|  |  |  |  | 		else{ | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putFloat(npc.getLoc().getX()); | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putFloat(npc.getLoc().getY()); | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putFloat(npc.getLoc().getZ()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -718,9 +701,8 @@ public class NPC extends AbstractCharacter {@@ -718,9 +701,8 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 				writer.putInt(val); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 		} else | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.put((byte) 1); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -734,28 +716,25 @@ public class NPC extends AbstractCharacter {@@ -734,28 +716,25 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putLong(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null) | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(npc.contract.getIconID()); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 		else | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(0); //npc icon ID
 | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		//		for (int i=0;i<5;i++)
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//			writer.putInt(0);
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putShort((short)0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null && npc.contract.isTrainer()) { | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(classID); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null && npc.contract.isTrainer()) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (npc.contract != null && npc.contract.isTrainer()) | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(classID); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 		 else | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -767,14 +746,10 @@ public class NPC extends AbstractCharacter {@@ -767,14 +746,10 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//Pull guild info from building if linked to one
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		Guild.serializeForClientMsg(npc.guild,writer, null, true); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(1); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0x8A2E); | 
			
		
	
		
			
				
					|  |  |  |  | 		//		writer.putInt((npc.contract != null) ? npc.contract.getContractID() : 0x8A2E);
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -794,10 +769,9 @@ public class NPC extends AbstractCharacter {@@ -794,10 +769,9 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		for (Mob toRemove : this.siegeMinionMap.keySet()) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			try { | 
			
		
	
		
			
				
					|  |  |  |  | 				toRemove.clearEffects(); | 
			
		
	
		
			
				
					|  |  |  |  | 			}catch(Exception e){ | 
			
		
	
		
			
				
					|  |  |  |  | 			} catch(Exception e){ | 
			
		
	
		
			
				
					|  |  |  |  | 				Logger.error( e.getMessage()); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -826,11 +800,11 @@ public class NPC extends AbstractCharacter {@@ -826,11 +800,11 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(5); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(0); | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(runeID); | 
			
		
	
		
			
				
					|  |  |  |  | 		if (cnt == 0) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (cnt == 0) | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(GameObjectType.NPCClassRuneTwo.ordinal()); | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 		 else | 
			
		
	
		
			
				
					|  |  |  |  | 			writer.putInt(GameObjectType.NPCClassRuneThree.ordinal()); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		writer.putInt(npc.currentID); | 
			
		
	
		
			
				
					|  |  |  |  | 		return cnt + 1; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -838,11 +812,11 @@ public class NPC extends AbstractCharacter {@@ -838,11 +812,11 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	@Override | 
			
		
	
		
			
				
					|  |  |  |  | 	public float getSpeed() { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.isWalk()) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.isWalk()) | 
			
		
	
		
			
				
					|  |  |  |  | 			return MBServerStatics.WALKSPEED; | 
			
		
	
		
			
				
					|  |  |  |  | 		} else { | 
			
		
	
		
			
				
					|  |  |  |  | 		 else | 
			
		
	
		
			
				
					|  |  |  |  | 			return MBServerStatics.RUNSPEED; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	@Override | 
			
		
	
	
		
			
				
					|  |  |  | @ -869,9 +843,8 @@ public class NPC extends AbstractCharacter {@@ -869,9 +843,8 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//Orphan inventory so it can be looted
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//if (!this.inSafeZone)
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.charItemManager != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.charItemManager != null) | 
			
		
	
		
			
				
					|  |  |  |  | 			this.charItemManager.orphanInventory(); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//TODO Send death message if needed
 | 
			
		
	
		
			
				
					|  |  |  |  | 		//Question? How would a mob die to water?
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -894,9 +867,10 @@ public class NPC extends AbstractCharacter {@@ -894,9 +867,10 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	public int getParentZoneID() { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.parentZone != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.parentZone != null) | 
			
		
	
		
			
				
					|  |  |  |  | 			return this.parentZone.getObjectUUID(); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		return 0; | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -929,8 +903,7 @@ public class NPC extends AbstractCharacter {@@ -929,8 +903,7 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!this.parentZone.isPlayerCity()) | 
			
		
	
		
			
				
					|  |  |  |  | 			this.sellPercent = 1; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.building != null){ | 
			
		
	
		
			
				
					|  |  |  |  | 		if (this.building != null) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 			BuildingModelBase buildingModel = BuildingModelBase.getModelBase(this.building.getMeshUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -954,12 +927,8 @@ public class NPC extends AbstractCharacter {@@ -954,12 +927,8 @@ public class NPC extends AbstractCharacter { | 
			
		
	
		
			
				
					|  |  |  |  | 					this.setRot(new Vector3f(buildingLocation.getRot())); | 
			
		
	
		
			
				
					|  |  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 				else{ | 
			
		
	
		
			
				
					|  |  |  |  | 					//only log if npc has been loaded in building.
 | 
			
		
	
		
			
				
					|  |  |  |  | 					if (this.building.getHirelings().containsKey(this) && putSlot != -1) { | 
			
		
	
		
			
				
					|  |  |  |  | 				else if (this.building.getHirelings().containsKey(this) && putSlot != -1) | 
			
		
	
		
			
				
					|  |  |  |  | 						Logger.error("could not slot npc : " + currentID + " in slot " + putSlot + " for building Mesh " + this.building.getMeshUUID()); | 
			
		
	
		
			
				
					|  |  |  |  | 					} | 
			
		
	
		
			
				
					|  |  |  |  | 				} | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
		
			
				
					|  |  |  |  | 			 | 
			
		
	
		
			
				
					|  |  |  |  | 			Vector3fImmutable buildingWorldLoc = ZoneManager.convertLocalToWorld(this.building, slotLocation); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |