Moderator: MacroQuest Developers

Code: Select all
#include spell_routines.inc
#event HitMe "#*# YOU for #*# points of damage."
Sub Event_HitMe
/varset SitTimer 100
/varset NukeTimer 100
/return
Sub Main
/if (!${Target.ID} || ${Target.Type.NotEqual[pc]}) {
/echo Target the player you want to assist before starting the macro.
/beep
/endm
}
/declare NukeWait int outer 50
/declare NukeTimer timer outer
/declare NukeSpell string outer lightning shock
/declare MainAssist string outer ${Target.CleanName}
/declare AssistTimer timer outer
/declare SitTimer timer outer
/declare AssistRadius int outer 100
:endlessloop
/doevents
/if (!${Target.ID} || ${Target.Type.NotEqual[npc]} || ${Target.Distance}>100) {
/if (${Spawn[pc ${MainAssist}].Distance}<${AssistRadius} && ${SpawnCount[npc radius ${AssistRadius}]} && !${AssistTimer} && ${Spawn[pc ${MainAssist}].LineOfSight}) {
/echo /assist ${MainAssist}
/assist ${MainAssist}
/varset AssistTimer ${Math.Calc[40+${Math.Rand[40]}]}
}
} else {
/if (${Me.PctMana}>65 && !${NukeTimer} && !${Me.Stunned} && !${Me.Casting.ID} && ${Target.PctHPs}>15 && ${Target.PctHPs}<95 && ${Target.LineOfSight}) {
/if (!${Me.Standing}) /stand
/call Cast "${NukeSpell}" gem5
/if (${Macro.Return.Equal[CAST_SUCCESS]} || ${Macro.Return.Equal[CAST_RESISTED]}) {
/varset NukeTimer ${NukeWait}
/varset SitTimer ${Math.Calc[${NukeWait}+20]}
}
}
}
/if (!${Me.Casting.ID} && !${SitTimer} && !${Me.Sitting} && ${Me.PctMana}<97) {
/sit
} else {
/if (!${Me.Standing} && ${Me.PctMana}>=99) /stand
}
/goto :endlessloop
/return