Alright guys, Not to overshadow Razkle or anything I just don't see his macro doing the dps this macro has been doing for me, And I'd like some help from those (william12, etc) to fix this and anyone can use it, theres no .ini with it that I'm aware of and its past my knowledge and patience for fixing it.
Before I post this, let me make it clear, I did not make this macro and I have no idea who did, I've had it in my folder for 3-4 years.
Pros: Doesn't lag me out, best DPS macro I can find for a wizard PERIOD.
Con: It needs better med management, preferably be able to toss on a mount and that would fix that issue, but it /keypress forward in MQ2Cast apparently (does anyone have a modified version that doesn't do that?)
Con: It doesn't read a corpse as dead, so if the MAIN ASSIST has a corpse targetted it will cast spells on it the entire time.
Con: The med routine will not med until the debuff agro time (30 seconds after you kill something) is gone.
Con: I've tried removing, adding and modifying this but I cannot get it to work correctly without an error.
Before I post this, let me make it clear, I did not make this macro and I have no idea who did, I've had it in my folder for 3-4 years.
Pros: Doesn't lag me out, best DPS macro I can find for a wizard PERIOD.
Con: It needs better med management, preferably be able to toss on a mount and that would fix that issue, but it /keypress forward in MQ2Cast apparently (does anyone have a modified version that doesn't do that?)
Con: It doesn't read a corpse as dead, so if the MAIN ASSIST has a corpse targetted it will cast spells on it the entire time.
Con: The med routine will not med until the debuff agro time (30 seconds after you kill something) is gone.
Con: I've tried removing, adding and modifying this but I cannot get it to work correctly without an error.
Rich (BB code):
#turbo 40
#include spell_routines.inc
Sub Main(string assist,int amount)
/declare Assist string outer ${If[${assist.Length},${assist},${Group.MainTank}]}
/declare AssistAt int outer ${If[${amount},${amount},98]}
/call Initialize
/echo ${Macro.Name} loaded.
/echo Assisting ${Assist} at ${AssistAt}
:mainloop
/doevents
/call Target
/if (${Me.CombatState.NotEqual[COMBAT]}) /call Rest
/if (${CombatConditions}) /call Combat
/goto :mainloop
/return
Sub Rest
/call Instant SelfBuff 1
/call Instant Harvest
/call Med
/return
Sub Combat
/call Once Freeze
/call Command Command
/call Instant AA
/call Instant Jolt
/call Instant Nuke
/call Once Snare
/return
Sub Initialize
|generic stuff
/declare i int local
/noparse /declare GoM string outer (${Me.Song[Gracious Mana].ID}||${Me.Song[Gift of Mana].ID}||${Me.Song[Gift of Radiant Mana].ID}||${Me.Song[Gift of Dreamlike Exquisite Radiant Mana].ID}||${Me.Song[Gift of Exquisite Radiant Mana].ID}||${Me.Song[Gift of Amazing Exquisite Radiant Mana].ID}||${Me.Song[Gift of Phantasmal Exquisite Radiant Mana].ID})
/noparse /declare Twincast string outer (${Me.Song[Twincast].ID}||${Me.Song[Twincast Rk. II].ID}||${Me.Song[Twincast Rk. III].ID}||${Me.Song[Improved Twincast].ID}||${Me.Buff[Twincast].ID}||${Me.Buff[Improved Twincast].ID})
/noparse /declare Named string outer (${Target.Named}||${Target.Name.Find[#]} && !${Target.Master.ID})
/noparse /declare CombatConditions string outer (${Target.ID}==${TarID} && ${Target.PctHPs}<=${AssistAt} && ${Target.LineOfSight} && !${Me.Feigning})
/noparse /declare DotsOn (${Me.GemTimer[${Me.Gem[${Dot1}]}]} && ${Me.GemTimer[${Me.Gem[${Dot2}]}]} && ${Me.GemTimer[${Me.Gem[${Dot3}]}]} && ${LastDot4}==${Target.ID} && ${LastDot5}==${Target.ID} && ${LastDot6}==${Target.ID})
/declare DefaultGem gem12
/declare MedAt int outer 30
/declare MedTimer timer outer 5s
/declare TarID int outer
/declare CurrentSub string outer
/declare ReAssist timer outer 1s
|##Stuff I want to use over and over will be next
|Nukes
/declare NukeColor string outer Red
/declare Nuke1 string outer Claw of the Flamewing
/declare Nuke2 string outer Ethereal Weave
/declare Nuke3 string outer Ethereal Incandescence
/declare Nuke4 string outer Gosik's Fire
/declare Nuke5 string outer Chaos Incandescence
/declare Nuke6 string outer Force of Ice
/declare Nuke7 string outer Force of Will
/declare Nuke8 string outer Force of Flame
/noparse /declare NukeConditions1 string outer (!${Twincast})
/noparse /declare NukeConditions2 string outer (${Twincast}||${Me.Song[Elemental Flames].ID}||${GoM})
/noparse /declare NukeConditions6 string outer (!${Me.SpellReady[${Me.Gem[1]}]} && !${Me.SpellReady[${Me.Gem[2]}]} && !${Me.SpellReady[${Me.Gem[3]}]})
/noparse /declare NukeConditions7 string outer (!${Me.SpellReady[${Me.Gem[1]}]} && !${Me.SpellReady[${Me.Gem[2]}]} && !${Me.SpellReady[${Me.Gem[3]}]})
/noparse /declare NukeConditions8 string outer (!${Me.SpellReady[${Me.Gem[1]}]} && !${Me.SpellReady[${Me.Gem[2]}]} && !${Me.SpellReady[${Me.Gem[3]}]})
|Jolts
/declare JoltColor string outer Teal
/declare Jolt1 string outer A Hole in Space
/declare Jolt2 string outer Concussive Intuition
/declare Jolt3 string outer Arcane Whisper
/declare Jolt4 string outer Mind Crash
/declare Jolt5 string outer Concussive Salvo Rk. II
/noparse /declare JoltConditions5 string outer (${Named} && ${Me.PctAggro}>85)
/noparse /declare JoltConditions1 string outer (${Me.PctHPs}<70||${Me.PctAggro}>90)
/noparse /declare JoltConditions2 string outer (${Me.PctAggro}>70)
/noparse /declare JoltConditions3 string outer (${Named} && !${Me.Song[Silent Casting].ID})
/noparse /declare JoltConditions4 string outer (${Named} && ${Me.PctAggro}>95)
|AA
/declare AAColor string outer Purple
/declare AA1 string outer Empowered Focus of Arcanum
/declare AA2 string outer Improved Twincast
/declare AA3 string outer Twincast
/declare AA4 string outer Frenzied Devestation
/declare AA5 string outer Lower Element
/declare AA6 string outer Latent Etheric Robe of the Frozen Flame
/declare AA7 string outer Fury of Ro
/declare AA8 string outer Fundament: Second Spire of Arcanum
/declare AA9 string outer Silent Casting
/noparse /declare AAConditions2 string outer (!${Twincast})
/noparse /declare AAConditions3 string outer (!${Twincast})
/noparse /declare AAConditions4 string outer (${Named})
/noparse /declare AAConditions5 string outer (${Named})
/noparse /declare AAConditions9 string outer (${Named})
|Harvest
/declare HarvestColor string outer Orange
/declare Harvest1 string outer Bucolic Harvest
/declare Harvest2 string outer Harvest of Druzzil
/declare Harvest3 string outer Summoned: Large Modulation Shard
/noparse /declare HarvestConditions1 string outer (!${Me.Invis} && ${Me.PctMana}<=65)
/noparse /declare HarvestConditions2 string outer (!${Me.Invis} && ${Me.PctMana}<=65)
/noparse /declare HarvestConditions3 string outer (!${Me.Invis} && ${Me.PctMana}<=65 && ${Me.CurrentHPs}>24000)
|Buffs
/declare BuffColor string outer White
/declare SelfBuff1 string outer
/declare SelfBuff2 string outer Improved Familiar
/noparse /declare SelfBuffConditions2 string outer (${Spell[Improved Familiar].Stacks})
|##stuff i want to use once per mob
|Freeze
/declare FreezeColor string outer Blue
/declare Freeze string outer Skullfreeze Rk. II
/declare LastFreeze int outer
/noparse /declare FreezeConditions string outer 1
|snare
/declare SnareColor string outer Green
/declare LastSnare int outer
/declare Snare string outer Atol's Unresistable Shackles
/noparse /declare SnareConditions string outer (${Target.PctHPs}<25 && ${Target.Fleeing})
|##ImHit event
/declare ImHit1 string outer A Hole in Space
/noparse /declare ImHitConditions1 string outer (${Me.PctHPs}<70)
/return
Sub Target
/if ((!${Target.ID} || ${Target.Type.Equal[PC]} || ${Target[${CurrentTarget}].Type.Equal[corpse]} || !${ReAssist}) && ${SpawnCount[${Assist} radius 300]}) {
/assist ${Assist}
/varset ReAssist ${ReAssist.OriginalValue}
}
/if (${Target.ID} && (${Target.Type.Equal[NPC]}||${Target[${CurrentTarget}].Type.Equal[corpse]}||${Target.Master.Type.Equal[NPC]}) && ${Target.ID}!=${TarID}) {
/varset TarID ${Target.ID}
}
/return
Sub Command(subname)
/varset CurrentSub ${subname}
/declare i int local
/for i 1 to 20
/if (!${Defined[${CurrentSub}${i}]}) /return
/if (${${CurrentSub}Conditions${i}}||!${Defined[${CurrentSub}Conditions${i}]}) {
/docommand ${${CurrentSub}${i}}
}
/next i
/return
Sub Group(subname,int force)
/varset CurrentSub ${subname}
/declare i int local
/declare x int local
/for x 1 to 20
/if (!${Defined[${CurrentSub}${x}]}) /return
/for i 0 to 5
/if (${${CurrentSub}${x}${Group.Member[${i}].ID}}||!${Group.Member[${i}].ID}) /goto :skip
/if (${${CurrentSub}Conditions${x}}||!${Defined[${CurrentSub}Conditions${x}]}) {
/if (${Spell[${${CurrentSub}${x}}].TargetType.NotEqual[self]}) /squelch /tar id ${Group.Member[${i}].ID}
/delay 1s ${Target.ID}==${Group.Member[${i}].ID}
/if (${FindItem[${${CurrentSub}${x}}].InvSlot} && !${FindItem[${${CurrentSub}${x}}].Timer}) {
/call Cast "${${CurrentSub}${x}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/if (!${Defined[${CurrentSub}${x}${Group.Member[${i}].ID}]}) /declare ${CurrentSub}${x}${Group.Member[${i}].ID} timer outer
/if (${Defined[${CurrentSub}Recast${x}]}) /varset ${CurrentSub}${x}${Group.Member[${i}].ID} ${${CurrentSub}Recast${x}}
}
}
/if (${Me.AltAbilityReady[${${CurrentSub}${x}}]}) {
/call Cast "${${CurrentSub}${x}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/if (!${Defined[${CurrentSub}${x}${Group.Member[${i}].ID}]}) /declare ${CurrentSub}${x}${Group.Member[${i}].ID} timer outer
/if (${Defined[${CurrentSub}Recast${x}]}) /varset ${CurrentSub}${x}${Group.Member[${i}].ID} ${${CurrentSub}Recast${x}}
}
}
/if (${Me.SpellReady[${${CurrentSub}${x}}]}||${Me.Book[${${CurrentSub}${x}}]} && ${force} && !${Me.AltAbility[${${CurrentSub}${x}}]}) {
/call Cast "${${CurrentSub}${x}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/if (!${Defined[${CurrentSub}${x}${Group.Member[${i}].ID}]}) /declare ${CurrentSub}${x}${Group.Member[${i}].ID} timer outer
/if (${Defined[${CurrentSub}Recast${x}]}) /varset ${CurrentSub}${x}${Group.Member[${i}].ID} ${${CurrentSub}Recast${x}}
}
}
}
:skip
/next i
/next x
/return
Sub Duration(subname,int force)
/varset CurrentSub ${subname}
/declare i int local
/for i 1 to 20
/if (!${Defined[${subname}${i}]}) /return
/if ((!${${CurrentSub}Recast${i}}||${Last${CurrentSub}${i}}!=${Target.ID}) && (${${subname}Conditions${i}}||!${Defined[${subname}Conditions${i}]})) {
/if (${FindItem[${${subname}${i}}].InvSlot} && !${FindItem[${${subname}${i}}].Timer}) {
/call Cast "${${CurrentSub}${i}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/varset Last${CurrentSub}${i} ${Target.ID}
/varset ${CurrentSub}Recast${i} ${${CurrentSub}Recast${i}.OriginalValue}
}
}
/if (${Me.AltAbilityReady[${${subname}${i}}]}) {
/call Cast "${${CurrentSub}${i}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/varset Last${CurrentSub}${i} ${Target.ID}
/varset ${CurrentSub}Recast${i} ${${CurrentSub}Recast${i}.OriginalValue}
}
}
/if (${Me.SpellReady[${${subname}${i}}]}||${Me.Book[${${subname}${i}}]} && ${force} && !${Me.AltAbility[${${subname}${i}}]}) {
/call Cast "${${CurrentSub}${i}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) {
/varset Last${CurrentSub}${i} ${Target.ID}
/varset ${CurrentSub}Recast${i} ${${CurrentSub}Recast${i}.OriginalValue}
}
}
}
/next i
/return
Sub Instant(subname,int force)
/varset CurrentSub ${subname}
/declare i int local
/for i 1 to 20
/if (!${Defined[${subname}${i}]}) /return
/if (${${subname}Conditions${i}}||!${Defined[${subname}Conditions${i}]}) {
/if (${FindItem[${${subname}${i}}].InvSlot} && !${FindItem[${${subname}${i}}].Timer}) /call Cast "${${subname}${i}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Me.AltAbilityReady[${${subname}${i}}]}) /call Cast "${${subname}${i}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
/if (${Me.SpellReady[${${subname}${i}}]}||${Me.Book[${${subname}${i}}]} && ${force} && !${Me.AltAbility[${${subname}${i}}]}) /call Cast "${${subname}${i}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
}
/next i
/return
Sub Once(subname,int force)
/if (${Last${subname}}==${Target.ID}) /return
/varset CurrentSub ${subname}
/if (!${Defined[${subname}]}) /return
/if (${${subname}Conditions}||!${Defined[${subname}Conditions]}) {
/if (${FindItem[${${subname}}].InvSlot} && !${FindItem[${${subname}}].Timer}) /call Cast "${${subname}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Me.AltAbilityReady[${${subname}}]}) /call Cast "${${subname}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Me.SpellReady[${${subname}}]}||${Me.Book[${${subname}${i}}]} && ${force} && !${Me.AltAbility[${${subname}${i}}]}) /call Cast "${${subname}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
/if (${Macro.Return.Equal[CAST_SUCCESS]}||${Macro.Return.Equal[CAST_NOTHOLD]}) /varset Last${CurrentSub} ${Target.ID}
}
/return
Sub CheckAggro
/if (${CurrentSub.Equal[Jolt]}||${Me.PctAggro}<1000) /return
/declare i int local
/for i 1 to 20
/if (!${Defined[Jolt${i}]}) /goto :skip
/if (${${subname}Conditions${i}}) {
/if (${FindItem[${Jolt${i}}].InvSlot} && !${FindItem[${Jolt${i}}].Timer}) {
/call Interrupt
/call Cast "${Jolt${i}}" item
}
/if (${Me.AltAbilityReady[${Jolt${i}}]}) {
/call Interrupt
/alt act ${Me.AltAbility[${Jolt${i}}].ID}
}
/if (${Me.SpellReady[${Jolt${i}}]}) {
/call Interrupt
/call Cast "${Jolt${i}}" ${DefaultGem} 5s CheckAggro
}
}
/next i
:skip
/return
Sub Med
/if (${Me.PctMana}<${MedAt} && !${MedTimer} && !${Me.Mount.ID} && ${Me.State.Equal[STAND]} && (${Me.CombatState.Equal[ACTIVE]}||${Me.CombatState.Equal[DEBUFFED]} && !${Debuff.Count})) {
/sit
/varset MedTimer ${MedTimer.OriginalValue}
}
/return
#event ImHit "#*# YOU for #*#"
#event ImHit "#*# YOU, but #*#"
Sub Event_ImHit
/declare i int local
/for i 1 to 20
/if (!${Defined[ImHit${i}]}) /return
/if (${ImHitConditions${i}}) {
/if (${FindItem[${ImHit${i}}].InvSlot} && !${FindItem[${ImHit${i}}].Timer}) /call Cast "${ImHit${i}}" item ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Me.AltAbilityReady[${ImHit${i}}]}) /call Cast "${ImHit${i}}" alt ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
/if (${Me.SpellReady[${ImHit${i}}]}) /call Cast "${ImHit${i}}" ${DefaultGem} ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]} CheckAggro
/if (${Me.CombatAbilityReady[${ImHit${i}}]}) /call Cast "${ImHit${i}}" disc ${If[${Defined[${CurrentSub}Color]},${${CurrentSub}Color},Orange]}
}
/next i
/return
Last edited:


