mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
@@ -30,16 +30,19 @@ EndContentData */
|
||||
#include "ScriptPCH.h"
|
||||
#include "ScriptedSimpleAI.h"
|
||||
|
||||
#define SPELL_CONE_OF_FIRE 19630
|
||||
#define SPELL_BITE 19771
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CONE_OF_FIRE = 19630,
|
||||
SPELL_BITE = 19771,
|
||||
|
||||
//Random Debuff (each hound has only one of these)
|
||||
#define SPELL_GROUND_STOMP 19364
|
||||
#define SPELL_ANCIENT_DREAD 19365
|
||||
#define SPELL_CAUTERIZING_FLAMES 19366
|
||||
#define SPELL_WITHERING_HEAT 19367
|
||||
#define SPELL_ANCIENT_DESPAIR 19369
|
||||
#define SPELL_ANCIENT_HYSTERIA 19372
|
||||
//Random Debuff (each hound has only one of these)
|
||||
SPELL_GROUND_STOMP = 19364,
|
||||
SPELL_ANCIENT_DREAD = 19365,
|
||||
SPELL_CAUTERIZING_FLAMES = 19366,
|
||||
SPELL_WITHERING_HEAT = 19367,
|
||||
SPELL_ANCIENT_DESPAIR = 19369,
|
||||
SPELL_ANCIENT_HYSTERIA = 19372
|
||||
};
|
||||
|
||||
class mob_ancient_core_hound : public CreatureScript
|
||||
{
|
||||
@@ -75,7 +78,6 @@ public:
|
||||
|
||||
return ai;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void AddSC_molten_core()
|
||||
|
||||
@@ -43,7 +43,6 @@ public:
|
||||
player->AddAura(SPELL_BLESSING_OF_BLACKFATHOM, player);
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class go_blackfathom_fire : public GameObjectScript
|
||||
@@ -64,7 +63,6 @@ public:
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class npc_blackfathom_deeps_event : public CreatureScript
|
||||
@@ -92,9 +90,9 @@ public:
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiRavageTimer;
|
||||
uint32 uiFrostNovaTimer;
|
||||
uint32 uiFrostBoltVolleyTimer;
|
||||
uint32 ravageTimer;
|
||||
uint32 frostNovaTimer;
|
||||
uint32 frostBoltVolleyTimer;
|
||||
|
||||
bool bFlee;
|
||||
|
||||
@@ -102,9 +100,9 @@ public:
|
||||
{
|
||||
bFlee = false;
|
||||
|
||||
uiRavageTimer = urand(5000, 8000);
|
||||
uiFrostNovaTimer = urand(9000, 12000);
|
||||
uiFrostBoltVolleyTimer = urand(2000, 4000);
|
||||
ravageTimer = urand(5000, 8000);
|
||||
frostNovaTimer = urand(9000, 12000);
|
||||
frostBoltVolleyTimer = urand(2000, 4000);
|
||||
}
|
||||
|
||||
void AttackPlayer()
|
||||
@@ -131,7 +129,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
@@ -140,11 +138,11 @@ public:
|
||||
{
|
||||
case NPC_AKU_MAI_SNAPJAW:
|
||||
{
|
||||
if (uiRavageTimer <= uiDiff)
|
||||
if (ravageTimer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_RAVAGE);
|
||||
uiRavageTimer = urand(9000, 14000);
|
||||
} else uiRavageTimer -= uiDiff;
|
||||
ravageTimer = urand(9000, 14000);
|
||||
} else ravageTimer -= diff;
|
||||
break;
|
||||
}
|
||||
case NPC_MURKSHALLOW_SOFTSHELL:
|
||||
@@ -159,20 +157,23 @@ public:
|
||||
}
|
||||
case NPC_AKU_MAI_SERVANT:
|
||||
{
|
||||
if (uiFrostBoltVolleyTimer <= uiDiff)
|
||||
if (frostBoltVolleyTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
if (target)
|
||||
DoCast(target, SPELL_FROST_BOLT_VOLLEY);
|
||||
}
|
||||
uiFrostBoltVolleyTimer = urand(5000, 8000);
|
||||
} else uiFrostBoltVolleyTimer -= uiDiff;
|
||||
if (uiFrostNovaTimer <= uiDiff)
|
||||
frostBoltVolleyTimer = urand(5000, 8000);
|
||||
}
|
||||
else frostBoltVolleyTimer -= diff;
|
||||
|
||||
if (frostNovaTimer <= diff)
|
||||
{
|
||||
DoCastAOE(SPELL_FROST_NOVA, false);
|
||||
uiFrostNovaTimer = urand(25000, 30000);
|
||||
} else uiFrostNovaTimer -= uiDiff;
|
||||
frostNovaTimer = urand(25000, 30000);
|
||||
}
|
||||
else frostNovaTimer -= diff;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -187,7 +188,6 @@ public:
|
||||
instance->SetData(DATA_EVENT, instance->GetData(DATA_EVENT) + 1);
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
enum eMorridune
|
||||
@@ -201,12 +201,12 @@ class npc_morridune : public CreatureScript
|
||||
public:
|
||||
npc_morridune() : CreatureScript("npc_morridune") { }
|
||||
|
||||
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*uiSender*/, uint32 uiAction)
|
||||
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*Sender*/, uint32 action)
|
||||
{
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
switch (uiAction)
|
||||
switch (action)
|
||||
{
|
||||
case GOSSIP_ACTION_INFO_DEF+1:
|
||||
case GOSSIP_ACTION_INFO_DEF + 1:
|
||||
player->TeleportTo(1, 9952.239f, 2284.277f, 1341.394f, 1.595f);
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
break;
|
||||
@@ -216,7 +216,7 @@ public:
|
||||
|
||||
bool OnGossipHello(Player* player, Creature* creature)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MORRIDUNE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_MORRIDUNE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
|
||||
|
||||
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
|
||||
return true;
|
||||
@@ -250,7 +250,6 @@ public:
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_blackfathom_deeps()
|
||||
|
||||
@@ -36,19 +36,19 @@ public:
|
||||
|
||||
struct boss_aku_maiAI : public ScriptedAI
|
||||
{
|
||||
boss_aku_maiAI(Creature* c) : ScriptedAI(c)
|
||||
boss_aku_maiAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = c->GetInstanceScript();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
uint32 uiPoisonCloudTimer;
|
||||
uint32 poisonCloudTimer;
|
||||
bool bIsEnraged;
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiPoisonCloudTimer = urand(5000, 9000);
|
||||
poisonCloudTimer = urand(5000, 9000);
|
||||
bIsEnraged = false;
|
||||
if (instance)
|
||||
instance->SetData(TYPE_AKU_MAI, NOT_STARTED);
|
||||
@@ -71,11 +71,11 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (uiPoisonCloudTimer < diff)
|
||||
if (poisonCloudTimer < diff)
|
||||
{
|
||||
DoCastVictim(SPELL_POISON_CLOUD);
|
||||
uiPoisonCloudTimer = urand(25000, 50000);
|
||||
} else uiPoisonCloudTimer -= diff;
|
||||
poisonCloudTimer = urand(25000, 50000);
|
||||
} else poisonCloudTimer -= diff;
|
||||
|
||||
if (!bIsEnraged && HealthBelowPct(30))
|
||||
{
|
||||
@@ -86,7 +86,6 @@ public:
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_aku_mai()
|
||||
|
||||
@@ -35,18 +35,18 @@ public:
|
||||
|
||||
struct boss_gelihastAI : public ScriptedAI
|
||||
{
|
||||
boss_gelihastAI(Creature* c) : ScriptedAI(c)
|
||||
boss_gelihastAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = c->GetInstanceScript();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
uint32 uiNetTimer;
|
||||
uint32 netTimer;
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiNetTimer = urand(2000, 4000);
|
||||
netTimer = urand(2000, 4000);
|
||||
if (instance)
|
||||
instance->SetData(TYPE_GELIHAST, NOT_STARTED);
|
||||
}
|
||||
@@ -68,16 +68,15 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (uiNetTimer < diff)
|
||||
if (netTimer < diff)
|
||||
{
|
||||
DoCastVictim(SPELL_NET);
|
||||
uiNetTimer = urand(4000, 7000);
|
||||
} else uiNetTimer -= diff;
|
||||
netTimer = urand(4000, 7000);
|
||||
} else netTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_gelihast()
|
||||
|
||||
@@ -44,20 +44,20 @@ public:
|
||||
|
||||
struct boss_kelrisAI : public ScriptedAI
|
||||
{
|
||||
boss_kelrisAI(Creature* c) : ScriptedAI(c)
|
||||
boss_kelrisAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = c->GetInstanceScript();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
uint32 uiMindBlastTimer;
|
||||
uint32 uiSleepTimer;
|
||||
uint32 mindBlastTimer;
|
||||
uint32 sleepTimer;
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
uiMindBlastTimer = urand(2000, 5000);
|
||||
uiSleepTimer = urand(9000, 12000);
|
||||
mindBlastTimer = urand(2000, 5000);
|
||||
sleepTimer = urand(9000, 12000);
|
||||
if (instance)
|
||||
instance->SetData(TYPE_KELRIS, NOT_STARTED);
|
||||
}
|
||||
@@ -81,26 +81,25 @@ public:
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (uiMindBlastTimer < diff)
|
||||
if (mindBlastTimer < diff)
|
||||
{
|
||||
DoCastVictim(SPELL_MIND_BLAST);
|
||||
uiMindBlastTimer = urand(7000, 9000);
|
||||
} else uiMindBlastTimer -= diff;
|
||||
mindBlastTimer = urand(7000, 9000);
|
||||
} else mindBlastTimer -= diff;
|
||||
|
||||
if (uiSleepTimer < diff)
|
||||
if (sleepTimer < diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoScriptText(SAY_SLEEP, me);
|
||||
DoCast(target, SPELL_SLEEP);
|
||||
}
|
||||
uiSleepTimer = urand(15000, 20000);
|
||||
} else uiSleepTimer -= diff;
|
||||
sleepTimer = urand(15000, 20000);
|
||||
} else sleepTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_kelris()
|
||||
|
||||
@@ -65,33 +65,33 @@ public:
|
||||
{
|
||||
instance_blackfathom_deeps_InstanceMapScript(Map* map) : InstanceScript(map) {}
|
||||
|
||||
uint64 m_uiTwilightLordKelrisGUID;
|
||||
uint64 m_uiShrine1GUID;
|
||||
uint64 m_uiShrine2GUID;
|
||||
uint64 m_uiShrine3GUID;
|
||||
uint64 m_uiShrine4GUID;
|
||||
uint64 m_uiShrineOfGelihastGUID;
|
||||
uint64 m_uiAltarOfTheDeepsGUID;
|
||||
uint64 m_uiMainDoorGUID;
|
||||
uint64 twilightLordKelrisGUID;
|
||||
uint64 shrine1GUID;
|
||||
uint64 shrine2GUID;
|
||||
uint64 shrine3GUID;
|
||||
uint64 shrine4GUID;
|
||||
uint64 shrineOfGelihastGUID;
|
||||
uint64 altarOfTheDeepsGUID;
|
||||
uint64 mainDoorGUID;
|
||||
|
||||
uint8 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint8 m_uiCountFires;
|
||||
uint8 uiDeathTimes;
|
||||
uint8 encounter[MAX_ENCOUNTER];
|
||||
uint8 countFires;
|
||||
uint8 deathTimes;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
memset(&encounter, 0, sizeof(encounter));
|
||||
|
||||
m_uiTwilightLordKelrisGUID = 0;
|
||||
m_uiShrine1GUID = 0;
|
||||
m_uiShrine2GUID = 0;
|
||||
m_uiShrine3GUID = 0;
|
||||
m_uiShrine4GUID = 0;
|
||||
m_uiShrineOfGelihastGUID = 0;
|
||||
m_uiAltarOfTheDeepsGUID = 0;
|
||||
m_uiMainDoorGUID = 0;
|
||||
m_uiCountFires = 0;
|
||||
uiDeathTimes = 0;
|
||||
twilightLordKelrisGUID = 0;
|
||||
shrine1GUID = 0;
|
||||
shrine2GUID = 0;
|
||||
shrine3GUID = 0;
|
||||
shrine4GUID = 0;
|
||||
shrineOfGelihastGUID = 0;
|
||||
altarOfTheDeepsGUID = 0;
|
||||
mainDoorGUID = 0;
|
||||
countFires = 0;
|
||||
deathTimes = 0;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature)
|
||||
@@ -99,7 +99,7 @@ public:
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_TWILIGHT_LORD_KELRIS:
|
||||
m_uiTwilightLordKelrisGUID = creature->GetGUID();
|
||||
twilightLordKelrisGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_LORGUS_JETT:
|
||||
creature->SetHomePosition(LorgusPosition[urand(0, 3)]);
|
||||
@@ -112,150 +112,149 @@ public:
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case GO_FIRE_OF_AKU_MAI_1:
|
||||
m_uiShrine1GUID = go->GetGUID();
|
||||
shrine1GUID = go->GetGUID();
|
||||
break;
|
||||
case GO_FIRE_OF_AKU_MAI_2:
|
||||
m_uiShrine2GUID = go->GetGUID();
|
||||
shrine2GUID = go->GetGUID();
|
||||
break;
|
||||
case GO_FIRE_OF_AKU_MAI_3:
|
||||
m_uiShrine3GUID = go->GetGUID();
|
||||
shrine3GUID = go->GetGUID();
|
||||
break;
|
||||
case GO_FIRE_OF_AKU_MAI_4:
|
||||
m_uiShrine4GUID = go->GetGUID();
|
||||
shrine4GUID = go->GetGUID();
|
||||
break;
|
||||
case GO_SHRINE_OF_GELIHAST:
|
||||
m_uiShrineOfGelihastGUID = go->GetGUID();
|
||||
if (m_auiEncounter[0] != DONE)
|
||||
shrineOfGelihastGUID = go->GetGUID();
|
||||
if (encounter[0] != DONE)
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case GO_ALTAR_OF_THE_DEEPS:
|
||||
m_uiAltarOfTheDeepsGUID = go->GetGUID();
|
||||
if (m_auiEncounter[3] != DONE)
|
||||
altarOfTheDeepsGUID = go->GetGUID();
|
||||
if (encounter[3] != DONE)
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case GO_AKU_MAI_DOOR:
|
||||
if (m_auiEncounter[2] == DONE)
|
||||
if (encounter[2] == DONE)
|
||||
HandleGameObject(0, true, go);
|
||||
m_uiMainDoorGUID = go->GetGUID();
|
||||
mainDoorGUID = go->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 uiType, uint32 uiData)
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch (uiType)
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_GELIHAST:
|
||||
m_auiEncounter[0] = uiData;
|
||||
if (uiData == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(m_uiShrineOfGelihastGUID))
|
||||
encounter[0] = data;
|
||||
if (data == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(shrineOfGelihastGUID))
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case TYPE_AKU_MAI:
|
||||
m_auiEncounter[3] = uiData;
|
||||
if (uiData == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(m_uiAltarOfTheDeepsGUID))
|
||||
encounter[3] = data;
|
||||
if (data == DONE)
|
||||
if (GameObject* go = instance->GetGameObject(altarOfTheDeepsGUID))
|
||||
{
|
||||
go->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
go->SummonCreature(NPC_MORRIDUNE, SpawnsLocation[4], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
}
|
||||
break;
|
||||
case DATA_FIRE:
|
||||
m_uiCountFires = uiData;
|
||||
switch (m_uiCountFires)
|
||||
countFires = data;
|
||||
switch (countFires)
|
||||
{
|
||||
case 1:
|
||||
if (GameObject* pGO = instance->GetGameObject(m_uiShrine1GUID))
|
||||
if (GameObject* go = instance->GetGameObject(shrine1GUID))
|
||||
{
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SNAPJAW, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (GameObject* pGO = instance->GetGameObject(m_uiShrine1GUID))
|
||||
if (GameObject* go = instance->GetGameObject(shrine1GUID))
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
pGO->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_MURKSHALLOW_SOFTSHELL, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (GameObject* pGO = instance->GetGameObject(m_uiShrine1GUID))
|
||||
if (GameObject* go = instance->GetGameObject(shrine1GUID))
|
||||
{
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SERVANT, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_AKU_MAI_SERVANT, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SERVANT, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_AKU_MAI_SERVANT, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (GameObject* pGO = instance->GetGameObject(m_uiShrine1GUID))
|
||||
if (GameObject* go = instance->GetGameObject(shrine1GUID))
|
||||
{
|
||||
pGO->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
pGO->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[1], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
go->SummonCreature(NPC_BARBED_CRUSTACEAN, SpawnsLocation[3], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300000);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case DATA_EVENT:
|
||||
uiDeathTimes = uiData;
|
||||
if (uiDeathTimes == 18)
|
||||
HandleGameObject(m_uiMainDoorGUID, true);
|
||||
deathTimes = data;
|
||||
if (deathTimes == 18)
|
||||
HandleGameObject(mainDoorGUID, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 uiType)
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch (uiType)
|
||||
switch (type)
|
||||
{
|
||||
case TYPE_GELIHAST:
|
||||
return m_auiEncounter[0];
|
||||
return encounter[0];
|
||||
case TYPE_KELRIS:
|
||||
return m_auiEncounter[1];
|
||||
return encounter[1];
|
||||
case TYPE_SHRINE:
|
||||
return m_auiEncounter[2];
|
||||
return encounter[2];
|
||||
case TYPE_AKU_MAI:
|
||||
return m_auiEncounter[3];
|
||||
return encounter[3];
|
||||
case DATA_FIRE:
|
||||
return m_uiCountFires;
|
||||
return countFires;
|
||||
case DATA_EVENT:
|
||||
return uiDeathTimes;
|
||||
return deathTimes;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 uiData)
|
||||
uint64 GetData64(uint32 data)
|
||||
{
|
||||
switch (uiData)
|
||||
switch (data)
|
||||
{
|
||||
case DATA_TWILIGHT_LORD_KELRIS:
|
||||
return m_uiTwilightLordKelrisGUID;
|
||||
return twilightLordKelrisGUID;
|
||||
case DATA_SHRINE1:
|
||||
return m_uiShrine1GUID;
|
||||
return shrine1GUID;
|
||||
case DATA_SHRINE2:
|
||||
return m_uiShrine2GUID;
|
||||
return shrine2GUID;
|
||||
case DATA_SHRINE3:
|
||||
return m_uiShrine3GUID;
|
||||
return shrine3GUID;
|
||||
case DATA_SHRINE4:
|
||||
return m_uiShrine4GUID;
|
||||
return shrine4GUID;
|
||||
case DATA_SHRINE_OF_GELIHAST:
|
||||
return m_uiShrineOfGelihastGUID;
|
||||
return shrineOfGelihastGUID;
|
||||
case DATA_MAINDOOR:
|
||||
return m_uiMainDoorGUID;
|
||||
return mainDoorGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_instance_blackfathom_deeps()
|
||||
|
||||
@@ -25,9 +25,12 @@ EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SPELL_WRATH 21807
|
||||
#define SPELL_ENTANGLINGROOTS 12747
|
||||
#define SPELL_CORRUPT_FORCES 21968
|
||||
enum Spells
|
||||
{
|
||||
SPELL_WRATH = 21807,
|
||||
SPELL_ENTANGLINGROOTS = 12747,
|
||||
SPELL_CORRUPT_FORCES = 21968
|
||||
};
|
||||
|
||||
class celebras_the_cursed : public CreatureScript
|
||||
{
|
||||
@@ -41,7 +44,7 @@ public:
|
||||
|
||||
struct celebras_the_cursedAI : public ScriptedAI
|
||||
{
|
||||
celebras_the_cursedAI(Creature* c) : ScriptedAI(c) {}
|
||||
celebras_the_cursedAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 Wrath_Timer;
|
||||
uint32 EntanglingRoots_Timer;
|
||||
@@ -74,14 +77,16 @@ public:
|
||||
if (target)
|
||||
DoCast(target, SPELL_WRATH);
|
||||
Wrath_Timer = 8000;
|
||||
} else Wrath_Timer -= diff;
|
||||
}
|
||||
else Wrath_Timer -= diff;
|
||||
|
||||
//EntanglingRoots
|
||||
if (EntanglingRoots_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ENTANGLINGROOTS);
|
||||
EntanglingRoots_Timer = 20000;
|
||||
} else EntanglingRoots_Timer -= diff;
|
||||
}
|
||||
else EntanglingRoots_Timer -= diff;
|
||||
|
||||
//CorruptForces
|
||||
if (CorruptForces_Timer <= diff)
|
||||
@@ -89,12 +94,12 @@ public:
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(me, SPELL_CORRUPT_FORCES);
|
||||
CorruptForces_Timer = 20000;
|
||||
} else CorruptForces_Timer -= diff;
|
||||
}
|
||||
else CorruptForces_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_celebras_the_cursed()
|
||||
|
||||
@@ -25,9 +25,12 @@ EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SPELL_KNOCKAWAY 18670
|
||||
#define SPELL_TRAMPLE 5568
|
||||
#define SPELL_LANDSLIDE 21808
|
||||
enum Spells
|
||||
{
|
||||
SPELL_KNOCKAWAY = 18670,
|
||||
SPELL_TRAMPLE = 5568,
|
||||
SPELL_LANDSLIDE = 21808
|
||||
};
|
||||
|
||||
class boss_landslide : public CreatureScript
|
||||
{
|
||||
@@ -41,7 +44,7 @@ public:
|
||||
|
||||
struct boss_landslideAI : public ScriptedAI
|
||||
{
|
||||
boss_landslideAI(Creature* c) : ScriptedAI(c) {}
|
||||
boss_landslideAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 KnockAway_Timer;
|
||||
uint32 Trample_Timer;
|
||||
@@ -68,14 +71,16 @@ public:
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_KNOCKAWAY);
|
||||
KnockAway_Timer = 15000;
|
||||
} else KnockAway_Timer -= diff;
|
||||
}
|
||||
else KnockAway_Timer -= diff;
|
||||
|
||||
//Trample_Timer
|
||||
if (Trample_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_TRAMPLE);
|
||||
Trample_Timer = 8000;
|
||||
} else Trample_Timer -= diff;
|
||||
}
|
||||
else Trample_Timer -= diff;
|
||||
|
||||
//Landslide
|
||||
if (HealthBelowPct(50))
|
||||
@@ -85,13 +90,13 @@ public:
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(me, SPELL_LANDSLIDE);
|
||||
Landslide_Timer = 60000;
|
||||
} else Landslide_Timer -= diff;
|
||||
}
|
||||
else Landslide_Timer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_landslide()
|
||||
|
||||
@@ -24,9 +24,11 @@ SDCategory: Maraudon
|
||||
EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SPELL_TOXICVOLLEY 21687
|
||||
#define SPELL_UPPERCUT 22916
|
||||
enum Spells
|
||||
{
|
||||
SPELL_TOXICVOLLEY = 21687,
|
||||
SPELL_UPPERCUT = 22916
|
||||
};
|
||||
|
||||
class boss_noxxion : public CreatureScript
|
||||
{
|
||||
@@ -40,7 +42,7 @@ public:
|
||||
|
||||
struct boss_noxxionAI : public ScriptedAI
|
||||
{
|
||||
boss_noxxionAI(Creature* c) : ScriptedAI(c) {}
|
||||
boss_noxxionAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 ToxicVolley_Timer;
|
||||
uint32 Uppercut_Timer;
|
||||
@@ -78,7 +80,8 @@ public:
|
||||
me->SetDisplayId(11172);
|
||||
Invisible = false;
|
||||
//me->m_canMove = true;
|
||||
} else if (Invisible)
|
||||
}
|
||||
else if (Invisible)
|
||||
{
|
||||
Invisible_Timer -= diff;
|
||||
//Do nothing while invisible
|
||||
@@ -94,14 +97,16 @@ public:
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_TOXICVOLLEY);
|
||||
ToxicVolley_Timer = 9000;
|
||||
} else ToxicVolley_Timer -= diff;
|
||||
}
|
||||
else ToxicVolley_Timer -= diff;
|
||||
|
||||
//Uppercut_Timer
|
||||
if (Uppercut_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_UPPERCUT);
|
||||
Uppercut_Timer = 12000;
|
||||
} else Uppercut_Timer -= diff;
|
||||
}
|
||||
else Uppercut_Timer -= diff;
|
||||
|
||||
//Adds_Timer
|
||||
if (!Invisible && Adds_Timer <= diff)
|
||||
@@ -122,12 +127,12 @@ public:
|
||||
Invisible_Timer = 15000;
|
||||
|
||||
Adds_Timer = 40000;
|
||||
} else Adds_Timer -= diff;
|
||||
}
|
||||
else Adds_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_noxxion()
|
||||
|
||||
@@ -25,10 +25,13 @@ EndScriptData */
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
#define SPELL_DUSTFIELD 21909
|
||||
#define SPELL_BOULDER 21832
|
||||
#define SPELL_THRASH 3391
|
||||
#define SPELL_REPULSIVEGAZE 21869
|
||||
enum Spells
|
||||
{
|
||||
SPELL_DUSTFIELD = 21909,
|
||||
SPELL_BOULDER = 21832,
|
||||
SPELL_THRASH = 3391,
|
||||
SPELL_REPULSIVEGAZE = 21869
|
||||
};
|
||||
|
||||
class boss_princess_theradras : public CreatureScript
|
||||
{
|
||||
@@ -42,7 +45,7 @@ public:
|
||||
|
||||
struct boss_ptheradrasAI : public ScriptedAI
|
||||
{
|
||||
boss_ptheradrasAI(Creature* c) : ScriptedAI(c) {}
|
||||
boss_ptheradrasAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 Dustfield_Timer;
|
||||
uint32 Boulder_Timer;
|
||||
@@ -57,9 +60,7 @@ public:
|
||||
RepulsiveGaze_Timer = 23000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
}
|
||||
void EnterCombat(Unit* /*who*/) {}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
@@ -76,7 +77,8 @@ public:
|
||||
{
|
||||
DoCast(me, SPELL_DUSTFIELD);
|
||||
Dustfield_Timer = 14000;
|
||||
} else Dustfield_Timer -= diff;
|
||||
}
|
||||
else Dustfield_Timer -= diff;
|
||||
|
||||
//Boulder_Timer
|
||||
if (Boulder_Timer <= diff)
|
||||
@@ -86,26 +88,28 @@ public:
|
||||
if (target)
|
||||
DoCast(target, SPELL_BOULDER);
|
||||
Boulder_Timer = 10000;
|
||||
} else Boulder_Timer -= diff;
|
||||
}
|
||||
else Boulder_Timer -= diff;
|
||||
|
||||
//RepulsiveGaze_Timer
|
||||
if (RepulsiveGaze_Timer <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_REPULSIVEGAZE);
|
||||
RepulsiveGaze_Timer = 20000;
|
||||
} else RepulsiveGaze_Timer -= diff;
|
||||
}
|
||||
else RepulsiveGaze_Timer -= diff;
|
||||
|
||||
//Thrash_Timer
|
||||
if (Thrash_Timer <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_THRASH);
|
||||
Thrash_Timer = 18000;
|
||||
} else Thrash_Timer -= diff;
|
||||
}
|
||||
else Thrash_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_ptheradras()
|
||||
|
||||
Reference in New Issue
Block a user