;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} } } */ }