538 {
541 {
542 bool didHit = false;
545
546 std::vector<Player*> validPlayers;
549 if (
Player* plr = itr->GetSource())
550 if (plr->IsAlive() && !plr->IsGameMaster() && plr->GetExactDist2dSq(marrowgar) < (150.0f * 150.0f) && !plr->HasAura(
SPELL_IMPALED))
551 if (!marrowgar->GetVictim() || marrowgar->GetVictim()->GetGUID() != plr->GetGUID())
552 if (plr->GetGUID() != marrowgarAI->
GetGUID(0) && plr->GetGUID() != marrowgarAI->
GetGUID(1) && plr->GetGUID() != marrowgarAI->
GetGUID(2))
553 validPlayers.push_back(plr);
554
555 std::vector<Player*>::iterator begin = validPlayers.
begin(), end = validPlayers.end();
556
557 std::random_device rd;
558 std::shuffle(begin, end, std::default_random_engine{rd()});
559
560 for (
uint8 i = 0; i < boneSpikeCount && i < validPlayers.size(); ++i)
561 {
562 Unit* target = validPlayers[i];
563 didHit = true;
564
566 }
567
568 if (didHit)
570 }
571 }
std::uint8_t uint8
Definition Define.h:109
@ SPELL_IMPALED
Definition boss_lord_marrowgar.cpp:52
uint32 const boneSpikeSummonId[3]
Definition boss_lord_marrowgar.cpp:73
@ SAY_BONESPIKE
Definition boss_lord_marrowgar.cpp:35
Definition CreatureAI.h:69
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0ms)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition CreatureAI.cpp:67
Definition LinkedList.h:139
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Definition SpellScript.cpp:590
Unit * GetCaster()
Definition SpellScript.cpp:401
virtual ObjectGuid GetGUID(int32=0) const
Definition UnitAI.h:221
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1389