• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Druid Macro ( Revised )

iceman_001

New member
Joined
Jan 11, 2006
RedCents
The following macro I have been working on to Help my Druid in a Group Setting. This is my first macro that I have revised/updated. I take no Credit for this, just trying to help the Druids in the world!! Use it, delete it or Red Cent me, whatever makes you feel froggie! Have fun. Any feedback and updates post away!!!

Updated: 11/15/06

Rich (BB code):
| 
|                                   ICEMAN's DRUID MACRO (Revised)

|

|   I have tanken the time to change some items in here to make it set up for a Druid,

|   There are a few things that are not working to my liking yet, but I am trying,

|   This is my first Macro that I have change/added some items and take no credit for it.

|   If you find it useful, shoot me a red cent or fee free to flame me, lol.

|   What the Macro does, is Cast 2 Dots and then Nukes to Death!!!, you can also send tells

|   to get specific buffs. Hopefully with some peoples help, we can get it going!

|

|

|_________________________________________________________________________________________

| 

| 

| 

|                        How to Start you Macro 

|

| 1. Target player you like to assist (main tank is good) 

| 2. Start the script with: /mac <scriptname> [main assist] [chat channel] [controller] 

| 3. Parameters are optional defaults are built in 

| 

| 

|          Features: commands work in tell or group 

| 

| The following commands will target the sender and cast the spells 

| requested on the sender: [Thorns] [Steel] [Str] [Sow] [Invis] [REGEN] [Heal] [Root]

| 

| The following commands: [buff] [buff me] will rebuff a person 

| 

| The following commands: [Buff them] will rebuff another group 

| 

| The following commands: [Follow me] [end follow] are for moving Druid 

| 

| | 

| During combat he will only do requests for heals and detrimentals 

| 

| 

| [gate now] will memorize Succor and port the grp to safe point. 

| 

| Added a chat channel to echo all non command word tells to controller 

| added a vtell to controller on incoming tells 

| 

| Use "help" for more help ( !help is incomplete! ) 

|_______________________________________________________________| 

| 

| -!- Basis of this script is Version: v0.5c by Hubba 

| -!- A special thanks to Ranma (Shambot Verson 1.0c)

|   Awesome script, I hope you like what I have added 

| 

|_______________________________________________________________| 

|

| -!- This Script Uses spell_routines.inc by Rusty 

| -!- Exptrack snippet from exptracker.mac by Raebis, with tweaks from Phoenix (not tested) 

| -!- Wait4Rez snippet from wait4rez.mac by fantum409 

| 

|_______________________________________________________________| 

 

#chat group 

#chat tell 

 

#Event   ToggleVariable   "[MQ2] Toggle #1#" 

#Event   ToggleVariable   "[MQ2] Toggle #1# #2#" 

#Event   OutDoor          "#*#outdoors#*#" 

#Event   OutDoor          "You can not summon a mount here." 

#Event   Zoning           "You have entered#*#" 

#Event   ImDead           "You have been slain by#*#" 

#Event   Invited          "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to 

 

 

#include Spell_Routines.inc 

 

Sub Main 

 

| The spell will be memmed in the listed order. 

| Gem1 = Vengeance of the Sun

| Gem2 = Wasp Swarm 

| Gem3 = Succor 

| Gem4 = Solstice Strike 

| Gem5 = Swarming Death 

| Gem6 = Immolation of RO

| Gem7 = Nature's Infusion 

| Gem8 = Blessing of Oak

| Gem9 = Savage Roots 

 

 

   |------------------------------------------------------------ 

   |chat channel and controller 

   |------------------------------------------------------------ 

 

   /declare CChannel      outer "somechat" 

   /declare ChatController outer "sometoon" 

  

   |------------------------------------------------------------ 

   |spells update as needed. 

   |------------------------------------------------------------ 

 

   /declare SpellDot2              outer "Vengeance of the Sun" 

   /declare SpellSteel              outer "Steeloak Skin" 

   /declare SpellDot                outer "Wasp Swarm" 

 | /declare SpellColdDD             outer "Winter's Frost" 

   /declare SpellFireDD             outer "Solstice Strike"    

   /declare SpellDotD               outer "Swarming Death"

   /declare SpellHeal               outer "Nature's Infusion" 

   /declare SpellRoot               outer "Savage Roots" 

   /declare SpellDS                 outer "Legacy of Bracken" 

   /declare SpellSOW                outer "Flight of Eagles" 

   /declare SpellFireDot            outer "Immolation of Ro" 

   /declare SpellGate               outer "Succor" 

   /declare SpellFOOD               outer "Summon Food" 

   /declare SpellDRINK              outer "Summon Drink" 

   /declare SpellSTR                outer "Nature's Might" 

   /declare SpellInvis              outer "Foliage Shield" 

   /declare SpellMregen             outer "Mask of the Forest" 

   /declare SpellRegen              outer "Blessing of Oak" 

   /declare SpellPet                outer "Nature Walkers Behest" 

   /declare SpellNexus              outer "Circle of The Nexus" 

   /declare SpellWoS                outer "Circle of The slaughter" 

   /declare Spellblood              outer "Circle of The Bloodfeilds" 

 

   |------------------------------------------------------------ 

   |mount type 

   |------------------------------------------------------------ 

 

   /declare Mount              outer "Small White Drum" 

 

   |------------------------------------------------------------ 

   |grp buffs 

   |------------------------------------------------------------ 

  

   /declare SpellGrpBuff[4] string outer 

   /varset SpellGrpBuff[1] "Protection of Seasons" 

   /varset SpellGrpBuff[2] "Legacy of Bracken"

   /varset SpellGrpBuff[3] "Blessing of Oak" 

   /varset SpellGrpBuff[4] "Blessing of the nine" 

     

 

 

   |------------------------------------------------------------ 

   |single buffs 

   |------------------------------------------------------------ 

 

   /declare SpellSingleBuff[4] string outer 

   /varset SpellSingleBuff[1] "Nature's Might" 

   /varset SpellSingleBuff[2] "Protection of the Seasons" 

   /varset SpellSingleBuff[3] "Nettlecoat" 

   /varset SpellSingleBuff[4] "Steeloak Skin" 

 

   |------------------------------------------------------------ 

   |combat stuff. 

   |------------------------------------------------------------ 

 

   /declare AssistAt      int   outer 100 

   /declare CombatAt      int   outer 94

    

   /declare CastDotAt     int   outer 90

   /declare CastDotDAt    int   outer 60

   /declare DotMana       int   outer 40

   

 

   /declare Dot2At       int   outer 85

   /declare RootMana      int   outer 15 

 

 | /declare ColdDDAt      int   outer 40 

   /declare FireDDAt      int   outer 65

   

 

   /declare SitAt         int   outer 80 

   /declare BuffMana      int   outer 30 

   /declare MinMana       int   outer 30 

    

   /declare following     int   outer 0 

   /declare follname      string outer NULL 

 

   |------------------------------------------------------------ 

   |tweak heals 

   |------------------------------------------------------------ 

 

   /declare CasterHeals   int   outer 45 

   /declare MeleeHeals    int   outer 50 

   /declare TankHeal      int   outer 30 

 

   |------------------------------------------------------------ 

   |to do list 

   |------------------------------------------------------------ 

 

   /declare DoDot2            outer TRUE

   /declare DoDot              outer TRUE

   /declare DoFireDot          outer TRUE 

   /declare DoBuffs            outer TRUE 

   /declare Fastdoting         outer TRUE

   /declare DoSow              outer TRUE 

   /declare DodDotD            outer TRUE 

   /declare DoFireDD           outer TRUE

   /declare DoRoot             outer TRUE 

   /declare DoHeal             outer TRUE 

 

      

   /squelch /alias root /echo toggle root    

   /squelch /alias nuke /echo toggle nuke 

   /squelch /alias nukeat /echo toggle nukeat    

   /squelch /alias buffs /echo toggle buffs 

   /squelch /alias sow /echo toggle sow 

   /squelch /alias assistat /echo toggle assistat    

   /squelch /alias rootat /echo toggle rootat 

   /squelch /alias combatat /echo toggle combatat 

   /squelch /alias healmeleeat /echo toggle healmeleeat 

   /squelch /alias healcastersat /echo toggle healcastersat 

   /squelch /alias healtankat /echo toggle healtankat 

   /squelch /alias assist /echo toggle assist 

   /squelch /alias healat /echo toggle healat 

   /squelch /alias status /echo toggle show 

   /squelch /alias show /echo toggle show    

   /squelch /alias help /echo toggle help 

   /squelch /alias verbose /echo toggle verbose    

    

   /declare TargetArray[4] string outer 

   /declare MobDot2             outer FALSE  

   /declare MobRooted           outer FALSE 

   /declare MobDot              outer FALSE

   /declare MobFireDoted        outer FALSE 

   /declare CombatOn            outer TRUE 

  

   /declare Engaged             outer FALSE 

   /declare LowMana             outer FALSE 

 

   /declare M_Assist       string outer 

   /declare OutDoors       outer TRUE    

 

   /declare Exper float outer 

   /declare AAExp float outer 

        

   /varset Exper ${Me.Exp} 

   /varset AAExp ${Me.AAExp} 

 

    

   /call MemSpells 

    

 

   |------------------------------------------------------------ 

   |Target a player for main assist 

   |------------------------------------------------------------ 

    

      /if (${Defined[Param0]}) { 

          /varset M_Assist ${Param0} 

          /echo Assist set to ${M_Assist} 

      } else { 

          /if (!${Target.ID} || ${Target.Type.NotEqual[PC]}) { 

              /echo Your Do not have a main assist, make sure its a player character! 

              /endmacro 

          } 

          /varset M_Assist ${Target.CleanName} 

          /echo Assist set to ${M_Assist} 

      } 

 

      /assist off 

 

      /if (${Defined[Param1]}) /varset CChannel ${Param1} 

      /leaveall 

      /join ${CChannel} 

      /1 I am here! 

      /echo Joined channel ${CChannel} 

 

      /if (${Defined[Param2]}) /varset ChatController ${Param2} 

      /vtell ${ChatController} 005 

      /tell ${ChatController} I am here! 

      /echo My master is ${ChatController} 

 

 

   |------------------------------------------------------------ 

   |Main loop 

   |------------------------------------------------------------ 

 

 

:Main_Loop 

 

   |- Check for Standing if less than sitat then sit 

   /if ( ${Me.State.Equal[Stand]} && ${Me.PctMana}<${SitAt}) /sit 

 

   |- Summon Mount if outdoors 

   /if (!${Me.Mount.ID} && ${OutDoors}) /call cast ${Mount} item 4s 

    

 

   |- Check for low mana state 

   /call Check_Mana 

 

   |- Check for new events in chat etc etc... 

   /doevents 

    

   |- Do we move? 

   :Hold_Main 

   /if (${Me.Moving}) /goto :Hold_Main 

    

   |- Check for mobs and do combat stuff 

    /call GetTarget 

   /if (${CombatOn}) /call Combat        

 

   |- Group Heals 

   /call Check_grpHPs 

 

   |- Check for Standing if less than sitat then sit 

   /if ( ${Me.State.Equal[Stand]} && ${Me.PctMana}<${SitAt}) /sit 

 

   |- Group Buffs if more than BuffMana mana 

   /if (${Me.PctMana}>=${BuffMana} && ${DoBuffs}) /call GrpBuffs 

    

   |- Group Heals 

   /call Check_grpHPs 

 

   /goto :Main_Loop 

/return 

 

   

 

 

 

   |------------------------------------------------------------ 

   |meming spells from list. 

   |------------------------------------------------------------ 

 

Sub MemSpells 

 

   /echo Memming spells. Hang on. 

   /if ( !${Me.Gem[${SpellDot2}]} ) { 

      /memspell 1 ${SpellDot2} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellDot}]} ) { 

      /memspell 2 ${SpellDot} 

      /delay 25 

  } 

   /if ( !${Me.Gem[${SpellGate}]} ) { 

      /memspell 3 ${SpellGate} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellFireDD}]} ) { 

      /memspell 4 ${SpellFireDD} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellDotD}]} ) { 

      /memspell 5 ${SpellDotD} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellFireDot}]} ) { 

      /memspell 6 ${SpellFireDot} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellHeal}]} ) { 

      /memspell 7 ${SpellHeal} 

      /delay 25 

   } 

   /if ( !${Me.Gem[${SpellRegen}]} ) { 

      /memspell 8 ${SpellRegen} 

      /delay 30 

   } 

   /if ( !${Me.Gem[${SpellRoot}]} ) { 

      /memspell 9 ${SpellRoot} 

      /delay 30 

   } 

 

   |/if ( ${Window[SpellBookWnd].Open} ) /windowstate SpellBookWnd close 

   /echo Spells are memmed. 

 

/return 

 

   |------------------------------------------------------------ 

   |combat sub 

   |------------------------------------------------------------ 

 

Sub Combat 

   

   /if (${CombatOn} && !${MobDot2} && ${DoDot2} && ${Target.ID}==${TargetArray[4]}) /call Dot2 

   /if (${CombatOn} && !${MobDot} && ${DoDot} && ${Target.ID}==${TargetArray[4]}) /call Dot

   

   

 

   |-----------------Check for new events in chat etc etc... 

 

   /doevents

       

      

   /if (${CombatOn} && ${DoFireDD} && ${Me.PctMana}>=${NukeMana} && ${Target.PctHPs}<=${FireDDAt}) { 

      /call cast ${SpellFireDD} gem4 

   } 

   /if (${CombatOn} && ${DoRoot} && ${Me.PctMana}>=${RootMana} && ${Target.PctHPs}<=${RootAt}) { 

      /call cast ${SpellRoot} gem9 

      /varset MobRooted TRUE 

   } 

 

   |- Check for new events in chat etc etc... 

   /doevents 

 

|- EndCombat 

 

   /target ${TargetArray[3]} 

    

   /if (!${Target.Name.Equal[${TargetArray[3]}]} || !${Target.ID}) { 

      /varset MobDot2 FALSE 

      /varset MobDot FALSE 

      /varset MobFireDoted FALSE 

      /varset CombatOn FALSE 

      /varset Engaged FALSE    

      

      /varset TargetArray[1] NULL 

      /varset TargetArray[2] NULL 

      /varset TargetArray[3] NULL 

      /varset TargetArray[4] NULL 

 

  } 

/return 

 

 

   |------------------------------------------------------------ 

   |              Dot2 sub 

   |------------------------------------------------------------ 

 

Sub Dot2 

   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 

      /if (${Me.CurrentMana}<${Spell[${SpellDot2}].Mana}) { 

         /echo Shit ! I don't have mana to Malo %T 

      } else { 

      :Dot2_Loop 

         /call cast ${SpellDot2} gem1 6s 

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

         /if (${Macro.Return.Equal["CAST_IMMUNE"]}) { 

            /if (${Verbose}) /gsay %T is IMMUNE to my Dot2 ! 

          

            /varset MobDot2 TRUE 

         } 

         /if (${Macro.Return.Equal["CAST_RESISTED"]}) { 

            /if (!${FastSlow}) { 

               /if (${Verbose}) /gsay *** %T RESISTED Dot2 ! Trying again 

                /goto :Dot2_Loop 

             } 

            /varset MobDot2 TRUE 

          } 

         /if (${Macro.Return.Equal["CAST_SUCCESS"]}) { 

            /if (${Verbose}) /gsay  %T is Snared 

            /varset MobDot2 TRUE 

          } 

 

      } 

   } 

/return 

 

|----------------------------------------

|

|    DOT Sub

|

|----------------------------------------

 

Sub Dot 

   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 

      /if (${Me.CurrentMana}<${Spell[${SpellDot}].Mana}) { 

         /echo Shoot! I don't have mana to Dot the %T 

      } else { 

      :Dot_Loop 

         /call cast ${SpellDot} gem2 6s  
          /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Dot_Loop 

             /varset MobDot TRUE 

          } 

 

         /if (${Macro.Return.Equal["CAST_RESISTED"]}) { 

            /if (!${FastDoting}) { 

               /if (${Verbose}) /gsay *** %T RESISTED Dot! Trying again 

                /goto :Dot_Loop 

             } 

            /varset MobDot TRUE 

           } 

 

         /if (${Macro.Return.Equal["CAST_SUCCESS"]}) { 

            /if (${Verbose}) /gsay  %T is Dotted! 

            /varset MobDot TRUE 

          } 

 

      } 

   } 

/return 

 

 

 

 

   |------------------------------------------------------------ 

   |getting target 

   |------------------------------------------------------------ 

 

 

Sub GetTarget 

   /assist ${M_Assist} 

   /delay 3 

   /if (${Target.Type.Equal[NPC]}) /if (${Target.Distance}<=${AssistAt} && ${Target.ID}!=${TargetArray[4]} && ${Target.PctHPs}<=${CombatAt}) { 

      /varset TargetArray[1] ${Target.CleanName} 

      /varset TargetArray[2] ${Target.Level} 

      /varset TargetArray[3] ${Target.Name} 

      /varset TargetArray[4] ${Target.ID} 

      /varset CombatOn TRUE 

 

 

      /varset MobDot2 FALSE 

      /varset MobDot FALSE 

      /varset MobFireDoted FALSE    

 

      /varset AAExp ${Math.Calc[${Me.PctAAExp}-${AAExp}]} 

      /varset Exper ${Math.Calc[${Me.PctExp}-${Exper}]} 

 

      /echo EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes 

      /popup EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes 

      /varset Exper ${Me.PctExp} 

      /varset AAExp ${Me.PctAAExp} 

   } 

/return 

 

 

| ################### Buff the group with buffs from the SpellGrpBuff array 

 

 

Sub GrpBuffs 

   /declare i int local 1 

   /for i 1 to ${SpellGrpBuff.Size} 

      /doevents 

      /if (${Spell[${SpellGrpBuff[${i}]}].Mana} > ${Me.CurrentMana}) /return 

      /if ( !${Me.Buff[${SpellGrpBuff[${i}]}].ID} ) { 

         /target pc ${M_Assist} 

         /delay 3 

         /echo *** Hang on ! Rebuffing ${SpellGrpBuff[${i}]} 

         /call cast ${SpellGrpBuff[${i}]} gem5 5s 

      } 

   /next i 

/return 

 

|################### Check if any group member needs heal 

Sub Check_grpHPs 

   /declare i int local 1 

    

   /for i 1 to ${Group} 

 

   /if (${Group.Member[${i}].Class.Name.Equal[Cleric]} || ${Group.Member[${i}].Class.Name.Equal[Druid]} || ${Group.Member[${i}].Class.Name.Equal[Wizard]} || ${Group.Member[${i}].Class.Name.Equal[Magician]} || ${Group.Member[${i}].Class.Name.Equal[Necromancer]} || ${Group.Member[${i}].Class.Name.Equal[Enchanter]}) /if (${Group.Member[${i}].PctHPs}<=${CasterHeals}) { 

      /target pc ${Group.Member[${i}]} 

      /if (${Me.CurrentMana}<${Spell[${SpellHeal}].Mana}) { 

         /echo *** Shid ! I don't have mana to heal ${Group.Member[${i}]} 

      } else /if (${Target.Distance}<=100) { 

         /if (${Verbose}) /gsay *** ${SpellHeal} on %T 

         /call cast ${SpellHeal} gem6 4s 

      } 

   } 

    

   /if (${Group.Member[${i}].Class.Name.Equal[Shadow Knight]} || ${Group.Member[${i}].Class.Name.Equal[Monk]} || ${Group.Member[${i}].Class.Name.Equal[Rouge]} || ${Group.Member[${i}].Class.Name.Equal[Ranger]} || ${Group.Member[${i}].Class.Name.Equal[Beast]} || ${Group.Member[${i}].Class.Name.Equal[Warrior]} || ${Group.Member[${i}].Class.Name.Equal[Paladin]}) /if (${Group.Member[${i}].PctHPs}<=${MeleeHeals} && ${Group.Member[${i}].Name.NotEqual[${M_Assist}]}) { 

      /target pc ${Group.Member[${i}]} 

      /if (${Me.CurrentMana}<${Spell[${SpellHeal}].Mana}) { 

         /echo *** Shid ! I don't have mana to heal ${Group.Member[${i}]} 

      } else /if (${Target.Distance}<=100) { 

         /if (${Verbose}) /gsay *** ${SpellHeal} on %T 

         /call cast ${SpellHeal} gem6 4s 

      } 

   } 

 

   /if (${Group.Member[${i}].Name.Equal[${M_Assist}]} && ${Group.Member[${i}].PctHPs}<=${TankHeal}) { 

      /target pc ${Group.Member[${i}]} 

      /if (${Me.CurrentMana}<${Spell[${SpellHeal}].Mana}) { 

         /echo *** Shid ! I don't have mana to heal ${Group.Member[${i}]} 

      } else /if (${Target.Distance}<=100) { 

         /if (${Verbose}) /gsay *** ${SpellHeal} on %T 

         /call cast ${SpellHeal} gem6 4s 

      } 

   } 

 

   /next i 

/return 

 

| ################### Check Mana level and report it 

 

Sub Check_Mana 

   /if (${Math.Calc[${Me.MaxMana}*${MinMana}/100]} >= ${Me.CurrentMana} && !${LowMana}) { 

      /varset LowMana TRUE 

      /gsay I am LOM... 

   } else /if (${Math.Calc[${Me.MaxMana}*${BuffMana}/100]} <= ${Me.CurrentMana} && ${LowMana}) { 

      /gsay I am GTG...      

      /varset LowMana FALSE 

   } 

/return 

 

  

 

 

 

   |------------------------------------------------------------ 

   |outdoors check 

   |------------------------------------------------------------ 

 

 

Sub Event_OutDoor 

   /echo This is an indoor zone. Sorry. 

   /varset OutDoors FALSE 

/return 

 

 

   |------------------------------------------------------------ 

   |zoning 

   |------------------------------------------------------------ 

 

 

Sub Event_Zoning 

   /varset TargetArray[1] ${Target.CleanName} 

   /varset TargetArray[2] ${Target.Level} 

   /varset TargetArray[3] ${Target.Name} 

   /varset TargetArray[4] ${Target.ID} 

   /varset CombatOn TRUE 

        

 

      /varset MobSnared FALSE 

      /varset MobDot FALSE 

      /varset MobFireDoted FALSE 

/return 

 

 

   |------------------------------------------------------------ 

   |Group invites 

   |------------------------------------------------------------ 

 

 

Sub Event_Invited 

   /invite 

/return 

 

 

   |------------------------------------------------------------ 

   |On death. 

   |------------------------------------------------------------ 

 

 

Sub Event_ImDead 

   /echo Bummer ! 

   :Zone_Loop 

      /if ( ${Me.Bound.ID} != ${Zone.ID} ) /goto :Zone_Loop 

   /delay 5s 

   /consent group 

   /delay 5 

   /gsay Im ready to get rez. 

   /gsay I have consented group. 

   /call Wait4Rez 

   /delay 20 

   /call MemSpells 

   /if (${Me.State.Equal[Stand]}) /sit 

 

| We do some short meditate before we start again. 

 

   :Meditate 

      /delay 1s 

      /if (${Me.CurrentMana} < 300) /goto :Meditate 

   /return 

 

 

   |------------------------------------------------------------ 

   |Wait4Rezz 

   |------------------------------------------------------------ 

 

 

Sub Wait4Rez 

   :waitforrez 

      /if (!${Window[ConfirmationDialogBox].Open}) { 

         /delay 5s ${Window[ConfirmationDialogBox].Open} 

         /goto :waitforrez 

      } 

      /if (${Window[ConfirmationDialogBox].Open}) /notify ConfirmationDialogBox Yes_Button  leftmouseup 

      :zonein 

         /delay 5 

         /squelch /target mycorpse 

         /delay 5 

         /if (${Target.CleanName.NotEqual[${Me}'s corpse]}) /goto :zonein 

         /if (${Target.CleanName.Equal[${Me}'s corpse]}) { 

            /delay 3s 

            /call Loot_Corpse 

         } else /goto :zonein 

   /return 

 

 

   |------------------------------------------------------------ 

   |Loot corpse 

   |------------------------------------------------------------ 

 

 

Sub Loot_Corpse 

   /declare LootTotal int local 0 

   /declare LootSlot int local 

   /squelch /target mycorpse 

   /if (${Target.Type.NotEqual[CORPSE]} || !${Target.ID}) { 

      /echo ** Can't target my corpse. 

      /return 

   }    

   /corpse 

   /delay 1s 

   /loot 

   /delay 1s 

   /if (${Me.State.NotEqual[BIND]}) { 

      /echo ** Massive lag right now... Aborting looting. 

      /return 

   } 

   :LootLag 

      /if (${LootTotal}!=${Corpse.Items}) { 

         /varset LootTotal ${Corpse.Items} 

         /delay 5 

         /goto :LootLag 

      } 

   /for LootSlot 1 to ${LootTotal} 

   :LootItem 

      /itemnotify loot${LootSlot} rightmouseup 

      /delay 3 

      /if (${Corpse.Item[${LootSlot}].ID}) { 

         /delay 2 

         /goto :LootItem 

      } 

   /next LootSlot 

   /delay 5 

   /echo ** Done looting my corpse. 

   /notify LootWnd DoneButton leftmouseup 

   /return 


|-------------TELLS n HELL----------
 
Sub Event_Chat(string ChatType,string ChatSender,string ChatText) 
      /if (!${ChatType.Equal[GROUP]} && !${ChatType.Equal[TELL]}) /return 
 

 

 

 

 

|------------------------------------------------------------

|           HEAL REQUEST

|------------------------------------------------------------

 

 

     /if (${ChatText.Equal[heal]} || ${ChatText.Equal[heal me]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellHeal} is incomming !! 

             /call cast ${SpellHeal} 

             } 

      /return 

      } 

 

 

 

|------------------------------------------------------------ 

|           Mob requests 

|------------------------------------------------------------ 

    

 

 

      /if (${ChatText.Equal[root]}) { 

         /assist ${ChatSender} 

         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 

            /call cast ${SpellRoot} gem9 5s 

            /tell ${ChatSender} %T is Rooted with ${SpellRoot} 

            } 

      /return 

      } 

 

 

      /if (${ChatText.Equal[nuke]}) { 

         /assist ${ChatSender} 

         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 

            /call cast ${SpellNuke} gem4 

            } 

      /return 

      } 

        

      /if (${ChatText.Equal[dot]}) { 

         /assist ${ChatSender} 

         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 

            /call cast ${SpellDot} gem5 5s 

            } 

      /return 

      } 

 

      /if (${Engaged}) /return    

 

 

 

|------------------------------------------------------------ 

|          Buff requests. 

|------------------------------------------------------------ 

 

      /if (${ChatText.Equal[Steel]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellSteel} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellSteel} gem4 4s 

        }    

         /return 

        } 

      /if (${ChatText.Equal[Regen]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellRegen} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellRegen} gem8 4s 

        }    

        /return 

        }    

      /if (${ChatText.Equal[Thorns]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellDS} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellDS} gem4 4s 

        }    

        /return 

        } 

      /if (${ChatText.Equal[sow]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellSOW} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellSOW} gem5 5s 

        }    

         /return    

        } 

      /if (${ChatText.Equal[Invis]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellInvis} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellInvis} gem4 4s 

        }    

 

        /return 

        }    

      /if (${ChatText.Equal[STR]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /tell ${ChatSender} ${SpellSTR} is incomming to you ${ChatSender}!!! 

             /call cast ${SpellSTR} gem4 4s 

        }    

        /return 

        }    

      /if (${ChatText.Equal[gate us]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /gsay i am casting Succor ! hold on to your pants! 

             /call cast ${SpellGate} gem3 4s 

        }    

        /return 

        }    

      /if (${ChatText.Equal[nexus]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /gsay i am casting Nexus ! hold on to your pants! 

             /call cast ${SpellNexus} gem4 4s 

        }    

        /return 

        }    

      /if (${ChatText.Equal[WOS]}) { 

         /target pc ${ChatSender} 

         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 

             /gsay i am casting Nexus ! hold on to your pants! 

             /call cast ${SpellWoS} gem4 4s 

        }    

        /return 

        } 

 

|------------------------------------------------------------ 

|     Auto following 

|------------------------------------------------------------ 

 

 

 /if (${ChatText.Equal[Follow me]} || ${ChatText.Equal[Follow]}) { 

    /delay 5 

    /if (!${Spawn[${ChatSender}].ID}) { 

       /e ${ChatSender}  is not in zone for me to follow! 

       /return 

    } 

    /varset follname ${ChatSender} 

    /varset following 1 

    /tell ${ChatSender} I am following you!!! 

    /if ( ${Me.Mount.ID} ) /dismount 

       :targetfoll` 

          /target pc ${follname} 

          /delay 1s ${Target.Name.Equal[${follname}]} 

          /if (${Target.Name.Equal[${follname}]}) { 

          /goto :Loop 

    } else /goto :targetfoll 

 

    :Loop 

    /face fast 

    /if (${Target.Distance}>40) /keypress forward hold 

    /if (${Target.Distance}<39) /keypress back 

    /if (!${Target.ID}) /varset following 0 

    /doevents 

    /if ((${Target.Name.Equal[${follname}]})&&(${following}>0)) { 

       /goto :Loop 

    } else { 

       /keypress forward 

       /keypress back 

    } 

 } 

 

 

  |------------------------------------------------------------ 

  | stop follow 

  |------------------------------------------------------------ 

 

 /if (${ChatText.Equal[End follow]} || ${ChatText.Equal[stop]}) { 

    /varset following 0 

    /keypress forward 

    /keypress back 

    /timed 50 /face pc ${follname} 

    /tell ${ChatSender} I Stopped following you!!! 

    /return 

 } 

 

 

   |------------------------------------------------------------ 
   | Single Rebuff 
   |------------------------------------------------------------ 
 
 
/if (${ChatText.Equal[buff me]}) { 
   /echo Request for Single Buff 
   /declare i int local 1 
   /for i 1 to ${SpellSingleBuff.Size} 
   /if (${Spell[${SpellSingleBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
      /tell ${ChatSender} ${ChatSender} Sorry I am getting LOM        
      /echo DAMN.. LOM.. 
       :Hold_Single_Rebuff 
          /if (${Spell[${SpellSingleBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
             /goto :Hold_Single_Rebuff              
           } 
    } 
   /target pc ${ChatSender} 
   /delay 3 
   /echo *** Hang on ! Buffing ${SpellSingleBuff[${i}]} 
   /tell ${ChatSender} Buffing ${SpellSingleBuff[${i}]} now... 
   /call cast ${SpellSingleBuff[${i}]} gem5 5s      
   /next i 
   /return 
} 
   

 

  

   |------------------------------------------------------------ 
   | Single Rebuff other 
   |------------------------------------------------------------ 
 
 /if (${ChatText.Equal[buff]}) { 
    /echo Request for Single Buff other 
    /assist ${ChatSender} 
    /declare i int local 1 
    /for i 1 to ${SpellSingleBuff.Size} 
    /if (${Spell[${SpellSingleBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
       /tell ${ChatSender} ${ChatSender} Sorry I am getting LOM        
       /echo DAMN.. LOM... 
       :Hold_Single_Rebuff 
          /if (${Spell[${SpellSingleBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
             /goto :Hold_Single_Rebuff              
           } 
    } 
    /delay 3 
    /echo *** Hang on ! Rebuffing ${SpellSingleBuff[${i}]} 
    /tell ${ChatSender} Buffing ${SpellSingleBuff[${i}]} now... 
    /call cast ${SpellSingleBuff[${i}]} gem5 7s      
    /next i 
    /return 
 } 

   |------------------------------------------------------------ 
   |buff another group 
   |------------------------------------------------------------ 
 
 /if (${ChatText.Equal[buff them]}) { 
    /assist ${ChatSender} 
    /declare i int local 1 
    /for i 1 to ${SpellGrpBuff.Size}        
    /if (${Spell[${SpellGrpBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
       /tell ${ChatSender} ${ChatSender}, Sorry I am getting LOM                  
       /echo DAMN.. LOM... 
       :Hold_Group_Rebuff 
          /if (${Spell[${SpellGrpBuff[${i}]}].Mana} > ${Me.CurrentMana}) { 
          /goto :Hold_Group_Rebuff              
          } 
    } 
    /delay 3 
    /echo *** Hang on ! Rebuffing ${SpellGrpBuff[${i}]} 
    /tell ${ChatSender} Buffing ${SpellGrpBuff[${i}]} now... 
    /call cast ${SpellGrpBuff[${i}]} gem5 7s      
    /next i 
    /return 
 } 
 
/return
 
Last edited:
Has anyone used this yet? I am kinda interested in a macro for a new toon. i'm thinking druid, monk or Mage... Just reading over all the macs to find out what would be the best. I use Shmbot now and it rocks so might be nice to stick to druid but a mage has SOOO many cool pets spells for the necro..
 
When I try to copy and paste this mac, it jumbles the text about 1/10 of the way into it.

|
Shambot Version 1.0c by Ranma

| Ported for Druid use: by Iceman

|

|09:32 PM #2
 
Last edited:
I just wanted to say that whoever took the time to insert all the sub event desciptions into this druid macro did a really nice job. Little things like this sure helps the newbs of programming alot including myself........Thanks to the author.
 
I spent a lot of time organizing this Macro, and changing it to work right, I am trying to fix the snare issue myself, for right now, I disable it. You can also "trick" the program by putting a different spell in the snare spot, like a dot etc... instead of getting aggro.

If you have a request, I can proble make a macro for ever class out there. I have a lot of time at my new job, working overnights boring!!!!!! lol.
 
Had sometime to spend on updating the Macro. 11/15/06.

It will take buffs on Request ( [Thorns] [Steel] [Str] [Sow] [Invis] [REGEN] [Heal] and [Root] )

During the Fight it will:

1. Cast Dot
2. Cast Dot
3. Nuke till the end.
4. Watch Main tank for spam Heal (you have to set this).

Hope this helps!

Iceman!
 
Once again, If I were able to write a macro I would organize it just like Ice did on this druid macro. Not only does it look great, I would think troubleshooting would be alot easier as well.
Incoming redcent based soley on the presentation/organization of the macro. Great Job.
 
How is it working for everyone? Can I get some feedback, I would greatly appreciate it.

Thanks
Iceman
 
What happened? there is no mac listed above any more. I was going to try and use this with my warrior as I had to reformat my hard drive. Anyone have this mac that works with the latest changes?
 
Druid Macro ( Revised )

Users who are viewing this thread

Back
Top
Cart