mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-30 05:43:12 +01:00
*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;
|
||||
// RaiseDead_Timer = 30000;
|
||||
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);
|
||||
ScriptedAI::AttackStart(who);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned)
|
||||
|
||||
@@ -54,7 +54,10 @@ struct TRINITY_DLL_DECL boss_ramstein_the_gorgerAI : public ScriptedAI
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
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)
|
||||
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_ZIGGURAT2: ziggurat2GUID = go->GetGUID(); break;
|
||||
case GO_ZIGGURAT3: ziggurat3GUID = go->GetGUID(); break;
|
||||
case GO_ZIGGURAT4: ziggurat4GUID = go->GetGUID(); break;
|
||||
case GO_ZIGGURAT5: ziggurat5GUID = go->GetGUID(); break;
|
||||
case GO_ZIGGURAT4:
|
||||
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_SLAUGTHER: portSlaugtherGUID = 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:
|
||||
if (data == IN_PROGRESS)
|
||||
{
|
||||
HandleGameObject(ziggurat4GUID, false);
|
||||
HandleGameObject(ziggurat5GUID, false);
|
||||
if (GetData(TYPE_BARON_RUN) == IN_PROGRESS)
|
||||
{
|
||||
Map::PlayerList const& players = instance->GetPlayers();
|
||||
@@ -270,6 +280,11 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
||||
SetData(TYPE_BARON_RUN,DONE);
|
||||
}
|
||||
}
|
||||
if (data == DONE || data == NOT_STARTED)
|
||||
{
|
||||
HandleGameObject(ziggurat4GUID, true);
|
||||
HandleGameObject(ziggurat5GUID, true);
|
||||
}
|
||||
Encounter[5] = data;
|
||||
break;
|
||||
case TYPE_SH_AELMAR:
|
||||
@@ -288,6 +303,40 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
||||
IsSilverHandDead[4] = (data) ? true : false;
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user