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