aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRat <none@none>2009-08-09 19:52:34 +0200
committerRat <none@none>2009-08-09 19:52:34 +0200
commit2b1d4b756e44c393a25e4cdfaa76c05681fe6da1 (patch)
tree88f2e8e224dcf316b5c8a1f0197c70430ff9719c /src
parent197c22bfc82bb6f60cbb97cd08952d7ea4e179f3 (diff)
*Stratholme update
*added basic instance save *handle Baron's doors *Rammstein's adds will move to players --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp7
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp5
-rw-r--r--src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp53
3 files changed, 60 insertions, 5 deletions
diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp
index 092318fd7af..9d46ad70807 100644
--- a/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp
+++ b/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp
@@ -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)
diff --git a/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp b/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp
index 1ecb95333c4..e1ae2b643c8 100644
--- a/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp
+++ b/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp
@@ -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);
diff --git a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp
index 03977287d71..1b0e7137df3 100644
--- a/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp
+++ b/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp
@@ -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)