• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Baby AFK Necro mac (1 Viewer)

Maskoi

old and salty
Joined
Sep 28, 2005
RedCents
81,486¢
I recently started playing my necro again. So I made a few adjustments in this to help with my agro since my Bard has been tanking.

FeignAfterDots variable will make the necro FD after he casts his 2 dots and after snare. Seems to be working for what I need it to do.

I was looking for a straight forward afk necro assist mac for my lev 57 necro to help him AA with my 75 Monk tanking. All the macs I saw were for lv 75 necros with 500 aas or had 15 million variables and 3 ini files. I wanted a macro based on 8 spell gems that could be used by a level 20 or 85 necro.

I found an older necro mac that I liked the ideas in but the coding was a mess. Anytime I changed a spell it would stop working because a bunch of spells were hard coded into the marco all over the place and I couldn't make any sense of what to edit i.e. etc

if (!${Me.Buff[Wunshi's Focusing].ID} && !${Me.Buff[Talisman of Kragg].ID} && !${Me.Buff[Shadow Guard].ID}) {
/call cast ${Shielding} gem1

So far it casts 2 dots and a nuke and snares at % of mob health you assign. It will keep pet and buffs up also if you want it to.

I still have to recode the following routines and hopefully will have them soon.

sit/med routines
add support for spell gems 9 & 10


I am using a lot of code structures I like from macros by Crytsane, Alatyami and The thez i think. If i missed anyone I am sorry.

The original macro had no author in it. I rewriting it over the original parts so it is very much a work in progress. Remember I have written this so far for a 57 necro with 4 AAs lol and its my first Macro. Please feel free to comment on improving bad coding or suggestions for it.



Rich (BB code):
| BabyNecro.mac 1.0
| Target the tank when you run it
| Necro will cast 2 dots and 1 nuke at % in mobs health you assign
| Snares once the mob is under % health you assign
| Auto Taps if under % health you assign
|__________________________________________________________________

#turbo 20
#include Spell_routines.inc

#Event Fallen "#*#${Me.CleanName} has fallen to the ground.#*#"
#Event Exp "#*#You gain#*#experience!#*#"
#Event Enrage "#*#has become ENRAGED.#*#"
#Event Dot1Off "Your ${DotSpell1} has worn off #*#."
#Event Dot2Off "Your ${DotSpell2} has worn off #*#."
#Event SnareOff "Your ${SnareSpell} spell has worn off #*#."
#Event WornOff "#1# fades."
#Event WornOff "Your #1# spell has worn off of #2#."
#Event Feign "#*#hits you for#*#"
#Event Feign "#*#kicks you for#*#"
#Event Feign "#*#bites you for#*#"
#Event Feign "#*#bashes you for#*#"
#Event Feign "#*#slashes you for#*#"
#Event Feign "#*#pierces you for#*#"
#Event Feign "#*#crushes you for#*#"


Sub Main
|------------------------------------------------------------
| Your Dot Spells EDIT YOUR DOT SPELLS HERE !
|------------------------------------------------------------
/declare DotSpellOn int outer 1
/declare Dot1MobHealth int outer 93
/declare Dot2MobHealth int outer 85
/declare DotSpell1 string outer Pyre of the Lifeless
/declare DotSpell2 string outer Venonscale Venom

|------------------------------------------------------------
| Your Nuke/Tap Spells EDIT YOUR OTHER SPELLS HERE !
|------------------------------------------------------------
/declare NukeSpellOn int outer 1
/declare NukeMobHealth int outer 40
/declare NukeMyMana int outer 40
/declare NukeSpell string outer Ruinous Venin Rk. II

|------------------------------------------------------------
| Your Nuke/Tap Spells EDIT YOUR OTHER SPELLS HERE !
|------------------------------------------------------------
/declare TapLifeOn int outer 1
/declare TapManaOn int outer 0
/declare TapMyHeath int outer 70
/declare TapSpellLife string outer Siphon Essence Rk. II
/declare TapSpellMana string outer Mind Wrack

|------------------------------------------------------------
| Your Feign Death Spell EDIT YOUR FEIGN DEATH SPELL HERE !
|------------------------------------------------------------
/declare FeignOn int outer 1
/declare FeignAA int outer 1
/declare FeignSpell string outer Death Peace
/declare FeignMessages int outer 1
/declare FeignAfterDots int outer 1

|------------------------------------------------------------
| Your Snare Spell EDIT YOUR SNARE SPELL HERE !
|------------------------------------------------------------
/declare SnareOn int outer 1
/declare SnareAttempts int outer 2
/declare SnareSpell string outer Auroral Darkness
/declare SnareMobHealth int outer 70
/declare SnareMessages int outer 0

|------------------------------------------------------------
| Your Buffs to keep up! EDIT YOUR BUFF SPELLS HERE !
|------------------------------------------------------------
/declare MyBuffsOn int outer 1
/declare MyBuffLev string outer Dead Man Floating
/declare MyBuffRune string outer Shadowskin Rk. II
/declare MyBuffShield string outer Shield of Maelin
/declare MyBuffLich string outer Spectralside

|------------------------------------------------------------
| Pet Spells EDIT YOUR PET SPELLS HERE!
|------------------------------------------------------------
/declare MyPetOn int outer 1
/declare MyPet string outer Relamar's Shade
/declare PetHasteOn int outer 1
/declare PetHaste string outer Sigil of the Aberrant Rk. II
/declare PetShrinkOn int outer 1
/declare MyPetShrink string outer Tiny Companion

|------------------------------------------------------------
| Variables you don't need to worry about.
|------------------------------------------------------------
/declare Target_Mob_Dead int outer  0
/declare Target_Mob string outer
/declare SitOn int outer 1
/declare Snared int outer 0
/declare Combat int outer 0
/declare Dotted1 int outer 0
/declare Dotted2 int outer 0
/declare Nuked int outer 0
/declare ManaTapped int outer 0
/declare SnareCounter int outer 1
/declare SpellGem9AA int outer 0
/declare M_Assist string outer
/declare Feigned int outer 0


/call ChecKAssist
/call MemSpells
/call CheckMyBuffs
/call CheckPetBuffs
:Main_Loop
/doevents
/call GetTarget
/call Combat
/call MedTime
/goto :Main_Loop
/return

|----------------------------------------------------------------------------
|SUB: CheckAssist
|----------------------------------------------------------------------------
Sub CheckAssisT
/if (${Target.ID} && ${Target.Type.Equal[PC]} && ${Group.Member[${Target.CleanName}]} && ${Target.ID}!=${Me.ID}) {
/varset M_Assist ${Target.CleanName}
/echo Assist set to ${M_Assist}
/squelch /assist off
} else {
/echo Your target is NOT a player, make sure its a player character!
/endmacro
}
/return

|----------------------------------------------------------------------------
|SUB: MemSpells
|----------------------------------------------------------------------------
Sub MemSpells
/echo Memming spells. Hang on.
/book 1
/if ( !${Me.Gem[${SnareSpell}]} ) {
/memspell 1 "${SnareSpell}"
/delay 30
}
/if ( !${Me.Gem[${DotSpell1}]} ) {
/memspell 2 "${DotSpell1}"
/delay 30
}
/if ( !${Me.Gem[${DotSpell2}]} ) {
/memspell 3 "${DotSpell2}"
/delay 30
}
/if ( !${Me.Gem[${TapSpellLife}]} ) {
/memspell 4 "${TapSpellLife}"
/delay 30
}
/if ( !${Me.Gem[${NukeSpell}]} ) {
/memspell 5 "${NukeSpell}"
/delay 30
}
/if ( !${Me.Gem[${FeignSpell}]} ) {
/memspell 6 "${FeignSpell}"
/delay 30
}
/if ( !${Me.Gem[${MyBuffLich}]} ) {
/memspell 7 "${MyBuffLich}"
/delay 30
}
/if ( !${Me.Gem[${TapSpellMana}]} ) {
/memspell 8 "${TapSpellMana}"
/delay 35
}
|/if ( !${Me.Gem[${PetHaste}]} ) {
|/memspell 9 "${PetHaste}"
|/delay 30
}
/if (${Window[SpellBookWnd].Open}) /cleanup
/echo Spells are memmed.
/return

|----------------------------------------------------------------------------
|SUB: CheckMyBuffs
|----------------------------------------------------------------------------
Sub CheckMyBuffs
/if (${Combat}) /return
/if (${MyBuffsOn}) {
/Echo Checking my buffs real quick.
/if (!${Me.Buff[${MyBuffLich}].ID}) /call cast "${MyBuffLich}" gem7 5s
/if (!${Me.Buff[${MyBuffRune}].ID}) /call cast "${MyBuffRune}" gem7 5s
/if (!${Me.Buff[${MyBuffShield}].ID} && ${Spell[${MyBuffShield}].Stacks}) /call cast "${MyBuffShield}" gem7 5s
/if (!${Me.Buff[${MyBuffLev}].ID}) {
/target myself
/call cast "${MyBuffLev}" gem7 5s
}
}
/return

|----------------------------------------------------------------------------
|SUB: CheckPetBuffs
|----------------------------------------------------------------------------
Sub CheckPetBuffs
/if (${Combat}) /return
/if (${MyPetOn}) {
/Echo Checking my pet's buffs real quick.
/if (!${Me.Pet.ID}) /call SummonPet
/if (!${Me.PetBuff[${PetHaste}]}) /call cast "${PetHaste}" gem8 5s
}
/return

|----------------------------------------------------------------------------
|SUB: GetTarget
|----------------------------------------------------------------------------
Sub GetTarget
:Acquire
/assist ${M_Assist}
/if (!${Target.ID}) /return
/varset Target_Mob ${Target.ID}
/if (${Target.Name.Equal[${Me.Name}]}) {
/squelch /target clear
/goto :Acquire
}

/if (${Target.Name.Equal[${Me.Pet.Name}]}) {
/squelch /target clear
/goto :Acquire
}
/delay 1s
/return

|----------------------------------------------------------------------------
|SUB: Combat
|----------------------------------------------------------------------------
Sub Combat
/if (${Target.Type.Equal[NPC]} && ${Target.Distance}<125 && ${Target.PctHPs}<98) {
/if (!${Combat}) {
/face
/pet attack
/varset Combat 1
/varset Target_Mob ${Target.CleanName}
/echo Killing ${Target.CleanName}.
}
}
:combat_loop
/if (!${Target.ID}) /return
/doevents
/if (${Combat} && ${Target.CleanName.Equal[${Target_Mob}]}) {
/call AttackSpells
/call Snare
/goto :combat_loop
}
/return

|----------------------------------------------------------------------------
|SUB: Attack Spells
|----------------------------------------------------------------------------
sub AttackSpells


:AmIRunning
/if (${Me.Speed} > 0) /goto :AmIRunning

:LifeTap
/if (${Me.PctHPs}<${TapMyHeath} && ${Target.PctHPs}<95) { {
/call cast "${TapSpellLife}" gem4 3s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :LifeTap
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :LifeTap
}

:Dot1
/if (${DotSpellOn} && !${Dotted1} && ${Target.PctHPs}<${Dot1MobHealth}) {
/call cast "${DotSpell1}" gem2 4s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Dot1
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :Dot1
/varset Dotted1 1
}

:Dot2
/if (${DotSpellOn} && !${Dotted2} && ${Target.PctHPs}>${Dot2MobHealth}) {
/call cast "${DotSpell2}" gem3 3s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Dot2
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :Dot2
/varset Dotted2 1
}

:Nuke
/if (${NukeSpellOn} && !${Nuked} && ${Target.PctHPs}<${NukeMobHealth}) {
/call cast "${NukeSpell}" gem5 3s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Nuke
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :Nuke
/varset Nuked 1
}

:ManaTap
/if (${TapManaOn} && !${ManaTapped} && ${Target.PctHPs} > 40) {
/call cast "${TapSpellMana}" gem7 3s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :ManaTap
/if (${Macro.Return.Equal["CAST_RESISTED"]}) /varset ManaTapped 1
/varset ManaTapped 1
}

/if (${FeignAfterDots} && ${Dotted1} && ${Dotted2}) {
/Call Event_Feign
}

/return

|----------------------------------------------------------------------------
|SUB: Feign Death
|----------------------------------------------------------------------------
sub Event_Feign
/stopcast
/if (${FeignOn} && !${Me.State.Equal["FEIGN"]}) {
:FeignFailed
/if (${FeignAA} && ${Me.AltAbilityReady["428"]}) {
/call Cast "Death Peace" alt
} else {
/if (${Me.SpellReady["${FeignSpell}"]}) {
/call cast "${FeignSpell}" gem6 5s
}
}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :FeignFailed
/if (!${Me.State.Equal["FEIGN"]}) /goto :FeignFailed
/varset Feigned 1
/doevents flush
/delay 8s
}
/return

|----------------------------------------------------------------------------
|SUB: Snare - Handles snaring
|----------------------------------------------------------------------------
Sub Snare
/if (${Target.PctHPs}<=${SnareMobHealth} && ${SnareOn} && !${Snared} && ${Target.CleanName.Equal[${Target_Mob}]}) {
:snare_Loop
/call cast "${SnareSpell}" gem1

/if (${Macro.Return.Equal["CAST_RESISTED"]}) {
/if (${SnareMessages}) /g ${Target.CleanName} RESISTED SNARE! Trying again.
/varcalc SnareCounter ${SnareCounter}+1
/if (${SnareCounter} > ${SnareAttempts}) /varset Snared 1
/goto :snare_Loop
}

/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :snare_Loop

/if (${Macro.Return.Equal["CAST_IMMUNE"]}) {
/if (${SnareMessages}) /g ${Target.CleanName} IMMUNE to SNARE.
/varset Snared 1
/goto :QuitSnareLoop
}

/if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
/if (${SnareMessages}) /g ${Target.CleanName} has been SNARED!!
/varset Snared 1
/goto :QuitSnareLoop
}

} Else /goto :QuitSnareLoop
:QuitSnareLoop
/return

|----------------------------------------------------------------------------
|SUB: Event Dot1Off
|----------------------------------------------------------------------------
Sub Event_Dot1Off
/varset Dotted1 0
/return

|----------------------------------------------------------------------------
|SUB: Event Dot2Off
|----------------------------------------------------------------------------
Sub Event_Dot2Off
/varset Dotted2 0
/return

|----------------------------------------------------------------------------
|SUB: Event SnareOff
|----------------------------------------------------------------------------
Sub Event_SnareOff
/varset Snared 0
/return

|----------------------------------------------------------------------------
|SUB: Event Exp
|----------------------------------------------------------------------------

Sub Event_Exp
/echo ${Target_Mob} dead.
/varset Combat 0
/varset Dotted1 0
/varset Dotted2 0
/varset Snared 0
/varset Nuked 0
/varset ManaTapped 0
/varset Feigned 0
/varset SnareCounter 1
/varset Feigned 0
/varset Target_Mob
/call CheckMyBuffs
/call CheckPetBuffs
/Assist ${M_Assist}
/call StandUp
/return


Sub Event_Enrage
/pet back off
/return

|----------------------------------------------------------------------------
|SUB: Event Haste Pet - Listen for pet haste wearing off
|----------------------------------------------------------------------------
Sub Event_HastePet
/call CheckPetBuffs
/return


|----------------------------------------------------------------------------
|SUB: MedTime
|----------------------------------------------------------------------------
Sub MedTime
/if (${SitOn} && ${Me.PctMana}!=100 && !${Me.Casting.ID} && ${Me.Standing} && !${NearestSpawn[NPC].Distance}<=150 && !${Me.Moving}) {
|/if (${SitOn} && ${Me.PctMana}<=40 && !${Me.Casting.ID} && ${Me.Standing} && !${NearestSpawn[NPC].Distance}<=60 && !${Me.Moving}) {
|/g Medding a Sec
|/Echo Mana ${Me.PctMana}% Medding to 95%
/sit
:medloop
/delay 10s
/echo Medding - Mana ${Me.PctMana}%
/if (${Me.PctMana} >=95) /goto :medloopend
/if (${NearestSpawn[NPC].Distance}<=150) /goto :medloopend
/if (${Combat}) /goto :medloopend
/goto :medloop
}
:medloopend
/stand
/return

|----------------------------------------------------------------------------
|SUB: SummonPet
|----------------------------------------------------------------------------
Sub SummonPet
/if (${MyPetOn} && ${Spell[${MyPet}].Mana}<=${Me.CurrentMana}) {
/if (!${Me.Pet.ID}) /call cast "${MyPet}" gem7 5s
/call PetPark
/if (${PetShrink} && ${Spell[${PetShrink}].Mana}<=${Me.CurrentMana}) {
/call cast "${MyPetShrink}" gem7 5s
}
}
/return


|--------------------------------------------------------------------------------
|SUB: PetPark
|--------------------------------------------------------------------------------
Sub PetPark
/doevents
/pet taunt off
/pet follow
/if (${Me.AltAbilityReady["Pet Discipline"]}) /pet hold
/return

|----------------------------------------------------------------------------
|SUB: Event_WornOff Listens for your buffs fading
|----------------------------------------------------------------------------
Sub Event_WornOff
/call CheckMyBuffs
/return

|----------------------------------------------------------------------------
|SUB: SitDown - Sit down if standing
|----------------------------------------------------------------------------
Sub SitDown
/if (${SitOn} && !${Me.Sitting} && ${Me.PctHPs}>${TapMyHeath}) /sit
/return

|----------------------------------------------------------------------------
|SUB: StandUp - Stand up if sitting
|----------------------------------------------------------------------------
Sub StandUp
/if ( ${Me.Sitting} ) /stand
/return
 
Last edited:
thez said:
Because the boards are bugged.

What was wrong with my necro macro?

Actually the macro I found was not yours. It just happen to have the same name. I will change the name so they aren't confused. I just saw yours on MQ2 VIP boards. I like some the ideas in it. Will try it later it but looks a little much for my my 57 necro with 4 aas.

I was looking for something a little easier since my necro has 4 aas no curses etc. The macro I am writing is for duoing the necro with my monk as the main tank when i am playing..
 
I hadn't seen his until after I looked harder on mq2 forums and I had already started recoding this one. I am almost done with this one now so just going to finish it in order to learn more about macro scripting.
 
Baby AFK Necro mac

Users who are viewing this thread

Back
Top