Page 3 of 5

Posted: Tue Oct 05, 2004 2:15 am
by Foramorm
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

Posted: Tue Oct 05, 2004 2:16 am
by Foramorm
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?

Posted: Tue Oct 05, 2004 3:28 am
by Hubba
You need to have the snippet "spell_routines.inc" in your macro folder.
Check snippets for latest "spell_routines.inc"

Posted: Tue Oct 05, 2004 6:30 pm
by drcrimzon
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?

Posted: Wed Oct 06, 2004 1:43 am
by Extralarge
Really nice work!

Posted: Wed Oct 06, 2004 10:10 am
by drcrimzon
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!

Posted: Wed Oct 06, 2004 10:50 am
by fearless
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

Posted: Wed Oct 06, 2004 11:09 am
by drcrimzon
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.

Posted: Wed Oct 06, 2004 4:15 pm
by drcrimzon
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

Posted: Wed Oct 06, 2004 4:27 pm
by fearless
Thanks for the info, that is what I understood from looking at the macro. I just wanted some confirmation.

Thanks again.

Posted: Thu Oct 07, 2004 7:15 am
by dedpoet
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 :-)

Posted: Fri Oct 08, 2004 1:42 am
by OnyxSys
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?

Posted: Fri Oct 08, 2004 9:07 am
by Hubba
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...

Posted: Fri Oct 08, 2004 11:38 am
by fearless
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 

Posted: Mon Oct 11, 2004 4:50 am
by Hubba
Ok, check for adds is doable with NearestSpawn.

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