- Joined
- Jan 26, 2023
- RedCents
- 1,247¢
I often solo with MageKill. I would like my pet to automatically try to save my healer merc if anything attacks it, by taunting it off.
How do I get the target or top aggro holder of any arbitrary spawn without having to rotate all the nearest mobs through my toon's target?
If this isn't possible then I might look for events where my healer merc takes dmg.
I am open to alternate approaches, the goal is to save the healer whatever it takes.
Thanks in advance for any advice.
Here is some sample code:
[CODE lang="Lua" title="SaveHealer"]---@type Mq
mq = require('mq')
function SaveHealer()
if mq.TLO.Group.Members() == 0 then return false end
local healers = {
['Cleric'] = true,
['Druid'] = true,
['Shaman'] = true,
}
local save_range = 180
local myHealers = {}
-- list group healers
myHealers[mq.TLO.Me.ID()] = mq.TLO.Me.Name()
for i = 1, mq.TLO.Group.Members() do
local member = mq.TLO.Group.Member(i)
local class = member.Spawn.Class()
if healers[class] and member.Spawn.Distance3D() < save_range then
myHealers[member.Spawn.ID()] = member()
end
end
-- check if anything is attacking group healers
local xSpawn = mq.TLO.NearestSpawn('npc targetable')
while (xSpawn.Name()) do
if not xSpawn.Dead() and xSpawn.Distance3D() < save_range then
if myHealers[xSpawn.TargetOfTarget.ID()] then
print('-= SAVING =- ' .. myHealers[xSpawn.TargetOfTarget.ID()])
local id = xSpawn.ID()
mq.cmd('/pet taunt on')
mq.delay(100)
mq.cmd('/pet attack ' .. id)
mq.delay(100)
return true
end
end
xSpawn = xSpawn.Next
end
return false
end[/CODE]
How do I get the target or top aggro holder of any arbitrary spawn without having to rotate all the nearest mobs through my toon's target?
xSpawn.TargetOfTarget does not seem to work.If this isn't possible then I might look for events where my healer merc takes dmg.
I am open to alternate approaches, the goal is to save the healer whatever it takes.
Thanks in advance for any advice.
Here is some sample code:
[CODE lang="Lua" title="SaveHealer"]---@type Mq
mq = require('mq')
function SaveHealer()
if mq.TLO.Group.Members() == 0 then return false end
local healers = {
['Cleric'] = true,
['Druid'] = true,
['Shaman'] = true,
}
local save_range = 180
local myHealers = {}
-- list group healers
myHealers[mq.TLO.Me.ID()] = mq.TLO.Me.Name()
for i = 1, mq.TLO.Group.Members() do
local member = mq.TLO.Group.Member(i)
local class = member.Spawn.Class()
if healers[class] and member.Spawn.Distance3D() < save_range then
myHealers[member.Spawn.ID()] = member()
end
end
-- check if anything is attacking group healers
local xSpawn = mq.TLO.NearestSpawn('npc targetable')
while (xSpawn.Name()) do
if not xSpawn.Dead() and xSpawn.Distance3D() < save_range then
if myHealers[xSpawn.TargetOfTarget.ID()] then
print('-= SAVING =- ' .. myHealers[xSpawn.TargetOfTarget.ID()])
local id = xSpawn.ID()
mq.cmd('/pet taunt on')
mq.delay(100)
mq.cmd('/pet attack ' .. id)
mq.delay(100)
return true
end
end
xSpawn = xSpawn.Next
end
return false
end[/CODE]

