diff --git a/data/sql/updates/pending_db_world/rev_1717788081682357961.sql b/data/sql/updates/pending_db_world/rev_1717788081682357961.sql new file mode 100644 index 000000000..7b6e08d9a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1717788081682357961.sql @@ -0,0 +1,9 @@ +-- +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 10719); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(10719, 0, 0, 0, 1, 0, 100, 0, 12000, 12000, 0, 0, 0, 0, 1, 0, 13, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Herald of Thrall - Out of Combat - Say Line 0'), +(10719, 0, 1, 0, 1, 0, 100, 0, 15000, 15000, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Herald of Thrall - Out of Combat - Say Line 1'), +(10719, 0, 2, 0, 1, 0, 100, 0, 19000, 19000, 0, 0, 0, 0, 11, 16609, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Herald of Thrall - Out of Combat - Cast \'Warchief`s Blessing\''); + +-- Limit Herald of Thrall shout range to Area +UPDATE `creature_text` SET `TextRange` = 1 WHERE `CreatureID` = 10719; diff --git a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp index dd70a5aae..0024ef5d4 100644 --- a/src/server/scripts/Kalimdor/zone_orgrimmar.cpp +++ b/src/server/scripts/Kalimdor/zone_orgrimmar.cpp @@ -246,35 +246,44 @@ public: me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); me->GetMap()->LoadGrid(heraldOfThrallPos.GetPositionX(), heraldOfThrallPos.GetPositionY()); me->SummonCreature(NPC_HERALD_OF_THRALL, heraldOfThrallPos, TEMPSUMMON_TIMED_DESPAWN, 20 * IN_MILLISECONDS); - _scheduler.Schedule(2s, [this](TaskContext /*context*/) + me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); + scheduler.Schedule(2s, [this](TaskContext /*context*/) + { + Talk(SAY_THRALL_ON_QUEST_REWARD_0); + }).Schedule(9s, [this](TaskContext /*context*/) + { + Talk(SAY_THRALL_ON_QUEST_REWARD_1); + DoCastAOE(SPELL_WARCHIEF_BLESSING, true); + me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); + me->GetMap()->DoForAllPlayers([&](Player* player) { - Talk(SAY_THRALL_ON_QUEST_REWARD_0); - }) - .Schedule(13s, [this](TaskContext /*context*/) - { - Talk(SAY_THRALL_ON_QUEST_REWARD_1); - }) - .Schedule(15s, [this](TaskContext /*context*/) - { - DoCastAOE(SPELL_WARCHIEF_BLESSING, true); - me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); - me->GetMap()->DoForAllPlayers([&](Player* p) + if (player->IsAlive() && !player->IsGameMaster()) + { + if (player->GetAreaId() == AREA_ORGRIMMAR) { - if (p->IsAlive() && !p->IsGameMaster()) - { - if (p->GetAreaId() == AREA_ORGRIMMAR || p->GetAreaId() == AREA_RAZOR_HILL || p->GetAreaId() == AREA_CROSSROADS || p->GetAreaId() == AREA_CAMP_TAURAJO) - { - p->CastSpell(p, SPELL_WARCHIEF_BLESSING, true); - } - } - }); + player->CastSpell(player, SPELL_WARCHIEF_BLESSING, true); + } + } }); + }).Schedule(19s, [this](TaskContext /*context*/) + { + me->GetMap()->DoForAllPlayers([&](Player* player) + { + if (player->IsAlive() && !player->IsGameMaster()) + { + if (player->GetAreaId() == AREA_CROSSROADS) + { + player->CastSpell(player, SPELL_WARCHIEF_BLESSING, true); + } + } + }); + }); } } void UpdateAI(uint32 diff) override { - _scheduler.Update(diff); + scheduler.Update(diff); if (!UpdateVictim()) return; @@ -295,9 +304,6 @@ public: DoMeleeAttackIfReady(); } - - protected: - TaskScheduler _scheduler; }; };