aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/northrend/zuldrak.cpp107
1 files changed, 104 insertions, 3 deletions
diff --git a/src/bindings/scripts/scripts/northrend/zuldrak.cpp b/src/bindings/scripts/scripts/northrend/zuldrak.cpp
index 9004f540c77..3fcbdeb3370 100644
--- a/src/bindings/scripts/scripts/northrend/zuldrak.cpp
+++ b/src/bindings/scripts/scripts/northrend/zuldrak.cpp
@@ -215,14 +215,16 @@ enum eGurgthock
{
QUEST_AMPHITHEATER_ANGUISH_TUSKARRMAGEDDON = 12935,
QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER = 12936,
+ QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_2 = 12954,
+ QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_1 = 12932,
NPC_ORINOKO_TUSKBREAKER = 30020,
NPC_KORRAK_BLOODRAGER = 30023,
+ NPC_YGGDRAS = 30014,
SAY_QUEST_ACCEPT_TUSKARRMAGEDON = -1571031,
SAY_QUEST_ACCEPT_KORRAK_1 = -1571033,
SAY_QUEST_ACCEPT_KORRAK_2 = -1571034,
-
};
struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
@@ -249,6 +251,7 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
uiTimer = 0;
uiPhase = 0;
+ uiQuest = 0;
uiRemoveFlagTimer = 5000;
bEventInProgress = false;
bRemoveFlag = false;
@@ -269,7 +272,6 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
if (pTemp)
pTemp->RemoveFromWorld();
}
-
SummonList.clear();
}
@@ -300,7 +302,7 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
uiQuest = 0;
}
break;
- case 2:
+ case 2:
if (!bEventInProgress)
{
bEventInProgress = true;
@@ -311,6 +313,16 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
uiQuest = 0;
}
break;
+ case 3:
+ if (!bEventInProgress)
+ {
+ bEventInProgress = true;
+ bRemoveFlag = true;
+ uiPhase = 6;
+ uiTimer = 3000;
+ uiQuest = 0;
+ }
+ break;
}
if (uiPhase)
@@ -347,6 +359,10 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI
uiPhase = 0;
pSummon = NULL;
break;
+ case 6:
+ m_creature->SummonCreature(NPC_YGGDRAS, 5762.054199, -2954.385010, 273.826955, 5.108289, TEMPSUMMON_CORPSE_DESPAWN, 1000);
+ uiPhase = 0;
+ break;
}
} else uiTimer -= uiDiff;
}
@@ -376,6 +392,10 @@ bool QuestAccept_npc_gurgthock(Player* pPlayer, Creature* pCreature, Quest const
case QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER:
CAST_AI(npc_gurgthockAI, pCreature->AI())->uiQuest = 2;
break;
+ case QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_2:
+ case QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_1:
+ CAST_AI(npc_gurgthockAI, pCreature->AI())->uiQuest = 3;
+ break;
}
return false;
}
@@ -650,6 +670,82 @@ CreatureAI* GetAI_npc_korrak_bloodrager(Creature* pCreature)
return new npc_korrak_bloodragerAI(pCreature);
}
+/*####
+## npc_yggdras
+####*/
+
+enum eYggdras
+{
+ SPELL_CLEAVE = 40504,
+ SPELL_CORRODE_FLESH = 57076,
+ SPELL_JORMUNGAR_SPAWN = 55859
+};
+
+struct TRINITY_DLL_DECL npc_yggdrasAI : public ScriptedAI
+{
+ npc_yggdrasAI(Creature* pCreature) : ScriptedAI(pCreature)
+ {
+ uiCleaveTimer = 12000;
+ uiCorrodeFleshTimer = 18000;
+ }
+
+ uint32 uiCleaveTimer;
+ uint32 uiCorrodeFleshTimer;
+
+ void EnterEvadeMode() //If you lose the combat, then the npc go away
+ {
+ if (m_creature->isSummon())
+ if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
+ CAST_AI(npc_gurgthockAI,CAST_CRE(pSummoner)->AI())->RemoveSummons();
+ }
+
+ void EnterCombat(Unit* pWho)
+ {
+ DoCast(m_creature, SPELL_GROW);
+ }
+
+ void UpdateAI(const uint32 uiDiff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (uiCleaveTimer <= uiDiff)
+ {
+ DoCast(m_creature->getVictim(), SPELL_CLEAVE);
+ uiCleaveTimer = 12000;
+ } else uiCleaveTimer -= uiDiff;
+
+ if (uiCorrodeFleshTimer <= uiDiff)
+ {
+ DoCast(m_creature->getVictim(), SPELL_CHARGE);
+ uiCorrodeFleshTimer = 18000;
+ } else uiCorrodeFleshTimer -= uiDiff;
+
+ DoMeleeAttackIfReady();
+ }
+
+ void JustDied(Unit* pKiller)
+ {
+ if (pKiller->GetTypeId() == TYPEID_PLAYER)
+ {
+ CAST_PLR(pKiller)->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_1, CAST_PLR(pKiller));
+ CAST_PLR(pKiller)->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_2, CAST_PLR(pKiller));
+ }
+
+ for (uint8 i = 0; i < 2; ++i)
+ DoCast(pKiller, SPELL_JORMUNGAR_SPAWN, true);
+
+ if (m_creature->isSummon())
+ if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
+ CAST_AI(npc_gurgthockAI,CAST_CRE(pSummoner)->AI())->bEventInProgress = false;
+ }
+};
+
+CreatureAI* GetAI_npc_yggdras(Creature* pCreature)
+{
+ return new npc_yggdrasAI(pCreature);
+}
+
void AddSC_zuldrak()
{
Script *newscript;
@@ -685,4 +781,9 @@ void AddSC_zuldrak()
newscript->Name = "npc_korrak_bloodrager";
newscript->GetAI = &GetAI_npc_korrak_bloodrager;
newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name = "npc_yggdras";
+ newscript->GetAI = &GetAI_npc_yggdras;
+ newscript->RegisterSelf();
}