Simple modification that adds two extra parameters to the Pull section of your ini, MinHeading and MaxHeading. It will only pull mobs that are clockwise of MinHeading, and anticlockwise of MaxHeading. 0 is north, 90 is east, 180 is south, 270 is west.
E.g. with
It'll only pull stuff that's southeast of you:

Or to only pull things north of you:

Changes, this is from eqmule version but should be the same in the regular version. Add the bold stuff. In Sub Main:
In Sub PullValidate, at the start:
In Sub PullValidate, at the end:
This calculation looks "wrong", but it gives a heading where 0/360 is north, 90 is east, 180 is south, and 270 is west. Makes sense to me.
E.g. with
Rich (BB code):
[Pull]
MinHeading=90
MaxHeading=180
It'll only pull stuff that's southeast of you:

Or to only pull things north of you:
Rich (BB code):
[Pull]
MinHeading=270
MaxHeading=90

Changes, this is from eqmule version but should be the same in the regular version. Add the bold stuff. In Sub Main:
Rich (BB code):
/call LoadIni Pull PullWith string "Melee"
/call LoadIni Pull PullMeleeStick int 0
/call LoadIni Pull MaxRadius int 350
/call LoadIni Pull MinHeading int 0
/call LoadIni Pull MaxHeading int 360
/call LoadIni Pull MaxZRange int 50
/call LoadIni Pull CheckForMemblurredMobsInCamp int 0
/call LoadIni Pull PullWait int 5
In Sub PullValidate, at the start:
Rich (BB code):
Sub PullValidate(PVPullMob, int PFlag, int checksec)
/declare j int local
/declare headingFromCampToMob float local 0
/if (!${MobsToPull.Find[All for all]} && ${MobsToPull.NotEqual[All]}) {
/for j 1 to 25
/if (${DebugPull}) {
In Sub PullValidate, at the end:
Rich (BB code):
/if (${DebugPull}) /echo \atDEBUGPULL PullValidate: PFlag: ${PFlag} ${Spawn[${PVPullMob}].CleanName} invalid target Reason: No Pull Names with Mobs in Camp \agLine#: ${Macro.CurLine}
/return 0
}
| Check if heading from camp is within allowed range
/varset headingFromCampToMob ${Math.Calc[${Spawn[${PVPullMob}].HeadingTo[${CampYLoc},${CampXLoc}].Degrees}]}
| If MinHeading is higher than max heading, reverse the comparison
/if (((${MaxHeading}>${MinHeading}) && !${Range.Inside[${MinHeading},${MaxHeading}:${headingFromCampToMob}]}) || ((${MaxHeading}<${MinHeading}) && ${Range.Inside[${MaxHeading},${MinHeading}:${headingFromCampToMob}]})) {
/if (${DebugPull}) /echo \atDEBUGPULL PullValidate: PFlag: ${PFlag} ${Spawn[${PVPullMob}].CleanName} invalid target Reason: Wrong heading \agLine#: ${Macro.CurLine}
/return 0
}
/if (${Spawn[${PVPullMob}].Named}) {
/echo Found a named to pull: ${Spawn[${PVPullMob}].Name}
}
This calculation looks "wrong", but it gives a heading where 0/360 is north, 90 is east, 180 is south, and 270 is west. Makes sense to me.



