diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 06a315f5c..5d0a3d35e 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -268,7 +268,19 @@ public: { Talk(SAY_YSONDRE_SUMMON_DRUIDS); - for (uint8 i = 0; i < 10; ++i) + auto const& attackers = me->GetThreatMgr().getThreatList(); + uint8 attackersCount = 0; + + for (const auto attacker : attackers) + { + if ((*attacker)->ToPlayer() && (*attacker)->IsAlive()) + ++attackersCount; + } + + uint8 amount = attackersCount < 30 ? attackersCount * 0.5f : 15; + amount = amount < 1 ? 1 : amount; + + for (uint8 i = 0; i < amount; ++i) DoCast(me, SPELL_SUMMON_DRUID_SPIRITS, true); ++_stage; }