Scripts/Serpentshrine Cavern: Fixed "The Lurker Above" achievement and removed hacks for the event
--HG-- branch : trunk
This commit is contained in:
@@ -1040,6 +1040,14 @@ void GameObject::Use(Unit* user)
|
||||
uint32 spellId = 0;
|
||||
bool triggered = false;
|
||||
|
||||
if (Player* playerUser = user->ToPlayer())
|
||||
{
|
||||
if (sScriptMgr->OnGossipHello(playerUser, this))
|
||||
return;
|
||||
|
||||
AI()->GossipHello(playerUser);
|
||||
}
|
||||
|
||||
switch(GetGoType())
|
||||
{
|
||||
case GAMEOBJECT_TYPE_DOOR: //0
|
||||
@@ -1238,15 +1246,14 @@ void GameObject::Use(Unit* user)
|
||||
//fishing bobber
|
||||
case GAMEOBJECT_TYPE_FISHINGNODE: //17
|
||||
{
|
||||
if (user->GetTypeId() != TYPEID_PLAYER)
|
||||
Player* player = user->ToPlayer();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
Player* player = (Player*)user;
|
||||
|
||||
if (player->GetGUID() != GetOwnerGUID())
|
||||
return;
|
||||
|
||||
switch(getLootState())
|
||||
switch (getLootState())
|
||||
{
|
||||
case GO_READY: // ready for loot
|
||||
{
|
||||
|
||||
@@ -294,11 +294,6 @@ void WorldSession::HandleGameObjectUseOpcode(WorldPacket & recv_data)
|
||||
if (!obj)
|
||||
return;
|
||||
|
||||
if (sScriptMgr->OnGossipHello(_player, obj))
|
||||
return;
|
||||
|
||||
obj->AI()->GossipHello(_player);
|
||||
|
||||
obj->Use(_player);
|
||||
}
|
||||
|
||||
|
||||
@@ -2631,12 +2631,19 @@ void Spell::EffectEnergizePct(SpellEffIndex effIndex)
|
||||
|
||||
void Spell::SendLoot(uint64 guid, LootType loottype)
|
||||
{
|
||||
Player* player = (Player*)m_caster;
|
||||
Player* player = m_caster->ToPlayer();
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
if (gameObjTarget)
|
||||
{
|
||||
// special case, already has GossipHello inside so return and avoid calling twice
|
||||
if (gameObjTarget->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
|
||||
{
|
||||
gameObjTarget->Use(m_caster);
|
||||
return;
|
||||
}
|
||||
|
||||
if (sScriptMgr->OnGossipHello(player, gameObjTarget))
|
||||
return;
|
||||
|
||||
@@ -2662,10 +2669,6 @@ void Spell::SendLoot(uint64 guid, LootType loottype)
|
||||
gameObjTarget->TriggeringLinkedGameObject(trapEntry,m_caster);
|
||||
return;
|
||||
|
||||
case GAMEOBJECT_TYPE_GOOBER:
|
||||
gameObjTarget->Use(m_caster);
|
||||
return;
|
||||
|
||||
case GAMEOBJECT_TYPE_CHEST:
|
||||
// TODO: possible must be moved to loot release (in different from linked triggering)
|
||||
if (gameObjTarget->GetGOInfo()->chest.eventId)
|
||||
|
||||
@@ -149,7 +149,10 @@ public:
|
||||
void JustDied(Unit* /*Killer*/)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_THELURKERBELOWEVENT, DONE);
|
||||
pInstance->SetData(DATA_STRANGE_POOL, IN_PROGRESS);
|
||||
}
|
||||
|
||||
Summons.DespawnAll();
|
||||
}
|
||||
@@ -193,22 +196,27 @@ public:
|
||||
Submerged = false;
|
||||
WaitTimer2 = 500;
|
||||
}
|
||||
|
||||
if (!Submerged && WaitTimer2 <= diff)//wait 500ms before emerge anim
|
||||
{
|
||||
me->RemoveAllAuras();
|
||||
me->RemoveFlag(UNIT_NPC_EMOTESTATE,EMOTE_STATE_SUBMERGED);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
DoCast(me, SPELL_EMERGE, false);
|
||||
WaitTimer2 = 60000;//never reached
|
||||
WaitTimer = 3000;
|
||||
} else WaitTimer2 -= diff;
|
||||
}
|
||||
else
|
||||
WaitTimer2 -= diff;
|
||||
|
||||
if (WaitTimer <= diff)//wait 3secs for emerge anim, then attack
|
||||
{
|
||||
WaitTimer = 3000;
|
||||
CanStartEvent=true;//fresh fished from pool
|
||||
CanStartEvent = true;//fresh fished from pool
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
} else WaitTimer -= diff;
|
||||
}
|
||||
else
|
||||
WaitTimer -= diff;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -458,9 +466,33 @@ public:
|
||||
|
||||
};
|
||||
|
||||
class go_strange_pool : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
go_strange_pool() : GameObjectScript("go_strange_pool") {}
|
||||
|
||||
bool OnGossipHello(Player* player, GameObject* go)
|
||||
{
|
||||
// 25%
|
||||
if (InstanceScript* instanceScript = go->GetInstanceScript())
|
||||
if (!urand(0, 3))
|
||||
{
|
||||
if (instanceScript->GetData(DATA_STRANGE_POOL) == NOT_STARTED)
|
||||
{
|
||||
go->CastSpell(player, 54587);
|
||||
instanceScript->SetData(DATA_STRANGE_POOL, IN_PROGRESS);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_the_lurker_below()
|
||||
{
|
||||
new boss_the_lurker_below();
|
||||
new mob_coilfang_guardian();
|
||||
new mob_coilfang_ambusher();
|
||||
new go_strange_pool();
|
||||
}
|
||||
|
||||
+165
-121
@@ -49,7 +49,7 @@ EndScriptData */
|
||||
|
||||
class go_bridge_console : public GameObjectScript
|
||||
{
|
||||
public:
|
||||
public:
|
||||
go_bridge_console() : GameObjectScript("go_bridge_console") { }
|
||||
|
||||
bool OnGossipHello(Player* /*pPlayer*/, GameObject* go)
|
||||
@@ -64,46 +64,19 @@ public:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class instance_serpent_shrine : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
public:
|
||||
instance_serpent_shrine() : InstanceMapScript("instance_serpent_shrine", 548) { }
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* pMap) const
|
||||
{
|
||||
return new instance_serpentshrine_cavern_InstanceMapScript(pMap);
|
||||
}
|
||||
|
||||
struct instance_serpentshrine_cavern_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_serpentshrine_cavern_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
||||
|
||||
uint64 LurkerBelow;
|
||||
uint64 Sharkkis;
|
||||
uint64 Tidalvess;
|
||||
uint64 Caribdis;
|
||||
uint64 LadyVashj;
|
||||
uint64 Karathress;
|
||||
uint64 KarathressEvent_Starter;
|
||||
uint64 LeotherasTheBlind;
|
||||
uint64 LeotherasEventStarter;
|
||||
|
||||
uint64 ControlConsole;
|
||||
uint64 BridgePart[3];
|
||||
uint32 StrangePool;
|
||||
uint32 FishingTimer;
|
||||
uint32 LurkerSubEvent;
|
||||
uint32 WaterCheckTimer;
|
||||
uint32 FrenzySpawnTimer;
|
||||
uint32 Water;
|
||||
uint32 TrashCount;
|
||||
|
||||
bool ShieldGeneratorDeactivated[4];
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
bool DoSpawnFrenzy;
|
||||
instance_serpentshrine_cavern_InstanceMapScript(Map* pMap) : InstanceScript(pMap)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
@@ -131,7 +104,6 @@ public:
|
||||
ShieldGeneratorDeactivated[2] = false;
|
||||
ShieldGeneratorDeactivated[3] = false;
|
||||
FishingTimer = 1000;
|
||||
LurkerSubEvent = 0;
|
||||
WaterCheckTimer = 500;
|
||||
FrenzySpawnTimer = 2000;
|
||||
DoSpawnFrenzy = false;
|
||||
@@ -142,22 +114,14 @@ public:
|
||||
bool IsEncounterInProgress() const
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS) return true;
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Update (uint32 diff)
|
||||
void Update(uint32 diff)
|
||||
{
|
||||
//Lurker Fishing event
|
||||
if (LurkerSubEvent == LURKER_FISHING)
|
||||
{
|
||||
if (FishingTimer <= diff)
|
||||
{
|
||||
LurkerSubEvent = LURKER_HOOKED;
|
||||
SetData(DATA_STRANGE_POOL, IN_PROGRESS);//just fished, signal Lurker script to emerge and start fight, we use IN_PROGRESS so it won't get saved and lurker will be alway invis at start if server restarted
|
||||
} else FishingTimer -= diff;
|
||||
}
|
||||
//Water checks
|
||||
if (WaterCheckTimer <= diff)
|
||||
{
|
||||
@@ -202,63 +166,71 @@ public:
|
||||
|
||||
}
|
||||
WaterCheckTimer = 500;//remove stress from core
|
||||
} else WaterCheckTimer -= diff;
|
||||
}
|
||||
else
|
||||
WaterCheckTimer -= diff;
|
||||
|
||||
if (FrenzySpawnTimer <= diff)
|
||||
{
|
||||
DoSpawnFrenzy = true;
|
||||
FrenzySpawnTimer = 2000;
|
||||
} else FrenzySpawnTimer -= diff;
|
||||
}
|
||||
else
|
||||
FrenzySpawnTimer -= diff;
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go)
|
||||
{
|
||||
switch(go->GetEntry())
|
||||
switch (go->GetEntry())
|
||||
{
|
||||
case 184568:
|
||||
ControlConsole = go->GetGUID();
|
||||
go->setActive(true);
|
||||
break;
|
||||
|
||||
case 184203:
|
||||
BridgePart[0] = go->GetGUID();
|
||||
go->setActive(true);
|
||||
break;
|
||||
|
||||
case 184204:
|
||||
BridgePart[1] = go->GetGUID();
|
||||
go->setActive(true);
|
||||
break;
|
||||
|
||||
case 184205:
|
||||
BridgePart[2] = go->GetGUID();
|
||||
go->setActive(true);
|
||||
break;
|
||||
case GAMEOBJECT_FISHINGNODE_ENTRY://no way checking if fish is hooked, so we create a timed event
|
||||
if (LurkerSubEvent == LURKER_NOT_STARTED)
|
||||
{
|
||||
FishingTimer = 10000+rand()%30000;//random time before lurker emerges
|
||||
LurkerSubEvent = LURKER_FISHING;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature)
|
||||
{
|
||||
switch(creature->GetEntry())
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case 21212: LadyVashj = creature->GetGUID(); break;
|
||||
case 21214: Karathress = creature->GetGUID(); break;
|
||||
case 21966: Sharkkis = creature->GetGUID(); break;
|
||||
case 21217: LurkerBelow = creature->GetGUID(); break;
|
||||
case 21965: Tidalvess = creature->GetGUID(); break;
|
||||
case 21964: Caribdis = creature->GetGUID(); break;
|
||||
case 21215: LeotherasTheBlind = creature->GetGUID(); break;
|
||||
/*case TRASHMOB_COILFANG_PRIESTESS:
|
||||
case TRASHMOB_COILFANG_SHATTERER:
|
||||
if (creature->isAlive())
|
||||
++TrashCount;
|
||||
break;*/
|
||||
case 21212:
|
||||
LadyVashj = creature->GetGUID();
|
||||
break;
|
||||
case 21214:
|
||||
Karathress = creature->GetGUID();
|
||||
break;
|
||||
case 21966:
|
||||
Sharkkis = creature->GetGUID();
|
||||
break;
|
||||
case 21217:
|
||||
LurkerBelow = creature->GetGUID();
|
||||
break;
|
||||
case 21965:
|
||||
Tidalvess = creature->GetGUID();
|
||||
break;
|
||||
case 21964:
|
||||
Caribdis = creature->GetGUID();
|
||||
break;
|
||||
case 21215:
|
||||
LeotherasTheBlind = creature->GetGUID();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,31 +244,38 @@ public:
|
||||
|
||||
uint64 GetData64(uint32 identifier)
|
||||
{
|
||||
switch(identifier)
|
||||
switch (identifier)
|
||||
{
|
||||
case DATA_THELURKERBELOW: return LurkerBelow;
|
||||
case DATA_SHARKKIS: return Sharkkis;
|
||||
case DATA_TIDALVESS: return Tidalvess;
|
||||
case DATA_CARIBDIS: return Caribdis;
|
||||
case DATA_LADYVASHJ: return LadyVashj;
|
||||
case DATA_KARATHRESS: return Karathress;
|
||||
case DATA_KARATHRESSEVENT_STARTER: return KarathressEvent_Starter;
|
||||
case DATA_LEOTHERAS: return LeotherasTheBlind;
|
||||
case DATA_LEOTHERAS_EVENT_STARTER: return LeotherasEventStarter;
|
||||
case DATA_THELURKERBELOW:
|
||||
return LurkerBelow;
|
||||
case DATA_SHARKKIS:
|
||||
return Sharkkis;
|
||||
case DATA_TIDALVESS:
|
||||
return Tidalvess;
|
||||
case DATA_CARIBDIS:
|
||||
return Caribdis;
|
||||
case DATA_LADYVASHJ:
|
||||
return LadyVashj;
|
||||
case DATA_KARATHRESS:
|
||||
return Karathress;
|
||||
case DATA_KARATHRESSEVENT_STARTER:
|
||||
return KarathressEvent_Starter;
|
||||
case DATA_LEOTHERAS:
|
||||
return LeotherasTheBlind;
|
||||
case DATA_LEOTHERAS_EVENT_STARTER:
|
||||
return LeotherasEventStarter;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
switch(type)
|
||||
switch (type)
|
||||
{
|
||||
case DATA_STRANGE_POOL:
|
||||
{
|
||||
StrangePool = data;
|
||||
if (data == NOT_STARTED)
|
||||
LurkerSubEvent = LURKER_NOT_STARTED;
|
||||
}
|
||||
break;
|
||||
case DATA_CONTROL_CONSOLE:
|
||||
if (data == DONE)
|
||||
@@ -305,20 +284,31 @@ public:
|
||||
HandleGameObject(BridgePart[0], true);
|
||||
HandleGameObject(BridgePart[0], true);
|
||||
}
|
||||
ControlConsole = data;break;
|
||||
case DATA_TRASH :
|
||||
{
|
||||
ControlConsole = data;
|
||||
break;
|
||||
case DATA_TRASH:
|
||||
if (data == 1 && TrashCount < MIN_KILLS)
|
||||
++TrashCount;//+1 died
|
||||
SaveToDB();
|
||||
break;
|
||||
}
|
||||
case DATA_WATER : Water = data;break;
|
||||
case DATA_HYDROSSTHEUNSTABLEEVENT: m_auiEncounter[0] = data; break;
|
||||
case DATA_LEOTHERASTHEBLINDEVENT: m_auiEncounter[1] = data; break;
|
||||
case DATA_THELURKERBELOWEVENT: m_auiEncounter[2] = data; break;
|
||||
case DATA_KARATHRESSEVENT: m_auiEncounter[3] = data; break;
|
||||
case DATA_MOROGRIMTIDEWALKEREVENT: m_auiEncounter[4] = data; break;
|
||||
case DATA_WATER:
|
||||
Water = data;
|
||||
break;
|
||||
case DATA_HYDROSSTHEUNSTABLEEVENT:
|
||||
m_auiEncounter[0] = data;
|
||||
break;
|
||||
case DATA_LEOTHERASTHEBLINDEVENT:
|
||||
m_auiEncounter[1] = data;
|
||||
break;
|
||||
case DATA_THELURKERBELOWEVENT:
|
||||
m_auiEncounter[2] = data;
|
||||
break;
|
||||
case DATA_KARATHRESSEVENT:
|
||||
m_auiEncounter[3] = data;
|
||||
break;
|
||||
case DATA_MOROGRIMTIDEWALKEREVENT:
|
||||
m_auiEncounter[4] = data;
|
||||
break;
|
||||
//Lady Vashj
|
||||
case DATA_LADYVASHJEVENT:
|
||||
if (data == NOT_STARTED)
|
||||
@@ -328,11 +318,22 @@ public:
|
||||
ShieldGeneratorDeactivated[2] = false;
|
||||
ShieldGeneratorDeactivated[3] = false;
|
||||
}
|
||||
m_auiEncounter[5] = data; break;
|
||||
case DATA_SHIELDGENERATOR1:ShieldGeneratorDeactivated[0] = (data) ? true : false; break;
|
||||
case DATA_SHIELDGENERATOR2:ShieldGeneratorDeactivated[1] = (data) ? true : false; break;
|
||||
case DATA_SHIELDGENERATOR3:ShieldGeneratorDeactivated[2] = (data) ? true : false; break;
|
||||
case DATA_SHIELDGENERATOR4:ShieldGeneratorDeactivated[3] = (data) ? true : false; break;
|
||||
m_auiEncounter[5] = data;
|
||||
break;
|
||||
case DATA_SHIELDGENERATOR1:
|
||||
ShieldGeneratorDeactivated[0] = data != 0;
|
||||
break;
|
||||
case DATA_SHIELDGENERATOR2:
|
||||
ShieldGeneratorDeactivated[1] = data != 0;
|
||||
break;
|
||||
case DATA_SHIELDGENERATOR3:
|
||||
ShieldGeneratorDeactivated[2] = data != 0;
|
||||
break;
|
||||
case DATA_SHIELDGENERATOR4:
|
||||
ShieldGeneratorDeactivated[3] = data != 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (data == DONE)
|
||||
@@ -341,40 +342,52 @@ public:
|
||||
|
||||
uint32 GetData(uint32 type)
|
||||
{
|
||||
switch(type)
|
||||
switch (type)
|
||||
{
|
||||
case DATA_HYDROSSTHEUNSTABLEEVENT: return m_auiEncounter[0];
|
||||
case DATA_LEOTHERASTHEBLINDEVENT: return m_auiEncounter[1];
|
||||
case DATA_THELURKERBELOWEVENT: return m_auiEncounter[2];
|
||||
case DATA_KARATHRESSEVENT: return m_auiEncounter[3];
|
||||
case DATA_MOROGRIMTIDEWALKEREVENT: return m_auiEncounter[4];
|
||||
case DATA_HYDROSSTHEUNSTABLEEVENT:
|
||||
return m_auiEncounter[0];
|
||||
case DATA_LEOTHERASTHEBLINDEVENT:
|
||||
return m_auiEncounter[1];
|
||||
case DATA_THELURKERBELOWEVENT:
|
||||
return m_auiEncounter[2];
|
||||
case DATA_KARATHRESSEVENT:
|
||||
return m_auiEncounter[3];
|
||||
case DATA_MOROGRIMTIDEWALKEREVENT:
|
||||
return m_auiEncounter[4];
|
||||
//Lady Vashj
|
||||
case DATA_LADYVASHJEVENT: return m_auiEncounter[5];
|
||||
case DATA_SHIELDGENERATOR1: return ShieldGeneratorDeactivated[0];
|
||||
case DATA_SHIELDGENERATOR2: return ShieldGeneratorDeactivated[1];
|
||||
case DATA_SHIELDGENERATOR3: return ShieldGeneratorDeactivated[2];
|
||||
case DATA_SHIELDGENERATOR4: return ShieldGeneratorDeactivated[3];
|
||||
case DATA_LADYVASHJEVENT:
|
||||
return m_auiEncounter[5];
|
||||
case DATA_SHIELDGENERATOR1:
|
||||
return ShieldGeneratorDeactivated[0];
|
||||
case DATA_SHIELDGENERATOR2:
|
||||
return ShieldGeneratorDeactivated[1];
|
||||
case DATA_SHIELDGENERATOR3:
|
||||
return ShieldGeneratorDeactivated[2];
|
||||
case DATA_SHIELDGENERATOR4:
|
||||
return ShieldGeneratorDeactivated[3];
|
||||
case DATA_CANSTARTPHASE3:
|
||||
if (ShieldGeneratorDeactivated[0] && ShieldGeneratorDeactivated[1] && ShieldGeneratorDeactivated[2] && ShieldGeneratorDeactivated[3])return 1;break;
|
||||
case DATA_STRANGE_POOL: return StrangePool;
|
||||
case DATA_WATER: return Water;
|
||||
if (ShieldGeneratorDeactivated[0] && ShieldGeneratorDeactivated[1] && ShieldGeneratorDeactivated[2] && ShieldGeneratorDeactivated[3])
|
||||
return 1;
|
||||
break;
|
||||
case DATA_STRANGE_POOL:
|
||||
return StrangePool;
|
||||
case DATA_WATER:
|
||||
return Water;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData()
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
std::ostringstream stream;
|
||||
stream << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " "
|
||||
<< m_auiEncounter[3] << " " << m_auiEncounter[4] << " " << m_auiEncounter[5] << " " << TrashCount;
|
||||
char* out = new char[stream.str().length() + 1];
|
||||
strcpy(out, stream.str().c_str());
|
||||
if (out)
|
||||
{
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return out;
|
||||
}
|
||||
return NULL;
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
void Load(const char* in)
|
||||
@@ -384,17 +397,48 @@ public:
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
std::istringstream stream(in);
|
||||
stream >> m_auiEncounter[0] >> m_auiEncounter[1] >> m_auiEncounter[2] >> m_auiEncounter[3]
|
||||
>> m_auiEncounter[4] >> m_auiEncounter[5] >> TrashCount;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS) // Do not load an encounter as "In Progress" - reset it instead.
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 LurkerBelow;
|
||||
uint64 Sharkkis;
|
||||
uint64 Tidalvess;
|
||||
uint64 Caribdis;
|
||||
uint64 LadyVashj;
|
||||
uint64 Karathress;
|
||||
uint64 KarathressEvent_Starter;
|
||||
uint64 LeotherasTheBlind;
|
||||
uint64 LeotherasEventStarter;
|
||||
|
||||
uint64 ControlConsole;
|
||||
uint64 BridgePart[3];
|
||||
uint32 StrangePool;
|
||||
uint32 FishingTimer;
|
||||
uint32 WaterCheckTimer;
|
||||
uint32 FrenzySpawnTimer;
|
||||
uint32 Water;
|
||||
uint32 TrashCount;
|
||||
|
||||
bool ShieldGeneratorDeactivated[4];
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
bool DoSpawnFrenzy;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* pMap) const
|
||||
{
|
||||
return new instance_serpentshrine_cavern_InstanceMapScript(pMap);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -18,42 +18,42 @@
|
||||
|
||||
#ifndef DEF_SERPENT_SHRINE_H
|
||||
#define DEF_SERPENT_SHRINE_H
|
||||
enum LurkerEventState
|
||||
{
|
||||
LURKER_NOT_STARTED = 0,
|
||||
LURKER_FISHING = 1,
|
||||
LURKER_HOOKED = 2
|
||||
};
|
||||
|
||||
enum WaterEventState
|
||||
{
|
||||
WATERSTATE_NONE = 0,
|
||||
WATERSTATE_FRENZY = 1,
|
||||
WATERSTATE_SCALDING = 2
|
||||
};
|
||||
#define DATA_CANSTARTPHASE3 1
|
||||
#define DATA_CARIBDIS 2
|
||||
#define DATA_HYDROSSTHEUNSTABLEEVENT 3
|
||||
#define DATA_KARATHRESS 4
|
||||
#define DATA_KARATHRESSEVENT 5
|
||||
#define DATA_KARATHRESSEVENT_STARTER 6
|
||||
#define DATA_LADYVASHJ 7
|
||||
#define DATA_LADYVASHJEVENT 8
|
||||
#define DATA_LEOTHERASTHEBLINDEVENT 9
|
||||
#define DATA_MOROGRIMTIDEWALKEREVENT 10
|
||||
#define DATA_SHARKKIS 11
|
||||
#define DATA_SHIELDGENERATOR1 12
|
||||
#define DATA_SHIELDGENERATOR2 13
|
||||
#define DATA_SHIELDGENERATOR3 14
|
||||
#define DATA_SHIELDGENERATOR4 15
|
||||
#define DATA_THELURKERBELOW 16
|
||||
#define DATA_THELURKERBELOWEVENT 17
|
||||
#define DATA_TIDALVESS 18
|
||||
#define DATA_FATHOMLORDKARATHRESSEVENT 19
|
||||
#define DATA_LEOTHERAS 20
|
||||
#define DATA_LEOTHERAS_EVENT_STARTER 21
|
||||
#define DATA_CONTROL_CONSOLE 22
|
||||
#define DATA_STRANGE_POOL 23
|
||||
#define DATA_WATER 24
|
||||
#define DATA_TRASH 25
|
||||
|
||||
enum DataTypes
|
||||
{
|
||||
DATA_CANSTARTPHASE3 = 1,
|
||||
DATA_CARIBDIS = 2,
|
||||
DATA_HYDROSSTHEUNSTABLEEVENT = 3,
|
||||
DATA_KARATHRESS = 4,
|
||||
DATA_KARATHRESSEVENT = 5,
|
||||
DATA_KARATHRESSEVENT_STARTER = 6,
|
||||
DATA_LADYVASHJ = 7,
|
||||
DATA_LADYVASHJEVENT = 8,
|
||||
DATA_LEOTHERASTHEBLINDEVENT = 9,
|
||||
DATA_MOROGRIMTIDEWALKEREVENT = 10,
|
||||
DATA_SHARKKIS = 11,
|
||||
DATA_SHIELDGENERATOR1 = 12,
|
||||
DATA_SHIELDGENERATOR2 = 13,
|
||||
DATA_SHIELDGENERATOR3 = 14,
|
||||
DATA_SHIELDGENERATOR4 = 15,
|
||||
DATA_THELURKERBELOW = 16,
|
||||
DATA_THELURKERBELOWEVENT = 17,
|
||||
DATA_TIDALVESS = 18,
|
||||
DATA_FATHOMLORDKARATHRESSEVENT = 19,
|
||||
DATA_LEOTHERAS = 20,
|
||||
DATA_LEOTHERAS_EVENT_STARTER = 21,
|
||||
DATA_CONTROL_CONSOLE = 22,
|
||||
DATA_STRANGE_POOL = 23,
|
||||
DATA_WATER = 24,
|
||||
DATA_TRASH = 25,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user