#Event SetTank "#1# tells you, 'settank #2# #3#'"
|################################################
Sub Main
| Define your MainTank... this is changeable while the macro is running by having new main tank /tell you: secretphrase (see below)
/declare MainTank string outer krimrol
/declare SecretPhrase string outer maintank
| Define your Spells...
/declare Spell_LYNX string outer "Talisman of the Lynx"
/declare Spell_CHAMPION string outer "Champion"
/declare Spell_HASTE string outer "Talisman of Celerity"
/declare Spell_UNITY string outer "Talisman of Unity Rk. II"
/declare Spell_CANNI string outer "Ancestral Obligation"
/declare Spell_HOT string outer "Halcyon Whisper"
/declare Spell_PATCH string outer "Dannal's Mending"
/declare AA_SLOW string outer "Turgur's Swarm"
| Define what % mana you feel you should canni.
/declare MinMana int outer 90
| Define if you want to HoT (heal over time) or not. Also define what % health you want to HoT the MT.
/declare DoHOT bool outer FALSE
/declare DoHOTPercent int outer 85
| Define if you want to PATCH heal or not. Also define what % health you want to heal the MT.
/declare DoPATCH bool outer TRUE
/declare DoPATCHPercent int outer 70
| Define if you want to auto-slow mobs or not. Also define what % health you want to slow the mob.
/declare DoAASLOW bool outer TRUE
/declare DoAASLOWPercent int outer 97
|
| Don't need to edit below this line!
|
| Lets see if a MT was passed as an argument to the macro.
/if (${Defined[Param0]}) {
| We have a MT passed, lets use that instead of our default!
/varset MainTank ${Param0}
}
/echo Loaded Short Duration Buffs v1.0 by memset
/echo MAIN TANK: ${MainTank}
/echo CANNI AT %: ${MinMana}% Mana
/if (${DoHOT}) {
/echo HOT AT %: ${DoHOTPercent}%
}
/if (${DoPATCH}) {
/echo PATCH AT %: ${DoPATCHPercent}%
}
| Check if MQ2Cast plugin is loaded, if it isn't... load it automatically. Thanks VillageIdiot & Unity!
/if (!${Plugin[MQ2Cast].Name.Equal[mq2cast]}) /squelch /plugin MQ2Cast nocheck
|################################################
| START OF LOOP
:start
/doevents
/call GMCheck
|################################################
| Target our MT.
/target pc ${MainTank}
/delay 1s
|################################################
| Make sure we have a target before continuing.
/if (!${Target.ID}) {
/goto :start
}
|################################################
| Next, make sure we aren't invisible... if we ARE, don't cast anything.
/if (${Me.Invis}) {
/goto :start
}
|################################################
| Also, if we are MOVING... we don't need to cast anything. Will be pointless.
/if (${Me.Moving}) {
/goto :start
}
|################################################
| Finally, see if we're casting or not. This was added LATER... so it's slightly redundant below. Clean up later.
| /if (${Me.Casting.ID}) /goto :start
|################################################
| Lets first make sure we don't need to heal the MT.
| Do we need to PATCH heal the MT?
/if (${Target.PctHPs} <= ${DoPATCHPercent} && ${DoPATCH}) {
| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_PATCH}]} && ${Target.Distance} < 100) {
/echo Healing ${MainTank} with ${Spell_PATCH}!
/casting ${Spell_PATCH}
/delay 2.5
}
}
| Do we need to HoT the MT?
/if (${Target.PctHPs} <= ${DoHOTPercent} && ${DoHOT}) {
| It seems so. Better heal! Is the spell ready? Make sure we're not casting already...
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HOT}]} && ${Target.Distance} < 100 && !${Target.Buff[${Spell_HOT}].Duration}) {
/echo Healing ${MainTank} with ${Spell_HOT}!
/casting ${Spell_HOT}
/delay 2.5
}
}
| There's a possibility that the shaman running this macro could be in need of a heal from canni... check now!
/if (${Me.PctHPs} <= 80) {
/target ${Me.CleanName}
/delay 1s
/casting ${Spell_PATCH}
/delay 2.5
/target pc ${MainTank}
/delay 1s
}
|################################################
| Lets see if the mob is malo'd... if not, and we're supposed to, then malo it.
/if (${DoAAMalo} && ${Me.AltAbilityReady[${AA_Malo}]}) {
| Yes... see if mob is malo'd already.
/assist ${MainTank}
/delay 1s
/if (${Target.Buff[${AA_Malo}].Duration.Ticks} < 1 && ${Target.Type.Equal[NPC]} && ${Target.Distance} < 100 && ${Target.PctHPs} <= ${DoAASLOWPercent}) {
| Ok... malo the mob!
/echo Malo'ing ${Target.CleanName} with ${AA_Malo}
/aa act Malosinete
/delay 4s
}
}
|################################################
| Now lets check if we need to slow a mob!
/if (${DoAASLOW}) {
| Ok, we need to slow....maybe. Assist MT, check if it has been slowed already with our spell. Also verify it's an NPC.
/assist ${MainTank}
/delay 1s
/if (${Target.Type.Equal[NPC]}) {
| Verified this IS an NPC.
| Check HP's... and if we've slowed already or not.
/if (${Target.PctHPs} <= ${DoAASLOWPercent} && !${Target.BuffDuration[${AA_SLOW}]} && !${Me.Casting.ID} && ${Target.Distance} < 100 && ${Me.SpellReady[${AA_SLOW}]}) {
| HP's match and the mob isn't slow and I'm not casting... AND it's within range. lets slow this mob.
/echo Slowing ${Target.CleanName} with ${AA_SLOW}!
/casting ${AA_SLOW}
/delay 1.5s
/target pc ${MainTank}
/delay 1s
}
}
/target pc ${MainTank}
/delay 1s
}
|################################################
| Check if we need to rebuff LANGUOR:
/if (${Target.BuffDuration[${Spell_LANGUOR}]} < 15 && ${Target.Distance}<100) {
| Am I currently casting a spell? And is the spell ready?
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LANGUOR}]}) {
| Good to go! Cast!
| /casting uses plugin mq2cast.
/echo Casting ${Spell_LANGUOR} on ${Target.CleanName}!
/casting ${Spell_LANGUOR}
/delay 2s
}
}
|################################################
| Check if we need to rebuff CHAMPION:
/if (${Target.BuffDuration[${Spell_CHAMPION}]} < 15 && ${Target.Distance}<100) {
| Am I currently casting a spell? And is the spell ready?
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_CHAMPION}]}) {
| Good to go! Cast!
| /casting uses plugin mq2cast.
/echo Casting ${Spell_CHAMPION} on ${Target.CleanName}!
/casting ${Spell_CHAMPION}
/delay 2s
}
}
|################################################
| Check if we need to rebuff LYNX:
/if (!${Target.BuffDuration[${Spell_LYNX}]} && ${Target.Distance} < 50) {
| Am I currently casting a spell? And is the spell ready?
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_LYNX}]}) {
| Before we cast, lets make it so it only casts if MT has a mob targeted and the mob is closeby..
/assist ${MainTank}
/delay 1s
/if (${Target.Distance} < 100 && ${Target.CleanName.NotEqual[${MainTank}]}) {
| Good to go! Cast!
/target pc ${MainTank}
/delay 1s
/echo Casting ${Spell_LYNX} on ${Target.CleanName}!
/casting ${Spell_LYNX}
/delay 4s
}
}
}
|################################################
| Check if we need to CLICK EPIC:
/if (${FindItem[${ITEM_Epic}].Timer} == 0) {
| Epic clicky is ready... do we need to click it?
/assist ${MainTank}
/delay 8
/if (${Target.Distance} < 100 && ${Target.Type.Equal[NPC]}) {
| Yep. Lets click it!
/casting ${ITEM_Epic}
/delay 1s
}
}
|################################################
| Check if we need to rebuff HASTE:
/if (!${Target.BuffDuration[${Spell_HASTE}]} && ${Target.Distance}<100) {
| Am I currently casting a spell? And is the spell ready?
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_HASTE}]}) {
| Good to go! Cast!
| /casting uses plugin mq2cast.
/echo Casting ${Spell_HASTE} on ${Target.CleanName}!
/casting ${Spell_HASTE}
/delay 4s
}
}
|################################################
| Check if we need to rebuff UNITY:
/if (${Target.BuffDuration[${Spell_UNITY}]} <= 15 && ${Target.Distance}<100) {
| Am I currently casting a spell? And is the spell ready?
/if (!${Me.Casting.ID} && ${Me.SpellReady[${Spell_UNITY}]}) {
| Good to go! Cast!
| /casting uses plugin mq2cast.
/echo Casting ${Spell_UNITY} on ${Target.CleanName}!
/casting ${Spell_UNITY}
/delay 2s
}
}
|################################################
| Check if we need to cannibilize:
/if (${Me.PctMana} <= ${MinMana} && ${Me.SpellReady[${Spell_CANNI}]}) {
| Less than or equal to minimum percent of mana... lets canni.
/echo Casting ${Spell_CANNI}!
/casting ${Spell_CANNI}
/delay 1s
}
/delay 1s
/goto :start
/return
|################################################
Sub Event_SetTank(line, sender, new_tank, secretphrase)
/if (${secretphrase.Equal[${SecretPhrase}]}) {
/echo ${sender} sent secret phrase, setting ${new_tank} as tank!
/varset MainTank ${new_tank}
/target pc ${MainTank}
/delay 1s
}
/return
|################################################
Sub GMCheck
/if (${Spawn[gm].ID}) {
/beep
/beep
/beep
/echo GM has entered the zone!
/echo FUCK HIM but ending the macro...
/keypress forward
/keypress back
/quit
/endmacro
}