diff options
-rw-r--r-- | data/sql/updates/pending_db_world/mirkblood-spawntime.sql | 1 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp | 15 |
2 files changed, 11 insertions, 5 deletions
diff --git a/data/sql/updates/pending_db_world/mirkblood-spawntime.sql b/data/sql/updates/pending_db_world/mirkblood-spawntime.sql new file mode 100644 index 0000000000..a884c12887 --- /dev/null +++ b/data/sql/updates/pending_db_world/mirkblood-spawntime.sql @@ -0,0 +1 @@ +UPDATE `creature` SET `spawntimesecs` = 604800 WHERE `id1` = 28194; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp index 518a46055f..bed3364478 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_tenris_mirkblood.cpp @@ -177,6 +177,9 @@ struct npc_sanguine_spirit : public ScriptedAI me->SetReactState(REACT_AGGRESSIVE); me->SetInCombatWithZone(); DoCastSelf(SPELL_SANGUINE_SPIRIT_AURA); + }).Schedule(30s, [this](TaskContext /*context*/) + { + me->DespawnOrUnsummon(); }); } @@ -320,6 +323,7 @@ public: events.Reset(); if (InstanceScript* instance = player->GetInstanceScript()) + { if (instance->GetBossState(DATA_MIRKBLOOD) != DONE) { opener = player; @@ -327,8 +331,10 @@ public: events.ScheduleEvent(EVENT_SAY, 1s); events.ScheduleEvent(EVENT_FLAG, 5s); - me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); } + } + + me->SetGameObjectFlag(GO_FLAG_NOT_SELECTABLE); return true; } @@ -342,14 +348,13 @@ public: switch (events.ExecuteEvent()) { case EVENT_SAY: - if (!mirkblood) + if (!mirkblood || !mirkblood->IsAlive()) return; mirkblood->AI()->Talk(SAY_AGGRO, opener); break; case EVENT_FLAG: - if (!mirkblood) - return; - mirkblood->SetImmuneToPC(false); + if (mirkblood) + mirkblood->SetImmuneToPC(false); me->Delete(); break; } |