diff options
Diffstat (limited to 'src')
4 files changed, 70 insertions, 34 deletions
diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp index 4882cee7620..d828170b6bc 100644 --- a/src/bindings/scripts/ScriptMgr.cpp +++ b/src/bindings/scripts/ScriptMgr.cpp @@ -657,6 +657,7 @@ extern void AddSC_boss_emalon(); extern void AddSC_instance_archavon(); //Ulduar +extern void AddSC_boss_auriaya(); extern void AddSC_boss_flame_leviathan(); extern void AddSC_boss_ignis(); extern void AddSC_boss_razorscale(); @@ -1582,6 +1583,7 @@ void ScriptsInit(char const* cfg_file = "trinitycore.conf") AddSC_instance_archavon(); //Ulduar + AddSC_boss_auriaya(); AddSC_boss_flame_leviathan(); AddSC_boss_ignis(); AddSC_boss_razorscale(); diff --git a/src/bindings/scripts/scripts/zone/wailing_caverns/def_wailing_caverns.h b/src/bindings/scripts/scripts/zone/wailing_caverns/def_wailing_caverns.h index 2656db37d1b..ee03ade365e 100644 --- a/src/bindings/scripts/scripts/zone/wailing_caverns/def_wailing_caverns.h +++ b/src/bindings/scripts/scripts/zone/wailing_caverns/def_wailing_caverns.h @@ -16,6 +16,7 @@ enum TYPE_NARALEX_PART2 = 7, TYPE_NARALEX_PART3 = 8, TYPE_MUTANUS_THE_DEVOURER = 9, + TYPE_NARALEX_YELLED = 10, DATA_NARALEX = 3679, }; diff --git a/src/bindings/scripts/scripts/zone/wailing_caverns/instance_wailing_caverns.cpp b/src/bindings/scripts/scripts/zone/wailing_caverns/instance_wailing_caverns.cpp index 2e30534ddc6..e4e7f081234 100644 --- a/src/bindings/scripts/scripts/zone/wailing_caverns/instance_wailing_caverns.cpp +++ b/src/bindings/scripts/scripts/zone/wailing_caverns/instance_wailing_caverns.cpp @@ -16,8 +16,8 @@ /* ScriptData SDName: Instance_Wailing_Caverns -SD%Complete: 90 -SDComment: Most of the event done, still need some polishing +SD%Complete: 99 +SDComment: Everything seems to work, still need some checking SDCategory: Wailing Caverns EndScriptData */ @@ -32,10 +32,12 @@ struct TRINITY_DLL_DECL instance_wailing_caverns : public ScriptedInstance uint32 Encounter[ENCOUNTERS]; + bool yelled; uint64 NaralexGUID; void Initialize() { + yelled = false; NaralexGUID = 0; for (uint8 i = 0; i < ENCOUNTERS; i++) @@ -52,15 +54,16 @@ struct TRINITY_DLL_DECL instance_wailing_caverns : public ScriptedInstance { switch (type) { - case TYPE_LORD_COBRAHN:Encounter[0] = data;break; - case TYPE_LORD_PYTHAS:Encounter[1] = data;break; - case TYPE_LADY_ANACONDRA:Encounter[2] = data;break; - case TYPE_LORD_SERPENTIS:Encounter[3] = data;break; - case TYPE_NARALEX_EVENT: Encounter[4] = data;break; - case TYPE_NARALEX_PART1:Encounter[5] = data;break; - case TYPE_NARALEX_PART2: Encounter[6] = data;break; - case TYPE_NARALEX_PART3:Encounter[7] = data;break; - case TYPE_MUTANUS_THE_DEVOURER:Encounter[8] = data;break; + case TYPE_LORD_COBRAHN: Encounter[0] = data;break; + case TYPE_LORD_PYTHAS: Encounter[1] = data;break; + case TYPE_LADY_ANACONDRA: Encounter[2] = data;break; + case TYPE_LORD_SERPENTIS: Encounter[3] = data;break; + case TYPE_NARALEX_EVENT: Encounter[4] = data;break; + case TYPE_NARALEX_PART1: Encounter[5] = data;break; + case TYPE_NARALEX_PART2: Encounter[6] = data;break; + case TYPE_NARALEX_PART3: Encounter[7] = data;break; + case TYPE_MUTANUS_THE_DEVOURER: Encounter[8] = data;break; + case TYPE_NARALEX_YELLED: yelled = true; break; } if(data == DONE)SaveToDB(); } @@ -78,6 +81,7 @@ struct TRINITY_DLL_DECL instance_wailing_caverns : public ScriptedInstance case TYPE_NARALEX_PART2: return Encounter[6]; case TYPE_NARALEX_PART3: return Encounter[7]; case TYPE_MUTANUS_THE_DEVOURER: return Encounter[8]; + case TYPE_NARALEX_YELLED: return yelled; } return 0; } diff --git a/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp b/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp index d32ee0c4e85..e4244c1d857 100644 --- a/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp +++ b/src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp @@ -16,8 +16,8 @@ /* ScriptData SDName: Wailing Caverns -SD%Complete: 80 -SDComment: Need some more polishing and in the event the druids should fly away not just morph and dissapear +SD%Complete: 95 +SDComment: Need to add skill usage for Disciple of Naralex SDCategory: Wailing Caverns EndScriptData */ @@ -58,9 +58,8 @@ enum //spell SPELL_MARK_OF_THE_WILD_RANK_2 = 5232, SPELL_SERPENTINE_CLEANSING = 6270, - SPELL_NATURE_CHANNELING = 13236, SPELL_NARALEXS_AWAKENING = 6271, - SPELL_FLIGHT_FROM = 33943, + SPELL_FLIGHT_FORM = 33943, //npc entry NPC_DEVIATE_RAVAGER = 3636, NPC_DEVIATE_VIPER = 5755, @@ -172,7 +171,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI if (!pInstance) return; - if(eventTimer <= diff) + if (eventTimer <= diff) { eventTimer = 0; if (pInstance->GetData(currentEvent) == IN_PROGRESS) @@ -214,16 +213,22 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI if (eventProgress == 1) { eventProgress++; - eventTimer = 15000; + eventTimer = 4000; m_creature->SetStandState(UNIT_STAND_STATE_KNEEL); DoScriptText(SAY_EMERALD_DREAM, m_creature); + } + else + if (eventProgress == 2) + { + eventProgress++; + eventTimer = 15000; ((npc_escortAI*)m_creature->AI())->SetCanDefend(false); if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) - m_creature->CastSpell(naralex, SPELL_NATURE_CHANNELING, true); + DoCast(naralex, SPELL_NARALEXS_AWAKENING, true); DoScriptText(EMOTE_AWAKENING_RITUAL, m_creature); } else - if (eventProgress == 2) + if (eventProgress == 3) { eventProgress++; eventTimer = 15000; @@ -234,7 +239,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI m_creature->SummonCreature(NPC_DEVIATE_MOCCASIN, 128.007, 227.428, -97.421, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 15000); } else - if (eventProgress == 3) + if (eventProgress == 4) { eventProgress++; eventTimer = 30000; @@ -249,20 +254,17 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI m_creature->SummonCreature(NPC_NIGHTMARE_ECTOPLASM, 126.167, 274.759, -102.962, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 15000); } else - if (eventProgress == 4) + if (eventProgress == 5) { eventProgress++; if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) - { DoScriptText(EMOTE_HORRENDOUS_VISION, naralex); - m_creature->CastSpell(naralex, SPELL_NARALEXS_AWAKENING, false); - } m_creature->SummonCreature(NPC_MUTANUS_THE_DEVOURER, 150.872, 262.905, -103.503, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000); DoScriptText(SAY_MUTANUS_THE_DEVOURER, m_creature); pInstance->SetData(TYPE_MUTANUS_THE_DEVOURER, IN_PROGRESS); } else - if (eventProgress == 5 && pInstance->GetData(TYPE_MUTANUS_THE_DEVOURER) == DONE) + if (eventProgress == 6 && pInstance->GetData(TYPE_MUTANUS_THE_DEVOURER) == DONE) { eventProgress++; eventTimer = 3000; @@ -279,8 +281,6 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI itr->getSource()->CompletedAchievement(AchievWC); } } - if (naralex->HasAura(SPELL_NATURE_CHANNELING)) - naralex->RemoveAura(SPELL_NATURE_CHANNELING); if (m_creature->HasAura(SPELL_NARALEXS_AWAKENING)) m_creature->RemoveAura(SPELL_NARALEXS_AWAKENING); naralex->SetStandState(UNIT_STAND_STATE_STAND); @@ -289,7 +289,7 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI DoScriptText(SAY_NARALEX_AWAKES, m_creature); } else - if (eventProgress == 6) + if (eventProgress == 7) { eventProgress++; eventTimer = 6000; @@ -297,25 +297,47 @@ struct TRINITY_DLL_DECL npc_disciple_of_naralexAI : public npc_escortAI DoScriptText(SAY_THANK_YOU, naralex); } else - if (eventProgress == 7) + if (eventProgress == 8) { eventProgress++; eventTimer = 8000; if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) { DoScriptText(SAY_FAREWELL, naralex); - naralex->AddAura(SPELL_FLIGHT_FROM,naralex); + naralex->AddAura(SPELL_FLIGHT_FORM, naralex); } - m_creature->AddAura(SPELL_FLIGHT_FROM,m_creature); + SetRun(); m_creature->SetStandState(UNIT_STAND_STATE_STAND); + m_creature->AddAura(SPELL_FLIGHT_FORM, m_creature); } else - if (eventProgress == 8) + if (eventProgress == 9) + { + eventProgress++; + eventTimer = 1500; + if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) + naralex->GetMotionMaster()->MovePoint(25, naralex->GetPositionX(), naralex->GetPositionY(), naralex->GetPositionZ()); + } + else + if (eventProgress == 10) + { + eventProgress++; + eventTimer = 2500; + if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) + { + naralex->GetMotionMaster()->MovePoint(0, 117.095512, 247.107971, -96.167870); + naralex->GetMotionMaster()->MovePoint(1, 90.388809, 276.135406, -83.389801); + } + m_creature->GetMotionMaster()->MovePoint(26, 117.095512, 247.107971, -96.167870); + m_creature->GetMotionMaster()->MovePoint(27, 144.375443, 281.045837, -82.477135); + } + else + if (eventProgress == 11) { - pInstance->SetData(TYPE_NARALEX_PART3, DONE); if (Creature* naralex = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NARALEX))) naralex->SetVisibility(VISIBILITY_OFF); m_creature->SetVisibility(VISIBILITY_OFF); + pInstance->SetData(TYPE_NARALEX_PART3, DONE); } break; } @@ -346,7 +368,11 @@ bool GossipHello_npc_disciple_of_naralex(Player *player, Creature *_Creature) player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NARALEX, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); player->SEND_GOSSIP_MENU(GOSSIP_ID_START_2, _Creature->GetGUID()); - DoScriptText(SAY_AT_LAST, _Creature); + if (!pInstance->GetData(TYPE_NARALEX_YELLED)) + { + DoScriptText(SAY_AT_LAST, _Creature); + pInstance->SetData(TYPE_NARALEX_YELLED, 1); + } } else { @@ -366,6 +392,9 @@ bool GossipSelect_npc_disciple_of_naralex(Player *player, Creature *_Creature, u DoScriptText(SAY_MAKE_PREPARATIONS, _Creature); + _Creature->setFaction(250); + _Creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); + CAST_AI(npc_escortAI, (_Creature->AI()))->Start(false, true, false, player->GetGUID()); CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtFar(false); CAST_AI(npc_escortAI, (_Creature->AI()))->SetDespawnAtEnd(false); |