aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/ScriptMgr.cpp2
-rw-r--r--src/bindings/scripts/scripts/zone/wailing_caverns/def_wailing_caverns.h1
-rw-r--r--src/bindings/scripts/scripts/zone/wailing_caverns/instance_wailing_caverns.cpp26
-rw-r--r--src/bindings/scripts/scripts/zone/wailing_caverns/wailing_caverns.cpp75
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);