sub main
/declare CampXLoc int outer ${Me.X}
/declare CampYLoc int outer ${Me.Y}
/declare CampZLoc int outer ${Me.Z}
/declare AgroSpamTimer timer outer
|If outside of this range; warrior will bring it to camp
/declare TankCampRad int outer 20
|If mob is in this range; It will tank it.
/declare MeleeDistance int outer 75
/if (${Me.Class.Name.NotEqual[Warrior]}) {
/echo you're not a warrior....
/endmac
}
/war mode 4
/echo WarHelper for MQ2War
/echo Will maintain agro on all mobs - bad for mezz setups
/echo Will bring mobs within MeleeDistance if greater than TankCampRad (change in declares)
/echo MeleeDistance is set to ${MeleeDistance}
/echo TankCampRad is set to ${TankCampRad}
:Mainloop
/call WarriorAgro
/call TankToCamp
/goto :Mainloop
/return
Sub WarriorAgro
/if (${AgroSpamTimer}!=0) /return
/if (${Me.XTarget}==0) /return
/declare j int local
/declare n int local
/for j 1 to ${Me.XTarget}
/varset n ${Me.XTarget[${j}].ID}
/if (${Me.XTarget[${j}].PctAggro} <100 && ${Spawn[id ${n}].Distance}<${MeleeDistance}) {
/echo I dont have agro on ${Me.XTarget[${j}]}
/tar id ${Me.XTarget[${j}].ID}
/varset AgroSpamTimer 3s
}
/next j
/return
Sub TankToCamp
/if (${AgroSpamTimer}!=0) /return
/if (${Me.XTarget}==0) /return
/declare KillMob int local
/varset KillMob ${Target.ID}
/declare i int local
/declare j int local
/if (${Math.Distance[${CampYLoc},${CampXLoc}]} < ${TankCampRad}) /return
/for j 1 to ${Me.XTarget}
/if (${Me.XTarget[${j}].PctAggro}<100 || ${Me.XTarget[${j}].Stunned}) {
/return
}
/next j
/echo Looks like I have Aggro on everything and I am out of range; Time to Move back to camp... Backwards.
/stick off
/if (${Me.Class.Name.Equal[Warrior]}) /war mode 1
/attack off
:backup
/nav locxyz ${CampXLoc} ${CampYLoc} ${CampZLoc} facing=backward
/delay 5
/while (${Navigation.Active}) {
/echo Backing up still....
/delay 5
}
:waitformob
/if (${Me.XTarget} == 0) /return
/if (${Math.Distance[${CampYLoc},${CampXLoc}]} > ${TankCampRad}) {
/echo hey im not at camp!
/stick
/if (${Me.Class.Name.Equal[Warrior]}) /war mode 4
/varset AgroSpamTimer 2s
/tar id ${MyTargetID}
/attack on
/return
}
/for j 1 to ${Me.XTarget}
/if (${Me.XTarget[${j}].PctAggro}<100) {
/echo I lost agro... going back
/tar id ${Me.XTarget[${j}].ID}
/stick
/if (${Me.Class.Name.Equal[Warrior]}) /war mode 4
/varset AgroSpamTimer 2s
/tar id ${KillMob}
/attack on
/return
}
/if (${SpawnCount[npc xtarhater radius 30]}==${Me.XTarget} && ${Math.Distance[${CampYLoc},${CampXLoc}]} < ${TankCampRad}) {
/echo Killing time..
/stick
/if (${Me.Class.Name.Equal[Warrior]}) /war mode 4
/varset AgroSpamTimer 2s
/tar id ${KillMob}
/attack on
/return
}
/echo Waiting for mob....
/delay 10
/goto :waitformob
/return