- Joined
- Dec 21, 2016
- Messages
- 5
- Reaction score
- 0
- Points
- 1
Hello Everyone! I've been running a shaman quite a bit since coming back and threw together a little macro to help me be lazy. This is very much a work in progress still!
Features:
- Everything is configurable via the INI.
- Will use Slow AA or Slow Spell
- Will Heal the Group.
- Will Spam Group versions of heals if enabled.
- Will Dot.
- Will Nuke.
Features:
- Everything is configurable via the INI.
- Will use Slow AA or Slow Spell
- Will Heal the Group.
- Will Spam Group versions of heals if enabled.
- Will Dot.
- Will Nuke.
Code:
|------------------------------------------------------------|
| Shaman.mac
|
| Last Modified by: TheDroidUrLookingFor
|
|------------------------------------------------------------|
#turbo
|------------------------------------------------------------|
| Includes
|------------------------------------------------------------|
|#include advpath.inc
|#include advpath2.inc
#include spell_routines.inc
|#define CHATMETHOD "/if (${UseIRC}) /i say"
#define CHATMETHOD "/if (${UseEQBC}) /bc"
#define CHATMETHOD1 "/echo"
|------------------------------------------------------------|
| Events
|------------------------------------------------------------|
#Event BuffWornOff "Your #1# spell has worn off of #2#."
#Event SlowNow "<#1#> slow"
|------------------------------------------------------------|
| Main Rountine
|------------------------------------------------------------|
Sub Main
/call Declares
/popup ALL VARIABLES LOADED: Check Mq2 Window for Errors.
/if (${UseIRC}) /iconnect ${IRCServerAddr} ${IRCPort} ${IRCChannel} ${Me}
/if (${UseEQBC}) /bccmd connect ${EQBCServerAddr} ${EQBCPort} ${EQBCPassword}
/if (!${Target.ID}) {
CHATMETHOD1 [SB]: Target your Master when you run this macro. [SB]
CHATMETHOD1 [SB]: No assist set. [SB]
CHATMETHOD1 [SB]: Shutting down [SB]
/end
} else {
/if (${Target.Type.Equal[PC]}) {
/varset M_Assist ${Target}
/varset M_Assist_ID ${Target.ID}
} else {
/if (${Target.Type.Equal[NPC]}) {
CHATMETHOD1 [SB]: Target your Master when you run this macro not an NPC. [SB]
CHATMETHOD1 [SB]: No assist set. [SB]
CHATMETHOD1 [SB]: Shutting down [SB]
/end
}
}
}
CHATMETHOD1 [SB]+ Initialized +[SB]
CHATMETHOD1 [SB]+ Zone type (${Zone.Type}) :: Horse Item (${HorseItem}) +[SB]
CHATMETHOD [SB]++ SHAMAN SCRIPT STARTED ++[SB]
CHATMETHOD [SB]++ Master is (${M_Assist}) ++[SB]
| --- MAIN LOOP ---|
:MainLoop
/doevents
/call Checks
/if (${Assist}) /call Assist
/call Follow
/delay 1s
/goto :MainLoop
| --- MAIN STOP ---|
/return
|------------------------------------------------------------|
| End Main Rountine
|------------------------------------------------------------|
|------------------------------------------------------------|
| Other Rountines
|------------------------------------------------------------|
Sub Checks
/call MountCheck
/call HPCheck
/call MPCheck
/if (${DoHealGroup}) /call GroupHeals
/if (${DoGroupHeals}) /call HealSpam
/if (${DoPet}) /call PetCheck
/if (${DoPet}) /call PetHPCheck
/if (${DoPet}) /call PetBuffCheck
/return
Sub Declares
/Declare botversion outer "1.0"
/if (${Ini[ShamanBot.${Me}.Settings.ini,General,Version].NotEqual[${botversion}]}) /call MakeDefaultIni
/if (!${Ini[ShamanBot.${Me}.Settings.ini,General,Version].Length}) /call MakeDefaultIni
/if (${Ini[ShamanBot.${Me}.Settings.ini,General,RemakeINI]}) /call MakeDefaultIni
|-----------SPELLS------------------------------------------|
/Declare DoSlowSpell string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoSlowSpell]}
/Declare DoSlowAA string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoSlowAA]}
/Declare Slow string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,SlowSpell]}
/Declare SlowAA string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,SlowAA]}
/Declare SlowAAEffectName string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,SlowAAEffectName]}
/Declare DoMalo string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoMalo]}
/Declare Malo string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,Malo]}
/Declare CanniSpell string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,CanniSpell]}
/Declare CanniAA string outer ${Ini[ShamanBot.${Me}.Settings.ini,OtherSpells,CanniAA]}
/Declare HealHoT string outer ${Ini[ShamanBot.${Me}.Settings.ini,HealSpells,HealHoT]}
/Declare HealFast string outer ${Ini[ShamanBot.${Me}.Settings.ini,HealSpells,HealFast]}
/Declare GroupHealHoT string outer ${Ini[ShamanBot.${Me}.Settings.ini,HealSpells,GroupHealHoT]}
/Declare GroupHealFast string outer ${Ini[ShamanBot.${Me}.Settings.ini,HealSpells,GroupHealFast]}
/Declare DotOne string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,DotOne]}
/Declare DotTwo string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,DotTwo]}
/Declare DotThree string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,DotThree]}
/Declare DotFour string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,DotFour]}
/Declare DotFive string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,DotFive]}
/Declare NukeOne string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,NukeOne]}
/Declare NukeTwo string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,NukeTwo]}
/Declare NukeThree string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,NukeThree]}
/Declare NukeFour string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,NukeFour]}
/Declare NukeFive string outer ${Ini[ShamanBot.${Me}.Settings.ini,DamageSpells,NukeFive]}
/Declare DoPet string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoPet]}
/Declare PetSummon string outer ${Ini[ShamanBot.${Me}.Settings.ini,PetSpells,PetSummon]}
/Declare PetHaste string outer ${Ini[ShamanBot.${Me}.Settings.ini,PetSpells,PetHaste]}
|-----------Items--------------------------------------------------|
/declare HorseItem string outer ${Ini[ShamanBot.${Me}.Settings.ini,Items,Horse]}
/declare UseHorse string outer ${Ini[ShamanBot.${Me}.Settings.ini,Items,UseHorse]}
|-----------IRC---------------------------------------------|
/Declare UseIRC string outer ${Ini[ShamanBot.${Me}.Settings.ini,IRC,UseIRC]}
/Declare IRCServerAddr string outer ${Ini[ShamanBot.${Me}.Settings.ini,IRC,Address]}
/Declare IRCPort string outer ${Ini[ShamanBot.${Me}.Settings.ini,IRC,Port]}
/Declare IRCChannel string outer ${Ini[ShamanBot.${Me}.Settings.ini,IRC,Channel]}
|-----------EQBC--------------------------------------------|
/Declare UseEQBC string outer ${Ini[ShamanBot.${Me}.Settings.ini,EQBC,UseEQBC]}
/Declare EQBCServerAddr string outer ${Ini[ShamanBot.${Me}.Settings.ini,EQBC,EQBCServerAddr]}
/Declare EQBCPort string outer ${Ini[ShamanBot.${Me}.Settings.ini,EQBC,EQBCPort]}
/Declare EQBCPassword string outer ${Ini[ShamanBot.${Me}.Settings.ini,EQBC,EQBCPassword]}
|-----------Other---------------------------------------------|
/declare AssistAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,AssistAt]}
/declare SlowAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,SlowAt]}
/declare MaloAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,MaloAt]}
/declare CanniAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,CanniAt]}
/Declare Assist string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,Assist]}
/Declare Follow string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,Follow]}
/Declare Rebuff string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,Rebuff]}
/Declare RemakeINI string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,RemakeINI]}
/declare DotAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,DotAt]}
/declare NukeAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,NukeAt]}
/declare HealAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,HealAt]}
/declare HotAt string outer ${Ini[ShamanBot.${Me}.Settings.ini,Percent,HotAt]}
/declare DoNuke string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoNuke]}
/declare DoDot string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoDot]}
/declare DoMeleeAssist string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoMeleeAssist]}
/declare DoHotHeal string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoHotHeal]}
/declare DoFastHeal string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoFastHeal]}
/declare DoGroupHeals string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoGroupHeals]}
/declare DoHealGroup string outer ${Ini[ShamanBot.${Me}.Settings.ini,General,DoHealGroup]}
/declare HoTTimer timer outer 0
/declare GHoTTimer timer outer 0
/declare GHealTimer timer outer 0
/declare DurationMod int outer 2.5
/declare M_Assist string outer
/declare M_Assist_ID string outer
/return
Sub MakeDefaultIni
/call SetIni General Version ${botversion}
/call SetIni General RemakeINI FALSE
/call SetIni General Follow FALSE
/call SetIni General Assist TRUE
/call SetIni General Rebuff TRUE
/call SetIni General DoDot TRUE
/call SetIni General DoNuke TRUE
/call SetIni General DoMeleeAssist FALSE
/call SetIni General DoSlowSpell FALSE
/call SetIni General DoSlowAA TRUE
/call SetIni General DoMalo FALSE
/call SetIni General DoPet FALSE
/call SetIni General DoHealGroup TRUE
/call SetIni General DoFastHeal TRUE
/call SetIni General DoHotHeal TRUE
/call SetIni General DoGroupHeals TRUE
/call SetIni Percent HealAt 90
/call SetIni Percent HotAt 95
/call SetIni Percent DotAt 97
/call SetIni Percent NukeAt 90
/call SetIni Percent AssistAt 98
/call SetIni Percent SlowAt 98
/call SetIni Percent MaloAt 98
/call SetIni Percent CanniAt 60
/call SetIni HealSpells HealHoT "Halcyon Bluster Rk. II"
/call SetIni HealSpells HealFast "Krasir's Mending Rk. II"
/call SetIni HealSpells GroupHealHoT "Shear of Renewal"
/call SetIni HealSpells GroupHealFast "Krasir's Recourse Rk. II"
/call SetIni DamageSpells NukeOne "Reefmaw's Bite"
/call SetIni DamageSpells NukeTwo "Serisaria's Spear of Venom Rk. II"
/call SetIni DamageSpells NukeThree ""
/call SetIni DamageSpells NukeFour ""
/call SetIni DamageSpells NukeFive ""
/call SetIni DamageSpells DotOne "Sraskus' Curse"
/call SetIni DamageSpells DotTwo "Serpentil's Venom Rk. II"
/call SetIni DamageSpells DotThree "Reef Crawler Blood"
/call SetIni DamageSpells DotFour "Nectar of Woe"
/call SetIni DamageSpells DotFive "Livio's Malosenia Rk. II"
/call SetIni OtherSpells SlowSpell "Turgur's Insects"
/call SetIni OtherSpells SlowAA "Turgur's Swarm"
/call SetIni OtherSpells SlowAAEffectName "Turgur's Swarm VI"
/call SetIni OtherSpells Malo "Malosenia"
/call SetIni OtherSpells CanniSpell "Tribal Pact Rk. II"
/call SetIni OtherSpells CanniAA "Cannibalization"
/call SetIni PetSpells PetSummon "Olesira's Faithful"
/call SetIni PetSpells PetHaste "Spirit Quickening"
/call SetIni Items UseHorse TRUE
/call SetIni Items Horse "Jungle Raptor Saddle"
/call SetIni IRC UseIRC FALSE
/call SetIni IRC Address "192.168.1.251"
/call SetIni IRC Port "6667"
/call SetIni IRC Channel "#Bot"
/call SetIni EQBC UseEQBC TRUE
/call SetIni EQBC EQBCServerAddr "192.168.1.251"
/call SetIni EQBC EQBCPort "2112"
/call SetIni EQBC EQBCPassword ""
CHATMETHOD1 [SB]++ Please Edit your INI file now! It is in your Macro's folder named "ShamanBot.${Me}.Settings.ini"!!!! ++[SB]
/end
/return
Sub SetIni(string section, string option, string value)
/ini "ShamanBot.${Me}.Settings.ini" "${section}" "${option}" "${value}"
/return
Sub MountCheck
/if (!${Me.Mount.ID} && ${UseHorse} && ${Zone.Type}==1) /call cast "${HorseItem}" item
/if (!${Me.Mount.ID} && ${UseHorse} && ${Zone.Type}!=1 && !${Me.Sitting} && !${Me.Combat}) /sit
/return
Sub HPCheck
/if (${Me.PctHPs}<=${HealAt}) {
/target myself
/delay 1s ${Me.ID}==${Target.ID}
/call cast "${HealFast}" gem2
}
/return
Sub MPCheck
/if (${Me.SpellReady[${CanniSpell}]} && ${Me.PctMana}<=${CanniAt} && ${Me.PctHPs}>=${HealAt}) /call Cast "${CanniSpell}" gem3
/if (${Me.AltAbilityReady[${CanniAA}]} && ${Me.PctMana}<=${CanniAt} && ${Me.PctHPs}>=${HealAt}) /aa act ${CanniAA}
/return
Sub PetCheck
:MakePet_Loop
/if (!${Me.Pet.ID}) {
CHATMETHOD1 Summoning your pet with spell: ${PetSummon}
/call Cast "${PetSummon}" gem12
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :MakePet_Loop
/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :MakePet_Loop
}
/return
Sub PetHPCheck
/if (${Me.Pet.ID}) {
:PetHeal_Loop
/if (${Me.Pet.PctHPs}<${PetHealAt}) {
CHATMETHOD1 Healing your pet with spell: ${Heal}
/call Cast "${Heal}" gem1
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :PetHeal_Loop
/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :PetHeal_Loop
}
}
/return
Sub PetBuffCheck
:PetBuff
/if (${Me.Pet.ID} && !${Me.PetBuff[${PetHaste}]}) {
/target ${Me.Pet}
CHATMETHOD1 Pet needed "${PetHaste}"
/call cast "${PetHaste}" gem10 15s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :PetBuff
/if (!${Macro.Return.Equal["CAST_SUCCESS"]}) /goto :PetBuff
}
/return
Sub Follow
/if (${Follow} && !${Me.Sitting} && ${Stick.Status.Equal[OFF]}) {
/target ${M_Assist} pc
/delay 5
/squelch /stick hold
}
/return
Sub Assist
/assist group
/delay 1s ${Target.ID}
/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs}<${AssistAt}) /call NukeAssist
/return
Sub NukeAssist
/if (${DoMeleeAssist}) {
/if (!${Me.Combat} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= 20 && ${Target.PctHPs} <= ${AssistAt}) /attack on
/if (${Stick.Status.Equal[OFF]} && ${Me.Combat} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= 40) /stick hold 15
}
/if (${DoSlowSpell} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${SlowAt} && ${Target.Distance} <= ${Spell[${Slow}].MyRange} && !${Target.Buff[${Slow}].Name.Equal[${Slow}]}) /call Slow "${Slow}"
/if (${DoSlowAA} && ${Me.AltAbilityReady[${SlowAA}]} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${SlowAt} && !${Target.Buff[${SlowAAEffectName}].Name.Equal[${SlowAAEffectName}]}) /aa act ${SlowAA}
/if (${DoMalo} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${MaloAt} && ${Target.Distance} <= ${Spell[${Malo}].MyRange} && !${Target.Buff[${Malo}].Name.Equal[${Malo}]}) /call Malo "${Malo}"
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${DotAt} && ${Target.Distance} <= ${Spell[${DotOne}].MyRange} && !${Target.Buff[${DotOne}].Name.Equal[${DotOne}]}) /call Dot "${DotOne}"
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${DotAt} && ${Target.Distance} <= ${Spell[${DotTwo}].MyRange} && !${Target.Buff[${DotTwo}].Name.Equal[${DotTwo}]}) /call Dot "${DotTwo}"
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${DotAt} && ${Target.Distance} <= ${Spell[${DotThree}].MyRange} && !${Target.Buff[${DotThree}].Name.Equal[${DotThree}]}) /call Dot "${DotThree}"
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${DotAt} && ${Target.Distance} <= ${Spell[${DotFour}].MyRange} && !${Target.Buff[${DotFour}].Name.Equal[${DotFour}]}) /call Dot "${DotFour}"
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${DotAt} && ${Target.Distance} <= ${Spell[${DotFive}].MyRange} && !${Target.Buff[${DotFive}].Name.Equal[${DotFive}]}) /call Dot "${DotFive}"
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${NukeAt} && ${Target.Distance} <= ${Spell[${NukeOne}].MyRange}) /call Nuke "${NukeOne}"
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${NukeAt} && ${Target.Distance} <= ${Spell[${NukeTwo}].MyRange}) /call Nuke "${NukeTwo}"
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${NukeAt} && ${Target.Distance} <= ${Spell[${NukeThree}].MyRange}) /call Nuke "${NukeThree}"
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${NukeAt} && ${Target.Distance} <= ${Spell[${NukeFour}].MyRange}) /call Nuke "${NukeFour}"
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.PctHPs} <= ${NukeAt} && ${Target.Distance} <= ${Spell[${NukeFive}].MyRange}) /call Nuke "${NukeFive}"
/return
Sub GroupHeals
/declare i int local 1
/for i 1 to ${Group}
/if (${Group.Member[${i}].PctHPs}<=${HealAt} && ${Spawn[${Group.Member[${i}]}].Type.Equal[PC]} && ${Target.Distance}<=${Spell[${HealFast}].MyRange}) {
/target pc ${Group.Member[${i}]}
/delay 10s ${Target.ID}==${Group.Member[${i}].ID} && ${Target.BuffsPopulated}==TRUE
/if (${DoHotHeal} && ${Group.Member[${i}].PctHPs}<=${HotAt} && ${Target.Distance} <= ${Spell[${HealHoT}].MyRange} && ${Me.SpellReady[${HealHoT}]} && ${HoTTimer}==0) /call Hot "${HealHoT}"
/if (${DoFastHeal} && ${Group.Member[${i}].PctHPs}<=${HealAt} && ${Target.Distance} <= ${Spell[${HealFast}].MyRange} && ${Me.SpellReady[${HealFast}]}) /call Heal "${HealFast}"
}
}
/next i
/return
Sub HealSpam
/declare i int local 1
/for i 1 to ${Group}
/if (${Group.Member[${i}].PctHPs}<=${HealAt} && ${Spawn[${Group.Member[${i}]}].Type.Equal[PC]} && ${Target.Distance}<=${Spell[${GroupHealFast}].MyRange}) {
/target pc ${Group.Member[${i}]}
/delay 10s ${Target.ID}==${Group.Member[${i}].ID} && ${Target.BuffsPopulated}==TRUE
/if (${DoHotHeal} && ${Group.Member[${i}].PctHPs}<=${HotAt} && ${Target.Distance} <= ${Spell[${GroupHealHoT}].MyRange} && ${Me.SpellReady[${GroupHealHoT}]} && ${GHoTTimer}==0) /call GroupHot "${GroupHealHoT}"
/if (${DoFastHeal} && ${Group.Member[${i}].PctHPs}<=${HealAt} && ${Target.Distance} <= ${Spell[${GroupHealFast}].MyRange} && ${Me.SpellReady[${GroupHealFast}]} && ${GHealTimer}==0) /call GroupHeal "${GroupHealFast}"
}
}
/next i
/return
Sub Dot(string DotToCast)
:Dot_Loop
/if (${DoDot} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= ${Spell[${DotToCast}].MyRange} && ${Me.SpellReady[${DotToCast}]} && !${Target.Buff[${DotToCast}].Name.Equal[${DotToCast}]}) {
/if (!${Me.Pet.Combat} && ${Me.Pet.ID}) /pet attack
/call cast "${DotToCast}" gem1
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Dot_Loop
}
/return
Sub Malo(string MaloToCast)
:Malo_Loop
/if (${DoMalo} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= ${Spell[${MaloToCast}].MyRange} && ${Me.SpellReady[${MaloToCast}]} && !${Target.Buff[${MaloToCast}].Name.Equal[${MaloToCast}]}) {
/if (!${Me.Pet.Combat} && ${Me.Pet.ID}) /pet attack
/call cast "${MaloToCast}" gem4
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Malo_Loop
}
/return
Sub Slow(string SlowToCast)
:Slow_Loop
/if (${DoSlowSpell} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= ${Spell[${SlowToCast}].MyRange} && ${Me.SpellReady[${SlowToCast}]} && !${Target.Buff[${SlowToCast}].Name.Equal[${SlowToCast}]}) {
/if (!${Me.Pet.Combat} && ${Me.Pet.ID}) /pet attack
/call cast "${SlowToCast}" gem5
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Slow_Loop
}
/return
Sub Nuke(string NukeToCast)
:Nuke_Loop
/if (${DoNuke} && ${Target.Type.Equal[NPC]} && ${Target.Distance} <= ${Spell[${NukeToCast}].MyRange} && ${Me.SpellReady[${NukeToCast}]}) {
/if (!${Me.Pet.Combat} && ${Me.Pet.ID}) /pet attack
/call cast "${NukeToCast}" gem6
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Nuke_Loop
}
/return
Sub Hot(string HotToCast)
:Hot_Loop
/if (${DoHotHeal} && ${Target.Distance} <= ${Spell[${HotToCast}].MyRange} && ${Me.SpellReady[${HotToCast}]} && ${HoTTimer}==0) {
CHATMETHOD Casting -- ${HotToCast} -- ${Target}(${Target.PctHPs})
/call cast "${HotToCast}" gem2
/delay 1s !${Me.Casting.ID}
/varcalc HoTTimer ${Spell[${HotToCast}].Duration.TotalSeconds}*${DurationMod}*10
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Hot_Loop
}
/return
Sub Heal(string HealToCast)
:Heal_Loop
/if (${DoFastHeal} && ${Target.Distance} <= ${Spell[${HealToCast}].MyRange} && ${Me.SpellReady[${HealToCast}]}) {
CHATMETHOD Casting -- ${HealToCast} -- ${Target}(${Target.PctHPs})
/call cast "${HealToCast}" gem1
/delay 1s !${Me.Casting.ID}
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Heal_Loop
}
/return
Sub GroupHot(string HotToCast)
:Hot_Loop
/if (${DoHotHeal} && ${Target.Distance} <= ${Spell[${HotToCast}].MyRange} && ${Me.SpellReady[${HotToCast}]} && ${GHoTTimer}==0) {
CHATMETHOD Casting -- ${HotToCast} -- ${Target}(${Target.PctHPs})
/call cast "${HotToCast}" gem2
/delay 1s !${Me.Casting.ID}
/varcalc GHoTTimer ${Spell[${HotToCast}].Duration.TotalSeconds}*${DurationMod}*10
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Hot_Loop
}
/return
Sub GroupHeal(string HealToCast)
:Heal_Loop
/if (${DoHotHeal} && ${Target.Distance} <= ${Spell[${HealToCast}].MyRange} && ${Me.SpellReady[${HealToCast}]} && ${GHealTimer}==0) {
CHATMETHOD Casting -- ${HealToCast} -- ${Target}(${Target.PctHPs})
/call cast "${HealToCast}" gem2
/delay 1s !${Me.Casting.ID}
/varcalc GHealTimer ${Spell[${HealToCast}].Duration.TotalSeconds}*${DurationMod}*10
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Heal_Loop
}
/return
|------------------------------------------------------------|
| End Other Rountines
|------------------------------------------------------------|
|------------------------------------------------------------|
| Events
|------------------------------------------------------------|
Sub Event_BuffWornOff(Line, string SpellWornOff, string ChatSender)
/if (${Rebuff}) {
:Buff_Request
/if (${ChatSender.Equal[${M_Assist}]}) {
/target ${ChatSender}
/delay 1s ${Target.ID}
/call Cast "${SpellWornOff}" gem6 12s
/if (${Macro.Return.Equal["CAST_INTERRUPTED"]}) /goto :Buff_Request
/if (${Macro.Return.Equal["CAST_NOTARGET"]}) /return
}
}
/return
Sub Event_SlowNow(Line, string ChatSender)
/return
|------------------------------------------------------------|
| End Events
|------------------------------------------------------------|