mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Gundrak: Implement Eck the Ferocious spawning
Based on pivonroll's code but rewrited from scratch --HG-- branch : trunk
This commit is contained in:
@@ -20,6 +20,9 @@ enum Spells
|
||||
SPELL_ECK_SPRING_1 = 55815, //Eck leaps at a distant target. --> Drops aggro and charges a random player. Tank can simply taunt him back.
|
||||
SPELL_ECK_SPRING_2 = 55837 //Eck leaps at a distant target.
|
||||
};
|
||||
|
||||
static Position EckSpawnPoint = { 1643.877930, 936.278015, 107.204948, 0.668432 };
|
||||
|
||||
struct boss_eckAI : public ScriptedAI
|
||||
{
|
||||
boss_eckAI(Creature *c) : ScriptedAI(c)
|
||||
@@ -117,6 +120,31 @@ CreatureAI* GetAI_boss_eck(Creature* pCreature)
|
||||
return new boss_eckAI (pCreature);
|
||||
}
|
||||
|
||||
struct npc_ruins_dwellerAI : public ScriptedAI
|
||||
{
|
||||
npc_ruins_dwellerAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
|
||||
void JustDied(Unit *who)
|
||||
{
|
||||
if(pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_RUIN_DIED_DWELLER,m_creature->GetGUID());
|
||||
if (pInstance->GetData(DATA_RUIN_DIED_DWELLER) == 0)
|
||||
m_creature->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILISECONDS);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_npc_ruins_dweller(Creature* pCreature)
|
||||
{
|
||||
return new npc_ruins_dwellerAI (pCreature);
|
||||
}
|
||||
|
||||
void AddSC_boss_eck()
|
||||
{
|
||||
Script *newscript;
|
||||
@@ -125,4 +153,9 @@ void AddSC_boss_eck()
|
||||
newscript->Name = "boss_eck";
|
||||
newscript->GetAI = &GetAI_boss_eck;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "npc_ruins_dweller";
|
||||
newscript->GetAI = &GetAI_npc_ruins_dweller;
|
||||
newscript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ enum Data
|
||||
DATA_MOORABI_EVENT,
|
||||
DATA_DRAKKARI_COLOSSUS_EVENT,
|
||||
DATA_GAL_DARAH_EVENT,
|
||||
DATA_ECK_THE_FEROCIOUS_EVENT
|
||||
DATA_ECK_THE_FEROCIOUS_EVENT,
|
||||
DATA_RUIN_DIED_DWELLER
|
||||
};
|
||||
|
||||
enum Data64
|
||||
@@ -21,4 +22,14 @@ enum Data64
|
||||
DATA_DRAKKARI_COLOSSUS
|
||||
};
|
||||
|
||||
enum mainCreatures
|
||||
{
|
||||
CREATURE_RUIN_DWELLER = 29920,
|
||||
CREATURE_SLAD_RAN = 29304,
|
||||
CREATURE_MOORABI = 29305,
|
||||
CREATURE_GALDARAH = 29306,
|
||||
CREATURE_DRAKKARICOLOSSUS = 29307,
|
||||
CREATURE_ECK = 29932
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -55,6 +55,8 @@ struct instance_gundrak : public ScriptedInstance
|
||||
GOState uiBridgeState;
|
||||
GOState uiCollisionState;
|
||||
|
||||
std::set<uint64> DwellerGUIDs;
|
||||
|
||||
std::string str_data;
|
||||
|
||||
void Initialize()
|
||||
@@ -95,6 +97,8 @@ struct instance_gundrak : public ScriptedInstance
|
||||
uiBridgeState = GO_STATE_ACTIVE;
|
||||
uiCollisionState = GO_STATE_READY;
|
||||
|
||||
DwellerGUIDs.clear();
|
||||
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
}
|
||||
|
||||
@@ -110,11 +114,12 @@ struct instance_gundrak : public ScriptedInstance
|
||||
{
|
||||
switch(pCreature->GetEntry())
|
||||
{
|
||||
case 29304: uiSladRan = pCreature->GetGUID(); break;
|
||||
case 29305: uiMoorabi = pCreature->GetGUID(); break;
|
||||
case 29306: uiGalDarah = pCreature->GetGUID(); break;
|
||||
case 29307: uiDrakkariColossus = pCreature->GetGUID(); break;
|
||||
case 29932: uiEckTheFerocious = pCreature->GetGUID(); break;
|
||||
case CREATURE_SLAD_RAN: uiSladRan = pCreature->GetGUID(); break;
|
||||
case CREATURE_MOORABI: uiMoorabi = pCreature->GetGUID(); break;
|
||||
case CREATURE_GALDARAH: uiGalDarah = pCreature->GetGUID(); break;
|
||||
case CREATURE_DRAKKARICOLOSSUS: uiDrakkariColossus = pCreature->GetGUID(); break;
|
||||
case CREATURE_ECK: uiEckTheFerocious = pCreature->GetGUID(); break;
|
||||
case CREATURE_RUIN_DWELLER: DwellerGUIDs.insert(pCreature->GetGUID()); break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,6 +268,9 @@ struct instance_gundrak : public ScriptedInstance
|
||||
if (bHeroicMode && data == DONE)
|
||||
HandleGameObject(uiEckTheFerociousDoorBehind,true);
|
||||
break;
|
||||
case DATA_RUIN_DIED_DWELLER:
|
||||
DwellerGUIDs.erase(data);
|
||||
break;
|
||||
}
|
||||
|
||||
if (data == DONE)
|
||||
@@ -278,6 +286,7 @@ struct instance_gundrak : public ScriptedInstance
|
||||
case DATA_GAL_DARAH_EVENT: return m_auiEncounter[2];
|
||||
case DATA_DRAKKARI_COLOSSUS_EVENT: return m_auiEncounter[3];
|
||||
case DATA_ECK_THE_FEROCIOUS_EVENT: return m_auiEncounter[4];
|
||||
case DATA_RUIN_DIED_DWELLER: return DwellerGUIDs.size();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user