• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Ranger Assist / Snare (1 Viewer)

CodeCompiler

banned
BANNED
Joined
Dec 10, 2005
RedCents
201¢
Another one of the pretty Macro's me and friends been working on agian. So lets share the wealth I guess. I got like 20 that are out there for others. But this is for Stand alone ranger groups or if your hydra'ing a Ranger


Mac File.
PHP:
//Dirty's super simple ranger snare & autofire macro.
#turbo 10
#include spellcast.inc
#Event Assist          "#*#Assist#*#"
#Event Ensnare          "has been ensnared."
#Event SnareFaded	"Your ensnare spell has worn off of"

Sub Main
/declare MobSnared      bool outer FALSE

:loopstart
/do events
/goto :loopstart
/return

Sub Event_Assist
/if (${Target.ID} && (${Target.PctHPs}<=95))
/assist <Tank Name>
/delay 2s
/autofire on
/if (${Target.ID} && (${Target.PctHPs}<=90) && (${Me.SpellReady["Ensnare"]}) && !${MobSnared})) /call cast "Ensnare"
/return

Sub Event_Ensnare
/varset MobSnared TRUE
/return

Sub Event_SnareFaded
/varset MobSnared FALSE
/return

Spellcast .inc

PHP:
|
| SpellCast.inc
|
| Last Modified: 5/14/2004 9:30pm
| This will cast a spell reliably for you...
|
| Usage:
|       /call Cast "spellname|itemname|AA#|AAskillname" [item|activate|gem#] [nocheck|dismount|nodismount]
|
| If no dismount or nodismount is provided it defaults to nodismount.
|
| This would essentially: /cast "Death Peace"
| example: /call Cast "Death Peace"
|
| This would essentially: Check for the spell in your spell slots, if not there mem it to spell
|                         gem slot 7 and then /cast "Death Peace"
| example: /call Cast "Death Peace" gem7
|
| This would essentially: /cast item "White Rope Bridle"
| example: /call Cast "White Rope Bridle" item
|
| This would essentially: /alt activate 169
| example: /call Cast "169" activate
|  or...
| example: /call Cast "Divine Arbitration" activate
|
| This would dismount if your target was lost or dies mid-cast, cast Burn and mem it to spell
| slot 3 if it wasn't already memmed:
| example: /call Cast "Burn" gem3 dismount
|
| This would not dismount but would move you back and forth if your target was lost or dies mid-cast, cast Burn and mem
| it to spell slot 3 if it wasn't already memmed:
| example: /call Cast "Burn" gem3 nodismount
|
| 'nocheck' is the default for the "loss of target/target dying" value.  If nocheck is specified (Or nothing was specified)
| no target checking will be performed and spellcast.inc should act like the spellcast.inc of the past.
|
| It will return the following values:
| CAST_SUCCESS
| CAST_UNKNOWNSPELL
| CAST_OUTOFMANA
| CAST_OUTOFRANGE
| CAST_CANNOTSEE
| CAST_STUNNED
| CAST_RESISTED
| CAST_TOOK2LONG
| CAST_ABILITYNOTREADY
| CAST_IMMUNESLOW
| CAST_LOSTTARGET
|
| New Vars Modification
| Plazmic's no globals needed version
|
| Oct 09, 2003 - Updated to work with new vars and $char(casting) -gf
| Oct 11, 2003 - switched some logic, removed defines -gf
| Oct 15, 2003 - Item support added by -EqMule
| XXX xx, xxxx - Modified to add automeming of spells. -Goofmester1
| Dec 26, 2003 - fd fail 1 added -m0nk
| Jan 01, 2004 - timeout(5s) added to stop "dead-time" -m0nk
| Jan 01, 2004 - switchd fdfail to a standing check. -m0nk
| Jan 01, 2004 - added silence checking as a stun check -m0nk
| Feb 17, 2004 - added AA activate capabilities -ml2517
| Apr 11, 2004 - Updated for new Parm system -ml2517
| Apr 12, 2004 - Will spit out a different message on immune to slows. -ml2517
| Apr 16, 2004 - Removed /sendkeys and replaced with /keypress. -ml2517
| Apr 17, 2004 - Various code enhancements. -Wassup
| Apr 20, 2004 - Updated all of the /if's to have parenthesis. -ml2517
| Apr 25, 2004 - Updated to new variable system. -ml2517
| Apr 29, 2004 - Fixed Item problem -ml2517
| Apr 29, 2004 - Changed the alt ability to use AltAbilityReady instead of an event. -ml2517
| May 02, 2004 - Added the ability to specify a gem slot to mem spells to. -ml2517
| May 10, 2004 - Updated for new event system.
| May 12, 2004 - Added suggestions for loss of target and stun handling change. -ml2517
| May 13, 2004 - Activate now accepts AA skill by name or number. -ml2517
| May 14, 2004 - Added the nocheck value, it is the default. This bypasses the target checking code. -ml2517
|

#event Fizzle "#*#Your spell fizzles#*#"
#event Interrupt "#*#Your casting has been interrupted#*#"
#event Interrupt "#*#Your spell is interrupted.#*#"
#event Recover "#*#You haven't recovered yet...#*#"
#event Recover "#*#Spell recovery time not yet met.#*#"
#event Resisted "#*#Your target resisted the #*#"
#event OutOfMana "#*#Insufficient Mana to cast this spell!#*#"
#event OutOfRange "#*#Your target is out of range, get closer!#*#"
#event NoLOS "#*#You cannot see your target.#*#"
#event Stunned "#*#You cannot cast while stunned#*#"
#event Stunned "#*#You *CANNOT* cast spells, you have been silenced!#*#"
#event Standing "#*#You must be standing to cast a spell#*#"
#event Standing "#*#has fallen to the ground.#*#"
#event Collapse "#*#Your gate is too unstable, and collapses.#*#"
#event ImmuneSlow "#*#Your target is immune to changes in its attack speed.#*#"


Sub Cast(SpellName,ItemFlag,DismountFlag)
   /declare HaveTarget int local 0
   /declare CastBarTime timer local
   /declare CastCurrLocY float local 0
   /declare CastCurrLocX float local 0
   /varset CastCurrLocY ${Me.Y}
   /varset CastCurrLocX ${Me.X}
   /if (${Target.ID}>0) /varset HaveTarget 1
   /if (!${Defined[CastGiveUpTime]}) /declare CastGiveUpTime timer local
   /if (!${Defined[ItemFlag]}) /declare ItemFlag string local
   /if (!${Defined[DismountFlag]}) {
       /declare DismountFlag string local nocheck
       /if (${ItemFlag.Find["dismount"]}) /varset DismountFlag ${ItemFlag}
   }
   /if (!${Me.Standing} && !${Me.Mount.ID}>0) /stand
   /if (${Me.Moving}) {
       /keypress forward
       /keypress back
       /delay 8
   } else {
       /delay 4
   }
   /if (${ItemFlag.Equal["Item"]} || ${ItemFlag.Equal["Activate"]}) /goto :StartCast

   /if (!${Me.Gem["${SpellName}"]}) {
       /if (${ItemFlag.Find[gem]}) {
           /if (${Int[${ItemFlag.Right[1]}]}>0 && ${Int[${ItemFlag.Right[1]}]}<9) {
               /memspell ${ItemFlag.Right[1]} "${SpellName}"
               /delay 5s
           } else {
               /goto :GenericMem
           }
       } else {       
           :GenericMem
           /memspell 5 "${SpellName}"
           /delay 5s
       }

   }
   :StartCast
      /varset CastGiveUpTime 5s
   :CastNow
      /if (${ItemFlag.Equal["Item"]}) {
         /call ClearReturnValue
         /cast item "${SpellName}"
      } else /if (${ItemFlag.Equal["Activate"]}) {
         /call ClearReturnValue
         /if (!${Me.AltAbilityReady[${SpellName}]}) /return CAST_ABILITYNOTREADY
         /alt activate ${AltAbility[${SpellName}].ID}
         /varset CastBarTime ${Me.Casting.CastTime}
      } else {
         /if (!${Me.Gem["${SpellName}"]}) /return CAST_UNKNOWNSPELL
         /call ClearReturnValue
         /if (!${Me.SpellReady["${SpellName}"]}) {
            /if (${CastGiveUpTime}==0) /return CAST_TOOK2LONG
            /delay 1
            /goto :CastNow
         }
         /cast "${SpellName}"
         /varset CastBarTime ${Math.Calc[${Me.Casting.CastTime}*10]}
      }
   :WaitCast
      /if (${Me.Casting.ID}) {
         /if ((!${Target.ID}>0 || ${Target.Type.Equal[CORPSE]}) && !${DismountFlag.Find[nocheck]} && ${HaveTarget}==1) {
             /if (${Me.Mount.ID}>0) {
                 /if (${DismountFlag.Equal[dismount]}) {
                     /dismount
                 } else {
                     /if (!${ItemFlag.Equal["Item"]}) {
                         /if (${CastBarTime}<7) {
                             :Interrupt
                             /keypress FORWARD hold
                             /delay 6
                             /keypress FORWARD
                             /keypress BACK hold
                             /delay 8
                             /keypress BACK
                         } else {
                             :HoldForSpell
                             /delay 1
                             /if (${CastBarTime}<7) /goto :Interrupt
                             /goto :HoldForSpell
                         }
                     } else {
                         /keypress FORWARD hold
                         :Forward
                         /delay 1
                         /if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}<6) /goto :Forward
                         /keypress FORWARD
                         /keypress BACK hold
                         :Backward
                         /delay 1
                         /if (${Math.Distance[${CastCurrLocY},${CastCurrLocX}]}>4) /goto :Backward
                         /keypress BACK
                         /if (!${Me.Casting.ID}>0) /goto :DuckTime
                     }
                 }
             }
             :DuckTime
             /keypress FORWARD
             /keypress BACK
             /if (!${Me.Ducking}) /keypress DUCK
             /delay 1
             /if (${Me.Ducking}) /keypress DUCK
             /return CAST_LOSTTARGET
         }
         /delay 1
         /goto :WaitCast
      }
   /delay 4
   /doevents Fizzle
   /doevents Interrupt
   /doevents Interrupt
   /doevents Recover
   /doevents Standing
   /doevents OutOfRange
   /doevents OutOfMana
   /doevents NoLOS
   /doevents Resisted
   /doevents ImmuneSlow
   /doevents Stunned
   /doevents Collapse
   /delay 1
   /if (${Macro.Return.Equal["CAST_RESTART"]}) /goto :StartCast
   /if (!${Macro.Return.Equal["NULL"]}) /return ${Macro.Return}
/return CAST_SUCCESS

Sub ClearReturnValue
/return NULL

Sub Event_Fizzle
/return CAST_RESTART

Sub Event_Interrupt
/return CAST_RESTART

Sub Event_Recover
   /delay 5
/return CAST_RESTART

Sub Event_Standing
   /stand
/return CAST_RESTART

Sub Event_Collapse
/return CAST_RESTART

Sub Event_OutOfMana
/return CAST_OUTOFMANA

Sub Event_OutOfRange
/return CAST_OUTOFRANGE

Sub Event_NoLOS
/return CAST_CANNOTSEE

Sub Event_Stunned
   /delay 2s !${Me.Stunned}
/return CAST_RESTART

Sub Event_Resisted
/return CAST_RESISTED

Sub Event_ImmuneSlow
/return CAST_IMMUNESLOW
 
Instead of the delay of 2 seconds (I would be pulling with the same toon I would be MA'ing with... so I want some leeway before the ranger starts firing off arrows) I could put in this:

/if (${Target.ID} && (${Target.PctHPs}<=90) /autofire on

... and the ranger wouldn't start shooting off arrows until the mob was at 90%, right?

I'm 99.9% sure this is how things would go down, but I wanted to ask to be sure anyway.
 
Yes Sum you could so that. If you wanted the leway there to give ya some time to build up agro most tanks pull with there taunt I use in Valdeholm all the time and this has never taken agro when I pull and use taunt on mob before I get to camp. and make Assist call.

But hell enjoy it anyway you like. I got alot more I can post but I am currently at work til 7am :( so I will be posting alot more i got some bard assist mac's with HoS and Once it calls it will trigger for shaman slow lol stuff like that so they multiple function macros but I had these I shared with friend other night still in email. So I thought would share the wealth.

If people want this done for specific classes or want something to be modified and you dont know how to please contact me on msn.
[email protected]
 
Last edited:
hah... yea, I need some time to build some agro before the ranger starts shooting off arrows. I have a decent weapons setup, but since I'm tanking with a bard... well... bard agro sucks the big one. I need probably 10% or so with DS and my melee to build up enough agro to hold it throughout the fight.
 
Not a Problem.. I also posted a good AA/ PL / Leveling mac for the bard also on my icefall one. Dirty made for me. I have a couple more I am going to start out with mostly the simple ones are the best ones esspecially if you hydra'ing. But I do love my bard one that I got lol buddy of mine jumped in and started doing it while I was so we grouped and it was a blast killing mobs.
 
I'm iffy about using a kiting macro in an open zone. Instanced zones are one thing, since more than one person can do it at the same time... but non-instanced zones can bring problems (jealous people who want the camp can /petition you, etc)
 
Aye this one is Hidden in the Bear Cave and kites in the back one. So people cant see ya unless is a Rogue with SoS cause the SI mobs bring on the raping to them. And those level 68 bears hit HARD. =) so yeah. For most part I would agree. But I have done this with out Fail for a long time. Buddy had issue with someone coming in and seeing him once but he died with in 2 seconds of coming in there and it was actually funny cause dude ran in and died and that was about it. He summonz corpse and bam thats the only case so far I have seen. But it brought 4 more bears for him to kill.
 
That was before you released the macro to the public :P .... now folks will be doing it more often, and even those who AREN'T doing it will know about it and basically pinpoint folks on their server who use MQ2.

Maybe I'll watch the area for a while to make sure it's safe... but I still honestly will probably not do it. The bard is my main and raid-geared... would be a bitch to lose him.
 
Haha yeah my bard is gimp but I LOVE my bard with a passion. I just like to help friends level and AA and thats my enjoyment although I am almost demi plane. But... Still im gimp.
 
I can change this for druids also for snare / heal if you like just a idea but would only do if druids want. These are not the buff bots or anything like that but it is a group heal. So..Let me know send me private messages and i will work on them for ya. Me and Friends need stuff to do.
 
Any chance that this could be looked at? Mine just loops, after it targets my mob it will wait a few sec then reset.

Looks like a very simple mac but go figure cant see whats wrong with it.
 
Ranger Assist / Snare

Users who are viewing this thread

Back
Top
Cart