- Joined
- May 17, 2015
- RedCents
- 6,058¢
Noticed often if I am fighting big monsters like Giants when my tank pulls he will sit there and wait while the giant beats on him.
This is because there is a hard coded >=20 distance, which works as most things can attack you around there.
I changed it to use >=${Math.Calc[${Target.MaxRange}+5]} instead of >=20
Here is my full WaitForMob so you can see where i switched to ${Math.Calc[${Target.MaxRange}+5
This is because there is a hard coded >=20 distance, which works as most things can attack you around there.
I changed it to use >=${Math.Calc[${Target.MaxRange}+5]} instead of >=20
Here is my full WaitForMob so you can see where i switched to ${Math.Calc[${Target.MaxRange}+5
Rich (BB code):
Sub WaitForMob
/if (${Select[${Role},hunter,hunterpettank]} || ${DPSPaused}) /return
/if (${DebugPull}) /echo \atDEBUGPULL WaitForMob Enter \agLine#: ${Macro.CurLine}
/varset WaitTimer 30s
/if (${Pulled}) {
/if (${DebugPull}) /echo \atDEBUGPULL WaitForMob Waiting for mob \agLine#: ${Macro.CurLine}
/call DoWeMove
/delay 60s ${Math.Distance[${Me.Y},${Me.X}:${CampYLoc},${CampXLoc}]}<=${CampRadius}
/if (${ChainPull}) /varset LastMobPullID ${Target.ID}
/declare FaceTimer timer local 0
/if (${InvSlot[ranged].Item.Name.NotEqual[${OrigRanged}]} && ${OrigRanged.NotEqual[null]}) {
/call CheckCasting 50
/exchange "${OrigRanged}" ranged
}
:WaitForMob
/if (${FaceMobOn} && ${Target.ID} && (${Me.Standing} || ${Me.Mount.ID})) /face nolook
/doevents
/call MobRadar ${CampRadius} WaitForMob
| If NOT chain pulling and multiple mobs in camp. /return
/if (${MobCount}>=2 && !${ChainPull}) {
/call PullReset
/return
}
/if (${DebugPull}) /echo \atDEBUGPULL - WaitTimer: ${WaitTimer} Mob Dist from Camp: ${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${CampYLoc},${CampXLoc}]}>=${CampRadius} Mob Dist from tank: ${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${Me.Y},${Me.X}]}>=20 \agLine#: ${Macro.CurLine}
| if target lost somehow add to ignore list and continue pulls
/if ((!${AggroTargetID} && !${ChainPull}) || ${WaitTimer}==0) {
/if (${DebugPull}) /echo \atDEBUGPULL WaitForMob /return no AggroTargetID \agLine#: ${Macro.CurLine}
/squelch /alert add 1 id ${Target.ID}
/call PullReset
/return
}
/varset FaceTimer 1s
/delay 1s
| I am PULLER with PET TANK
/if (${Select[${Role},pullerpettank]}) {
|- Make sure pet is returning to camp with me.
/if (${Me.Pet.ID} && ${Math.Distance[${Me.Pet.Y},${Me.Pet.X}:${CampYLoc},${CampXLoc}]}>${CampRadius} && ${Math.Distance[${Me.Pet.Y},${Me.Pet.X}:${Me.Y},${Me.X}]}>20) {
/pet back off
/delay 10
/pet follow
}
| If the mob is within pet attack distance from camp send the pet in to attack
/if (${Math.Distance[${CampYLoc},${CampXLoc}:${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}]}>=${PetAttackRange}) /goto :WaitForMob
/if (!${PetAttack}) /call CombatPet
}
| I am PULLER TANK
/if (${Select[${Role},pullertank]}) {
| Wait in camp for mob if timer active and mob is outside of camp radius and mob is farther away from tank than 20 feet
/if (${WaitTimer} && ${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${CampYLoc},${CampXLoc}]}>=${CampRadius} && ${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${Me.Y},${Me.X}]}>=${Math.Calc[${Target.MaxRange}+5]}) /goto :WaitForMob
}
| If I am PULLER and NOT chain pulling
/if (${Select[${Role},puller]} && !${ChainPull}) {
/if (${Math.Distance[${CampYLoc},${CampXLoc}:${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}]}>=${CampRadius} && ${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${Spawn[=${MainAssist}].Y},${Spawn[=${MainAssist}].X}]}>=${Math.Calc[${Target.MaxRange}+5]}) /goto :WaitForMob
/if (${MercOn} && !${MercAssisting} && ${MyTargetID} && ${Mercenary.State.Equal[Active]}) /call MercsDoWhat
}
| If I am PULLER and chain pulling
/if (${Select[${Role},puller]} && ${ChainPull}) {
| Leave if multi mobs or no mobs
/if (${MobCount}>=2 || !${MyTargetID} || (${Me.XTarget[${XTSlot}].ID} && ${Me.XTarget[${XTSlot2}].ID})) {
/call PullReset
/return
}
/if (${Math.Distance[${Spawn[${MyTargetID}].Y},${Spawn[${MyTargetID}].X}:${Spawn[=${MainAssist}].Y},${Spawn[=${MainAssist}].X}]}>20 && ${Target.ID}==${Spawn[${MyTargetID}].ID} && ${Me.TargetOfTarget.ID}==${Me.ID}) /goto :WaitForMob
}
}
/if (${Group}==1 && ${Select[${Role},puller]} && ${Group.Puller.Name.Equal[${Me}]} && ${Spawn[=${MainAssist}].Type.Equal[Mercenary]} && ${Spawn[${MyTargetID}].Distance}<=${MeleeDistance}) /call AssignGroupRole unset "${Me.CleanName}" 3
/if (${MyTargetID} && (!${AggroTargetID} && !${ChainPull}) || (!${Me.XTarget[${XTSlot2}].ID} && ${Me.XTarget[${XTSlot}].ID}!=${MyTargetID} && ${ChainPull})) /call PullReset
/if (${IAmABard}) /call DoBardStuff
/varset WaitTimer 0
/call MercsDoWhat
/if (${DebugPull}) /echo \atDEBUGPULL WaitForMob Leave \agLine#: ${Macro.CurLine}
/return

