Shaman Macro - v0.7.2 - Hubba (2004-11-09)

Post your completed (working) macros here. Only for macros using MQ2Data syntax!

Moderator: MacroQuest Developers

Foramorm
decaying skeleton
decaying skeleton
Posts: 2
Joined: Tue Oct 05, 2004 2:12 am

Post by Foramorm » Tue Oct 05, 2004 2:15 am

Sorry, i'm a total MQ2 newb, but i've read the FAQ's and what not, and found nothing that answered questions along these lines.

Every time I try to run it, I get the following error:

Couldn't open include file: C:\Documents and Settings\.....\macros\spell_routines.inc
The current macro has ended.
Unable to add macro line.

WTF is up?! :evil:
Don't flame pleeb

Foramorm
decaying skeleton
decaying skeleton
Posts: 2
Joined: Tue Oct 05, 2004 2:12 am

Post by Foramorm » Tue Oct 05, 2004 2:16 am

As a note, I tried adding another file to the macro's folder, using the Spell_Routine code written by Rusty.

I named it Spell_Routine. But still, nothing.

What do I need to do to make it work?

Hubba
orc pawn
orc pawn
Posts: 22
Joined: Wed Jul 14, 2004 5:00 am

Post by Hubba » Tue Oct 05, 2004 3:28 am

You need to have the snippet "spell_routines.inc" in your macro folder.
Check snippets for latest "spell_routines.inc"

drcrimzon
decaying skeleton
decaying skeleton
Posts: 7
Joined: Tue Oct 05, 2004 6:22 pm

Post by drcrimzon » Tue Oct 05, 2004 6:30 pm

Just a Heads up. If you have Cannibilize up in the new Gem 9, the bot tries to get the recast status of the spell, and gets an error while trying to cann.

"/varset failed, variable 'spellRecastTime9' not found"

Found this in spell_routines.inc, and changed it, but now I get a "You do not seem to have that spell memorized." and I cant figure out what side is generating it.

/if ( !${Defined[spellRecastTime1]} ) {
/if ( !${Defined[noInterrupt]} ) /declare noInterrupt int outer 0
/declare moveBack bool outer false
/declare refreshTime timer outer 0
/declare itemRefreshTime float outer 0
/declare i int local
/declare castReturn string outer
/delay 5
/for i 1 to 9 (From 1 to 8)

Cross posting this in Spell_Routines.inc thread.

Any ideas?

Extralarge
orc pawn
orc pawn
Posts: 12
Joined: Mon Oct 27, 2003 10:47 am

Post by Extralarge » Wed Oct 06, 2004 1:43 am

Really nice work!

drcrimzon
decaying skeleton
decaying skeleton
Posts: 7
Joined: Tue Oct 05, 2004 6:22 pm

Post by drcrimzon » Wed Oct 06, 2004 10:10 am

Also noticed that at some points my shammy will Cann down to 50-55%, and Cann-V pops up, still is only 50m, he will cann, thus dropping him down to 15%, thus low HP aggro.

Got him killed before I noticed that, lol. Also I wasnt comfortable with him sitting at 50-60% health all the time, so I changed the calc from 50% to about 61%, not at mana efficient, but makes me feel a little more comfortable.

But, I HIGHLY recommend this to ALL Shamans... This macro is AWESOME. Used it for 4 hours in OoW last night, 2 deaths (due to cann-health issue, before I changed it from 2400hp for cann5 to 3900), Upon death, he goes into rez mode, click him, pops in loots corpse, mems spells, and starts re-buffing.

Thank you for this great macro!

User avatar
fearless
Not a Psychic
Posts: 2684
Joined: Wed Mar 10, 2004 3:52 pm

Post by fearless » Wed Oct 06, 2004 10:50 am

Hubba-

This macro looks great. I looked through the code but did not see any add checking to get secondary mobs slowed. My question to you is what happens if you do not have a mezzer in group?

Thanks
Reading . . . it's not just for me.

[url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url]
[quote="Ccomp5950"]Fearless showed me the light, you too shall learn.[/quote]

drcrimzon
decaying skeleton
decaying skeleton
Posts: 7
Joined: Tue Oct 05, 2004 6:22 pm

Post by drcrimzon » Wed Oct 06, 2004 11:09 am

Right now, Adds are not slowed. The macro only checks to see if the MA's attack is on, and if it is, it slows the mob they are attacking.

The macro does not know if a second mob comes into the camp, you would have to move the MA over to the second mob for the Shammy to slow it. No clue on what would have to be done to add awareness of other mobs in camp. It would be tricky, because you might have Non-KoS mobs wander into camp, and the Shaman slows it, thus creating an add. But for now, I just move the MA over to the second mob until shaman slows it, then back over to original.

I tried to manually slow, but with the macro running, it is hard to target something long enough to cast the spell (The second you change your target, the macro re-assists the MA.)

I guess you could add a routine to answer a group called "Slow" to assist the person who called the slow, and cast slow, then go back to MA's target.

drcrimzon
decaying skeleton
decaying skeleton
Posts: 7
Joined: Tue Oct 05, 2004 6:22 pm

Post by drcrimzon » Wed Oct 06, 2004 4:15 pm

drcrimzon wrote:"You do not seem to have that spell memorized." and I cant figure out what side is generating it.
FYI Found the fix here, MQ2 issue.
http://www.macroquest2.com/phpBB2/viewtopic.php?t=9335

User avatar
fearless
Not a Psychic
Posts: 2684
Joined: Wed Mar 10, 2004 3:52 pm

Post by fearless » Wed Oct 06, 2004 4:27 pm

Thanks for the info, that is what I understood from looking at the macro. I just wanted some confirmation.

Thanks again.
Reading . . . it's not just for me.

[url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url]
[quote="Ccomp5950"]Fearless showed me the light, you too shall learn.[/quote]

dedpoet
a hill giant
a hill giant
Posts: 247
Joined: Sat Aug 14, 2004 12:22 pm

Post by dedpoet » Thu Oct 07, 2004 7:15 am

I tried to manually slow, but with the macro running, it is hard to target something long enough to cast the spell (The second you change your target, the macro re-assists the MA.)

I guess you could add a routine to answer a group called "Slow" to assist the person who called the slow, and cast slow, then go back to MA's target.
I am dealing with this exact issue in my own shaman macro. Currentlly when I bot him, I just make sure I have a hotkey with /mqpause on it. If I get an add I pause it, take care of the add manaually, and then go back to the original. I leave it on pause until they're both dead, otherwise he'll reslow the original target and then the add again. It's inconvenient, but when I'm botting I tend to stick with single pull camps. I don't know enough to make a fully aware bot that watches for adds, determines if they are aggro, etc. Maybe someday, but for now /mqpause works for me :-)

User avatar
OnyxSys
a ghoul
a ghoul
Posts: 133
Joined: Sun Dec 21, 2003 9:58 pm
Contact:

Post by OnyxSys » Fri Oct 08, 2004 1:42 am

OK can we make this work with or without the 9th spell gem? Also how can i disable the SIT feature, it drives me nuts, i rather just stand all the time and canni :)

ok fixed the SIT feature..

Code: Select all

/if (${Me.State.Equal[Stand]}) /sit 
Took this out in 2 parts of the Mac

There a easy way to make you be able to cast multiple dot's?

Hubba
orc pawn
orc pawn
Posts: 22
Joined: Wed Jul 14, 2004 5:00 am

Post by Hubba » Fri Oct 08, 2004 9:07 am

WoW! Thanks guys.

Checking one add is not that hard, checking for 2 adds is a PIA. That's why I implemented a tell system. Tho is best to have a /mqpause. I use it alot on macros.
Problem with adds is that /target can only handle one ID. Like /target notid <ID> if you could check more then one ID it's solved.

I make the changes for canni5 in the script to 3500.

The early version (this is a complete rewrite of my old code so it looks and is easly maintained) runned for 24h with a whole grp boted, aye... puller, tank, cleric, rog etc etc...

User avatar
fearless
Not a Psychic
Posts: 2684
Joined: Wed Mar 10, 2004 3:52 pm

Post by fearless » Fri Oct 08, 2004 11:38 am

Straight out of Advbot, which is one of the better macs at handling adds. There's a lot of extra stuff in the sub that is not needed, but this should give a good base for handling / slowing extra mobs.

Code: Select all

Sub DebuffSub 
/call IterateNPC 
/varset DebuffTimer ${DebuffCheckTime} 
/declare a int local 
/declare b int local 
/declare c int local 
/declare MATarget int local 0 
/if (${PauseAssist}==0) { 
    /if (${TankName.Length}>0 && !${TankName.Equal[Main Assist Name]}) { 
        /if (${Spawn[pc ${TankName}].Distance}<200) { 
            /squelch /target myself 
            /delay 1s ${Target.ID}==${Me.ID} 
            /assist ${TankName} 
            /delay 1s ${Target.ID}!=${Me.ID} 
            /varset MATarget ${Target.ID} 
        } 
    } 
} 
/for a 1 to ${TrackNumber} 
    /doevents Enraged 
    /call AdvPathCall  
    /if (${PauseDebuffs}==0  && !${Me.Moving}) { 
        /if (${MobList[${a}]}!=0) { 
        /for b 1 to ${DebuffCount} 
            /doevents Enraged 
            /if (${MobList[${a}]}!=${MATarget} && ${DebuffOnMATarget[${b}]}==1 && ${PauseAssist}==0) /goto :BreakOutDebuff 
            /if (${VarNpcCount}<${DebuffMinMobsInArea[${b}]}) /goto :BreakOutDebuff 

            /call AdvPathCall  
            /squelch /target id ${MobList[${a}]} 
            /delay 1s ${Target.ID}==${MobList[${a}]} 
            /if (!${Target.Type.Equal["NPC"]}) /goto :NotNPC 
            /if (${Spawn[${MobList[${a}]}].Distance}>${Radius}) /goto :NotNPC 
            /if (((${MDL[${a},${b}]}==0)||(${MDL[${a},${b}]}<${Math.Calc[${Macro.RunTime}]}))&&(${Spawn[${MobList[${a}]}].PctHPs}<=${DebuffMinHealth[${b}]})&&(${Spawn[${MobList[${a}]}].PctHPs}>${DebuffMinHealthNoCast[${b}]})&&(!${Spawn[${MobList[${a}]}].State.Equal["DEAD"]})&&(${Me.PctMana}>${DebuffMinMana[${b}]})) { 
                /if (((!${Debuff[${b}].Find["item"]})&&(!${Debuff[${b}].Find["activate"]}))&&((!${Me.SpellReady["${Debuff[${b}]}"]})&&(${Me.Gem["${Debuff[${b}]}"]}))) { 
                    /for c 1 to 30 
                        /delay 1 
                        /if (${Me.SpellReady["${Debuff[${b}]}"]}) { 
                            /goto :ContinueDebuff 
                        } 
                    /next c 
                    /if (!${Me.SpellReady["${Debuff[${b}]}"]}) /goto :BreakOutDebuff 
                } 
                :ContinueDebuff 
                /if (!${Target.ID}>0) /goto :NotNPC 
                /echo Debuffing: -[ ${Spawn[${MobList[${a}]}].CleanName} ]- with ${Debuff[${b}]}. 
                /if (${FaceBeforeDebuff}==1) /face 
                /if (${Announce}==1) { 
                    /call Debuff ${MobList[${a}]} "${Debuff[${b}]}" "${DebuffAnnounce[${b}]}" ${a} ${b} "${DebuffMemToSlot[${b}]}" 
                } else { 
                    /call Debuff ${MobList[${a}]} "${Debuff[${b}]}" "NULL" ${a} ${b} "${DebuffMemToSlot[${b}]}" 
                } 

                /if (${Macro.Return.Equal["CAST_LOSTTARGET"]}) { 
                    /delay 5 
                    /return 
                } 
                /if (${Macro.Return.Equal["NODELAY"]}) { 
                    /if (${DebuffDuration[${b}]}==99999) { 
                        /varset MDL[${a},${b}] ${Math.Calc[99999+${Macro.RunTime}]} 
                    } else /if (${DebuffDuration[${b}]}==0) { 
                        /if (${Spell[${DebuffID[${b}]}].Duration.TotalSeconds}==0) { 
                            /varset MDL[${a},${b}] ${Math.Calc[(1+${Macro.RunTime})-5]} 
                        } else { 
                            /varset MDL[${a},${b}] ${Math.Calc[(${Spell[${DebuffID[${b}]}].Duration.TotalSeconds}+${Macro.RunTime})-5]} 
                        } 
                    } else { 
                        /varset MDL[${a},${b}] ${Math.Calc[(${DebuffDuration[${b}]}+${Macro.RunTime})-5]} 
                    } 
                } else { 
                    /varset MDL[${a},${b}] ${Math.Calc[15+${Macro.RunTime}]} 
                } 
                /if (${PauseHeals}==0 && ${HealTimer}==0) /call HealCheck 
                /if (${PausePet}==0 && ${PetCheckTimer}==0) /call PetCheck 
            } 
        :BreakOutDebuff 
        /next b 
        /if (${PauseEvents}==0 && ${EventTimer}==0 && !${Me.Moving}) /call EventCheck 
        /if (${PauseHeals}==0 && ${HealTimer}==0) /call HealCheck 
        } 
    } 
    :NotNPC 
    /doevents 
/next a 
/return 
Reading . . . it's not just for me.

[url=http://www.catb.org/~esr/faqs/smart-questions.html]How To Ask Questions The Smart Way[/url]
[quote="Ccomp5950"]Fearless showed me the light, you too shall learn.[/quote]

Hubba
orc pawn
orc pawn
Posts: 22
Joined: Wed Jul 14, 2004 5:00 am

Post by Hubba » Mon Oct 11, 2004 4:50 am

Ok, check for adds is doable with NearestSpawn.

When and if I implement "check for adds" is a good question tho.