Help section from before the user variable changes that broke all macros
Moderator: MacroQuest Developers
-
MQuser
- decaying skeleton

- Posts: 4
- Joined: Mon Dec 02, 2002 4:48 am
Post
by MQuser » Wed Dec 04, 2002 5:03 am
Works very well so far, near perfect for what I use it for.
However.. I'm sure there are a lot of things done wrong, or that could be done better, since I dont really know what I'm doing :)
Any help is appreciated.
Code: Select all
| Root DoT - Created by MQuser
#event rootbreak "Your Engorging Roots spell has worn off"
#event swarmdone "Your Swarming Death spell has worn off"
#event dronesdone "Your Drones of Doom spell has worn off"
#event wrathdone "Your Wrath of Nature spell has worn off"
#event furydone "Your Fury of Ro spell has worn off"
#event mobdone "You gain experience!"
#event Fizzle "Your spell fizzles!"
#event Interrupt "Your spell is interrupted."
#event Recover "You haven't recovered yet..."
#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 Standing "You must be standing to cast a spell"
#event Collapse "Your gate is too unstable, and collapses."
#define CastStatus v59
#define CastTimer t7
#define CAST_SUCCESS 0
#define CAST_UNKNOWNSPELL 1
#define CAST_RESTART 2
#define CAST_OUTOFMANA 3
#define CAST_OUTOFRANGE 4
#define CAST_CANNOTSEE 5
#define CAST_STUNNED 6
#define CAST_RESISTED 7
Sub Main
/echo Soloing $target(name)
/sit
:loop
/doevents
/goto :loop
Sub Event_rootbreak
/sit off
/if n $target(distance,nopredict)<80 {
/face away
/goto :run
}
/goto :root
/return
:run
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/goto :root
}
/goto :run
/return
:root
/face away
/sit off
/call cast "Engorging Roots"
/delay 20
/if n $target(distance,nopredict)<80 {
/goto :safe
}
/sit
/return
:safe
/face away
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/return
}
/if n $target(speed) != 0 {
/goto :root
}
/goto :safe
Sub Event_swarmdone
/if n $target(speed) != 0 {
/sit off
/face away
/call cast "Engorging Roots"
/delay 20
}
/if n $target(distance,nopredict)<80 {
/goto :safe
}
/goto :swarm
/return
:swarm
/if n $target(hp,pct)>5 {
/sit off
/call cast "Swarming Death"
/delay 65
/sit
}
/return
:safe
/face away
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/goto :swarm
/return
}
/goto :safe
sub Event_dronesdone
/if n $target(speed) !=0 {
/sit off
/face away
/call cast "Engorging Roots"
/delay 20
}
/if n $target(distance,nopredict)<80 {
/goto :safe
}
/goto :drones
/return
:drones
/press 6
/delay 85
/sit
/return
:safe
/face away
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/goto :drones
/return
}
/goto :safe
sub Event_wrathdone
/if n $target(speed) !=0 {
/sit off
/face away
/call cast "Engorging Roots"
/delay 20
}
/if n $target(distance,nopredict)<80 {
/goto :safe
}
/goto :wrath
/return
:wrath
/press 0
/delay 95
/sit
/return
:safe
/face away
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/goto :wrath
/return
}
/goto :safe
sub Event_furydone
/if n $target(speed) !=0 {
/sit off
/face away
/call cast "Engorging Roots"
/delay 20
}
/if n $target(distance,nopredict)<80 {
/goto :safe
}
/goto :fury
/return
:fury
/if n $target(hp,pct)>5 {
/call cast "Fury of Ro"
/delay 65
/sit
}
/return
:safe
/face away
/sendkey down W
/if n $target(distance,nopredict)>80 {
/sendkey up W
/goto :fury
/return
}
/goto :safe
Sub Event_mobdone
/endmacro
/return
Sub Cast
/if n $char(gem,"$p0")==0 /return CAST_UNKNOWNSPELL
:StartCast
/if n $char(gem,"$p0")<0 /call WaitForRefresh "$p0"
/cast "$p0"
/varset CastTimer $int($spell("$p0",casttime)*10+$spell("$p0",recoverytime)*10)
/varset CastStatus CAST_SUCCESS
:WaitCast
/doevents Fizzle
/doevents Interrupt
/doevents Recover
/doevents Standing
/doevents OutOfRange
/doevents OutOfMana
/doevents NoLOS
/doevents Resisted
/if n $CastStatus==CAST_RESTART /goto :StartCast
/if n $CastStatus>CAST_RESTART /return $CastStatus
/if n $CastTimer>0 /goto :WaitCast
/varset CastTimer 0
/return CAST_SUCCESS
Sub WaitForRefresh
:LoopWaitForRefresh
/delay 0
/if n $char(gem,"$p0")<0 /goto :LoopWaitForRefresh
/return
Sub Event_Fizzle
/varset CastStatus CAST_RESTART
/return
Sub Event_Interrupt
/varset CastStatus CAST_RESTART
/return
Sub Event_Recover
/varset CastStatus CAST_RESTART
/delay 5
/return
Sub Event_Standing
/varset CastStatus CAST_RESTART
/stand
/return
Sub Event_Collapse
/varset CastStatus CAST_RESTART
/return
Sub Event_OutOfMana
/varset CastStatus CAST_OUTOFMANA
/return
Sub Event_OutOfRange
/varset CastStatus CAST_OUTOFRANGE
/return
Sub Event_NoLOS
/varset CastStatus CAST_CANNOTSEE
/return
Sub Event_Stunned
/varset CastStatus CAST_STUNNED
/return
Sub Event_Resisted
/varset CastStatus CAST_RESISTED
/return
-
Vendor001
- Cheezily Banned

- Posts: 78
- Joined: Wed Nov 13, 2002 1:37 pm
Post
by Vendor001 » Wed Dec 11, 2002 6:16 pm
This is really great. A root/dot/nuke macro is exactly what i've been wanting for christmas!!
I'm going through this, trying to integrate into hunter.mac, but the logic here is kinda...jumpy.
So does this work 100% of the time? It seems to me it might get derailed(especially if the mob is green to you).
I thought this would be kinda cool to merge with hunter.mac and then use to auto-level a druid, but kinda looks like i have my work cut out for me to get it integrated.
-
MQuser
- decaying skeleton

- Posts: 4
- Joined: Mon Dec 02, 2002 4:48 am
Post
by MQuser » Fri Dec 13, 2002 8:08 am
Like I said, I really dont know how to code with Macroquest at all hehe, so I'm sure its somewhat confusing.
I haven't tried it for a little while, just haven't had time to solo, and I'm sure theres better ways to do what I did, but yes it does work extremely well.
The only problem I have is that because of how the spell casting code works, when I get a resist, it trist to recast right away. What would be idea is if when I got a resist, it checked its distance before trying to recast. Because in my case, the things I'm soloing hit for 600 and I cannot really afford to stand there trying to cast :p
Other than that though it works very well, however poorly coded it may be. hehe
-
lifewolf
- a ghoul

- Posts: 143
- Joined: Fri Oct 18, 2002 6:29 pm
Post
by lifewolf » Fri Dec 13, 2002 10:50 am
BTW for normal DD spells, the max casting range is 200, or 230 with improved range.
Max casting range for druid dots is atleast 10 more each respectivly. Im not sure exactly how much more though. ES sleves seem at times to be just a little further too. Sadly you can stand at about 240 with drood dots and outrange casting NPCs that arent druids or rangers, which the latter doesent matter if you get stinging swarm cast on you.
-
SingleServing
- a hill giant

- Posts: 195
- Joined: Tue Dec 17, 2002 11:00 pm
Post
by SingleServing » Sun Dec 22, 2002 7:20 am
I will have to try this out, if it works with mah druid a little editing and it will work with my shaman.
=)
-
sangoku
- orc pawn

- Posts: 10
- Joined: Tue Dec 17, 2002 11:22 pm
Post
by sangoku » Sun Dec 22, 2002 3:06 pm
If you ever get this for a shammy, be sure to post it!! :)
-
SingleServing
- a hill giant

- Posts: 195
- Joined: Tue Dec 17, 2002 11:00 pm
Post
by SingleServing » Mon Dec 23, 2002 4:34 pm
sangoku wrote:If you ever get this for a shammy, be sure to post it!! :)
Let me clear up the purpose of this macro now that I have a better understanding of it. This macro does not find a mob for you to kill, dot it, root it or do anything until you do that first. This macro simply makes sure the spells you have already applied to a mob stick. For example if you find a mob turn this macro on and cast root and nothing else all this macro will do is keep re-rooting the mob when roots wears off while maintaining your safe distance. If you also dotted the mob it would make sure to recast your dot once it wore off.
Not horribly written althought MQuser could have saved some time by including spellcast.mac. Not really what I expected the macro to be, but if anyone wants to change it for their class just rename the events to make them fit, ie "Your Root spell has worn off", "Your Envenomed Bolt has worn off", then fix the spell names from "Engorging roots" to "root" or whatever. I bet this would work horribly well for an epic'd necro.
-
SingleServing
- a hill giant

- Posts: 195
- Joined: Tue Dec 17, 2002 11:00 pm
Post
by SingleServing » Mon Dec 23, 2002 4:38 pm
lifewolf wrote:BTW for normal DD spells, the max casting range is 200, or 230 with improved range.
Max casting range for druid dots is atleast 10 more each respectivly. Im not sure exactly how much more though. ES sleves seem at times to be just a little further too. Sadly you can stand at about 240 with drood dots and outrange casting NPCs that arent druids or rangers, which the latter doesent matter if you get stinging swarm cast on you.
Good point, be careful about zones with a lot of slopes however, the distance of 200 is right as long as you are the same altitude. If you are at the top of a big hill you will not be able to cast as far.
-
L124RD
- Site Admin

- Posts: 1343
- Joined: Fri Jun 14, 2002 12:15 am
- Location: Cyberspace
-
Contact:
Post
by L124RD » Mon Dec 23, 2002 4:50 pm
Salutations,
will you stop double posting?
-
SingleServing
- a hill giant

- Posts: 195
- Joined: Tue Dec 17, 2002 11:00 pm
Post
by SingleServing » Mon Dec 23, 2002 6:30 pm
L124RD wrote:Salutations,
will you stop double posting?
Sorry

-
L124RD
- Site Admin

- Posts: 1343
- Joined: Fri Jun 14, 2002 12:15 am
- Location: Cyberspace
-
Contact:
Post
by L124RD » Tue Dec 24, 2002 2:42 pm
Salutations,
*pat pats* it's ok... but try to make your double posts into one or something, no trying to get up to my 900 something posts... or something...

-
Imperfect
- Macro Author

- Posts: 319
- Joined: Fri Jun 14, 2002 1:52 am
Post
by Imperfect » Tue Dec 24, 2002 7:17 pm
For not being familiar with MQ syntax it is not half bad.
-
YKW-28983
- a hill giant

- Posts: 252
- Joined: Sun Dec 01, 2002 11:37 pm
Post
by YKW-28983 » Sat Dec 28, 2002 7:46 pm
What happens if the mob is directly at you ? if he's not moving and beating you down, your screwed.