- 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:
- #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