This simple macro is for a dedicated cleric to enter into a Cheal chain. It will cast Complete Heal on a designated tank and will delay between casts for however long you want. It can also med at a certain percentage of mana and will resume at a designated percentage.
You can set a new tank with
Simple /mac SimpleCheal TargetName/ID DelayTime %ManaToStop %ManaToResume
Usage:
You can set a new tank with
/newtank Name/ID
Simple /mac SimpleCheal TargetName/ID DelayTime %ManaToStop %ManaToResume
Usage:
INI:
/mac SimpleCheal ${Target.ID} 5 10 40
/mac SimpleCheal Smooshers 5 10 40
/mac SimpleCheal TanksID# OR Name Delay between casts in seconds %Mana to sit and med to 40 %Mana to Stop medding
/newtank ${Target.ID}
/newtank NewTankName
SimpleCheal:
|SimpleCheal by Lemons
|/mac SimpleCheal ${Target.ID} 5 10 40
|/mac SimpleCheal Smooshers 5 10 40
|/mac SimpleCheal TanksID# OR Name Delay between casts in seconds %Mana to sit and med to 40 %Mana to Stop medding
|/newtank ${Target.ID}
|/newtank NewTankName
#bind SwitchTanks /newtank
Sub Main(string TID, int DTime, int MPoint, int SMPoint)
/echo SimpleCheal by Lemons
/echo You need to have Complete Heal memorized
/echo Usage: /mac SimpleCheal $/{Target.ID} DelayBetweenCasts# %ManaToStartMed %ManaStopMedding
/echo It interrupts the spell if you are not yet in combat so you can start the chain before pulling
/echo /newtank Name/ID# to switch tank targets
/if (!${Int[${TID}]}) /varset TID ${Spawn[pc ${TID}].ID}
/declare TankID int outer ${Spawn[${TID}].ID}
/declare DelayTime int outer ${DTime}
/declare MedPoint int outer ${MPoint}
/declare CTimer timer outer ${Math.Calc[${DTime} + 10]}s
/declare StopMed int outer ${SMPoint}
/echo I'm chealing ${TID}, ${Spawn[${TID}].CleanName} with a delay of ${DTime}, stopping at %Mana ${MedPoint} and resuming after I med to ${StopMed}
:loop
/if (${Me.SpellReady[Complete Heal]} && !${Me.Casting.ID} && !${CTimer} && ${Me.PctMana} > ${MedPoint}) {
/cast "Complete Heal"
/echo Casting Complete Heal on ${Spawn[${TankID}].CleanName}
/varset CTimer ${CTimer.OriginalValue}
/delay 1s ${Me.Casting.ID}
/delay 2
/if (${Me.CombatState.NotEqual[COMBAT]} && ${Target.PctHPs} > 99) /interrupt
:WaitLoop
/if (${Me.Standing} && ${CTimer} && !${Me.Casting.ID}) {
/sit
/delay 1s ${Me.Sitting}
}
/if (${CTimer} && ${Spawn[${TankID}].Type.NotEqual[Corpse]}) /goto :WaitLoop
/if (${Spawn[${TankID}].Type.Equal[Corpse]}) {
/echo We let the tank die! Need a new target!
/beep
/beep
/delay 1s
}
}
:MedWait
/if (${Me.Standing} && !${Me.Casting.ID} && ${Me.PctMana} < 100) {
/sit
/delay 1s ${Me.Sitting}
}
/if (${Me.PctMana} < ${StopMed}) /goto :MedWait
/delay 1
/call CheckBind
/goto :loop
/return
Sub CheckBind
/return
Sub Bind_SwitchTanks(string TarID)
/if ((${TarID.Equal[NULL]} || ${TarID.Equal[0]} || ${TarID.Length} == 0) || ${Spawn[${Target.ID}].Type.Equal[NPC]}) {
/echo No valid ID. Not setting TankID. Keeping it as ${TankID}.
/return
}
/if ((${TarID.Equal[NULL]} || ${TarID.Equal[0]} || ${TarID.Length} == 0) && (${Spawn[${Target.ID}].Type.Equal[PC]})) /varset TarID ${Target.ID}
/varset TankID ${Spawn[${TarID}].ID}
/echo Switching tanks to ${TankID} which is ${Spawn[${TarID}].CleanName}
/return