*Stratholme update
*added basic instance save *handle Baron's doors *Rammstein's adds will move to players --HG-- branch : trunk
This commit is contained in:
@@ -98,12 +98,15 @@ struct TRINITY_DLL_DECL boss_baron_rivendareAI : public ScriptedAI
|
|||||||
MortalStrike_Timer = 12000;
|
MortalStrike_Timer = 12000;
|
||||||
// RaiseDead_Timer = 30000;
|
// RaiseDead_Timer = 30000;
|
||||||
SummonSkeletons_Timer = 34000;
|
SummonSkeletons_Timer = 34000;
|
||||||
|
if (pInstance && pInstance->GetData(TYPE_RAMSTEIN) == DONE)
|
||||||
|
pInstance->SetData(TYPE_BARON,NOT_STARTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit *who)
|
void AttackStart(Unit* who)
|
||||||
{
|
{
|
||||||
if (pInstance)
|
if (pInstance)//can't use entercombat(), boss' dmg aura sets near players in combat, before entering the room's door
|
||||||
pInstance->SetData(TYPE_BARON,IN_PROGRESS);
|
pInstance->SetData(TYPE_BARON,IN_PROGRESS);
|
||||||
|
ScriptedAI::AttackStart(who);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summoned)
|
void JustSummoned(Creature* summoned)
|
||||||
|
|||||||
@@ -54,7 +54,10 @@ struct TRINITY_DLL_DECL boss_ramstein_the_gorgerAI : public ScriptedAI
|
|||||||
void JustDied(Unit* Killer)
|
void JustDied(Unit* Killer)
|
||||||
{
|
{
|
||||||
for(uint8 i = 0; i < 30; i++)
|
for(uint8 i = 0; i < 30; i++)
|
||||||
m_creature->SummonCreature(C_MINDLESS_UNDEAD,3969.35,-3391.87,119.11,5.91,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000);
|
{
|
||||||
|
if(Creature* mob = m_creature->SummonCreature(C_MINDLESS_UNDEAD,3969.35+irand(-10,10),-3391.87+irand(-10,10),119.11,5.91,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,1800000))
|
||||||
|
mob->AI()->AttackStart(m_creature->SelectNearestTarget(500));
|
||||||
|
}
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
pInstance->SetData(TYPE_RAMSTEIN,DONE);
|
pInstance->SetData(TYPE_RAMSTEIN,DONE);
|
||||||
|
|||||||
@@ -156,8 +156,16 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
|||||||
case GO_ZIGGURAT1: ziggurat1GUID = go->GetGUID(); break;
|
case GO_ZIGGURAT1: ziggurat1GUID = go->GetGUID(); break;
|
||||||
case GO_ZIGGURAT2: ziggurat2GUID = go->GetGUID(); break;
|
case GO_ZIGGURAT2: ziggurat2GUID = go->GetGUID(); break;
|
||||||
case GO_ZIGGURAT3: ziggurat3GUID = go->GetGUID(); break;
|
case GO_ZIGGURAT3: ziggurat3GUID = go->GetGUID(); break;
|
||||||
case GO_ZIGGURAT4: ziggurat4GUID = go->GetGUID(); break;
|
case GO_ZIGGURAT4:
|
||||||
case GO_ZIGGURAT5: ziggurat5GUID = go->GetGUID(); break;
|
ziggurat4GUID = go->GetGUID();
|
||||||
|
if(TYPE_BARON == DONE || TYPE_RAMSTEIN == DONE)
|
||||||
|
HandleGameObject(0, true, go);
|
||||||
|
break;
|
||||||
|
case GO_ZIGGURAT5:
|
||||||
|
ziggurat5GUID = go->GetGUID();
|
||||||
|
if(TYPE_BARON == DONE || TYPE_RAMSTEIN == DONE)
|
||||||
|
HandleGameObject(0, true, go);
|
||||||
|
break;
|
||||||
case GO_PORT_GAUNTLET: portGauntletGUID = go->GetGUID(); break;
|
case GO_PORT_GAUNTLET: portGauntletGUID = go->GetGUID(); break;
|
||||||
case GO_PORT_SLAUGTHER: portSlaugtherGUID = go->GetGUID(); break;
|
case GO_PORT_SLAUGTHER: portSlaugtherGUID = go->GetGUID(); break;
|
||||||
case GO_PORT_ELDERS: portElderGUID = go->GetGUID(); break;
|
case GO_PORT_ELDERS: portElderGUID = go->GetGUID(); break;
|
||||||
@@ -248,6 +256,8 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
|||||||
case TYPE_BARON:
|
case TYPE_BARON:
|
||||||
if (data == IN_PROGRESS)
|
if (data == IN_PROGRESS)
|
||||||
{
|
{
|
||||||
|
HandleGameObject(ziggurat4GUID, false);
|
||||||
|
HandleGameObject(ziggurat5GUID, false);
|
||||||
if (GetData(TYPE_BARON_RUN) == IN_PROGRESS)
|
if (GetData(TYPE_BARON_RUN) == IN_PROGRESS)
|
||||||
{
|
{
|
||||||
Map::PlayerList const& players = instance->GetPlayers();
|
Map::PlayerList const& players = instance->GetPlayers();
|
||||||
@@ -270,6 +280,11 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
|||||||
SetData(TYPE_BARON_RUN,DONE);
|
SetData(TYPE_BARON_RUN,DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (data == DONE || data == NOT_STARTED)
|
||||||
|
{
|
||||||
|
HandleGameObject(ziggurat4GUID, true);
|
||||||
|
HandleGameObject(ziggurat5GUID, true);
|
||||||
|
}
|
||||||
Encounter[5] = data;
|
Encounter[5] = data;
|
||||||
break;
|
break;
|
||||||
case TYPE_SH_AELMAR:
|
case TYPE_SH_AELMAR:
|
||||||
@@ -288,6 +303,40 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
|||||||
IsSilverHandDead[4] = (data) ? true : false;
|
IsSilverHandDead[4] = (data) ? true : false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(data == DONE)SaveToDB();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetSaveData()
|
||||||
|
{
|
||||||
|
OUT_SAVE_INST_DATA;
|
||||||
|
|
||||||
|
std::ostringstream saveStream;
|
||||||
|
saveStream << Encounter[0] << " " << Encounter[1] << " " << Encounter[2] << " "
|
||||||
|
<< Encounter[3] << " " << Encounter[4] << " " << Encounter[5];
|
||||||
|
|
||||||
|
OUT_SAVE_INST_DATA_COMPLETE;
|
||||||
|
return saveStream.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Load(const char* in)
|
||||||
|
{
|
||||||
|
if (!in)
|
||||||
|
{
|
||||||
|
OUT_LOAD_INST_DATA_FAIL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OUT_LOAD_INST_DATA(in);
|
||||||
|
|
||||||
|
std::istringstream loadStream(in);
|
||||||
|
loadStream >> Encounter[0] >> Encounter[1] >> Encounter[2] >> Encounter[3]
|
||||||
|
>> Encounter[4] >> Encounter[5];
|
||||||
|
|
||||||
|
for(uint8 i = 0; i < ENCOUNTERS; ++i)
|
||||||
|
if (Encounter[i] == IN_PROGRESS)
|
||||||
|
Encounter[i] = NOT_STARTED;
|
||||||
|
|
||||||
|
OUT_LOAD_INST_DATA_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 GetData(uint32 type)
|
uint32 GetData(uint32 type)
|
||||||
|
|||||||
Reference in New Issue
Block a user