wiz.mac

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

Moderator: MacroQuest Developers

wizzyman
a ghoul
a ghoul
Posts: 106
Joined: Fri Dec 10, 2004 6:03 pm

wiz.mac

Post by wizzyman » Fri Dec 10, 2004 6:24 pm

well i ve tried afnuke and found this macro awsome, unfortunatly i cant get my mind on why it s bugged for me (it work for named but not for mobs with a "A" before name) so i decided to create a macro to auto my wiz in exp grp.

fyi yesterday i was trying to compile .mac like a pluggin so am such a noob :roll:

here it is, basicly it have 1 MA (the one u start mac targetted with) but ll check ma again after each action (ie if switch target), etc it ll snare nuke n conc, self buff etc. very basic mac but working afaik.

i ve used afnuke, the shm bot from hubba and some other minor mac.

Code: Select all


| wiz.mac 
| first noob mac ever 
| v1.0 

#Event   OutDoor         "#*#outdoors#*#"
#Event   NoMount         "You can not summon a mount here."
#Event   ImDead         "You have been slain by#*#"
#Event   Invited         "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel#*#"
#Event   NoLevit          "This spell does not work here."          
#Event   levitFade          "You feel as you are about to fall."


#include Spell_Routines.inc

Sub Main
   
   /declare Spellsnare          outer "Atol's Spectral Shackles" 
   /declare Spellquicknuke         outer "Spark of Fire" 
   /declare Spellmainnuke           outer "White Fire" 
   /declare Spellroot        outer "Greater Fetter" 
   /declare Spellstun         outer "Spark of Thunder" 
   /declare Spellshield           outer "Ether shield" 
   /declare Spellharvest          outer "harvest" 
   /declare Spelltl          outer "translocate" 
   /declare Spellrune         outer "Ether Skin" 
   /declare Mount             outer "White Chain Bridle"
   /declare Debuff          outer "Staff of Temperate Flux"
   /declare conc          outer "Maelin's Leggings of Lore"
   /declare maelin          outer "Shawl of Eternal Forces"
   /declare Spelllevit          outer "O`Keils Levity"
   /declare maelinexp          outer "Eye of Dreams"

   /declare AssistAt      int   outer 100 
   /declare CombatAt      int   outer 98 
        
   /declare M_Assist   string   outer 
   /declare OutDoors         outer TRUE 
   /declare NoMount         outer FALSE
   /declare NoLevit          outer FALSE
   /declare NoSnare          outer TRUE
   /declare NoSit          outer TRUE
   /declare TargetArray[4] string outer 
   /declare MobDebuffed         outer TRUE 
   /declare MobSnared         outer TRUE
   /declare CombatOn         outer TRUE

   /call MemSpells

   /if (!${Target.ID} || ${Target.Type.NotEqual[PC]}) { 
      /echo Your target is NOT a player, make sure its a player character! 
        /endmacro 
    } else { 
      /varset M_Assist ${Target.CleanName} 
      /echo Assist set to ${M_Assist} 
      /assist off 
    } 

:main_loop

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

:Hold_Main 
   
   /if (${Me.Moving}) /goto :Hold_Main
   
   /if (${Me.PctMana} < 80 && ${Me.SpellReady["Harvest"]} && !${CombatOn}) /call Cast ${Spellharvest}
      
   /if (${Me.PctMana} < 80 && ${Me.AltAbilityReady["Harvest of Druzzil"]} ) /aa act Harvest of Druzzil 
   
|   /if (${Target.PctHPs}<= 85 && ${CombatOn} && ${Me.AltAbilityReady["Call of Xuzl"]} ) /aa act Call of Xuzl 8s
  
   /call SingleBuffs
   
   /call GetTarget
   /if (${CombatOn}) /call Combat
   /if (${Me.State.Equal[Stand]} && ${NoMount} && !${NoSit}) /sit

   /goto :Main_Loop
/return 

Sub MemSpells 

   /echo Memming spells. Hang on. 
   /if ( !${Me.Gem[${Spellsnare}]} ) { 
      /memspell 1 ${Spellsnare} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellquicknuke}]} ) { 
      /memspell 2 ${Spellquicknuke} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellmainnuke}]} ) { 
      /memspell 3 ${Spellmainnuke} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellroot}]} ) { 
      /memspell 4 ${Spellroot} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellstun}]} ) { 
      /memspell 5 ${Spellstun} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellshield}]} ) { 
      /memspell 6 ${Spellshield} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellharvest}]} ) { 
      /memspell 7 ${Spellharvest} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spelllevit}]} ) { 
      /memspell 8 ${Spelllevit} 
      /delay 20
   } 
   /if ( !${Me.Gem[${Spellrune}]} ) { 
      /memspell 9 ${Spellrune} 
      /delay 30
   } 
   |/if ( ${Window[SpellBookWnd].Open} ) /windowstate SpellBookWnd close 
   /echo Spells are memmed. 

/return

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
      /if (${Target.PctHPs}>= 60) /varset MobSnared FALSE
      /if (${Target.PctHPs}>= 80) /varset MobDebuffed FALSE   
     }


/return

Sub Combat 

:combat_loop  

/doevents
   
   /if (${Me.PctMana} < 20) {
      /if (${Me.State.Equal[Stand]} && ${NoMount}) /sit
      /goto :combat_loop
      
   }

   /if (${Target.PctHPs}<= 10 ) {
      /varset CombatOn FALSE
   }

   /if (${Target.PctHPs}<= 98 && ${CombatOn} && !${MobDebuffed} && ${Target.ID}==${TargetArray[4]}) /call DeBuff 
   /if (${Target.PctHPs}<= 60 && ${CombatOn} && !${NoSnare} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) /call snare
   /if (${Target.PctHPs}<= 35 && ${CombatOn} &&  ${Target.ID}==${TargetArray[4]}) {
      /call quicknuke
      /goto :combat_loop
   }
   /if (${Target.PctHPs}<= 90 && ${CombatOn} &&  ${Target.ID}==${TargetArray[4]}) /call mainnuke
  
|- EndCombat 

   /target ${TargetArray[3]} 
    
   /if (!${Target.Name.Equal[${TargetArray[3]}]} || !${Target.ID}) { 
      /echo ${TargetArray[1]} is dead 
      /varset CombatOn FALSE 
      /varset MobDebuffed FALSE 
      /varset MobSnared FALSE
      
      /varset TargetArray[1] NULL 
      /varset TargetArray[2] NULL 
      /varset TargetArray[3] NULL 
      /varset TargetArray[4] NULL 
      
   } 

/return

Sub DeBuff 
:DeBuff_Loop
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) {
      /call cast ${Debuff} item
      /call cast ${Debuff} item
      /call cast ${Debuff} item
      /call cast ${Debuff} item
      /call cast ${Debuff} item
      /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DeBuff_Loop
      /varset MobDebuffed TRUE 
   }
/return

Sub mainnuke 
   
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) { 
         /echo Shid ! I don't have mana to nuke %T 
      } else { 
:mainnuke_Loop 
         /call cast ${Spellmainnuke} gem3 6s 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :mainnuke_Loop 
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :mainnuke_Loop
         /call Cast ${conc} item
                         
             }  
   } 

/return

Sub quicknuke 
   
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) { 
         /echo Shid ! I don't have mana to nuke %T 
      } else { 
:quicknuke_Loop 
         /call cast ${Spellquicknuke} gem2 3s 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :quicknuke_Loop 
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :quicknuke_Loop
                                  
             } 
       
   } 

/return

Sub snare 
   
   /if (${Target.PctHPs}<=${CombatAt} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellsnare}].Mana}) { 
         /echo Shid ! I don't have mana to snare %T 
      } else { 

:snare_Loop 
         
         /call cast ${Spellsnare} 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :snare_Loop 
         /if (${Macro.Return.Equal["CAST_IMMUNE"]}) { 
             /gsay %T immune snare
             /varset MobSnared TRUE
             /return
         }
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :snare_loop 
         /varset MobSnared TRUE   
        

      } 

   

/return  
 
         
         
       
sub SingleBuffs

   /if (${Bool[${Me.Buff["Ether Skin"]}]}==FALSE) /call Cast ${Spellrune}
   /if (${Bool[${Me.Buff["Ether Shield"]}]}==FALSE) /call Cast ${Spellshield}
   /if (${Bool[${Me.Buff["Ro's Greater Familiar"]}]}==FALSE) /alt activate 453
|  /if (${Bool[${Me.Buff["Devoted Familiar"]}]}==FALSE) /alt activate 457
|  /if (${Bool[${Me.Buff["Druzzil's Mystical Familiar"]}]}==FALSE) /alt activate 305
   /if (${Me.Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost
   /if (${Bool[${Me.Buff["Maelin's Methodical Mind"]}]}==FALSE) /call Cast "Shawl of Eternal Forces" item 6s
   /if (${Bool[${Me.Buff["Maelin's Meditation"]}]}==FALSE) /call Cast "Eye of Dreams" item 5s
   /if (${Bool[${Me.Buff["O`Keils Levity"]}]}==FALSE && !${NoLevit}) /call Cast ${Spelllevit}
      
/return

| ###################################################################################################### 

Sub Event_OutDoor 
    
   /echo This is an indoor zone. Sorry. 
   /varset OutDoors FALSE 

/return

| ###################################################################################################### 

Sub Event_NoLevit 
    
   /echo can't levitate in this zone. Sorry. 
   /varset NoLevit TRUE 

/return 

| ###################################################################################################### 

Sub Event_NoMount 
    
   /echo No mount in this zone. Sorry. 
   /varset NoMount TRUE 

/return 

| ###################################################################################################### 

Sub Event_levitFade
 
   /call Cast ${Spelllevit}
      
/return 

| ###################################################################################################### 

Sub Event_Invited 
   /invite 
/return 

| ################## 

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. 
   /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 


| ################## This part is taken from wait4res. 

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

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  

i ll try to add a stun with spark of thunder when i figure out later how to parse the event target cast ch or gate ><
Last edited by wizzyman on Thu Dec 16, 2004 2:45 am, edited 3 times in total.

wizzyman
a ghoul
a ghoul
Posts: 106
Joined: Fri Dec 10, 2004 6:03 pm

Post by wizzyman » Sat Dec 11, 2004 1:01 pm

have played with it all day, working now, only thing i dont know is if imunity of snare is correctly handled.

u turn on snare or levit here; u make it FALSE if u want it to work
/declare NoLevit TRUE
/declare NoSnare TRUE
can anyone explain me how i can check for event mob gating or casting ch (with leaderAA spell awareness for ch) plz? :wink:

Effico
a lesser mummy
a lesser mummy
Posts: 69
Joined: Mon Oct 18, 2004 6:03 am

Post by Effico » Wed Jan 05, 2005 6:15 am

played this for a little yesterday and it worked well.

anthrox
I send out spam emails for EQLUCKY.COM
Posts: 1
Joined: Thu Dec 16, 2004 2:04 pm

Works Great

Post by anthrox » Tue Jan 11, 2005 10:54 pm

Used this all day in a group then later in a raid -- works great!

I love the built in wait4rez too.

Very cool script.

:D

Dumas
decaying skeleton
decaying skeleton
Posts: 6
Joined: Wed Jun 02, 2004 2:05 pm

Post by Dumas » Mon Feb 14, 2005 3:27 pm

Shouldn't this:

Code: Select all

#Event   levitFade          "You feel as you are about to fall."
Be:

Code: Select all

#Event   levitFade          "You feel as [color=red]if[/color] you are about to fall."

wizzyman
a ghoul
a ghoul
Posts: 106
Joined: Fri Dec 10, 2004 6:03 pm

Post by wizzyman » Thu May 12, 2005 5:07 am

Code: Select all


| wiz.mac 
| v2.0
| simple wizzy bot assist macro
| commands: 
| - toggle mode: /fire, /cold, /magic, /main
| - toggle main assist: /ma
| - toggle quick nuke at: /quicknukeat
| - toggle main nuke at: /mainnukeat
| - toggle snare at: /snareat

#Chat tell 

#Event   OutDoor         "#*#outdoors#*#"
#Event   NoMount         "You can not summon a mount here."
#Event   ImDead         "You have been slain by#*#"
#Event   Invited         "#*#To join the group, click on the 'FOLLOW' option, or 'DISBAND' to cancel#*#"
#Event   NoLevit          "This spell does not work here."          
#Event   levitFade          "#*#You feel as you are about to fall.#*#"
#Event   Fire          "[MQ2] FireMode#*#" 
#Event   Cold          "[MQ2] ColdModet#*#" 
#Event   Magic          "[MQ2] MagicMode#*#" 
#Event   Main          "[MQ2] MainMode#*#"
#Event   NewMA          "[MQ2] NewMA#*#"
#Event   SnareAt          "[MQ2] SnareAt#*#"
#Event   QuickNukeAt          "[MQ2] QuickNukeAt#*#"
#Event   MainNukeAT          "[MQ2] MainNukeAT#*#"

#include Spell_Routines.inc

Sub Main

   /declare CChannel       outer "secret" 
   /declare ChatController outer "secret"
   
   /declare following     int   outer 0 
   /declare follname      string outer NULL
   /declare Familiar          outer Devoted Familiar
   /declare Spellsnare          outer "Atol's Spectral Shackles" 
   /declare Spellquicknuke         outer "Spark of Fire" 
   /declare Spellmainnuke           outer "White Fire" 
   /declare Spellroot        outer "Greater Fetter" 
   /declare Spellstun         outer "Spark of Thunder" 
   /declare Spellshield           outer "Ether shield" 
   /declare Spellharvest          outer "harvest" 
   /declare Spelltl          outer "translocate" 
   /declare Spellrune         outer "Ether Skin" 
   /declare Mount             outer "White Chain Bridle"
   /declare Debuff          outer "Staff of Temperate Flux"
   /declare conc          outer "Maelin's Leggings of Lore"
   /declare maelin          outer "Shawl of Eternal Forces"
   /declare Spelllevit          outer "O`Keils Levity"
   /declare maelinexp          outer "Eye of Dreams"
   /declare SpellStun2          outer "Teleka"
   /declare SpellInvis          outer "Improved Invisibiliry"
   /declare AssistAt      int   outer 100 
   /declare CombatAt      int   outer 98
   /declare MainNukeAT      int   outer 70
   /declare SnareAt      int   outer 60
   /declare DebuffCount   int   outer 0
     
   /declare M_Assist   string   outer 
   /declare OutDoors         outer TRUE 
   /declare NoMount         outer FALSE
   /declare NoLevit          outer FALSE
   |if you dont want to snare = TRUE
   /declare NoSnare          outer FALSE
   |if you dont want to sit = TRUE
   /declare NoSit          outer FALSE
   /declare TargetArray[4] string outer 
   /declare MobDebuffed         outer TRUE 
   /declare MobSnared         outer TRUE
   /declare CombatOn         outer TRUE
   /declare DoDebuff         outer FALSE
   
   /squelch /alias /fire           /echo FireMode
   /squelch /alias /cold           /echo ColdMode 
   /squelch /alias /magic          /echo MagicMode 
   /squelch /alias /main           /echo MainMode
   /squelch /alias /ma           /echo NewMA
   /squelch /alias /mainnukeat           /echo MainNukeAT
   /squelch /alias /quicknukeat           /echo QuickNukeAt
   /squelch /alias /snareat           /echo SnareAt
   
   /call MemSpells

   /if (!${Target.ID} || ${Target.Type.NotEqual[PC]}) { 
      /echo Your target is NOT a player, make sure its a player character! 
        /endmacro 
    } else { 
      /varset M_Assist ${Target.CleanName} 
      /echo Assist set to ${M_Assist} 
      /assist off 
    } 
    
      /leaveall 
      /join ${CChannel} 
      /1 I am here! 
      /echo Joined channel ${CChannel}

:main_loop

   /if (!${Me.Mount.ID} && ${OutDoors} && !${NoMount}) /call cast ${Mount} item 4s
   /if (${Me.State.Equal[Stand]} && ${NoMount} && !${NoSit} && ${Me.PctMana}<80 && !${Spawn[npc radius 80].ID}) /sit
   /doevents

:Hold_Main 
   
   /if (${Me.Moving}) /goto :Hold_Main
   /if (${Me.PctMana} < 80 && ${Me.SpellReady["Harvest"]} && !${CombatOn}) /call Cast ${Spellharvest}
   /if (${Me.PctMana} < 80 && ${Me.AltAbilityReady["Harvest of Druzzil"]} && !${CombatOn}) /aa act Harvest of Druzzil 
   /if (${Target.PctHPs}<= 85 && ${CombatOn} && ${Me.AltAbilityReady["Call of Xuzl"]} ) {
      /aa act Call of Xuzl
      /delay 8s
   }  
   /call SingleBuffs
   /call GetTarget
   /if (${CombatOn}) /call Combat
   
   /goto :Main_Loop
/return 

Sub MemSpells 

   /echo Memming spells. Hang on. 
   /if ( !${Me.Gem[${Spellsnare}]} ) { 
      /memspell 1 ${Spellsnare} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellquicknuke}]} ) { 
      /memspell 2 ${Spellquicknuke} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellmainnuke}]} ) { 
      /memspell 3 ${Spellmainnuke} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellroot}]} ) { 
      /memspell 4 ${Spellroot} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spellstun}]} ) { 
      /memspell 5 ${Spellstun} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellshield}]} ) { 
      /memspell 6 ${Spellshield} 
      /delay 25 
   } 
   /if ( !${Me.Gem[${Spellharvest}]} ) { 
      /memspell 7 ${Spellharvest} 
      /delay 20 
   } 
   /if ( !${Me.Gem[${Spelllevit}]} ) { 
      /memspell 8 ${Spelllevit} 
      /delay 20
   } 
   /if ( !${Me.Gem[${Spellrune}]} ) { 
      /memspell 9 ${Spellrune} 
      /delay 30
   } 
   |/if ( ${Window[SpellBookWnd].Open} ) /windowstate SpellBookWnd close 
   /echo Spells are memmed. 

/return

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
      /if (${Target.PctHPs}>= 60) /varset MobSnared FALSE
      /if (${Target.PctHPs}>= 80) /varset MobDebuffed FALSE   
     }


/return

Sub Combat 

:combat_loop  

/doevents
   
   /if (${Me.PctMana} < 20) {
      /if (${Me.State.Equal[Stand]} && ${NoMount}) /sit
      /goto :combat_loop
   }

   /if (${Target.PctHPs}<= 10 ) {
      /varset CombatOn FALSE
   }
   /if (${Target.PctHPs}<= 98 && ${DoDebuff} && ${CombatOn} && !${MobDebuffed} && ${Target.ID}==${TargetArray[4]}) /call DeBuff 
   /if (${Target.PctHPs}<= ${SnareAt} && ${CombatOn} && !${NoSnare} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) /call snare
   /if (${Target.PctHPs}<= ${QuickNukeAt} && ${CombatOn} &&  ${Target.ID}==${TargetArray[4]}) {
      /call quicknuke
      /goto :combat_loop
   }
   /if (${Target.PctHPs}<= ${MainNukeAT} && ${CombatOn} &&  ${Target.ID}==${TargetArray[4]}) /call mainnuke
  
|- EndCombat 

   /target ${TargetArray[3]} 
   /if (!${Target.Name.Equal[${TargetArray[3]}]} || !${Target.ID}) { 
      /echo ${TargetArray[1]} is dead 
      /varset CombatOn FALSE 
      /varset MobDebuffed FALSE 
      /varset MobSnared FALSE
      
      /varset TargetArray[1] NULL 
      /varset TargetArray[2] NULL 
      /varset TargetArray[3] NULL 
      /varset TargetArray[4] NULL 
   } 

/return

Sub DeBuff 
:DeBuff_Loop
/delay 5
/if (${DebuffCount}>5) /goto :DebuffEnd
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) {
      /call cast ${Debuff} item
      /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :DeBuff_Loop
      /if (${Macro.Return.Equal["CAST_RESISTED"]}) {
          /varcalc DebuffCount ${DebuffCount}+1
          /goto :DeBuff_Loop
      }
      /if (${Macro.Return.Equal["CAST_SUCCESS"]}) {
         /varset MobDebuffed TRUE
         /varset DebuffCount 0
         /return
      }
   }

:DebuffEnd
/varset MobDebuffed TRUE
/varset DebuffCount 0
/return

Sub mainnuke 
   
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) { 
         /echo Shid ! I don't have mana to nuke %T 
      } else { 
:mainnuke_Loop 
         /call cast ${Spellmainnuke} gem3 6s 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :mainnuke_Loop 
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :mainnuke_Loop
         /call Cast ${conc} item
         /call Cast ${conc} item                
      }  
   } 

/return

Sub quicknuke 
   
   /if (${Target.PctHPs}<=${CombatAt} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellmainnuke}].Mana}) { 
         /echo Shid ! I don't have mana to nuke %T 
      } else { 
:quicknuke_Loop 
         /call cast ${Spellquicknuke} gem2 3s 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :quicknuke_Loop 
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :quicknuke_Loop
         /call Cast ${conc} item                         
      } 
   } 

/return

Sub snare 
   
   /if (${Target.PctHPs}<=${CombatAt} && !${MobSnared} && ${Target.ID}==${TargetArray[4]}) { 
      /if (${Me.CurrentMana}<${Spell[${Spellsnare}].Mana}) { 
         /echo Shid ! I don't have mana to snare %T 
      } else { 

:snare_Loop 
         
         /call cast ${Spellsnare} 
         /if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :snare_Loop 
         /if (${Macro.Return.Equal["CAST_IMMUNE"]}) { 
             /gsay %T immune snare
             /varset MobSnared TRUE
             /return
         }
         /if (${Macro.Return.Equal["CAST_RESISTED"]}) /goto :snare_loop 
         /varset MobSnared TRUE   
        

      } 

   

/return  
 
         
         
       
sub SingleBuffs

   /if (${Bool[${Me.Buff["Ether Skin"]}]}==FALSE) /call Cast ${Spellrune} gem9 5s
   /if (${Bool[${Me.Buff["Ether Shield"]}]}==FALSE) /call Cast ${Spellshield} gem6 12s
   /if (${Bool[${Me.Buff["${Familiar}"]}]}==FALSE) /aa act Familiar
   /if (${Me.Pet.ID} && ${Me.Pet.Name.Find[familiar]}) /pet get lost
   /if (${Bool[${Me.Buff["Maelin's Methodical Mind"]}]}==FALSE) /call Cast "Shawl of Eternal Forces" item 6s
   /if (${Bool[${Me.Buff["Maelin's Meditation"]}]}==FALSE) /call Cast "Eye of Dreams" item 5s
   /if (${Bool[${Me.Buff["O`Keils Levity"]}]}==FALSE && !${NoLevit}) /call Cast ${Spelllevit} gem8 6s
      
/return

| ###################################################################################################### 

Sub Event_OutDoor 
    
   /echo This is an indoor zone. Sorry. 
   /varset OutDoors FALSE 

/return

| ###################################################################################################### 

Sub Event_NoLevit 
    
   /echo can't levitate in this zone. Sorry. 
   /varset NoLevit TRUE 

/return 

| ###################################################################################################### 

Sub Event_NoMount 
    
   /echo No mount in this zone. Sorry. 
   /varset NoMount TRUE 

/return 

| ###################################################################################################### 

Sub Event_levitFade
 
   /call Cast ${Spelllevit}
      
/return 

| ###################################################################################################### 

Sub Event_Invited 
   /invite 
/return 

| ######################################################################################################

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. 
   /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 

| ######################################################################################################

Sub Event_Fire

/varset Familiar Ro's Greater Familiar
/varset Spellmainnuke "White Fire"
/varset Spellquicknuke "Spark of Fire"
/call DropFlappy
/call MemSpells
/call SingleBuffs
/return

| ######################################################################################################

Sub Event_Cold

/varset Familiar Eci's Greater Familiar
/varset Spellmainnuke "Gelidin Comet"
/varset Spellquicknuke "Spark of Ice"
/call DropFlappy
/call MemSpells
/call SingleBuffs
/return

| ######################################################################################################

Sub Event_Magic

/varset Familiar Druzzil's Greater Familiar
/varset Spellmainnuke "Thundaka"
/varset Spellquicknuke "Spark of Lightning"
/call DropFlappy
/call MemSpells
/call SingleBuffs
/return

| ######################################################################################################

Sub Event_Main

/varset Familiar Devoted Familiar
|/varset Spellmainnuke
|/varset Spellquicknuke
/call DropFlappy
/call MemSpells
/call SingleBuffs
/return

| ######################################################################################################

Sub Event_NewMA

/varset M_Assist ${Target.CleanName} 
/echo Assist set to ${M_Assist}
/return

| ######################################################################################################

Sub Event_SnareAt(string Line, string Command, string Command2)

/varset SnareAt ${Command2}
/return

| ######################################################################################################

Sub Event_QuickNukeAt(string Line, string Command, string Command2)

/varset QuickNukeAt ${Command2}
/return

| ######################################################################################################

Sub Event_MainNukeAt(string Line, string Command, string Command2)

/varset MainNukeAt ${Command2}
/return

| ######################################################################################################

Sub DropFlappy

/if (${Me.Buff[Devoted Familiar].ID}) /nomodkey /notify BuffWindow Buff${Math.Calc[${Me.Buff[Devoted Familiar].ID}-1].Int} leftmouseup
/if (${Me.Buff[Druzzil's Greater Familiar].ID}) /nomodkey /notify BuffWindow Buff${Math.Calc[${Me.Buff[Druzzil's Greater Familiar].ID}-1].Int} leftmouseup
/if (${Me.Buff[Eci's Greater Familiar].ID}) /nomodkey /notify BuffWindow Buff${Math.Calc[${Me.Buff[Eci's Greater Familiar].ID}-1].Int} leftmouseup
/if (${Me.Buff[Ro's Greater Familiar].ID}) /nomodkey /notify BuffWindow Buff${Math.Calc[${Me.Buff[Ro's Greater Familiar].ID}-1].Int} leftmouseup

/return

| ################## This part is taken from wait4res. 

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

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 

| ###############################

Sub Event_Chat(string ChatType,string ChatSender,string ChatText) 

      /if (!${ChatType.Equal[TELL]}) /return

      /if (${ChatText.Equal[mainnuke]}) { 
         /assist ${ChatSender} 
         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 
            /call cast ${Spellmainnuke} gem3 6s 
            } 
      /return 
     } 

      /if (${ChatText.Equal[quicknuke]}) { 
         /assist ${ChatSender} 
         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 
            /call cast ${Spellquicknuke} gem2 3s 
            } 
      /return 
     } 
     
     /if (${ChatText.Equal[invis]}) { 
         /assist ${ChatSender} 
         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 
            /call cast ${SpellInvis} gem3 5s 
            } 
      /return 
     }

     /if (${ChatText.Equal[punt]}) { 
         /target ${ChatSender}
         /delay 5 
         /if (${Target.Type.Equal[PC]} && ${Target.Distance}<=100) { 
            /call cast ${Spelltl} gem8 6s 
            } 
      /return 
     } 
    
     /if (${ChatText.Equal[stun]}) { 
         /assist ${ChatSender} 
         /if (${Target.Type.Equal[NPC]} && ${Target.Distance}<=100) { 
            /call cast ${SpellStun2} gem5 3s 
            } 
      /return 
     } 

     /if (${ChatText.Equal[evac]} && ${ChatSender.Equal[ChatController]) { 
        /if (${Me.AltAbilityReady["Exodus"]}) {
           /aa act Exodus
           /return
     } else {
        /gsay exodus down ><
        /return
        }
     }

   /if (${ChatText.Equal[Follow me]}) { 
      /delay 5 
      /if (!${Spawn[${ChatSender}].ID}) { 
         /e ${ChatSender} is not in zone for me to follow! 
         /return 
      } 
      /varset follname ${ChatSender} 
      /varset following 1 
      :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}>10) /keypress forward hold 
      /if (${Target.Distance}<9) /keypress back 
      /if (!${Target.ID}) /varset following 0 
      /doevents
      /if ((${Target.Name.Equal[${follname}]})&&(${following}>0)) { 
         /goto :Loop 
      } else { 
         /keypress forward 
         /keypress back 
      }
    /return 
   } 

 /if (${ChatText.Equal[End follow]}) { 
    /varset following 0 
    /keypress forward 
    /keypress back
    /clean 
    /timed 50 /face pc ${follname} 
    /tell ${ChatSender} I Stopped following you!!! 
    /return  
 } 

     /if (${ChatType.Equal[TELL]}) { 
        /1 [${ChatSender}]:${ChatText} 
        /vtell ${ChatController} 001 
        /return 
     }
 
/return 

V2.0 need to be field tested.

JJ
a hill giant
a hill giant
Posts: 227
Joined: Thu Nov 11, 2004 5:50 am

Post by JJ » Thu May 12, 2005 12:23 pm

wizzyman wrote:can anyone explain me how i can check for event mob gating or casting ch (with leaderAA spell awareness for ch) plz? :wink:
Not sure exactly on how to use the variables in the events, but it should be something like:

Code: Select all

#event MobGate "|${Target.CleanName}| begins to cast a spell. <Gate>"
#event MobCH "|${Target.CleanName}| begins to cast a spell. <Complete Heal>"
Can't remember if it's <> or () or whatever.

wizzyman
a ghoul
a ghoul
Posts: 106
Joined: Fri Dec 10, 2004 6:03 pm

Post by wizzyman » Thu May 12, 2005 12:52 pm

haha thx for replay, this was an old question tho :oops:

fry
decaying skeleton
decaying skeleton
Posts: 2
Joined: Sat Jun 04, 2005 7:57 am

Post by fry » Sat Jun 04, 2005 8:12 am

nice mac. Now make a mage one !

EQPlayer
orc pawn
orc pawn
Posts: 16
Joined: Tue Apr 19, 2005 11:41 am

nuke delay

Post by EQPlayer » Tue Aug 02, 2005 8:10 pm

My friend and I have been trying this out on his wizard , but we have one question. How do set a delay between each main nuke? The wizard is getting over aggro'd cause the delay between nukes is not large enough.

User avatar
gimp
a grimling bloodguard
a grimling bloodguard
Posts: 584
Joined: Fri Oct 29, 2004 9:28 am
Location: internet

Post by gimp » Tue Aug 02, 2005 8:17 pm

you would put it somewhere in the Combat sub, from the looks of it, there isnt any currently. or i suppose you can tell the macro to start nuking at a little later % of the mob, and your tank would have more time building aggro

vstratos
orc pawn
orc pawn
Posts: 25
Joined: Mon May 09, 2005 2:52 am

Post by vstratos » Sun Aug 21, 2005 5:14 pm

Would it be hard to add mana robe maybe?

A_Druid_00
Macro Maker Extraordinaire
Posts: 2378
Joined: Tue Jul 13, 2004 12:45 pm
Location: Rolling on the Lawn Farting

Post by A_Druid_00 » Mon Aug 22, 2005 8:55 am

AutoBot does Harvest as well as Mana Robe. The only thing I don't have for wizards ATM is the addition of a 3rd nuke line for Magic based nukes. Fire/Cold are covered though! It also keeps up self buffs/item buffs, as well as familiar. The list goes on and on, but I already answered your question.
[quote]<DigitalMocking> man, A_Druid_00 really does love those long ass if statements
<dont_know_at_all> i don't use his macro because i'm frightened of it[/quote]
[quote][12:45] <dont_know_at_all> never use a macro when you can really fuck up things with a plugin[/quote]

vstratos
orc pawn
orc pawn
Posts: 25
Joined: Mon May 09, 2005 2:52 am

Post by vstratos » Wed Aug 24, 2005 11:27 am

Thanks will give it a try !!!