aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/VC71/71ScriptDev2.vcproj2
-rw-r--r--src/bindings/scripts/VC80/80ScriptDev2.vcproj2
-rw-r--r--src/bindings/scripts/VC90/90ScriptDev2.vcproj2
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp224
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_utgarde_keep.h (renamed from src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h)14
-rw-r--r--src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp191
6 files changed, 279 insertions, 156 deletions
diff --git a/src/bindings/scripts/VC71/71ScriptDev2.vcproj b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
index 6771d322bec..e97fbaa8ed4 100644
--- a/src/bindings/scripts/VC71/71ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC71/71ScriptDev2.vcproj
@@ -2055,7 +2055,7 @@
>
</File>
<File
- RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_keep.h"
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_utgarde_keep.h"
>
</File>
<File
diff --git a/src/bindings/scripts/VC80/80ScriptDev2.vcproj b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
index bfe548055dd..220ab002817 100644
--- a/src/bindings/scripts/VC80/80ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
@@ -1161,7 +1161,7 @@
>
</File>
<File
- RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_keep.h"
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_utgarde_keep.h"
>
</File>
<File
diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
index 9223e9be3f7..679e14bc9c8 100644
--- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
@@ -858,7 +858,7 @@
>
</File>
<File
- RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_keep.h"
+ RelativePath="..\scripts\zone\utgarde_keep\utgarde_keep\def_utgarde_keep.h"
>
</File>
<File
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp
index c9d40cc1b77..00c126a63c5 100644
--- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/boss_keleseth.cpp
@@ -18,18 +18,20 @@
/* ScriptData
SDName: Boss_Prince_Keleseth
-SD%Complete: 80
-SDComment: Normal and Heroic Support. Needs Prince Movements, Needs skeletons resurrection, Needs adjustments to blizzlike timers, Needs adjustments to use spell though. Needs Shadowbolt castbar
+SD%Complete: 90
+SDComment: Needs Prince Movements, Needs adjustments to blizzlike timers, Needs Shadowbolt castbar, Needs right Ressurect Visual, Needs Some Heroic Spells
SDCategory: Utgarde Keep
EndScriptData */
#include "precompiled.h"
-#include "def_keep.h"
+#include "def_utgarde_keep.h"
#define SPELL_SHADOWBOLT 43667
#define SPELL_SHADOWBOLT_HEROIC 59389
#define SPELL_FROST_TOMB 48400
#define SPELL_FROST_TOMB_SUMMON 42714
+#define SPELL_DECREPIFY 42702
+#define SPELL_SCOURGE_RESSURRECTION 42704
#define CREATURE_FROSTTOMB 23965
#define CREATURE_SKELETON 23970
@@ -44,10 +46,10 @@ EndScriptData */
float SkeletonSpawnPoint[5][5]=
{
{156.2559, 259.2093},
- {156.2559, 259.2093},
- {156.2559, 259.2093},
- {156.2559, 259.2093},
- {156.2559, 259.2093},
+ {156.2559, 259.2093},
+ {156.2559, 259.2093},
+ {156.2559, 259.2093},
+ {156.2559, 259.2093},
};
float AttackLoc[3]={197.636, 194.046, 40.8164};
@@ -56,16 +58,18 @@ struct TRINITY_DLL_DECL mob_frost_tombAI : public ScriptedAI
{
mob_frost_tombAI(Creature *c) : ScriptedAI(c)
{
+ FrostTombGUID = 0;
Reset();
}
uint64 FrostTombGUID;
- void Reset()
+ void SetPrisoner(Unit* uPrisoner)
{
- FrostTombGUID = 0;
+ FrostTombGUID = uPrisoner->GetGUID();
}
+ void Reset(){ FrostTombGUID = 0; }
void Aggro(Unit* who) {}
void AttackStart(Unit* who) {}
void MoveInLineOfSight(Unit* who) {}
@@ -79,6 +83,13 @@ struct TRINITY_DLL_DECL mob_frost_tombAI : public ScriptedAI
FrostTomb->RemoveAurasDueToSpell(SPELL_FROST_TOMB);
}
}
+
+ void UpdateAI(const uint32 diff)
+ {
+ Unit* temp = Unit::GetUnit((*m_creature),FrostTombGUID);
+ if((temp && temp->isAlive() && !temp->HasAura(SPELL_FROST_TOMB,0)) || !temp )
+ m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ }
};
struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
@@ -87,47 +98,47 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
{
pInstance = ((ScriptedInstance*)c->GetInstanceData());
Reset();
- Heroic = c->GetMap()->IsHeroic();
+ Heroic = c->GetMap()->IsHeroic();
}
-
+
ScriptedInstance* pInstance;
uint32 FrostTombTimer;
uint32 SummonSkeletonsTimer;
- uint32 RespawnSkeletonsTimer;
- uint32 ShadowboltTimer;
- uint64 SkeletonGUID[5];
- bool Skeletons;
- bool Heroic;
- bool RespawnSkeletons;
-
+ uint32 RespawnSkeletonsTimer;
+ uint32 ShadowboltTimer;
+ uint64 SkeletonGUID[5];
+ bool Skeletons;
+ bool Heroic;
+ bool RespawnSkeletons;
+
void Reset()
- {
- ShadowboltTimer = 0;
- Skeletons = false;
+ {
+ ShadowboltTimer = 0;
+ Skeletons = false;
ResetTimer();
if(pInstance)
pInstance->SetData(DATA_PRINCEKELESETH, NOT_STARTED);
- }
-
+ }
+
void KilledUnit(Unit *victim)
{
if(victim == m_creature)
return;
-
+
DoScriptText(SAY_KILL, m_creature);
}
-
+
void JustDied(Unit* killer)
{
if(pInstance)
pInstance->SetData(DATA_PRINCEKELESETH, DONE);
-
+
DoScriptText(SAY_DEATH, m_creature);
}
-
+
void Aggro(Unit* who)
{
if(pInstance)
@@ -136,67 +147,164 @@ struct TRINITY_DLL_DECL boss_kelesethAI : public ScriptedAI
DoScriptText(SAY_AGGRO, m_creature);
DoZoneInCombat();
}
-
+
void ResetTimer(uint32 inc = 0)
{
SummonSkeletonsTimer = 5000 + inc;
FrostTombTimer = 28000 + inc;
}
-
+
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
-
+
if(ShadowboltTimer < diff)
{
Unit* target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
if(target && target->isAlive() && target->GetTypeId() == TYPEID_PLAYER)
- m_creature->CastSpell(target, Heroic ? SPELL_SHADOWBOLT:SPELL_SHADOWBOLT_HEROIC, true);
- ShadowboltTimer = 2000;
+ m_creature->CastSpell(target, Heroic ? SPELL_SHADOWBOLT_HEROIC : SPELL_SHADOWBOLT, true);
+ ShadowboltTimer = 10000;
}else ShadowboltTimer -= diff;
- if((SummonSkeletonsTimer < diff) && !Skeletons)
- {
- Creature* Skeleton;
- DoScriptText(SAY_SKELETONS, m_creature);
- for(uint8 i = 0; i < 5; ++i)
+ if(!Skeletons)
+ if((SummonSkeletonsTimer < diff))
{
- Skeleton = m_creature->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_MANUAL_DESPAWN,0);
- if(Skeleton)
+ Creature* Skeleton;
+ DoScriptText(SAY_SKELETONS, m_creature);
+ for(uint8 i = 0; i < 5; ++i)
{
- Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
- Skeleton->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
- Skeleton->AddThreat(m_creature, 0.0f);
- DoZoneInCombat(Skeleton);
+ Skeleton = m_creature->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
+ if(Skeleton)
+ {
+ Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
+ Skeleton->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
+ Skeleton->AddThreat(m_creature->getVictim(), 0.0f);
+ DoZoneInCombat(Skeleton);
+ }
}
- }
- Skeletons = true;
- }else SummonSkeletonsTimer -= diff;
+ Skeletons = true;
+ }else SummonSkeletonsTimer -= diff;
if(FrostTombTimer < diff)
{
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
if(target && target->isAlive() && target->GetTypeId() == TYPEID_PLAYER)
{
- DoCast(target, SAY_FROST_TOMB, true);
- Creature* Chains = m_creature->SummonCreature(CREATURE_FROSTTOMB, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 20000);
+ //DoCast(target, SPELL_FROST_TOMB_SUMMON, true);
+ Creature* Chains = m_creature->SummonCreature(CREATURE_FROSTTOMB, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000);
if(Chains)
{
- ((mob_frost_tombAI*)Chains->AI())->FrostTombGUID = target->GetGUID();
+ ((mob_frost_tombAI*)Chains->AI())->SetPrisoner(target);
Chains->CastSpell(target, SPELL_FROST_TOMB, true);
-
- DoScriptText(SAY_FROST_TOMB, m_creature);
- FrostTombTimer = 15000;
+ DoScriptText(SAY_FROST_TOMB, m_creature);
}
}
+ FrostTombTimer = 15000;
}else FrostTombTimer -= diff;
DoMeleeAttackIfReady();
}
};
+struct TRINITY_DLL_DECL mob_vrykul_skeletonAI : public ScriptedAI
+{
+ mob_vrykul_skeletonAI(Creature *c) : ScriptedAI(c)
+ {
+ pInstance = ((ScriptedInstance*)c->GetInstanceData());
+ Reset();
+ }
+
+ ScriptedInstance *pInstance;
+ uint32 Respawn_Time;
+ uint64 Target_Guid;
+ uint32 Decrepify_Timer;
+
+ bool isDead;
+
+ void Reset()
+ {
+ Respawn_Time = 12000;
+ Decrepify_Timer = 10000 + rand()%20000;
+ isDead = false;
+ }
+
+ void Aggro(Unit *who){}
+ void DamageTaken(Unit *done_by, uint32 &damage)
+ {
+ if(done_by->GetGUID() == m_creature->GetGUID())
+ return;
+
+ if(damage >= m_creature->GetHealth())
+ {
+ PretendToDie();
+ damage = 0;
+ }
+ }
+
+
+ void PretendToDie()
+ {
+ isDead = true;
+ m_creature->InterruptNonMeleeSpells(true);
+ m_creature->RemoveAllAuras();
+ m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ m_creature->GetMotionMaster()->MovementExpired(false);
+ m_creature->GetMotionMaster()->MoveIdle();
+ m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
+ };
+
+ void Resurrect()
+ {
+ isDead = false;
+ m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ m_creature->SetStandState(UNIT_STAND_STATE_STAND);
+ m_creature->CastSpell(m_creature,SPELL_SCOURGE_RESSURRECTION,true);
+
+ if(m_creature->getVictim())
+ {
+ m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
+ m_creature->AI()->AttackStart(m_creature->getVictim());
+ }
+ else
+ m_creature->GetMotionMaster()->Initialize();
+ };
+
+ void UpdateAI(const uint32 diff)
+ {
+ if(pInstance->GetData(DATA_PRINCEKELESETH) == IN_PROGRESS)
+ {
+ if(isDead)
+ {
+ if(Respawn_Time < diff)
+ {
+ Resurrect();
+ Respawn_Time = 12000;
+ }else Respawn_Time -= diff;
+ }
+ else
+ {
+ if(!UpdateVictim())
+ return;
+
+ if(Decrepify_Timer < diff)
+ {
+ DoCast(m_creature->getVictim(),SPELL_DECREPIFY);
+ Decrepify_Timer = 30000;
+ }else Decrepify_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ }else
+ {
+ if(m_creature->isAlive())
+ m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
+ }
+
+ }
+};
+
CreatureAI* GetAI_mob_frost_tomb(Creature *_Creature)
{
return new mob_frost_tombAI(_Creature);
@@ -207,6 +315,11 @@ CreatureAI* GetAI_boss_keleseth(Creature *_Creature)
return new boss_kelesethAI (_Creature);
}
+CreatureAI* GetAI_mob_vrykul_skeleton(Creature *_Creature)
+{
+ return new mob_vrykul_skeletonAI (_Creature);
+}
+
void AddSC_boss_keleseth()
{
Script *newscript;
@@ -215,9 +328,14 @@ void AddSC_boss_keleseth()
newscript->Name="boss_keleseth";
newscript->GetAI = &GetAI_boss_keleseth;
newscript->RegisterSelf();
-
+
newscript = new Script;
newscript->Name = "mob_frost_tomb";
newscript->GetAI = &GetAI_mob_frost_tomb;
newscript->RegisterSelf();
+
+ newscript = new Script;
+ newscript->Name="mob_vrykul_skeleton";
+ newscript->GetAI = GetAI_mob_vrykul_skeleton;
+ newscript->RegisterSelf();
}
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_utgarde_keep.h
index 4161c725fb2..1a5c419f932 100644
--- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_keep.h
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/def_utgarde_keep.h
@@ -16,11 +16,13 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef DEF_KEEP_H
-#define DEF_KEEP_H
+#ifndef DEF_UTGARDE_KEEP_H
+#define DEF_UTGARDE_KEEP_H
-#define DATA_PRINCEKELESETH 1
-#define DATA_DALRON 2
-#define DATA_SKARVALD 3
-#define DATA_INGVAR 4
+#define DATA_PRINCEKELESETH 1
+#define DATA_SKARVALD 2
+#define DATA_DALRONN 3
+#define DATA_INGVAR 4
+
+#define DATA_SKARVALD_DALRONN_EVENT 2
#endif
diff --git a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp
index 77672143f24..f609c6285d3 100644
--- a/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp
+++ b/src/bindings/scripts/scripts/zone/utgarde_keep/utgarde_keep/instance_utgarde_keep.cpp
@@ -18,47 +18,46 @@
/* ScriptData
SDName: Instance_Utgarde_Keep
-SD%Complete: 0
+SD%Complete: 90
SDComment: Instance Data Scripts and functions to acquire mobs and set encounter status for use in various Utgarde Keep Scripts
SDCategory: Utgarde Keep
EndScriptData */
#include "precompiled.h"
-#include "def_keep.h"
+#include "def_utgarde_keep.h"
-#define ENCOUNTERS 4
+#define ENCOUNTERS 3
/* Utgarde Keep encounters:
0 - Prince Keleseth
-1 - Skarvald
-2 - Dalronn
-3 - Ingvar the Plunderer
+1 - Skarvald Dalronn
+2 - Ingvar the Plunderer
*/
struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
{
instance_utgarde_keep(Map *Map) : ScriptedInstance(Map) {Initialize();};
-
+
uint64 Keleseth;
uint64 Skarvald;
uint64 Dalronn;
uint64 Ingvar;
-
+
bool IsBossDied[2];
-
+
uint32 Encounters[ENCOUNTERS];
std::string str_data;
-
+
void Initialize()
{
Keleseth = 0;
- Skarvald = 0;
- Dalronn =0;
- Ingvar =0;
-
+ Skarvald = 0;
+ Dalronn =0;
+ Ingvar =0;
+
for(uint8 i = 0; i < ENCOUNTERS; ++i)
Encounters[i] = NOT_STARTED;
- }
+ }
bool IsEncounterInProgress() const
{
@@ -67,65 +66,65 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
return false;
}
-
+
Player* GetPlayerInMap()
- {
- Map::PlayerList const& players = instance->GetPlayers();
-
- if (!players.isEmpty())
- {
- for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- {
- if (Player* plr = itr->getSource())
- return plr;
- }
- }
-
- debug_log("TSCR: Instance Utgarde Keep: GetPlayerInMap, but PlayerList is empty!");
- return NULL;
- }
-
- void HandleGameObject(uint64 guid, uint32 state)
- {
- Player *player = GetPlayerInMap();
-
- if (!player || !guid)
- {
- debug_log("TSCR: Utgarde Keep: HandleGameObject fail");
- return;
- }
-
- if (GameObject *go = GameObject::GetGameObject(*player,guid))
- go->SetGoState(state);
- }
+ {
+ Map::PlayerList const& players = instance->GetPlayers();
+
+ if (!players.isEmpty())
+ {
+ for(Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ {
+ if (Player* plr = itr->getSource())
+ return plr;
+ }
+ }
+
+ debug_log("TSCR: Instance Utgarde Keep: GetPlayerInMap, but PlayerList is empty!");
+ return NULL;
+ }
+
+ void HandleGameObject(uint64 guid, uint32 state)
+ {
+ Player *player = GetPlayerInMap();
+
+ if (!player || !guid)
+ {
+ debug_log("TSCR: Utgarde Keep: HandleGameObject fail");
+ return;
+ }
+
+ if (GameObject *go = GameObject::GetGameObject(*player,guid))
+ go->SetGoState(state);
+ }
void OnCreatureCreate(Creature *creature, uint32 creature_entry)
{
switch(creature->GetEntry())
{
- case 23953: Keleseth = creature->GetGUID(); break;
+ case 23953: Keleseth = creature->GetGUID(); break;
case 24200: Dalronn = creature->GetGUID(); break;
case 24201: Skarvald = creature->GetGUID(); break;
case 23954: Ingvar = creature->GetGUID(); break;
}
}
-
+
void OnObjectCreate(GameObject* go)
{
- switch(go->GetEntry())
- {
+ //switch(go->GetEntry())
+ //{
//door and object id
- }
+ //}
}
-
+
uint64 GetData64(uint32 identifier)
{
switch(identifier)
{
case DATA_PRINCEKELESETH: return Keleseth;
- case DATA_DALRON: return Dalronn;
+ case DATA_DALRONN: return Dalronn;
case DATA_SKARVALD: return Skarvald;
- case DATA_INGVAR: return Ingvar;
+ case DATA_INGVAR: return Ingvar;
}
return 0;
@@ -141,18 +140,12 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
//HandleGameObject(doorname, 0);
}
Encounters[0] = data;break;
- case DATA_DALRON:
+ case DATA_SKARVALD_DALRONN_EVENT:
if(data == DONE)
{
//HandleGameObject(doorname, 0);
}
Encounters[1] = data; break;
- case DATA_SKARVALD:
- if(data == DONE)
- {
- //HandleGameObject(doorname, 0);
- }
- Encounters[2] = data; break;
case DATA_INGVAR:
if(data == DONE)
{
@@ -162,18 +155,18 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
}
if (data == DONE)
- {
+ {
OUT_SAVE_INST_DATA;
- std::ostringstream saveStream;
- saveStream << Encounters[0] << " " << Encounters[1] << " "
- << Encounters[2] << " " << Encounters[3];
+ std::ostringstream saveStream;
+ saveStream << "U K " << Encounters[0] << " " << Encounters[1] << " "
+ << Encounters[2];
- str_data = saveStream.str();
+ str_data = saveStream.str();
- SaveToDB();
- OUT_SAVE_INST_DATA_COMPLETE;
- }
+ SaveToDB();
+ OUT_SAVE_INST_DATA_COMPLETE;
+ }
}
uint32 GetData(uint32 type)
@@ -181,7 +174,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
switch(type)
{
case DATA_PRINCEKELESETH: return Encounters[0];
- case DATA_DALRON: return Encounters[1];
+ case DATA_DALRONN: return Encounters[1];
case DATA_SKARVALD: return Encounters[2];
case DATA_INGVAR: return Encounters[3];
}
@@ -190,32 +183,42 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
}
const char* Save()
- {
- return str_data.c_str();
- }
-
- void Load(const char* in)
- {
- if (!in)
- {
- OUT_LOAD_INST_DATA_FAIL;
- return;
- }
-
- OUT_LOAD_INST_DATA(in);
-
- std::istringstream loadStream(in);
- loadStream >> Encounters[0] >> Encounters[1] >> Encounters[2]
- >> Encounters[3];
-
- for(uint8 i = 0; i < ENCOUNTERS; ++i)
- if (Encounters[i] == IN_PROGRESS)
- Encounters[i] = NOT_STARTED;
-
- OUT_LOAD_INST_DATA_COMPLETE;
- }
+ {
+ return str_data.c_str();
+ }
+
+ void Load(const char* in)
+ {
+ if (!in)
+ {
+ OUT_LOAD_INST_DATA_FAIL;
+ return;
+ }
+
+ OUT_LOAD_INST_DATA(in);
+
+ char dataHead1, dataHead2;
+ uint16 data0,data1,data2;
+
+ std::istringstream loadStream(in);
+ loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2;
+
+ if( dataHead1 == 'U' && dataHead2 == 'K')
+ {
+ Encounters[0] = data0;
+ Encounters[1] = data1;
+ Encounters[2] = data2;
+
+ for(uint8 i = 0; i < ENCOUNTERS; ++i)
+ if (Encounters[i] == IN_PROGRESS)
+ Encounters[i] = NOT_STARTED;
+
+ }else OUT_LOAD_INST_DATA_FAIL;
+
+ OUT_LOAD_INST_DATA_COMPLETE;
+ }
};
-
+
InstanceData* GetInstanceData_instance_utgarde_keep(Map* map)
{
return new instance_utgarde_keep(map);