From 7bf1167b53a8a1d887e2c9680d038a6bbe4ab1cb Mon Sep 17 00:00:00 2001 From: ColdIronWow <46758545+ColdIronWow@users.noreply.github.com> Date: Sat, 19 Jan 2019 05:49:08 -0500 Subject: [PATCH] Core/Instance: Naxxramas conversation fix (#1304) * Resolve Issue 1138 * Move sql update to a single line Co-Authored-By: ColdIronWow <46758545+ColdIronWow@users.noreply.github.com> --- .../rev_1547686034421572510.sql | 3 ++ .../Northrend/Naxxramas/boss_kelthuzad.cpp | 8 ++++- .../Naxxramas/instance_naxxramas.cpp | 33 +++++++++++++------ .../scripts/Northrend/Naxxramas/naxxramas.h | 5 +-- 4 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1547686034421572510.sql diff --git a/data/sql/updates/pending_db_world/rev_1547686034421572510.sql b/data/sql/updates/pending_db_world/rev_1547686034421572510.sql new file mode 100644 index 000000000..c07671d1d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1547686034421572510.sql @@ -0,0 +1,3 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1547686034421572510'); + +UPDATE `gameobject` SET `state` = 1 WHERE `id` = 181228 AND `guid`=150159; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index dcfb1c5e7..84a889f70 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -120,11 +120,13 @@ public: boss_kelthuzadAI(Creature* c) : BossAI(c, BOSS_KELTHUZAD), summons(me) { pInstance = me->GetInstanceScript(); + _justSpawned=true; } EventMap events; SummonList summons; InstanceScript* pInstance; + bool _justSpawned; float NormalizeOrientation(float o) { @@ -175,7 +177,11 @@ public: } if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_GATE))) - go->SetGoState(GO_STATE_ACTIVE); + { + if(!_justSpawned) /* Don't open the door if we just spawned and are still doing the RP */ + go->SetGoState(GO_STATE_ACTIVE); + } + _justSpawned=false; } diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index ca73ff38c..6a1748c74 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -301,7 +301,9 @@ public: break; case GO_KELTHUZAD_GATE: _kelthuzadgateGUID = pGo->GetGUID(); - break; + if (GetBossState(BOSS_SAPPHIRON) == DONE && _speakTimer==0) + pGo->SetGoState(GO_STATE_ACTIVE); + break; case GO_SAPPHIRON_GATE: _sapphironGateGUID = pGo->GetGUID(); if (GetBossState(BOSS_SAPPHIRON) == DONE) @@ -523,7 +525,11 @@ public: break; case BOSS_SAPPHIRON: if (state == DONE) + { _speakTimer = 1; + // Load KT's grid so he can talk + instance->LoadGrid(3763.43f, -5115.87f); + } else if (state == NOT_STARTED) sapphironAchievement = true; break; @@ -618,30 +624,37 @@ public: _speakTimer += diff; else return; - if (_speakTimer > 20000 && _speakTimer < 30000) + if (_speakTimer > 10000 && _speakTimer < 20000) { kel->AI()->Talk(SAY_SAPP_DIALOG1); - _speakTimer = 30000; + _speakTimer = 20000; } - else if (_speakTimer > 45000 && _speakTimer < 50000) + else if (_speakTimer > 30000 && _speakTimer < 40000) { lich->AI()->Talk(SAY_SAPP_DIALOG2_LICH); - _speakTimer = 50000; + _speakTimer = 40000; } - else if (_speakTimer > 58000 && _speakTimer < 70000) + else if (_speakTimer > 54000 && _speakTimer < 60000) { kel->AI()->Talk(SAY_SAPP_DIALOG3); - _speakTimer = 70000; + _speakTimer = 60000; } - else if (_speakTimer > 78000 && _speakTimer < 90000) + else if (_speakTimer > 70000 && _speakTimer < 80000) { lich->AI()->Talk(SAY_SAPP_DIALOG4_LICH); - _speakTimer = 90000; + _speakTimer = 80000; } - else if (_speakTimer > 98000) + else if (_speakTimer > 92000 && _speakTimer < 100000) { kel->AI()->Talk(SAY_SAPP_DIALOG5); + _speakTimer = 100000; + } + else if (_speakTimer > 105000) + { + kel->AI()->Talk(SAY_SAPP_DIALOG6); _speakTimer = 0; + if (GameObject* go = instance->GetGameObject(_kelthuzadgateGUID)) + go->SetGoState(GO_STATE_ACTIVE); } } diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index 97ae25c05..147b51c92 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -123,10 +123,11 @@ enum NXMisc enum NXSays { SAY_SAPP_DIALOG1 = 0, - SAY_SAPP_DIALOG2_LICH = 0, + SAY_SAPP_DIALOG2_LICH = 1, SAY_SAPP_DIALOG3 = 2, - SAY_SAPP_DIALOG4_LICH = 1, + SAY_SAPP_DIALOG4_LICH = 2, SAY_SAPP_DIALOG5 = 4, + SAY_SAPP_DIALOG6 = 20, SAY_CAT_DIED = 0 };