• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->
  • EverQuest's 31st expansion The Outer Brood goes live Dec 3rd. brainiac is spending extra time updating MacroQuest. Please show him your appreciation.
Resource icon

Combat Assist Very Basic Group Healing Macro

Server Type
🏘️ Emu
Rich (BB code):
#chat tell 
#chat group 
#turbo 40
 
#event Follow "#1# tells you, 'Follow'"
#event Stay "#1# tells you, 'Stay'"
#event ZoneType "You can only cast this spell in the outdoors."
#event ACbuff "#1# tells you, 'ACBuff'"
#event HPbuff "#1# tells you, 'HPBuff'"
#event SymbolBuff "#1# tells you, 'Symbol'"
#event Regen "#1# tells you, 'Regen'"
#event DamageShield "#1# tells you, 'DS'"
#event SoW "#1# tells you, 'SoW'"
#event Stats "#1# tells you, 'Stats'"

Sub Main 

|++++++++++++++++++++++++++++++++ 
|      Cleric Information
|++++++++++++++++++++++++++++++++ 

/declare ClrACBuff string outer "Shield of Words"
/declare ClrHPBuff string outer "Heroic Bond"
/declare ClrSymbol string outer "Symbol of Marzin"
/declare ClrSelfBuff1 string outer "Armor of the Faithful"
/declare ClrSelfBuff2 string outer "Armor of the Faithful"
/declare ClrSelfBuff3 string outer "Armor of the Faithful"
/declare ClericNuke1 outer "Retribution"

|++++++++++++++++++++++++++++++++ 
|      Shaman Information
|++++++++++++++++++++++++++++++++ 

/declare ShmACBuff string outer "Shroud of the Spirits"
/declare ShmHPBuff string outer "Focus of Spirit"
/declare ShmRegen string outer "Regrowth"
/declare ShmSoW string outer "Spirit of Wolf"
/declare ShmSoW2 string outer "Spirit of Bih`Li"
/declare ShmAgi string outer "Talisman of the Cat"
/declare ShmSta string outer "Talisman of the Brute"
/declare ShmSelfBuff1 string outer "Form of the Great Bear"
/declare ShmSelfBuff2 string outer "Form of the Great Bear"
/declare ShmSelfBuff3 string outer "Form of the Great Bear"
/declare ShamanNuke1 outer "Spirit Strike"

|++++++++++++++++++++++++++++++++ 
|      Druid Information
|++++++++++++++++++++++++++++++++ 

/declare DruACBuff string outer "NULL"
/declare DruHPBuff string outer "NULL"
/declare DruRegen string outer "Chloroplast"
/declare DruDS string outer "Shield of Thorns"
/declare DruSoW string outer "Spirit of Wolf"
/declare DruSoW2 string outer "Pack Spirit"
/declare DruSelfBuff1 string outer "Form of the Howler"
/declare DruSelfBuff2 string outer "Resist Magic"
/declare DruSelfBuff3 string outer "Resist Magic"
/declare DruidNuke1 outer "Starfire"

|++++++++++++++++++++++++++++++++ 
|  General Information
|++++++++++++++++++++++++++++++++

/declare HealAtTANK   int   outer 50
/declare HoTAtTANK int outer 80
/declare HealAtOTHER  int   outer 80 
/declare HealAtSham   int   outer 70 
/declare AssistAt    int outer   80
/declare AssistAtDis int outer   100
/declare ManaToNuke int outer 70
/declare UseMount int outer 1
/declare MountItem string outer "Black Rope Bridle"
/declare CompHeal   outer "Complete Healing"
/declare CompHealMana int outer "400"
/declare SpellHeal    outer "Remedy"
/declare SpellHealMana int outer "175"
/declare SpellHoT string outer "Celestial Healing"
/declare SpellHoTMana int outer "225"
/declare SpellHoTTimer timer outer "0"
/declare MainAssist    string outer    ${Target.CleanName}
/declare ZoneType int outer 0
/declare count_grp int outer 

/echo Simple Healer Macro has started
/echo Main Assist is ${MainAssist}
/echo Tank healed at ${HealAtTANK} 
/echo Others heled at ${HealAtOTHER}
/echo Shamans healed at ${HealAtSham} 

|+++++++++++++++++++++++++++++++++ 
|      Main Loop 
|+++++++++++++++++++++++++++++++++ 

:loop 
/doevents 
/if (${Me.Casting.ID} || ${Me.Moving})    /goto :loop
/call HoT
/call CheckHeals 
/call Attack
/call ManaCheck
/call SelfBuffs
/call Buffs
/goto :loop 
/return 

|+++++++++++++++++++++++++++++++++ 
Sub HoT

/if (${Me.Class.ShortName.NotEqual[CLR]}) /return
/for count_grp 0 to ${Group}
/if (${Group.Member[${count_grp}].Class.Name.Equal[Warrior]} || ${Group.Member[${count_grp}].Class.Name.Equal[Shadow Knight]} || ${Group.Member[${count_grp}].Class.Name.Equal[Paladin]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HoTAtTANK} &&${Me.CurrentMana}>${SpellHoTMana} &&${Group.Member[${count_grp}].Distance}<=100 && ${SpellHoTTimer}==0) { 
/target pc ${Group.Member[${count_grp}].Name} 
/delay 3
/casting ${SpellHoT}|gem3 -maxtries|3
/if (${Macro.Return.Equal[CAST_SUCCESS]}) { 
 /varset SpellHoTTimer 240 
 } 
} 
/next count_grp
/return

Sub CheckHeals 
  
/for count_grp 0 to ${Group} 
|+++++++++++++++++++++++++++++++++ 
|      Tank ##check spell you're casting##
|+++++++++++++++++++++++++++++++++ 

/if (${Group.Member[${count_grp}].Class.Name.Equal[Warrior]} || ${Group.Member[${count_grp}].Class.Name.Equal[Shadow Knight]} || ${Group.Member[${count_grp}].Class.Name.Equal[Paladin]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtTANK} &&${Me.CurrentMana}>${CompHealMana} &&${Group.Member[${count_grp}].Distance}<=100) { 
/target pc ${Group.Member[${count_grp}].Name} 
/delay 3
/casting ${CompHeal}|gem1 -maxtries|3
} 

|+++++++++++++++++++++++++++++++++ 
|      Others 
|+++++++++++++++++++++++++++++++++ 

/if (${Group.Member[${count_grp}].Class.Name.Equal[Cleric]} || ${Group.Member[${count_grp}].Class.Name.Equal[Druid]} || ${Group.Member[${count_grp}].Class.Name.Equal[Beastlord]} || ${Group.Member[${count_grp}].Class.Name.Equal[Wizard]} || ${Group.Member[${count_grp}].Class.Name.Equal[Magician]} || ${Group.Member[${count_grp}].Class.Name.Equal[Necromancer]} || ${Group.Member[${count_grp}].Class.Name.Equal[Monk]} || ${Group.Member[${count_grp}].Class.Name.Equal[Rouge]} || ${Group.Member[${count_grp}].Class.Name.Equal[Bard]} || ${Group.Member[${count_grp}].Class.Name.Equal[Ranger]} || ${Group.Member[${count_grp}].Class.Name.Equal[Enchanter]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtOTHER} &&${Me.CurrentMana}>${SpellHealMana} &&${Group.Member[${count_grp}].Distance}<=100) { 
/target pc ${Group.Member[${count_grp}].Name} 
/delay 3
/casting ${SpellHeal}|gem2 -maxtries|3
} 

|+++++++++++++++++++++++++++++++++ 
|      Shaman 
|+++++++++++++++++++++++++++++++++
 
/if (${Group.Member[${count_grp}].Class.Name.Equal[Shaman]}) /if (${Group.Member[${count_grp}].PctHPs}<=${HealAtSham} &&${Me.CurrentMana}>${SpellHealMana} &&${Group.Member[${count_grp}].Distance}<=100) { 
/target pc ${Group.Member[${count_grp}].Name} 
/delay 3
/casting ${SpellHeal}|gem2 -maxtries|3 
}
/next count_grp 

/return 

|+++++++++++++++++++++++++++++++++ 
|      Attack Spells 
|+++++++++++++++++++++++++++++++++ 

Sub Attack
/if (${Me.Casting.ID}) /return
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericNuking
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanNuking
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidNuking
}
/return

:ClericNuking
	/if (${Me.PctMana}<${ManaToNuke}) /return
	/if (${Target.Distance} > ${AssistAtDis}) /return
	/assist ${MainAssist} 
	/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${ClericNuke1}]} || ${Target.PctHPs} > ${AssistAt}) /return
	/if (${Target.Type.Equal[NPC]} && ${Target.PctHPs} < ${AssistAt}) {
	/casting ${ClericNuke1}|gem7 -maxtries|3
	/delay 2
		}
	}	
/return

:ShamanNuking
/if (${Me.PctMana}<${ManaToNuke}) /return
	/assist ${MainAssist} 
	/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${ShamanNuke1}]} || ${Target.PctHPs} < ${AssistAt} && ${Target.Type.NotEqual[NPC]}) /return
	/delay 2
	/casting ${ShamanNuke1}|gem7 -maxtries|3
	/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
	/g Casting ${ShamanNuke1} on [ ${Target.CleanName} ]
	}	
/return

:DruidNuking
	/if (${Me.PctMana}<${ManaToNuke}) /return
	/assist ${MainAssist} 
	/if (${Target.Type.NotEqual[NPC]} || ${Target.Type.Equal[PC]} || ${Target.Type.Equal[CORPSE]} || !${Target.ID} || !${Me.SpellReady[${DruidNuke1}]} || ${Target.PctHPs} < ${AssistAt} && ${Target.Type.NotEqual[NPC]}) /return
	/delay 2
	/casting ${DruidNuke1}|gem7 -maxtries|3
	/if (${Macro.Return.Equal[CAST_SUCCESS]}) {
	/g Casting ${DruidNuke1} on [ ${Target.CleanName} ]
	}	
/return

|+++++++++++++++++++++++++++++++++ 
|      Mana 
|+++++++++++++++++++++++++++++++++ 

Sub ManaCheck
/if (${UseMount}==1 && ${ZoneType}==0 && !${Me.Mount.ID}) {
	/casting ${MountItem}|item
	}
/if (${Me.Standing}&&!${Stick.Active}&&!${Me.Mount.ID}&&${Me.PctMana}<100) { 
      /sit on  
	}
/if (${Me.PctMana} < 10) {
	/t ${MainAssist} I have ${Me.PctMana}% mana.
}
/return

|+++++++++++++++++++++++++++++++++ 
|      Self Buffs
|+++++++++++++++++++++++++++++++++ 

Sub SelfBuffs
	/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericSelfBuffs
	/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanSelfBuffs
	/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidSelfBuffs
}
/return

:ClericSelfBuffs
	/if (${Me.Buff[${ClrSelfBuff1}].Duration}<5) {
	/target ${Me} PC
	/delay 1
	/casting ${ClrSelfBuff1}|gem8 -maxtries|3
	}
	/if (${Me.Buff[${ClrSelfBuff2}].Duration}<5) {
	/delay 1
	/casting ${ClrSelfBuff2}|gem8 -maxtries|3
	}
	/if (${Me.Buff[${ClrSelfBuff3}].Duration}<5) {
	/delay 1
	/casting ${ClrSelfBuff3}|gem8 -maxtries|3
	}
	/return

:ShamanSelfBuffs
	/if (${Me.Buff["${ShmSelfBuff1}"].Duration}<5) {
	/target ${Me} PC
	/delay 1
	/casting ${ShmSelfBuff1}|gem8 -maxtries|3
	}
	/if (${Me.Buff["${ShmSelfBuff2}"].Duration}<5) {
	/delay 1
	/casting ${ShmSelfBuff2}|gem8 -maxtries|3
	}
	/if (${Me.Buff["${ShmSelfBuff3}"].Duration}<5) {
	/delay 1
	/casting ${ShmSelfBuff3}|gem8 -maxtries|3
	}
	/return

:DruidSelfBuffs
	/if (${Me.Buff["${DruSelfBuff1}"].Duration}<5 && ${ZoneType}==0) {
	/target ${Me} PC
	/delay 1
	/casting ${DruSelfBuff1}|gem8 -maxtries|3
	}
	/if (${Me.Buff["${DruSelfBuff2}"].Duration}<5) {
	/delay 1
	/casting ${DruSelfBuff2}|gem8 -maxtries|3
	}
	/if (${Me.Buff["${DruSelfBuff3}"].Duration}<5) {
	/delay 1
	/casting ${DruSelfBuff3}|gem8 -maxtries|3
	}
	/return

|+++++++++++++++++++++++++++++++++ 
|      Buffs
|+++++++++++++++++++++++++++++++++ 

Sub Buffs
	/return

|+++++++++++++++++++++++++++++++++ 
|      General Events
|+++++++++++++++++++++++++++++++++ 

Sub Event_Follow
/target ${MacroQuest.LastTell} 
/delay 1
/tell ${MacroQuest.LastTell} Following you 
/stick
/return

Sub Event_Stay
/stick off 
/tell ${MacroQuest.LastTell} Staying here 
/delay 1 
/if (!${Me.Sitting}&&!${Stick.Active}&&!${Me.Moving}&&${Me.PctMana}<100) { 
      /sit on 
    } 
/return

Sub Event_ZoneType
/varset ZoneType 1
/echo Adjusting to indoor zone!
/return

|+++++++++++++++++++++++++++++++++ 
|      AC Buff
|+++++++++++++++++++++++++++++++++ 

Sub Event_ACBuff
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericACBuff
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanACBuff
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidACBuff
}
/return

:ClericACBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ClrACBuff} on you!
	/casting ${ClrACBuff}|gem8 -maxtries|3
	}
	/return

:ShamanACBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ShmACBuff} on you!
	/casting ${ShmACBuff}|gem8 -maxtries|3
	}
	/return

:DruidACBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${DruACBuff} on you!
	/casting ${DruACBuff}|gem8 -maxtries|3
	}
	/return

|+++++++++++++++++++++++++++++++++ 
|      HP Buff
|+++++++++++++++++++++++++++++++++ 	
	
Sub Event_HPBuff
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericHPBuff
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanHPBuff
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidHPBuff
}
/return

:ClericHPBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ClrHPBuff} on you!
	/casting ${ClrHPBuff}|gem8 -maxtries|3
	}
	/return

:ShamanHPBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ShmHPBuff} on you!
	/casting ${ShmHPBuff}|gem8 -maxtries|3
	}
	/return

:DruidHPBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${DruHPBuff} on you!
	/casting ${DruHPBuff}|gem8 -maxtries|3
	}
	/return
	
|+++++++++++++++++++++++++++++++++ 
|      Symbol Buff
|+++++++++++++++++++++++++++++++++ 

Sub Event_SymbolBuff
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericSymbolBuff
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanSymbolBuff
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidSymbolBuff
}
/return

:ClericSymbolBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ClrSymbol} on you!
	/casting ${ClrSymbol}|gem8 -maxtries|3
	}
	/return

:ShamanSymbolBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a symbol spell for you!
	}
	/return

:DruidSymbolBuff
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a symbol spell for you!
	}
	/return

|+++++++++++++++++++++++++++++++++ 
|      Regen
|+++++++++++++++++++++++++++++++++ 	

Sub Event_Regen
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericRegen
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanRegen
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidRegen
}
/return

:ClericRegen
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a regen spell for you!
	}
	/return

:ShamanRegen
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ShmRegen} on you!
	/casting ${ShmRegen}|gem8 -maxtries|3
	}
	/return

:DruidRegen
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${DruRegen} on you!
	/casting ${DruRegen}|gem8 -maxtries|3
	}
	/return
	
|+++++++++++++++++++++++++++++++++ 
|      Damage Shield
|+++++++++++++++++++++++++++++++++ 	
	
	Sub Event_DamageShield
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericDS
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanDS
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidDS
}
/return

:ClericDS
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a damage shield spell for you!
	}
	/return

:ShamanDS
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a damage shield spell for you!
	}
	/return

:DruidDS
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${DruDS} on you!
	/casting ${DruDS}|gem8 -maxtries|3
	}
	/return
	
|+++++++++++++++++++++++++++++++++ 
|      Spirit of Wolf
|+++++++++++++++++++++++++++++++++ 

Sub Event_SoW
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericSoW
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanSoW
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidSoW
}
/return

:ClericSoW
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have a movement speed spell for you!
	}
	/return

:ShamanSoW
	/target ${MacroQuest.LastTell}
	/delay 1
	/if (${ZoneType}==1) {
		/tell ${MacroQuest.LastTell} Can't cast ${ShmSoW} indoors
		}
		/return
	/if (${ZoneType}==0) {
		/tell ${MacroQuest.LastTell} Casting ${ShmSoW} on you!
		/casting ${ShmSoW}|gem8 -maxtries|3
		}
		/return

:DruidSoW
	/target ${MacroQuest.LastTell}
	/delay 1
	/if (${ZoneType}==1) {
		/tell ${MacroQuest.LastTell} Can't cast ${DruSoW} indoors
		}
		/return
	/if (${ZoneType}==0) {
		/tell ${MacroQuest.LastTell} Casting ${DruSoW} on you!
		/casting ${DruSoW}|gem8 -maxtries|3
		}
		/return

|+++++++++++++++++++++++++++++++++ 
|      Stats
|+++++++++++++++++++++++++++++++++ 

Sub Event_Stats
/if (${Me.Class.ShortName.Equal[CLR]}) /goto :ClericStats
/if (${Me.Class.ShortName.Equal[SHM]}) /goto :ShamanStats
/if (${Me.Class.ShortName.Equal[DRU]}) /goto :DruidStats
}
/return

:ClericStats
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have any stat spells for you!
	}
	/return

:ShamanStats
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} Casting ${ShmAgi} on you!
	/casting ${ShmAgi}|gem8 -maxtries|3
	/tell ${MacroQuest.LastTell} Casting ${ShmSta} on you!
	/casting ${ShmSta}|gem8 -maxtries|3
	}
	/return

:DruidStats
	/target ${MacroQuest.LastTell}
	/delay 1
	/tell ${MacroQuest.LastTell} I don't have any stat spells for you!
	}
	/return
Author
Slade the Magician
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from Slade the Magician

Share this resource

Back
Top