I sent this to Hawker for consideration earlier. I believe not allowing us to override this can cause more problems then allowing us to.
1. You say that it couldn't be done, but I already have logic that would work with it in my CC (untested, since I've never been able to override it, but it should work)
2. You mention that it would look extremely bottish, but CC devs have access to many other functions that look bottish. I can write into nav a loop that just makes it run in circles, but I don't. Its all about using it correctly.
3. Examples of why its useful (I've seen all of these in a single day):
- A lone rogue is mounted with 20% hp and runs past me, bot targets, ignores. Easy kill, and loots bottish.
- Bot is mounted and running down av with a pack of allies. Horde force is mounted in front. Allies dismount to attack, bot runs through
horde and gets slaughtered. (this happens a lot)
- Bot runs past a person that is mounted, standing still, not moving. Extremely bottish.
- Bot runs past a person that is mounted, person turns around and chases down bot, attacks. Only then does the bot react, effectively
never getting the first hit in.
All of these can be fixed by letting us override the mounted target ignore, and using it safely won't be hard. See code below that is pulsed every combat() iteration:
Code:
#region Battleground Blacklisting
public void bgTargetCheck()
{
if (Battlegrounds.Battlegroundstatus == BattlegroundStatus.Active)
{
if (Me.GotTarget &&
Me.CurrentTarget.IsPet)
{
slog("Battleground: Blacklist Pet " + Me.CurrentTarget.Name);
Blacklist.Add(Me.CurrentTarget.Guid, TimeSpan.FromDays(1));
Me.ClearTarget();
lastGuid = 0;
return;
}
// test, if in battleground and someone is out of line of sight, blacklist for 5 seconds
if (Me.GotTarget && !Me.CurrentTarget.InLineOfSight)
{
slog("Battleground: Target out of Line of Sight, blacklisting for 3 seconds");
Blacklist.Add(Me.CurrentTarget.Guid, TimeSpan.FromSeconds(3));
Me.ClearTarget();
Lua.DoString("PetFollow()");
lastGuid = 0;
}
if (Me.GotTarget && Me.CurrentTarget.Distance > 29)
{
slog("Battleground: Target out of Range (" + Me.CurrentTarget.Distance + " yards), blacklisting for 3 seconds");
Blacklist.Add(Me.CurrentTarget.Guid, TimeSpan.FromSeconds(3));
Me.ClearTarget();
Lua.DoString("PetFollow()");
lastGuid = 0;
}
// if target has bubble up, blacklist for duration
if (Me.GotTarget && Me.CurrentTarget.Buffs.ContainsKey("Divine Shield"))
{
slog("Battleground: Target has Divine Shield, blacklisting for 10 seconds");
Blacklist.Add(Me.CurrentTarget.Guid, TimeSpan.FromSeconds(10));
Me.ClearTarget();
Lua.DoString("PetFollow()");
lastGuid = 0;
}
// if target has iceblock up, blacklist for duration
if (Me.GotTarget && Me.CurrentTarget.Buffs.ContainsKey("Ice Block"))
{
slog("Battleground: Target has Ice Block, blacklisting for 10 seconds");
Blacklist.Add(Me.CurrentTarget.Guid, TimeSpan.FromSeconds(10));
Me.ClearTarget();
Lua.DoString("PetFollow()");
lastGuid = 0;
}
}
}
#endregion