If not, this is what I was thinking (Pseudo-code, as I am still learning MQ's syntax)
Code: Select all
global variable : maxAggroInList[]
global variable : NewAdd boolean false
local variable : iCount 0
/detect all mobs within (defined radius)
/if (mob within that radius is moving towards you OR group member within a fuzzy degree)
if (mob is approaching at Run speed)){
AggroList[maxAggroInList++] = mobID
/varset NewAdd true
}/else /echo Possible Add, %distance away from %direction
}
:AggroRemoval
/if AggroList[iCount]=dead{
remove AggroList[iCount]
maxAggroInList--
(possible make Loot List to loot this mob)
/varset iCount 1
/return
}/else if iCount++
/goto :AggroRemoval
/return
Sub event_gettinghit
:InAggroList
/if AggroList[iCount] = mob hitting me{
do normal gettinghit stuff
}
} else if iCount <=maxAggroList{
iCount ++ AND /goto :InAggroList
}
add mob to the list
/return
Sub handle_Add
|| however you want to handle the add (Via Mez/Pet Mez/Root/Fear)
/return
Sorry for the horrible mess of different syntax (I believe VB, C++, MQ, and Java in there) but hopefully you get the idea. Any help here?
Thanks
Edit : Finished off the pseudo code. Can MQ detect the direction a mob is facing? And the speed it is moving? (Run/Walk, or if need be, amount of distance covered in the last 1 sec). Or even if mob is aggro/social aggro/faction only aggro (guards)/aggro only if attacked?

