Wizard macro help?

I love this macro =) Thank you everyone!!!


Code:
|-----------------------------|
|-------Idea Cheater010-------|
|---Written by GummySquirrel--|
|-----------------------------|

#include spell_routines.inc

Sub Main

|-------------------------------|
|-- Edit These To Your Liking --|
|-------------------------------|

/declare SelfRune string outer Laminae of the Crystalwing Rk. II
/declare SelfHPBuff string outer Bulwark of the Crystalwing
/declare SmallNuke string outer Wildmagic Strike Rk. III
/declare BigNuke string outer Ethereal Conflagration Rk. III
/declare Concussion string outer Concussive Burst Rk. II
/declare Harvest string outer Tranquil Harvest Rk. III
/declare Flappy string outer Ro's Flaming Familiar


/declare NukeAt int outer 95
/declare ConcussionAfter int outer 2
/declare UseHarvestBelow int outer 30
/declare MedAt int outer 10
/declare ReAssist timer outer 10s

|--------------|
|-- END EDIT --|
|--------------|


/call Initialize

/echo Beginning Mindless Wizard Nuking...

:MainLoop
/call CheckBuffs
/call CheckTarget
/call Nuke
/call CheckHarvest
/call CheckMana
/doevents
/goto :MainLoop
/return


Sub Initialize
/if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.ID}==${Me.ID}) {
  /echo Please target the main tank before running the macro
  /end
}
/declare MainTank int outer ${Target.ID}
/declare SRG int outer ${Me.Gem[${SelfRune}]}
/declare SNG int outer ${Me.Gem[${SmallNuke}]}
/declare BNG int outer ${Me.Gem[${BigNuke}]}
/declare CBG int outer ${Me.Gem[${Concussion}]}
/declare CBC int outer 0
/declare TarID int outer
/declare SIM int outer 0
/if (!${SRG} || !${SNG} || !${BNG} || !${CBG}) /multiline ; /echo Missing A Spell! ; /end
/return


Sub CheckBuffs
 /if (!${Me.Buff[${SelfRune}].ID} && ${Me.CurrentMana}>=${Spell[${SelfRune}].Mana} && ${Me.SpellReady[${SelfRune}]}) /call cast "${SelfRune}" gem${SRG}
 /if (!${Me.Buff[${SelfHPBuff}].ID} && ${Me.CurrentMana}>=${Spell[${SelfHPBuff}].Mana} && ${Me.SpellReady[${SelfHPBuff}]}) /call cast "${SelfHPBuff}"
 /if (!${Me.Buff[Pyromancy].ID} && ${Me.AltAbilityReady[Pyromancy]} && !${Me.Casting.ID}) /call cast "Pyromancy" alt
 /if (!${Me.Buff[${Flappy}].ID} && ${Me.AltAbilityReady[${Flappy}]} && !${Me.Casting.ID}) /call cast "${Flappy}" alt
 /if (${Me.Pet.ID}) /pet get lost
/return


Sub CheckTarget
 /if ((!${Target.ID} || ${Target.Type.NotEqual[NPC]} || !${ReAssist}) && ${Spawn[id ${MainTank} radius 200].ID}) {
   /assist ${Spawn[id ${MainTank}]}
   /varset ReAssist ${ReAssist.OriginalValue}
 }
 /if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.ID}!=${TarID}) {
   /varset TarID ${Target.ID}
   /varset CBC 0
    }
/return


Sub Nuke
 /if (${Target.PctHPs}<=${NukeAt} && ${Target.ID} && ${Target.Type.Equal[NPC]}) {
    /if (${Me.Song[Gift of Radiant Mana].ID} && ${Me.CurrentMana}>=${Spell[${BigNuke}].Mana} && ${Me.SpellReady[${BigNuke}]} && ${Target.Distance}<=${Spell[${BigNuke}].Range} && ${Target.LineOfSight}) {
      /call cast "${BigNuke}" gem${BNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${SmallNuke}].Mana} && ${Me.SpellReady[${SmallNuke}]} && ${Target.Distance}<=${Spell[${SmallNuke}].Range} && ${Target.LineOfSight} && ${CBC}<${ConcussionAfter}) {
      /call cast "${SmallNuke}" gem${SNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${Concussion}].Mana} && ${Me.SpellReady[${Concussion}]} && ${Target.Distance}<=${Spell[${Concussion}].Range} && ${Target.LineOfSight} && ${CBC}>=${ConcussionAfter}) {
      /call cast "${Concussion}" gem${CBG}
      /varset CBC 0
    }
 }
/return


Sub CheckHarvest
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.AltAbilityReady[Harvest of Druzzil]} && ${Me.State.Equal[STAND]}) {
     /call cast "Harvest of Druzzil" alt
  }
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.SpellReady[${Harvest}]} && ${Me.State.Equal[STAND]}) {
     /call cast "${Harvest}"
      /if (${Harvest.Left[7].Equal[Patient]}) {
        /delay 2s ${Me.Song[${Harvest}].ID}
        /delay 1s
        /delay 25s !${Me.Song[${Harvest}].ID}
     } else {
        /delay 10s
     }
  }
/return

Sub CheckMana
  /if (${Me.Song[Gift of Radiant Mana].ID}) /return
  /if (${Me.PctMana}<${MedAt}) {
    /echo Mana is below ${MedAt}% .. medding up
    :Cycle
    /call CheckHarvest
    /if (!${Me.Mount.ID} && ${Me.State.Equal[STAND]} && ${Me.CombatState.NotEqual[COMBAT]}) /sit
    /if (${Me.PctMana}<100) /goto :Cycle
    /echo Finished medding.
  }
/return
 
So i was having an issue with the Self Hp buff always trying to cast if i was raidb uffed, and aoe's would go off and id be re Runing myself. anyways i erased the Rune / Hp buff. and like it alot more this way =)

Code:
|-----------------------------|
|-------Idea Cheater010-------|
|---Written by GummySquirrel--|
|-----------------------------|

#include spell_routines.inc

Sub Main

|-------------------------------|
|-- Edit These To Your Liking --|
|-------------------------------|

/declare SmallNuke string outer Wildmagic Strike Rk. III
/declare BigNuke string outer Ethereal Conflagration Rk. III
/declare Concussion string outer Concussive Burst Rk. II
/declare Harvest string outer Tranquil Harvest Rk. III
/declare Flappy string outer Ro's Flaming Familiar


/declare NukeAt int outer 95
/declare ConcussionAfter int outer 9
/declare UseHarvestBelow int outer 30
/declare MedAt int outer 10
/declare ReAssist timer outer 10s

|--------------|
|-- END EDIT --|
|--------------|


/call Initialize

/echo Beginning Mindless Wizard Nuking...

:MainLoop
/call CheckTarget
/call Nuke
/call CheckHarvest
/call CheckMana
/doevents
/goto :MainLoop
/return


Sub Initialize
/if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.ID}==${Me.ID}) {
  /echo Please target the main tank before running the macro
  /end
}
/declare MainTank int outer ${Target.ID}
/declare SNG int outer ${Me.Gem[${SmallNuke}]}
/declare BNG int outer ${Me.Gem[${BigNuke}]}
/declare CBG int outer ${Me.Gem[${Concussion}]}
/declare CBC int outer 0
/declare TarID int outer
/declare SIM int outer 0
/if (!${SNG} || !${BNG} || !${CBG}) /multiline ; /echo Missing A Spell! ; /end
/return


Sub CheckTarget
 /if ((!${Target.ID} || ${Target.Type.NotEqual[NPC]} || !${ReAssist}) && ${Spawn[id ${MainTank} radius 200].ID}) {
   /assist ${Spawn[id ${MainTank}]}
   /varset ReAssist ${ReAssist.OriginalValue}
 }
 /if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.ID}!=${TarID}) {
   /varset TarID ${Target.ID}
   /varset CBC 0
    }
/return


Sub Nuke
 /if (${Target.PctHPs}<=${NukeAt} && ${Target.ID} && ${Target.Type.Equal[NPC]}) {
    /if (${Me.Song[Gift of Radiant Mana].ID} && ${Me.CurrentMana}>=${Spell[${BigNuke}].Mana} && ${Me.SpellReady[${BigNuke}]} && ${Target.Distance}<=${Spell[${BigNuke}].Range} && ${Target.LineOfSight}) {
      /call cast "${BigNuke}" gem${BNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${SmallNuke}].Mana} && ${Me.SpellReady[${SmallNuke}]} && ${Target.Distance}<=${Spell[${SmallNuke}].Range} && ${Target.LineOfSight} && ${CBC}<${ConcussionAfter}) {
      /call cast "${SmallNuke}" gem${SNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${Concussion}].Mana} && ${Me.SpellReady[${Concussion}]} && ${Target.Distance}<=${Spell[${Concussion}].Range} && ${Target.LineOfSight} && ${CBC}>=${ConcussionAfter}) {
      /call cast "${Concussion}" gem${CBG}
      /varset CBC 0
    }
 }
/return


Sub CheckHarvest
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.AltAbilityReady[Harvest of Druzzil]} && ${Me.State.Equal[STAND]}) {
     /call cast "Harvest of Druzzil" alt
  }
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.SpellReady[${Harvest}]} && ${Me.State.Equal[STAND]}) {
     /call cast "${Harvest}"
      /if (${Harvest.Left[7].Equal[Patient]}) {
        /delay 2s ${Me.Song[${Harvest}].ID}
        /delay 1s
        /delay 25s !${Me.Song[${Harvest}].ID}
     } else {
        /delay 10s
     }
  }
/return

Sub CheckMana
  /if (${Me.Song[Gift of Radiant Mana].ID}) /return
  /if (${Me.PctMana}<${MedAt}) {
    /echo Mana is below ${MedAt}% .. medding up
    :Cycle
    /call CheckHarvest
    /if (!${Me.Mount.ID} && ${Me.State.Equal[STAND]} && ${Me.CombatState.NotEqual[COMBAT]}) /sit
    /if (${Me.PctMana}<100) /goto :Cycle
    /echo Finished medding.
  }
/return
 
Updated for new expansion recast timers to allow chain casting of 3 different nukes

Code:
|-----------------------------|
|-------Idea Cheater010-------|
|---Written by GummySquirrel--|
|-----------------------------|

#include spell_routines.inc

Sub Main

|-------------------------------|
|-- Edit These To Your Liking --|
|-------------------------------|

/declare SmallNuke string outer Wildmagic Blast Rk. III
/declare MedNuke string outer Klixcxyk's Fire
/declare InstantNuke string outer Flashblaze Rk. II
/declare BigNuke string outer Ethereal Combustion
/declare Concussion string outer Concussive Flash
/declare Harvest string outer Serene Harvest
/declare Flappy string outer Ro's Flaming Familiar


/declare NukeAt int outer 95
/declare ConcussionAfter int outer 3
/declare UseHarvestBelow int outer 30
/declare MedAt int outer 10
/declare ReAssist timer outer 10s

|--------------|
|-- END EDIT --|
|--------------|


/call Initialize

/echo Beginning Mindless Wizard Nuking...

:MainLoop
/call CheckTarget
/call Nuke
/call CheckHarvest
/call CheckMana
/doevents
/goto :MainLoop
/return


Sub Initialize
/if (!${Target.ID} || ${Target.Type.NotEqual[PC]} || ${Target.ID}==${Me.ID}) {
  /echo Please target the main tank before running the macro
  /end
}
/declare MainTank int outer ${Target.ID}
/declare SNG int outer ${Me.Gem[${SmallNuke}]}
/declare BNG int outer ${Me.Gem[${BigNuke}]}
/declare ING int outer ${Me.Gem[${InstantNuke}]}
/declare MNG int outer ${Me.Gem[${MedNuke}]}
/declare CBG int outer ${Me.Gem[${Concussion}]}
/declare CBC int outer 0
/declare TarID int outer
/declare SIM int outer 0
/if (!${SNG} || !${BNG} || !${CBG} || !${MNG} || !${ING}) /multiline ; /echo Missing A Spell! ; /end
/return


Sub CheckTarget
 /if ((!${Target.ID} || ${Target.Type.NotEqual[NPC]} || !${ReAssist}) && ${Spawn[id ${MainTank} radius 200].ID}) {
   /assist ${Spawn[id ${MainTank}]}
   /varset ReAssist ${ReAssist.OriginalValue}
 }
 /if (${Target.ID} && ${Target.Type.Equal[NPC]} && ${Target.ID}!=${TarID}) {
   /varset TarID ${Target.ID}
   /varset CBC 0
    }
/return


Sub Nuke
 /if (${Target.PctHPs}<=${NukeAt} && ${Target.ID} && ${Target.Type.Equal[NPC]}) {
    /if (${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID} && ${Me.CurrentMana}>=${Spell[${BigNuke}].Mana} && ${Me.SpellReady[${BigNuke}]} && ${Target.Distance}<=${Spell[${BigNuke}].Range} && ${Target.LineOfSight}) {
      /call cast "${BigNuke}" gem${BNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${InstantNuke}].Mana} && ${Me.SpellReady[${InstantNuke}]} && ${Target.Distance}<=${Spell[${InstantNuke}].Range} && ${Target.LineOfSight} && ${CBC}<${ConcussionAfter}) {
      /call cast "${InstantNuke}" gem${ING}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${MedNuke}].Mana} && ${Me.SpellReady[${MedNuke}]} && ${Target.Distance}<=${Spell[${MedNuke}].Range} && ${Target.LineOfSight} && ${CBC}<${ConcussionAfter}) {
      /call cast "${MedNuke}" gem${MNG}
      /varcalc CBC ${CBC}+1
    }    
    /if (${Me.CurrentMana}>=${Spell[${SmallNuke}].Mana} && ${Me.SpellReady[${SmallNuke}]} && ${Target.Distance}<=${Spell[${SmallNuke}].Range} && ${Target.LineOfSight} && ${CBC}<${ConcussionAfter}) {
      /call cast "${SmallNuke}" gem${SNG}
      /varcalc CBC ${CBC}+1
    }
    /if (${Me.CurrentMana}>=${Spell[${Concussion}].Mana} && ${Me.SpellReady[${Concussion}]} && ${Target.Distance}<=${Spell[${Concussion}].Range} && ${Target.LineOfSight} && ${CBC}>=${ConcussionAfter}) {
      /call cast "${Concussion}" gem${CBG}
      /varset CBC 0
    }
 }
/return


Sub CheckHarvest
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.AltAbilityReady[Harvest of Druzzil]} && ${Me.State.Equal[STAND]}) {
     /call cast "Harvest of Druzzil" alt
  }
  /if (${Me.PctMana}<${UseHarvestBelow} && ${Me.SpellReady[${Harvest}]} && ${Me.State.Equal[STAND]}) {
     /call cast "${Harvest}"
      /if (${Harvest.Left[7].Equal[Patient]}) {
        /delay 2s ${Me.Song[${Harvest}].ID}
        /delay 1s
        /delay 25s !${Me.Song[${Harvest}].ID}
     } else {
        /delay 10s
     }
  }

/return

Sub CheckMana
  /if (${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID}) /return
  /if (${Me.PctMana}<${MedAt}) {
    /echo Mana is below ${MedAt}% .. medding up
    :Cycle
    /call CheckHarvest
    /if (!${Me.Mount.ID} && ${Me.State.Equal[STAND]} && ${Me.CombatState.NotEqual[COMBAT]}) /sit
    /if (${Me.PctMana}<100) /goto :Cycle
    /echo Finished medding.
  }
/return
 
So I'm curious what's the modification in the last version above? The way I read if the wizard doesn't have enough mana for the insta-nuke, he casts the medium nuke. And if he doesn't have enough mana for the medium nuke, he casts the small nuke?

Is that about right?

I use a version of this wizard macro and like it a lot. Altho I modified it to hard-code the main-tank's name since the wizard always groups with the same tank. Plus I added a line of code to suspend casting if the wizzy is invis'd.
 
anyway to put a setting on this to make it never cast the big nuke unless GOM is going ?
 
So I'm curious what's the modification in the last version above? The way I read if the wizard doesn't have enough mana for the insta-nuke, he casts the medium nuke. And if he doesn't have enough mana for the medium nuke, he casts the small nuke?

Is that about right?

I use a version of this wizard macro and like it a lot. Altho I modified it to hard-code the main-tank's name since the wizard always groups with the same tank. Plus I added a line of code to suspend casting if the wizzy is invis'd.

Personally I think this looks just right for a wizard who is not mana heavy. I have a wizard I use for botting and use the exact same lineup, with exception to the Rk.III versions. :)
 
anyway we can update this to use twin cast spell when its up ?
 
anyway we can update this to use twin cast spell when its up ?

Add these to the top
Code:
/declare Twincast string outer Twincast
/declare TCG int outer #
Add where you please Mayber right after the if in the Sub Nuke

Code:
/if (${Me.SpellReady[${TwinCast}]}) /call cast "${TwinCast}" gem${TCG}
 
I understand everyone uses the mac bot. Thats great and all, I dont need something that will do everything for me like the bot does. Something like this is so simple i can use when i AFK to use the restroom or start a pot of coffee. I dont want it using My AA's my burns, ect like the bot does. Just simple Assist target, Cast nukes. I dont even care if it Meds or casts Harvest, as i dont need something that will completely run my character.
If someone wouldnt mind helping me, Id greately appreciate it.


This is a super Old macro, but i see it is still included in the original download from MMObugs. But it just gives Error after Error about Spell routines not found.
Subroutine 44570 wasn't found
Spell_Routines.inc@670 (waitcast(mysub,int spellld)): /if (${Bool[${mySub}]}) /call ${mysub} ${spellID}
spell_routines.inc@465 (spellCast(spellType,spellName,mySubint spellID,giveUpValue)): /call WaitCast ${mySub}${spellID}
spell_routines.inc@411 (cast(spellname,spelltype,giveupvalue,mysub,int resist total)): /if (${spellType.notEqual[item]}&& ${spellType.NotEqual[alt]} && ${spellType.notEqual[ability]} && ${spellType.NotEqual[disc]}) /call SpellCast "${spellType}" "${spellName}" "${mySub}" "${spellID}" "${giveUpValue}"
mindwiz.mac@87 (nuke): /call cast "${SmallNuke}" gem${SNG}
mindwiz.mac@38 (Main): /call Nuke
The current macro has ended.

^^ These are the type of Errors that it keeps giving me.
 
I understand everyone uses the mac bot. Thats great and all, I dont need something that will do everything for me like the bot does. Something like this is so simple i can use when i AFK to use the restroom or start a pot of coffee. I dont want it using My AA's my burns, ect like the bot does. Just simple Assist target, Cast nukes. I dont even care if it Meds or casts Harvest, as i dont need something that will completely run my character.
If someone wouldnt mind helping me, Id greately appreciate it.


This is a super Old macro, but i see it is still included in the original download from MMObugs. But it just gives Error after Error about Spell routines not found.
Subroutine 44570 wasn't found
Spell_Routines.inc@670 (waitcast(mysub,int spellld)): /if (${Bool[${mySub}]}) /call ${mysub} ${spellID}
spell_routines.inc@465 (spellCast(spellType,spellName,mySubint spellID,giveUpValue)): /call WaitCast ${mySub}${spellID}
spell_routines.inc@411 (cast(spellname,spelltype,giveupvalue,mysub,int resist total)): /if (${spellType.notEqual[item]}&& ${spellType.NotEqual[alt]} && ${spellType.notEqual[ability]} && ${spellType.NotEqual[disc]}) /call SpellCast "${spellType}" "${spellName}" "${mySub}" "${spellID}" "${giveUpValue}"
mindwiz.mac@87 (nuke): /call cast "${SmallNuke}" gem${SNG}
mindwiz.mac@38 (Main): /call Nuke
The current macro has ended.

^^ These are the type of Errors that it keeps giving me.

necropost.jpg
 
lol the thread was originally Mine. I just made a new account because password issues.
So I resurrected my own thread :)

I understand everyone uses the mac bot. Thats great and all, I dont need something that will do everything for me like the bot does. Something like this is so simple i can use when i AFK to use the restroom or start a pot of coffee. I dont want it using My AA's my burns, ect like the bot does. Just simple Assist target, Cast nukes. I dont even care if it Meds or casts Harvest, as i dont need something that will completely run my character.
If someone wouldnt mind helping me, Id greately appreciate it.


This is a super Old macro, but i see it is still included in the original download from MMObugs. But it just gives Error after Error about Spell routines not found.
Subroutine 44570 wasn't found
Spell_Routines.inc@670 (waitcast(mysub,int spellld)): /if (${Bool[${mySub}]}) /call ${mysub} ${spellID}
spell_routines.inc@465 (spellCast(spellType,spellName,mySubint spellID,giveUpValue)): /call WaitCast ${mySub}${spellID}
spell_routines.inc@411 (cast(spellname,spelltype,giveupvalue,mysub,int resist total)): /if (${spellType.notEqual[item]}&& ${spellType.NotEqual[alt]} && ${spellType.notEqual[ability]} && ${spellType.NotEqual[disc]}) /call SpellCast "${spellType}" "${spellName}" "${mySub}" "${spellID}" "${giveUpValue}"
mindwiz.mac@87 (nuke): /call cast "${SmallNuke}" gem${SNG}
mindwiz.mac@38 (Main): /call Nuke
The current macro has ended.

^^ These are the type of Errors that it keeps giving me.

necropost.jpg