genbot.mac Bot for any class.

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

Stogar
a lesser mummy
a lesser mummy
Posts: 58
Joined: Mon Oct 13, 2003 12:02 pm

Post by Stogar » Tue Oct 14, 2003 10:31 am

I just started using this and gotta say WOW. I've been playing EQ for 4 years, playing 3-4 accts for about 3 of those. I've tried out and used about every EQ "enhancement" that's out there. Been very lazy about getting into macroquest as I always kinda looked at it as a tradeskill or plat making program. Man was I ignorant.

I've only just started to use it but this is great. I can now just glance at the other computer screens as nessesary instead of going to hit hotkeys or move the mouse. I was dragging around my druid and chanter PLers like pets!

VERY well done Grimjack. Thank you for the time you obviously put into this. I am really kicking myself for not firing up MQ earlier.

Nightshift
a lesser mummy
a lesser mummy
Posts: 54
Joined: Mon Oct 13, 2003 8:52 am

Post by Nightshift » Tue Oct 14, 2003 2:30 pm

grimjack wrote:
Nightshift wrote:

Code: Select all

/if "$spawn($group(@GroupMember),class)"=="Shadow Knight" /call Tankheal 
Just wondering if this is right, since the syntax is not the same as all the rest.

Shouldn't it be this;

Code: Select all

/if $spawn($group(@GroupMember),class)=="Shadow Knight" /call Tankheal 
or is it that way due to two words(Shadow Knight)?


NightShift
It's because Shadow Knight is 2 words.

Thanks, thought it might be, still learning, but getting there..

NightShift

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Tue Oct 14, 2003 2:52 pm

Trying to add a routine to your Genbot to target an add mez it - when mez fades it reacquires target and recasts mez.

This is what i have so far in Personal.inc

Code: Select all

Sub Do-add
   /declare addtarget local
   /target 
   /target notid $target(id)
   /varset addtarget $target()
   /if $target(level)<=61
     /call SpellSub "Rapture"
now in botspell.inc i have the following:

Code: Select all

#Event NoMez "The rapture fades."

Sub Event_NoMez
   /tell @MasterName Mez has worn off.
/return
My question is will the addtarget local variable keep the stored target to allow reacquisition or will it have to be done another way?
Blakbelt

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Tue Oct 14, 2003 2:54 pm

oh and if it has to be done another way could you give me some pointers ;)
Blakbelt

User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

Post by grimjack » Tue Oct 14, 2003 7:05 pm

blakbelt wrote:Trying to add a routine to your Genbot to target an add mez it - when mez fades it reacquires target and recasts mez.

This is what i have so far in Personal.inc

Code: Select all

Sub Do-add
   /declare addtarget local
   /target 
   /target notid $target(id)
   /varset addtarget $target()
   /if $target(level)<=61
     /call SpellSub "Rapture"
now in botspell.inc i have the following:

Code: Select all

#Event NoMez "The rapture fades."

Sub Event_NoMez
   /tell @MasterName Mez has worn off.
/return
My question is will the addtarget local variable keep the stored target to allow reacquisition or will it have to be done another way?
I think you will want to declare it as a global variable un the PersonalSetupVars section. Then you can /varset it in the add sub. It will be accessable from any of the other subs then.
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack

ezeekiel
decaying skeleton
decaying skeleton
Posts: 4
Joined: Wed Sep 03, 2003 2:36 am

Post by ezeekiel » Tue Oct 14, 2003 7:48 pm

I get genbot too work but upon starting the macro, i then start too get really bad framerate and it last intill i end the macro, have any sugestions too fix this?

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Tue Oct 14, 2003 8:25 pm

Ok i have managed to change the personal.inc to include a subroutine for mezzing an add target (i hope).

It is untested and will remain so for the next couple of days - would appreciate it if someone could test it if possible or just read through the code and see if there are any noticeable errors.

Code: Select all

|personal.inc 
|Personal commands module. 
|Version 6.2 
|Date:10/11/2003 5:31pm 
| 
| 
|Commands in this module: 
|test 
|add
|mount
|dismount
| 
|---------------------------Events-----------------------------------

#Event NoMez &#8220;The rapture fades.&#8221;
#Event Break &#8220; has been awakened by &#8220;
#Event Mezzed &#8220;swoons in raptured bliss&#8221;

|--------------------------Personal Commands-----------------

Sub PersonalCommands 
   /varset Commands(0,0) test
   /varset Commands(0,1) add
   /varset Commands(0,2) mount
   /varset Commands(0,3) dismount 
   /varset ArrayPers 0 
/return 

Sub TellCmds-personal 
   /msg @MasterName test, add, mount, dismount 
/return 

|Things that you want to happen every loop through the macro go in this sub. 
Sub PersonalMain 
/return 

Sub SetupPersonalVars 
|Core variables 
   /call SetupCoreVars 
   /varset RangeMin 10 
   /varset RangeMax 12 
   /varset FastRange 15 
   /varset Relaytells 1 
|Spell Module Variables 
   /call SetupSpellVars 
   /varset SitAfterCast 0 
   /varset DefaultSpellSet "default" 
   /varset EvacSpell "Evacuate" 
|Combat Module Variables 
   /call SetupCombatVars 
   /varset DoBackstab 0 
   /varset DoTaunt 0 
   /varset DoEvade 0 
   /varset DoSlam 0 
   /varset DoBash 0 
   /varset DoKick 0 
   /varset DoTraps 0 
   /varset Aggressive 0 
|Healer Module Variables 
   /call SetupHealerVars 
   /varset IsHealer 0 
   /varset IsPally 0 
   /varset ReportAutoHeal 0 
   /varset CasterHealIsHot 0 
   /varset HotDelay 60 
   /varset HealPets 0 
   /varset TankSpell "Name of autoheal spell for tanks" 
   /varset CasterSpell "Name of autoheal spell for casters" 
   /varset PetSpell "Name of autoheal for pets" 
   /varset HealCasterMsg "Healing %t" 
   /varset HealTankMsg "Big Healing %t" 
   /varset HealPetMsg "Healing %t" 
   /varset PalHealGrpMsg "Pally group heal inc." 
   /varset PalHealMsg "Healing %t" 
   /varset DefaultHealSpell "Name of default heal spell" 
   /varset PallyGroupSpell "Name of Pally group heal" 
   /varset PallyHealSpell "Name of Pally heal" 
   /varset CasterPctHeal 51 
   /varset TankPctHeal 51 
   /varset PetPctHeal 51 
|Personal Variables 
   /declare testvar123 global
   /declare addtarget global
   /declare meztimer timer
   /declare ismezzed global
   /varset meztimer 42s
   /varset addtarget 0
   /varset ismezzed 0 
   /varset testvar123 foo 
/return 

Sub Do-test 
   /echo @testvar123 
/return

Sub Do-add
  /assist @MasterName
  /target noted $target(id)
  /varset addtarget $target(id)
  /call SpellSub &#8220;Rapture&#8221;
  /doevents
  /if n @ismezzed==1 /tell @MasterName $target(name) is mezzed
     /goto :Re-Mez
/return

Sub Do-mount
   /press 6
/return

Sub Do-dismount
   /dismount
/return

:Re-Mez
  /target @addtarget              | forgot to add this line 
  /if n @meztimer<=7s
    /call SpellSub &#8220;Rapture&#8221;
    /doevents
/return

|--------------------------Events----------------------

Sub Event_Mezzed
  /varset ismezzed 1
  /varset meztimer 42s
/return

Sub Event_NoMez
  /varset ismezzed 0
  /varset meztimer 0s
  /tell @MasterName Mez has worn off
/return

Sub Event_Break
  /varset ismezzed 0
  /varset meztimer 0s
/return
Its based on the 10/11 personal.inc
Last edited by blakbelt on Wed Oct 15, 2003 3:26 pm, edited 3 times in total.
Blakbelt

fryfrog
a hill giant
a hill giant
Posts: 271
Joined: Fri Jun 20, 2003 5:37 am

Post by fryfrog » Wed Oct 15, 2003 7:35 am

How do you know which target the mez wore off of? Or are you only tracking one mez at a time? Or is it just telling you a mez has worn off?

The problem I had with checking mezes (for a melee to stop attacking) was that they had so many different phrases for landing that it got annoying to try and catch all of them.

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Wed Oct 15, 2003 3:27 pm

editted to include a line i missed when typing it in.
Blakbelt

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

Post by Waxxedazz » Wed Oct 15, 2003 9:38 pm

I have a problem currently where I target myself then tell bot to cast and the bot wont assist to target myself. he either keeps the current target or doesnt get a target at all. The way I have been doing it is F1, /tell bot target me, /tell bot sn buff. Is there a better way to do this? kinda sucks if I have autoheal off and need to heal myself. Also I was wondering if there is a way to tell the difference between a beast and his pet. I have noticed that when I target someone and they have a familiar or a beast pet out it targets the pet if its closer. I am assuming it does this because the persons name is in the beginning of the pet name.

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Wed Oct 15, 2003 9:41 pm

If you are targetting yourself better to /t botname assist. Although i cant see why /t botname target doesnt work?
Blakbelt

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Wed Oct 15, 2003 9:44 pm

I think from reading the code that you have to supply a name with target. i.e. /t botname target soandso, simply using me shouldnt work unles you have me defined somewhere??
Blakbelt

Waxxedazz
a lesser mummy
a lesser mummy
Posts: 47
Joined: Sat May 31, 2003 7:09 pm

Post by Waxxedazz » Wed Oct 15, 2003 10:04 pm

no lol sub my name in for me. the whole thing was its not assisting me when im targeting myself say for haste. I /tell bot sn swift like the wind while I have myself targeted. It wont assist me to target myself. It just leaves the target blank. I.E. If I have myself targeted and /tell bot assist it wont.

bob_the_builder
a hill giant
a hill giant
Posts: 275
Joined: Tue Jul 22, 2003 1:22 pm

Post by bob_the_builder » Wed Oct 15, 2003 10:42 pm

I really like this macro. But I find it to lag any machine I run it on. Considerably noticeable when trying to move around in a zone. I litterally have to stop it and restart it after I get to a "camp spot". I don't recall having this problem last week but time is a blur sometimes. Anyways, is this just me or does anyone find it to "lag" when trying to run trhough a zone or following?

blakbelt
a lesser mummy
a lesser mummy
Posts: 70
Joined: Wed Aug 27, 2003 12:40 pm
Location: Scotland UK

Post by blakbelt » Thu Oct 16, 2003 1:58 am

Added my own version of bothealer which includes a subroutine to check whether the target is slowed if it is not slowed it casts a fast cast heal if it is slowed it reverts to tankheal.

Code: Select all

|bothealer.inc 
|Bot healer module. 
|Version 6.2 
|Date:10/08/2003 9:31pm 
| 
| 
|Commands in this module: 
|autoheal, togglehot, setpetheal, settankheal, setcasterheal, 
|setdefaultheal, autohealpets, heal, setfastheal 
| 
|Requires botspell.inc 

#Event enchslow &#8220;slows down&#8221;
#Event shamslow &#8220; yawns&#8221;

Sub HealerCommands 
   /varset Commands(4,0) autoheal 
   /varset Commands(4,1) settankheal 
   /varset Commands(4,2) setcasterheal 
   /varset Commands(4,3) setdefaultheal 
   /varset Commands(4,4) heal 
   /varset Commands(4,5) togglehot 
   /varset Commands(4,6) setpetheal 
   /varset Commands(4,7) autohealpets
   /varset Commands(4,8) setfastheal 
   /varset ArrayHeal 8
/return 

Sub TellCmds-healer 
   /msg @MasterName autoheal, settankheal, setcasterheal, setdefaultheal, heal, togglehot, setpetheal, autohealpets, setfastheal 
/return 


Sub SetupHealerVars 
   /declare CmdList-healer global 
   /declare HealPetMsg global 
   /declare PetPctHeal global 
   /declare HealPets global 
   /declare PetSpell global 
   /declare CasterPctHeal global 
   /declare TankPctHeal global 
   /declare HealCasterMsg global 
   /declare HealTankMsg global 
   /declare HotDelay global 
   /declare ReportAutoHeal global 
   /declare CasterHealIsHot global 
   /declare HealedId global 
   /declare DefaultHealSpell global 
   /declare TankSpell global 
   /declare CasterSpell global 
   /declare IsHealer global 
   /declare FastTankHeal global
   /declare slowed global
   /declare HOTWait timer 
   /declare CastMsgTimer1 timer 
   /declare CastMsgTimer2 timer 
/return 

Sub CheckGrpHealth 
   /varset GroupMember 0
   /varset slowed 0 
   /if n "@IsHealer"==0 /return 
   /varcalc GroupMax $group(count)-1 
   :GroupLoop 
   /doevents 
   /if n $spawn($group(@GroupMember),hp,pct)<@TankPctHeal { 
      /if n $spawn($group(@GroupMember),hp,pct)>=1 { 
        /if n @slowed ==1{
          /if $spawn($group(@GroupMember),class)=="Warrior" /call Tankheal 
          /if $spawn($group(@GroupMember),class)=="Paladin" /call Tankheal 
          /if "$spawn($group(@GroupMember),class)"=="Shadow Knight" /call Tankheal 
          /if $spawn($group(@GroupMember),class)=="Beastlord" /call Tankheal 
          /if $spawn($group(@GroupMember),class)=="Monk" /call Tankheal 
          /if $spawn($group(@GroupMember),class)=="Ranger" /call Tankheal      
        } 
     }
   } 
   /if n $spawn($group(@GroupMember),hp,pct)<@TankPctHeal { 
      /if n $spawn($group(@GroupMember),hp,pct)>=1 { 
        /if n @slowed ==0{
          /if $spawn($group(@GroupMember),class)=="Warrior" /call Fastheal 
          /if $spawn($group(@GroupMember),class)=="Paladin" /call Fastheal 
          /if "$spawn($group(@GroupMember),class)"=="Shadow Knight" /call Fastheal 
          /if $spawn($group(@GroupMember),class)=="Beastlord" /call Fastheal 
          /if $spawn($group(@GroupMember),class)=="Monk" /call Fastheal 
          /if $spawn($group(@GroupMember),class)=="Ranger" /call Fastheal      
        } 
     }
   }
   /if n $spawn($group(@GroupMember),hp,pct)>=1 { 
      /if n $spawn($group(@GroupMember),hp,pct)<@CasterPctHeal { 
         /if $spawn($group(@GroupMember),class)=="Wizard" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Enchanter" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Magician" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Shaman" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Rogue" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Cleric" /call Casterheal 
         /if $spawn($group(@GroupMember),class)=="Druid" /call Casterheal 
      } 
   } 
   /if n @HealPets==1 { 
      /if n $spawn($group(@GroupMember),pet)>0 { 
         /if n $spawn($spawn($group(@GroupMember),pet),hp,pct)<@PetPctHeal { 
            /call Petheal 
         } 
      } 
   } 
   /if n @GroupMember>=@GroupMax /return 
   /varadd GroupMember 1 
   /doevents 
   /goto :GroupLoop 
/return 

Sub Tankheal 
   /if n $group(@GroupMember)==$char(id) /press F1 
   /if n $group(@GroupMember)!=$char(id) /target id $group(@GroupMember) 
   /stand 
   /if n @CastMsgTimer1<=0 { 
      /if n @ReportAutoHeal==1 /g @HealTankMsg 
      /varset CastMsgTimer1 50 
   } 
   /call SpellSub "@TankSpell" 
   /if n @SitAfterCast==1 /sit on 
   /press esc 
/return 


Sub Fastheal 
   /if n $group(@GroupMember)==$char(id) /press F1 
   /if n $group(@GroupMember)!=$char(id) /target id $group(@GroupMember) 
   /stand 
   /if n @CastMsgTimer1<=0 { 
      /if n @ReportAutoHeal==1 /g SL&#8230; %T 
      /varset CastMsgTimer1 50 
   } 
   /call SpellSub "@FastTankSpell" 
   /if n @SitAfterCast==1 /sit on 
   /press esc 
/return

Sub CasterHeal 
   /if n @CasterHealIsHot==1 { 
      /if n HOTWait>0 { 
         /if n $group(@GroupMember)==@HealedId /return 
      } 
   } 
   /if n $group(@GroupMember)==$char(id) /press F1 
   /if n $group(@GroupMember)!=$char(id) /target id $group(@GroupMember) 
   /varset HealedId $group(@GroupMember) 
   /varset HOTWait @HotDelay 
   /stand 
   /if n @CastMsgTimer2<=0 { 
      /if n @ReportAutoHeal==1 /g @HealCasterMsg 
      /varset CastMsgTimer2 50 
   } 
   /call SpellSub "@CasterSpell" 
   /if n @SitAfterCast==1 /sit on 
   /press esc 
/return 

Sub Petheal 
   /target id $spawn($group(@GroupMember),pet) 
   /stand 
   /if n @CastMsgTimer1<=0 { 
      /if n @ReportAutoHeal==1 /g @HealPetMsg 
      /varset CastMsgTimer1 50 
   } 
   /call SpellSub "@PetSpell" 
   /if n @SitAfterCast==1 /sit on 
   /press esc 
/return 

 
||||||||||||||||||Do- Subs 

Sub Do-togglehot    
   /if $defined(Param1)==FALSE { { 
      /if @CasterHealIsHot==1 /tell @MasterName Should we consider the caster heal as a HOT?=Yes 
      /if @CasterHealIsHot==0 /tell @MasterName Should we consider the caster heal as a HOT?=No 
      /return 
   } 
   /if @Param1=="off" /varset CasterHealIsHOT 0 
   /if @Param1=="on" /varset CasterHealIsHOTIsHealer 1 
   /if @Param1=="1" /varset CasterHealIsHOT 1 
   /if @Param1=="0" /varset CasterHealIsHOT 0 
   /if @CasterHealIsHOT==1 /tell @MasterName Shoulw we consider the caster heal as a HOT?=Yes 
   /if @CasterHealIsHOT==0 /tell @MasterName Should we consider the caster heal as a HOT?=No 
/return 

Sub Do-autoheal    
   /if $defined(Param1)==FALSE { { 
      /if @IsHealer==1 /tell @MasterName Autoheal=Yes 
      /if @IsHealer==0 /tell @MasterName Autoheal=No 
      /return 
   } 
   /if @Param1=="off" /varset IsHealer 0 
   /if @Param1=="on" /varset IsHealer 1 
   /if @Param1=="1" /varset IsHealer 1 
   /if @Param1=="0" /varset IsHealer 0 
   /if @IsHealer==1 /tell @MasterName Autoheal=Yes 
   /if @IsHealer==0 /tell @MasterName Autoheal=No 
/return 

Sub Do-setpetheal 
   /if $defined(Param1)==FALSE { { 
      /tell @MasterName Pet heal is @PetSpell 
      /return 
   } else /if $defined(Param2)==FALSE { 
      /varset PetSpell @Param1 
   } else /if $defined(Param3)==FALSE { 
      /varset PetSpell "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
     /varset PetSpell "@Param1 @Param2 @Param3" 
   } else /varset PetSpell "@Param1 @Param2 @Param3 @Param4" 
   /tell @MasterName Pet heal is now @PetSpell 
/return 

Sub Do-settankheal 
   /if $defined(Param1)==FALSE { { 
      /tell @MasterName Tank heal is @TankSpell 
      /return 
   } else /if $defined(Param2)==FALSE { 
      /varset TankSpell @Param1 
   } else /if $defined(Param3)==FALSE { 
      /varset TankSpell "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
     /varset TankSpell "@Param1 @Param2 @Param3" 
   } else /varset TankSpell "@Param1 @Param2 @Param3 @Param4" 
   /tell @MasterName Tank heal is now @TankSpell 
/return 

Sub Do-setfastheal 
   /if $defined(Param1)==FALSE { { 
      /tell @MasterName Tank heal is @FastTankSpell 
      /return 
   } else /if $defined(Param2)==FALSE { 
      /varset FastTankSpell @Param1 
   } else /if $defined(Param3)==FALSE { 
      /varset FastTankSpell "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
     /varset FastTankSpell "@Param1 @Param2 @Param3" 
   } else /varset FastTankSpell "@Param1 @Param2 @Param3 @Param4" 
   /tell @MasterName Tank heal is now @FastTankSpell 
/return

Sub Do-setdefaultheal 
   /if $defined(Param1)==FALSE { { 
      /tell @MasterName Default heal is @DefaultHealSpell 
      /return 
   } else /if $defined(Param2)==FALSE { 
      /varset DefaultHealSpell @Param1 
   } else /if $defined(Param3)==FALSE { 
      /varset DefaultHealSpell "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
     /varset DefaultHealSpell "@Param1 @Param2 @Param3" 
   } else /varset DefaultHealSpell "@Param1 @Param2 @Param3 @Param4" 
   /tell @MasterName Default heal is now @DefaultHealSpell 
/return 

Sub Do-setcasterheal 
   /if $defined(Param1)==FALSE { { 
      /tell @MasterName Caster heal is @CasterSpell 
      /return 
   } else /if $defined(Param2)==FALSE { 
      /varset CasterSpell @Param1 
   } else /if $defined(Param3)==FALSE { 
      /varset CasterSpell "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
     /varset CasterSpell "@Param1 @Param2 @Param3" 
   } else /varset CasterSpell "@Param1 @Param2 @Param3 @Param4" 
   /tell @MasterName Caster heal is now @CasterSpell 
/return 

Sub Do-autohealpets    
   /if $defined(Param1)==FALSE { { 
      /if @HealPets==1 /tell @MasterName Auto heal pets=Yes 
      /if @HealPets==0 /tell @MasterName Auto heal pets=No 
      /return 
   } 
   /if @Param1=="off" /varset HealPets 0 
   /if @Param1=="on" /varset HealPets 1 
   /if @Param1=="1" /varset HealPets 1 
   /if @Param1=="0" /varset HealPets 0 
   /if @IsHealer==1 /tell @MasterName Auto heal pets=Yes 
   /if @IsHealer==0 /tell @MasterName Auto heal pets=No 
/return 

Sub Do-heal 
   /if $defined(Param1)==FALSE { { 
      /assist @MasterName 
      /delay 3 
   } else /if $defined(Param2)==FALSE { 
      /if "@Param1"=="me" /target @MasterName 
      /if "@Param1"!="me" /target "@Param1" 
      /if "@Param1"=="@BotName" /press f1 
   } else /if $defined(Param3)==FALSE { 
      /target "@Param1 @Param2" 
   } else /if $defined(Param4)==FALSE { 
      /target "@Param1 @Param2 @Param3" 
   } else /target "@Param1 @Param2 @Param3 @Param4" 
   /call SpellSub "@DefaultHealSpell" 
/return

Sub Event_enchslow
  /varset slowed 1
/return

Sub Event_shamslow
  /varset slowed 1
/return
Again all untested...
Blakbelt