I do not think you can find it in memory with a simple read (maby some more advanced code could calculate it).
I check if the mob lost health the past 10 seconds etc, if not i blacklist it.
Some of the code that i use to blacklist the a mob with either by name or GUID:
You have to figure out the GSpellTimer yourself.
Code:
/// <summary>
/// Dictionary
/// </summary>
public static Dictionary<string, GSpellTimer> Blacklisted = new Dictionary<string, GSpellTimer>();
/// <summary>
/// Blacklists the specified name.
/// </summary>
/// <param name="name">The name.</param>
/// <param name="howlong_seconds">The howlong_seconds.</param>
public static void Blacklist(string name, int howlong_seconds)
{
GSpellTimer t = null;
if (Blacklisted.TryGetValue(name, out t))
{
Blacklisted.Remove(name);
}
t = new GSpellTimer((howlong_seconds*10)*1000);
Blacklisted.Add(name, t);
Log("Blacklisted " + name + " for " + (howlong_seconds) + "s");
}
/// <summary>
/// Blacklists the specified GUID.
/// </summary>
/// <param name="GUID">The GUID.</param>
/// <param name="howlong_seconds">The howlong_seconds.</param>
public static void Blacklist(ulong GUID, int howlong_seconds)
{
Blacklist("GUID" + GUID, howlong_seconds);
}
/// <summary>
/// Determines whether the specified name is blacklisted.
/// </summary>
/// <param name="name">The name.</param>
/// <returns>
/// <c>true</c> if the specified name is blacklisted; otherwise, <c>false</c>.
/// </returns>
public static bool IsBlacklisted(string name)
{
GSpellTimer t = null;
if (!Blacklisted.TryGetValue(name, out t))
return false;
return !t.isReady;
}
/// <summary>
/// Determines whether the specified GUID is blacklisted.
/// </summary>
/// <param name="GUID">The GUID.</param>
/// <returns>
/// <c>true</c> if the specified GUID is blacklisted; otherwise, <c>false</c>.
/// </returns>
public static bool IsBlacklisted(ulong GUID)
{
return IsBlacklisted("GUID" + GUID);
}