;Finds the highest HP mob, or "sheep" raid targeted mob, or least targeted mob in party mode
member:string BestSheepableAdd() ;Returns GUID
{
variable guidlist Targets
variable int TargetLimit
if ${Group.Members} <= 3
{
TargetLimit:Set[1]
}
elseif ${Group.Members} <= 5
{
TargetLimit:Set[2]
}
elseif ${Group.Members} <= 10
{
TargetLimit:Set[3]
}
else
{
TargetLimit:Set[4]
}
This:Debug["BestSheepableAdd :: Called",2]
;First check if there's a raid target we should be looking for, this can be used solo as well
if ${Config.GetCombo[cmbRaidTarget]}
{
This:Debug["BestSheepableAdd :: Scanning for raid target",3]
if ${Object[${RaidTargets[${Config.GetCombo[cmbRaidTarget]}]}](exists)} && !${Object[${RaidTargets[${Config.GetCombo[cmbRaidTarget]}]}].Dead}
{
if ${Object[${RaidTargets[${Config.GetCombo[cmbRaidTarget]}]}].PctHPs} > 85 && ${This.PartyTargetingCount[${Object[${RaidTargets[${Config.GetCombo[cmbRaidTarget]}]}].GUID}]} <= ${TargetLimit}
{
return ${Object[${RaidTargets[${Config.GetCombo[cmbRaidTarget]}]}].GUID}
}
}
}
;No raid target, see if our target even has any adds
if ${This.MobsNearPoint[${Target.Location},${Config.GetSlider[sldDetectAddRadius]}]} == 1
{
;No adds, we don't need to be here
return NULL
}
;No raid target, do a search for highest hp and/or least targeted aggro'd mob
Targets:Search[-units,-aggro,-range 0-29]
variable string HighestHP = 0
variable string HighestHPGUID
variable int i
for (i:Set[1] ; ${i} <= ${Targets.Count} ; i:Inc)
{
if ${This.PartyTargetingCount[${Targets.GUID[${i}]}]} <= ${TargetLimit}
{
if ${Targets.Object[${i}].PctHPs} == 100 && (${Targets.Object[${i}].CreatureType.Equal[Humanoid]} || ${Targets.Object[${i}].CreatureType.Equal[Beast]})
{
return ${Targets.GUID[${i}]}
}
elseif ${Targets.Object[${i}].PctHPs} > ${HighestHP} && (${Targets.Object[${i}].CreatureType.Equal[Humanoid]} || ${Targets.Object[${i}].CreatureType.Equal[Beast]})
{
HighestHPGUID:Set[${Targets.GUID[${i}]}]
HighestHP:Set[${Targets.Object[${i}].PctHPs}]
}
}
}
;No raid target and either don't have aggro'd or there weren't any good aggro'd. Check for sheep pull
if ${Targets.Count} == 0
{
Targets:Search[-units,-alive,-attackable,-range 1-${Config.GetSlider[sldDetectAddRadius]},-origin,${Target.Location}]
for (i:Set[1] ; ${i} < ${Targets.Count} ; i:Inc)
{
if ${Math.Distance[${Target.Location},${Targets.Object[${i}].Location}]} <= ${Config.GetSlider[sldDetectAddRadius]}
{
if (${Targets.Object[${i}].CreatureType.Equal[Beast]} || ${Targets.Object[${i}].CreatureType.Equal[Humanoid]}) && ${This.PartyTargetingCount[${Targets.GUID[${i}]}]} <= ${TargetLimit}
{
return ${Targets.GUID[${i}]}
}
}
}
/*
variable objectref theMob
variable int MobCount = ${MobsNearPoint[${Target.Location}]}
;No aggro, so check for a good sheep pull target
for (i:Set[1] ; ${i} <= ${MobCount} ; i:Inc)
{
theMob:Set[${NearestMob[${Target.Location},${i}]}]
if (${theMob.CreatureType.Equal[Humanoid]} || ${theMob.CreatureType.Equal[Beast]}) && ${This.PartyTargetingCount[${Targets.GUID[${i}]}]} <= ${TargetLimit}
{
;We found a good sheepable within the right distance of our target. Go ahead and return that, there's nothing else to check
return ${theMob.GUID}
}
}
*/
}