Need help with a macro you are writing? Ask here!
Moderator: MacroQuest Developers
-
draco
- a ghoul

- Posts: 145
- Joined: Thu Jan 29, 2004 7:06 pm
-
Contact:
Post
by draco » Sat Jul 10, 2004 6:28 pm
I'm writing and auto pull routine. I was wondering if anyone had any information on a way to determine agro radius. Is there a way formula or otherwise to determine it from the current struct. I see fields like melee range etc. I'm adding logic to soothe (Pacify, Calm, Harmony, lull) any MOBS within a certain range of to target. Now I just need to determine what that range would be. For now I am going with a user settable flag.
Code: Select all
Sub Do-Pull
/declare PullTimeOut timer local 600
/declare addCount int local 0
/declare targetToPull int local ${Target.ID}
/echo "Moving to ${PullRange} from ${Target.CleanName}"
/call MoveToTarget ${PullRange}
/echo At Pull Range: ${Target.Distance}
/if (${DoCalmOnPull}) {
| Sooth Possible adds
/declare calmTarget int local 0
|If more than 5 to crowded to pull
/for mobCount 1 to 5
/varset calmTarget ${Target.NearestSpawn[addCount, npc radius ${AggroRadius}].ID}
/if (!${calmTarget}) /goto :finishedCalming
/squelch /target id ${calmTarget}
/call Cast ${CalmSpell}
/next mobCount
:finishedCalming
/if (${mobCount}==5) {
/call MoveToAnchor
/return LostTarget
}
/target id ${targetToPull}
}
/if (${isPuller}) {
/if (${DoCastOnPull}) {
/call do-CastOnPull
} else {
/ranged
}
/echo Target at ${Target.Distance}
/call MoveToAnchor
/face fast
:WaitOnTarget
|Nuke until it is close
/if (!${Target.ID} || ${PullTimeOut}<1 ) {
|/call ResetSub
/return LostTarget
}
|/if (${Healer}==1) /call AutoHeal
/call do-AutoSlow
/call do-CombatCast
|/pet back
/delay 1s
|/call do-ChainDot
/if (${Target.Distance}>=${Target.MaxRange}) /goto :WaitOnTarget
/varset CombatTargetID ${Target.ID}
} else {
/call ChatOut 1 ${MasterName} "Sorry, I'm not the puller."
}
/return
-
GD
- a snow griffon

- Posts: 353
- Joined: Sat Jun 29, 2002 11:57 pm
Post
by GD » Sun Jul 11, 2004 3:00 am
I'm pretty sure aggro range is serverside.
Opinions are like assholes, everyone has one, but most of them stink.
-
curiosity
- a lesser mummy

- Posts: 46
- Joined: Fri Jul 16, 2004 1:20 pm
Post
by curiosity » Mon Jul 19, 2004 5:04 am
well it's been a few days since your post, so you may have given up, but if it helps any I've found that most normal sized mob (Giants are NOT normal haha) have an agro range of 40. Obviously this is very generalized because some have more and some have less. I've found 40 to be almost a standard in LDoNs and in many other zones too.
I'd imagine if you really wanted to find out, you'd just have to use the '/mapfilter targetradius' command and keep adjusting your radius and testing for every mob. Seems like a lot of work, but could be worth it.
-
Sparr
- a hill giant

- Posts: 159
- Joined: Mon Jun 24, 2002 5:41 am
Post
by Sparr » Mon Jul 19, 2004 1:11 pm
track the targets location and heading. when it starts running almost directly at you, you got agro :)
-
draco
- a ghoul

- Posts: 145
- Joined: Thu Jan 29, 2004 7:06 pm
-
Contact:
Post
by draco » Mon Jul 19, 2004 10:19 pm
That is a good idea. I am actually trying to figure out how to avoid aggro. For exapmle determine when I should cast Pacify or Harmony of Nature. To be able to autopull in crowded areas.
-
jtanida
- a lesser mummy

- Posts: 30
- Joined: Fri Jul 09, 2004 12:39 pm
Post
by jtanida » Thu Jul 22, 2004 4:27 pm
Ok.. what if you set up your macro so you can target one sapecific mob and monitor the distance between you and it until it's location changes (would require it to be stationary of course but could be modified for moving mobs too). Set up an event so that when the mob moves the mob name and your distance is written to an ini. Then you could set up your macro so that when you target a mob it will alert you if any mobs are in it's agro radius or if you don't have agro data on that perticular mob.
This might be the long way to do it.. but may prove effective also :)
-
draco
- a ghoul

- Posts: 145
- Joined: Thu Jan 29, 2004 7:06 pm
-
Contact:
Post
by draco » Sat Jul 24, 2004 2:59 pm
Well, My routine posted above does essentially that. But, I don't have agro data on any mobs other than just knowing Snow Dervs, Planar Mob and the like have huge agro raidus' and Help Radius' where as Gnolls in SK have very small radius'. Which means the each time I run the script I have to set the variarble do trial and error on what radius doen't produce adds and what does. Not aproblem just tedius sometimes.
-
dok
- a ghoul

- Posts: 127
- Joined: Mon Mar 15, 2004 3:38 pm
Post
by dok » Sun Jul 25, 2004 2:30 am
theres actually 2 different serverside variables on when a mob aggros. Theres aggro radius (distance a mob will aggro you), and social radius (distance a mob will bring friends). Both of these values are serverside best I could tell from looking at the memory values.
True that some people try to use MaxRangeTo and such to guess at this, which may work for some mobs, but it wont work for all. Best thing I can tell you is to know the mobs and their pathing and set a value for those which you fight most often.
-
draco
- a ghoul

- Posts: 145
- Joined: Thu Jan 29, 2004 7:06 pm
-
Contact:
Post
by draco » Sun Jul 25, 2004 3:49 pm
Ok, if anyone knows of a site that has any research in this area let me know. However, I guess for now the code is done. I may setup a zone default so that whenever you pull in a certain zone if uses that value unless until you change it.
-
draco
- a ghoul

- Posts: 145
- Joined: Thu Jan 29, 2004 7:06 pm
-
Contact:
Post
by draco » Sun Jul 25, 2004 8:26 pm
Ok, if anyone knows of a site that has any research in this area let me know. However, I guess for now the code is done. I may setup a zone default so that whenever you pull in a certain zone if uses that value unless until you change it.