• 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 --->
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