- Version of KissAssist.mac?
- 11.003
- When did your problem start?
- Found at least since the addition of the FindMobNAV function in v11.000
- Character Role?
- Hunter
- What class is having this issue?
- Warrior
- How often does this issue occur?
- Always
- Can you reproduce the issue?
- Easiest to see if you set MaxRadius in your character ini to a large distance in a wide open zone, like oceangreen village or hills and use a distance of say 1300 feet. Then run in hunter mode
I have found that when running my tank in hunter mode, while in a large open zone like Oceangreen village, and I have my MaxRadius quite large, in this case 1350 feet, as I'm hunting basically the entire upper 2/3rds of the zone, my tank will very frequently ignore mobs that are 50 feet away to pursue a mob that is upwards of 1000 feet away. I've certainly seen it with a smaller radius before, and while it was annoying, it was less of a concern, but when I started farming larger areas it really stood out that there was something not right with the sub-routine.
After a bit of time poring through KA's routines I stumbled on what appears to be two lines missing from an if statement that control the actions of your hunter mode character's target acquisition. In version 11.003 from the pinned thread on discord two days ago it was found at line 7378. Effectively it resides within the Sub FindMobNAV, within this for loop and set of if statements:
There is currently no varset defined when you have an existing nav path to a mob, and it IS within PullRange. There is only one defined if it's outside of your PullRange, and it sets it to 10000. Through some echos within the sub I tracked it down to the final mob selection not being chosen based on distance from the hunter as it should be. I also found that the sub-routine FindMobHunter is never called anywhere in the Macro. I'm of the opinion it belonged in this Sub.
I fixed the issue the following way, and through testing it appears to be working pretty much perfectly now for me by adding two lines:
to the above for loop to end up with this:
Through an hour of hunter mode farming I've found that at least as far as I can tell, the hunter will always go to the mob with the shortest Nav path length now.
Having said this, I also feel that the Sub FindMobHunter is essentially redundant, and the FindMobNAV routine works fine without the call entirely. I do not upon review find that the second sub adds anything positive to the assessment routine and seems redundant to the functions in the FindMobNAV, although I may be overlooking something.
Toadwart
After a bit of time poring through KA's routines I stumbled on what appears to be two lines missing from an if statement that control the actions of your hunter mode character's target acquisition. In version 11.003 from the pinned thread on discord two days ago it was found at line 7378. Effectively it resides within the Sub FindMobNAV, within this for loop and set of if statements:
Code:
/for p 1 to ${ECount}
/if (${PRole.Find[hunter]}) {
/varset PathArray[${p}] ${NearestSpawn[${p}, npc loc ${Me.X} ${Me.Y} radius ${MaxRadius} zradius ${MaxZRange} targetable noalert 1].ID}
} else {
/varset PathArray[${p}] ${NearestSpawn[${p}, npc loc ${CampXLoc} ${CampYLoc} radius ${MaxRadius} zradius ${MaxZRange} targetable noalert 1].ID}
}
/varset PullMob ${PathArray[${p}]}
/if (${PRole.Find[hunter]}) {
/if (${Navigation.PathExists[id ${PullMob}]}) {
/if (${Navigation.PathLength[id ${PullMob}]}>=${PullRange}) {
/varset PathDistance[${p}] 10000
DEBUGPULL hunter mob outside of pull range >>${Navigation.PathLength[id ${PullMob}]}<< skipping.
}
}
} else /if (${Navigation.PathExists[id ${PullMob}]}) {
/varset PathDistance[${p}] ${Navigation.PathLength[id ${PullMob}]}
DEBUGPULL Succsesfully Added ${Navigation.PathExists[id ${PullMob}]} (dist :${PathDistance[${p}]}) to the pull array.
} else {
/varset PathDistance[${p}] 100000
}
/next p
There is currently no varset defined when you have an existing nav path to a mob, and it IS within PullRange. There is only one defined if it's outside of your PullRange, and it sets it to 10000. Through some echos within the sub I tracked it down to the final mob selection not being chosen based on distance from the hunter as it should be. I also found that the sub-routine FindMobHunter is never called anywhere in the Macro. I'm of the opinion it belonged in this Sub.
I fixed the issue the following way, and through testing it appears to be working pretty much perfectly now for me by adding two lines:
Code:
/call FindMobHunter
/varset PathDistance[${p}] ${Navigation.PathLength[id ${PullMob}]}
to the above for loop to end up with this:
Code:
/for p 1 to ${ECount}
/if (${PRole.Find[hunter]}) {
/varset PathArray[${p}] ${NearestSpawn[${p}, npc loc ${Me.X} ${Me.Y} radius ${MaxRadius} zradius ${MaxZRange} targetable noalert 1].ID}
} else {
/varset PathArray[${p}] ${NearestSpawn[${p}, npc loc ${CampXLoc} ${CampYLoc} radius ${MaxRadius} zradius ${MaxZRange} targetable noalert 1].ID}
}
/varset PullMob ${PathArray[${p}]}
/if (${PRole.Find[hunter]}) {
/if (${Navigation.PathExists[id ${PullMob}]}) {
/if (${Navigation.PathLength[id ${PullMob}]}>=${PullRange}) {
/varset PathDistance[${p}] 10000
DEBUGPULL hunter mob outside of pull range >>${Navigation.PathLength[id ${PullMob}]}<< skipping.
}
/call FindMobHunter
/varset PathDistance[${p}] ${Navigation.PathLength[id ${PullMob}]}
}
} else /if (${Navigation.PathExists[id ${PullMob}]}) {
/varset PathDistance[${p}] ${Navigation.PathLength[id ${PullMob}]}
DEBUGPULL Succsesfully Added ${Navigation.PathExists[id ${PullMob}]} (dist :${PathDistance[${p}]}) to the pull array.
} else {
/varset PathDistance[${p}] 100000
}
/next p
Through an hour of hunter mode farming I've found that at least as far as I can tell, the hunter will always go to the mob with the shortest Nav path length now.
Having said this, I also feel that the Sub FindMobHunter is essentially redundant, and the FindMobNAV routine works fine without the call entirely. I do not upon review find that the second sub adds anything positive to the assessment routine and seems redundant to the functions in the FindMobNAV, although I may be overlooking something.
Toadwart
Last edited:

