Hey Blasthos, I've been using your Mud Assist a lot recently and I love it. So of course now I got a couple of suggestions:
1. To check for something being in range, you need to include CombatReach (which looks like it is the hit radius of the mob); otherwise you need to be completely on top of the mob to hit him. So I would change
to
2. I suggest a different method for checking in combat. I think you should run the in-combat function if the player is in combat or if any player in the party is in combat and their target took at least 1 point of dmg. This way you make sure you enter in combat if anyone else pulled monsters, but not before they are damaged. I think you might only look at the tank now, but that does not work well when in fate parties and stuff. I have used the following method for myself for quite a while and it has worked very well for me:
1. To check for something being in range, you need to include CombatReach (which looks like it is the hit radius of the mob); otherwise you need to be completely on top of the mob to hit him. So I would change
Code:
Core.Player.CurrentTarget.Location.Distance3D(Core.Player.Location) <= RoutineManager.Current.PullRange
Code:
Core.Player.CurrentTarget.Distance() <= RoutineManager.Current.PullRange + Core.Player.CurrentTarget.CombatReach
2. I suggest a different method for checking in combat. I think you should run the in-combat function if the player is in combat or if any player in the party is in combat and their target took at least 1 point of dmg. This way you make sure you enter in combat if anyone else pulled monsters, but not before they are damaged. I think you might only look at the tank now, but that does not work well when in fate parties and stuff. I have used the following method for myself for quite a while and it has worked very well for me:
Code:
public static bool IsPartyInCombat()
{
if (Core.Player.InCombat)
return true;
if (PartyManager.NumMembers == 0)
return false;
foreach (PartyMember u in PartyManager.VisibleMembers)
{
BattleCharacter unit = u.GameObject as BattleCharacter;
if (unit !=null && unit.InCombat && unit.HasTarget && unit.IsAlive && unit.TargetCharacter != null && unit.TargetCharacter.HasTarget && unit.TargetCharacter.CurrentHealth < unit.TargetCharacter.MaxHealth)
return true;
}
return false;
}