// does the caster + group void Group::GroupBardPulse(Mob* caster, uint16 spell_id) { uint32 z; float range, distance; if(!caster) return; castspell = true; range = caster->GetAOERange(spell_id); float range2 = range*range; for(z=0; z < MAX_GROUP_MEMBERS; z++) { if(members[z] == caster) { caster->BardPulse(spell_id, caster); entity_list.AddHealAggro(members[z], caster, caster->CheckHealAggroAmount(spell_id, members[z])); #ifdef GROUP_BUFF_PETS if(caster->GetPet() && caster->HasPetAffinity() && !caster->GetPet()->IsCharmed()) caster->BardPulse(spell_id, caster->GetPet()); #endif } else if(members[z] != nullptr) { distance = DistanceSquared(caster->GetPosition(), members[z]->GetPosition()); if(distance <= range2) { members[z]->BardPulse(spell_id, caster); entity_list.AddHealAggro(members[z], caster, caster->CheckHealAggroAmount(spell_id, members[z])); #ifdef GROUP_BUFF_PETS if(members[z]->GetPet() && members[z]->HasPetAffinity() && !members[z]->GetPet()->IsCharmed()) members[z]->GetPet()->BardPulse(spell_id, caster); #endif } else { Log.Out(Logs::Detail, Logs::Spells, "Group bard pulse: %s is out of range %f at distance %f from %s", members[z]->GetName(), range, distance, caster->GetName()); } } } }