WARNING: Because of recent changes in the ${Group} datatype, you must run the latest MQ2 build for this to work properly
Background: In OOW druids got the Lion's Strength buff, which is the same buff as the shaman's "Spirit of Might", also from OOW. However my guild's shamans asked druids to do raid buffing with this spell to relieve them from buff duty some, so this script was born out of pure laziness.
Code: Select all
#include spell_routines.inc
|todo: merge into one loop?
sub Main
/declare i int inner 0
/declare oldSpell1 string inner
/declare CntPets int inner 0
/declare CntPetsBuffed int inner 0
/declare CntPlayersBuffed int inner 0
/varset oldSpell1 ${Me.Gem[1]}
/if (${Raid.Members}) {
/echo Casting Lion's Strength on all melee classes in raid
/for i 1 to ${Raid.Members}
/if ( ${Raid.Member[${i}].Class.Name.Equal["Bard"]} || ${Raid.Member[${i}].Class.Name.Equal["Beastlord"]} || ${Raid.Member[${i}].Class.Name.Equal["Berserker"]} || ${Raid.Member[${i}].Class.Name.Equal["Monk"]} || ${Raid.Member[${i}].Class.Name.Equal["Paladin"]} || ${Raid.Member[${i}].Class.Name.Equal["Ranger"]} || ${Raid.Member[${i}].Class.Name.Equal["Rogue"]} || ${Raid.Member[${i}].Class.Name.Equal["Shadow Knight"]} || ${Raid.Member[${i}].Class.Name.Equal["Warrior"]} ) {
/if (${Raid.Member[${i}].ID}) {
/if (${Raid.Member[${i}].Distance} < 100 ) {
|/echo Buffing ${Raid.Member[${i}].Name} (${Raid.Member[${i}].Class.ShortName})
/target pc ${Raid.Member[${i}].Name}
/call Cast "Lion's Strength" gem1
/varcalc CntPlayersBuffed ${CntPlayersBuffed}+1
/delay 3s
} else {
/echo ${Raid.Member[${i}].Name} (${Raid.Member[${i}].Class.ShortName}) is OOR, ${Raid.Member[${i}].Distance} distance
}
} else {
/echo ${Raid.Member[${i}].Name} (${Raid.Member[${i}].Class.ShortName}) not in zone
}
}
/if (${Raid.Member[${i}].Pet.ID}) {
/if (${Raid.Member[${i}].Pet.Distance} < 100) {
/echo Buffing ${Raid.Member[${i}].Pet.Name} (${Raid.Member[${i}].Name}'s pet)
/target pet ${Raid.Member[${i}].Pet.Name}
/call Cast "Lion's Strength" gem1
/varcalc CntPetsBuffed ${CntPetsBuffed}+1
/delay 3s
}
/varcalc CntPets ${CntPets}+1
}
/next i
/echo ${CntPlayersBuffed}/${Raid.Members} players buffed, ${CntPetsBuffed}/${CntPets} pets
} else {
/if (${Group.Members}) {
/echo Casting Lion's Strength on all melee classes in group
/for i 0 to 5
/if (${String[${Group.Member[${i}].Class}].Equal["Bard"]} || ${String[${Group.Member[${i}].Class}].Equal["Beastlord"]} || ${String[${Group.Member[${i}].Class}].Equal["Berserker"]} || ${String[${Group.Member[${i}].Class}].Equal["Monk"]} || ${String[${Group.Member[${i}].Class}].Equal["Paladin"]} || ${String[${Group.Member[${i}].Class}].Equal["Ranger"]} || ${String[${Group.Member[${i}].Class}].Equal["Rogue"]} || ${String[${Group.Member[${i}].Class}].Equal["Shadow Knight"]} || ${String[${Group.Member[${i}].Class}].Equal["Warrior"]} ) {
| person is in zone
/if (${Group.Member[${i}].ID}) {
/if (${Group.Member[${i}].Distance} < 100) {
|/echo Buffing ${Group.Member[${i}].Name} (${Group.Member[${i}].Class.ShortName})
/target pc ${Group.Member[${i}].Name}
/call Cast "Lion's Strength" gem1
/delay 3s
} else {
/echo ${Group.Member[${i}].Name} (${Group.Member[${i}].Class.ShortName}) is OOR, ${Group.Member[${i}].Distance} distance
}
} else {
/echo ${Group.Member[${i}].Name} (${Group.Member[${i}].Class.ShortName}) not in zone
}
}
/if (${Group.Member[${i}].Pet.ID}) {
/if (${Group.Member[${i}].Pet.Distance} < 100) {
/echo Buffing ${Group.Member[${i}].Pet.Name} (${Group.Member[${i}].Name}'s pet)
/target pet ${Group.Member[${i}].Pet.Name}
/call Cast "Lion's Strength" gem1
/delay 3s
}
}
/next i
}
}
/if (!${String["${Me.Gem[1]}"].Equal["${oldSpell1}"]}) {
/delay 2s
/echo # Restoring old spell gem
/memspell 1 ${oldSpell1}
}
/return

