|  |  | @ -219,99 +219,4 @@ public class dbMobHandler extends dbHandlerBase { | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return getResult(); |  |  |  | 		return getResult(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public static boolean COPY_ZONE_MOBILES(PlayerCharacter pc, Zone sourceZone, Zone targetZone) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		ArrayList<Mob> sourceMobList; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		Vector3fImmutable worldDelta; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		Mob newMobile; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Sanity check.  Can't copy a non existent zone
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		if ((sourceZone == null) || (targetZone == null)) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			return false; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		// Generate collections for all buildings in each zone
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		for (Mob mobile : sourceZone.zoneMobSet) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			// Calculate world coordinate offset between zones
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			worldDelta = new Vector3fImmutable(targetZone.getAbsX(), targetZone.getAbsY(), targetZone.getAbsZ()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			worldDelta = worldDelta.subtract(new Vector3fImmutable(sourceZone.getAbsX(), sourceZone.getAbsY(), sourceZone.getAbsZ())); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			newMobile = Mob.createMob(mobile.getLoadID(), |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					mobile.getLoc().add(worldDelta), null, true, targetZone, mobile.building, 0); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			if (newMobile != null) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				newMobile.updateDatabase(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		return true; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	public void LOAD_RUNES_FOR_FIDELITY_MOBS() { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		prepareCallable("SELECT static_zone_npc.npcID,static_zone_npc.loadNum, static_zone_npc.classID, static_zone_npc.professionID, static_zone_npc.extraRune, static_zone_npc.extraRune2 FROM static_zone_npc ; "); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		try { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			ResultSet rs = executeQuery(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			while (rs.next()) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int loadNum = rs.getInt("loadNum"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int fidelityID = rs.getInt("npcID"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int classID = rs.getInt("classID"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int professionID = rs.getInt("professionID"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int extraRune = rs.getInt("extraRune"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				int extraRune2 = rs.getInt("extraRune2"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if (WorldServer.ZoneFidelityMobRunes.get(loadNum) == null) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					WorldServer.ZoneFidelityMobRunes.put(loadNum, new HashMap<>()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				ArrayList<Integer> runeList; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if (WorldServer.ZoneFidelityMobRunes.get(loadNum).get(fidelityID) == null){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList = new ArrayList<>(4); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				}else |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList = WorldServer.ZoneFidelityMobRunes.get(loadNum).get(fidelityID); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if (classID != 0) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList.add(classID); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if (professionID != 0) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList.add(professionID); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if(extraRune != 0) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList.add(extraRune); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				if (extraRune2 != 0) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 					runeList.add(extraRune2); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 				WorldServer.ZoneFidelityMobRunes.get(loadNum).put(fidelityID, runeList); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			rs.close(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} catch (SQLException e) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			Logger.error( e.toString()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} finally { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 			closeCallable(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 		} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	} |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |