mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Scripts/Oculus: Implemented AI for boss Varos Cloudstrider <Azure-Lord of the Blue Dragonflight>.
Signed-off-by: Manuel <manue.l@live.com.ar>
This commit is contained in:
@@ -1046,6 +1046,8 @@ UPDATE `creature_template` SET `ScriptName`='boss_drakos' WHERE `entry`=27654;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_unstable_sphere' WHERE `entry`=28166;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_oculus_drake' WHERE `entry` IN (27657,27658,27659);
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_urom' WHERE `entry`=27655;
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_varos' WHERE `entry`=27447;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_azure_ring_captain' WHERE `entry`=27638;
|
||||
|
||||
/* OBSIDIAN SANCTUM */
|
||||
UPDATE `instance_template` SET `script`='instance_obsidian_sanctum' WHERE `map`=615;
|
||||
@@ -1958,6 +1960,8 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
( 66630, 'spell_gen_gunship_portal'),
|
||||
( 66637, 'spell_gen_gunship_portal'),
|
||||
( 66656, 'spell_gen_parachute_ic'),
|
||||
-- Oculus
|
||||
( 50053, 'spell_varos_centrifuge_shield'),
|
||||
-- Trial of Crusader
|
||||
( 66118, 'spell_gen_leeching_swarm'),
|
||||
( 67630, 'spell_gen_leeching_swarm'),
|
||||
|
||||
5
sql/updates/2011_01_20_0_world_scriptname.sql
Normal file
5
sql/updates/2011_01_20_0_world_scriptname.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
UPDATE `creature_template` SET `ScriptName`='boss_varos' WHERE `entry`=27447;
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_azure_ring_captain' WHERE `entry`=27638;
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id`=50053;
|
||||
INSERT INTO `spell_script_names` (spell_id,ScriptName) VALUES (50053,'spell_varos_centrifuge_shield');
|
||||
@@ -397,6 +397,7 @@ void AddSC_boss_keristrasza();
|
||||
void AddSC_instance_nexus();
|
||||
void AddSC_boss_drakos(); //The Nexus The Oculus
|
||||
void AddSC_boss_urom();
|
||||
void AddSC_boss_varos();
|
||||
void AddSC_instance_oculus();
|
||||
void AddSC_oculus();
|
||||
void AddSC_boss_sartharion(); //Obsidian Sanctum
|
||||
@@ -1084,6 +1085,7 @@ void AddNorthrendScripts()
|
||||
AddSC_instance_nexus();
|
||||
AddSC_boss_drakos(); //The Nexus The Oculus
|
||||
AddSC_boss_urom();
|
||||
AddSC_boss_varos();
|
||||
AddSC_instance_oculus();
|
||||
AddSC_oculus();
|
||||
AddSC_boss_sartharion(); //Obsidian Sanctum
|
||||
|
||||
@@ -18,30 +18,33 @@
|
||||
#include "ScriptPCH.h"
|
||||
#include "oculus.h"
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_AGGRO = 0,
|
||||
SAY_AZURE = 1,
|
||||
SAY_AZURE_EMOTE = 2,
|
||||
SAY_DEATH = 3
|
||||
};
|
||||
|
||||
enum Spells
|
||||
{
|
||||
SPELL_ENERGIZE_CORES = 50785, //Damage 5938 to 6562, effec2 Triggers 54069, effect3 Triggers 56251
|
||||
SPELL_ENERGIZE_CORES_TRIGGER_1 = 54069,
|
||||
SPELL_ENERGIZE_CORES_TRIGGER_2 = 56251,
|
||||
SPELL_ENERGIZE_CORES_2 = 59372, //Damage 9025 to 9975, effect2 Triggers 54069, effect 56251
|
||||
SPELL_CALL_AZURE_RING_CAPTAIN = 51002, //Effect Send Event (12229)
|
||||
SPELL_CALL_AZURE_RING_CAPTAIN_2 = 51006, //Effect Send Event (10665)
|
||||
/*SPELL_CALL_AZURE_RING_CAPTAIN_2 = 51006, //Effect Send Event (10665)
|
||||
SPELL_CALL_AZURE_RING_CAPTAIN_3 = 51007, //Effect Send Event (18454)
|
||||
SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)
|
||||
SPELL_CALL_AZURE_RING_CAPTAIN_4 = 51008, //Effect Send Event (18455)*/
|
||||
SPELL_CALL_AMPLIFY_MAGIC = 51054,
|
||||
SPELL_CALL_AMPLIFY_MAGIC_2 = 59371
|
||||
|
||||
SPELL_CENTRIFUGE_SHIELD = 50053,
|
||||
|
||||
SPELL_ICE_BEAM = 49549
|
||||
};
|
||||
//not in db
|
||||
enum Yells
|
||||
|
||||
enum Events
|
||||
{
|
||||
SAY_AGGRO = -1578022,
|
||||
SAY_KILL_1 = -1578023,
|
||||
SAY_KILL_2 = -1578024,
|
||||
SAY_DEATH = -1578025,
|
||||
SAY_STRIKE_1 = -1578026,
|
||||
SAY_STRIKE_2 = -1578027,
|
||||
SAY_STRIKE_3 = -1578028,
|
||||
SAY_SPAWN = -1578029
|
||||
EVENT_ENERGIZE_CORES = 1,
|
||||
EVENT_CALL_AZURE,
|
||||
EVENT_AMPLIFY_MAGIC
|
||||
};
|
||||
|
||||
class boss_varos : public CreatureScript
|
||||
@@ -49,61 +52,219 @@ class boss_varos : public CreatureScript
|
||||
public:
|
||||
boss_varos() : CreatureScript("boss_varos") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* pCreature) const
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return new boss_varosAI (pCreature);
|
||||
return new boss_varosAI (creature);
|
||||
}
|
||||
|
||||
struct boss_varosAI : public ScriptedAI
|
||||
struct boss_varosAI : public BossAI
|
||||
{
|
||||
boss_varosAI(Creature *c) : ScriptedAI(c)
|
||||
boss_varosAI(Creature* creature) : BossAI(creature, DATA_VAROS_EVENT)
|
||||
{
|
||||
pInstance = c->GetInstanceScript();
|
||||
DoCast(me,SPELL_CENTRIFUGE_SHIELD);
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_VAROS_EVENT, NOT_STARTED);
|
||||
_Reset();
|
||||
|
||||
events.ScheduleEvent(EVENT_AMPLIFY_MAGIC, urand(20,25) * IN_MILLISECONDS);
|
||||
events.ScheduleEvent(EVENT_ENERGIZE_CORES, urand(0,15) * IN_MILLISECONDS);
|
||||
// not sure if this is handled by a timer or hp percentage
|
||||
events.ScheduleEvent(EVENT_CALL_AZURE, urand(15,30) * IN_MILLISECONDS);
|
||||
|
||||
instance->SetData(DATA_VAROS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void AttackStart(Unit* attacker)
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_UNK_9))
|
||||
return;
|
||||
|
||||
BossAI::AttackStart(attacker);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
_EnterCombat();
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_VAROS_EVENT, IN_PROGRESS);
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
instance->SetData(DATA_VAROS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
void AttackStart(Unit* /*who*/) {}
|
||||
void MoveInLineOfSight(Unit* /*who*/) {}
|
||||
void UpdateAI(const uint32 /*diff*/)
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (me->HasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ENERGIZE_CORES:
|
||||
DoCast(me,SPELL_ENERGIZE_CORES);
|
||||
events.ScheduleEvent(EVENT_ENERGIZE_CORES, urand(12,14) * IN_MILLISECONDS);
|
||||
break;
|
||||
case EVENT_CALL_AZURE:
|
||||
// not sure how blizz handles this, i cant see any pattern between the differnt spells
|
||||
DoCast(me,SPELL_CALL_AZURE_RING_CAPTAIN);
|
||||
Talk(SAY_AZURE);
|
||||
Talk(SAY_AZURE_EMOTE);
|
||||
events.ScheduleEvent(EVENT_CALL_AZURE, urand(20,25) * IN_MILLISECONDS);
|
||||
break;
|
||||
case EVENT_AMPLIFY_MAGIC:
|
||||
DoCast(me->getVictim(),SPELL_CALL_AMPLIFY_MAGIC);
|
||||
events.ScheduleEvent(EVENT_AMPLIFY_MAGIC, urand(17,20) * IN_MILLISECONDS);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_VAROS_EVENT, DONE);
|
||||
}
|
||||
void KilledUnit(Unit * victim)
|
||||
{
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), me);
|
||||
Talk(SAY_DEATH);
|
||||
instance->SetData(DATA_VAROS_EVENT, DONE);
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
class npc_azure_ring_captain : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_azure_ring_captain() : CreatureScript("npc_azure_ring_captain") { }
|
||||
|
||||
struct npc_azure_ring_captainAI : public ScriptedAI
|
||||
{
|
||||
npc_azure_ring_captainAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
targetGUID = 0;
|
||||
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* target, SpellEntry const* spell)
|
||||
{
|
||||
if (spell->Id == SPELL_ICE_BEAM)
|
||||
EnterEvadeMode();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
{
|
||||
if (type != POINT_MOTION_TYPE ||
|
||||
id != ACTION_CALL_DRAGON_EVENT)
|
||||
return;
|
||||
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
|
||||
if (Unit* target = ObjectAccessor::GetUnit(*me,targetGUID))
|
||||
DoCast(target,SPELL_ICE_BEAM);
|
||||
}
|
||||
|
||||
void DoAction(const int32 action)
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case ACTION_CALL_DRAGON_EVENT:
|
||||
if (instance)
|
||||
{
|
||||
if (Creature* varos = ObjectAccessor::GetCreature(*me,instance->GetData64(DATA_VAROS)))
|
||||
{
|
||||
if (Unit* victim = varos->AI()->SelectTarget(SELECT_TARGET_RANDOM,0))
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
|
||||
me->GetMotionMaster()->MovePoint(ACTION_CALL_DRAGON_EVENT,victim->GetPositionX(),victim->GetPositionY(),victim->GetPositionZ() + 20.0f);
|
||||
targetGUID = victim->GetGUID();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
private:
|
||||
uint64 targetGUID;
|
||||
InstanceScript* instance;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return new npc_azure_ring_captainAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_varos_centrifuge_shield : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_varos_centrifuge_shield() : SpellScriptLoader("spell_varos_centrifuge_shield") { }
|
||||
|
||||
class spell_varos_centrifuge_shield_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_varos_centrifuge_shield_AuraScript);
|
||||
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (!GetCaster()->ToCreature())
|
||||
return;
|
||||
|
||||
// flags taken from sniffs
|
||||
// UNIT_FLAG_UNK_9 -> means passive but it is not yet implemented in core
|
||||
if (GetCaster()->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_UNK_9|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6))
|
||||
{
|
||||
GetCaster()->ToCreature()->SetReactState(REACT_PASSIVE);
|
||||
GetCaster()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_UNK_9|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
|
||||
}
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (!GetCaster()->ToCreature())
|
||||
return;
|
||||
|
||||
GetCaster()->ToCreature()->SetReactState(REACT_AGGRESSIVE);
|
||||
GetCaster()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15|UNIT_FLAG_UNK_9|UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_UNK_6);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectRemove += AuraEffectRemoveFn(spell_varos_centrifuge_shield_AuraScript::OnRemove, EFFECT_0,SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
OnEffectApply += AuraEffectApplyFn(spell_varos_centrifuge_shield_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_varos_centrifuge_shield_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_varos()
|
||||
{
|
||||
new boss_varos();
|
||||
new npc_azure_ring_captain();
|
||||
new spell_varos_centrifuge_shield();
|
||||
}
|
||||
|
||||
@@ -40,38 +40,70 @@ public:
|
||||
{
|
||||
instance_oculus_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
||||
|
||||
uint64 uiDrakos;
|
||||
uint64 uiVaros;
|
||||
uint64 uiUrom;
|
||||
uint64 uiEregos;
|
||||
|
||||
uint8 uiPlataformUrom;
|
||||
|
||||
uint16 m_auiEncounter[MAX_ENCOUNTER];
|
||||
std::string str_data;
|
||||
|
||||
std::list<uint64> GameObjectList;
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiPlataformUrom = 0;
|
||||
drakosGUID = 0;
|
||||
varosGUID = 0;
|
||||
uromGUID = 0;
|
||||
eregosGUIDs = 0;
|
||||
|
||||
platformUrom = 0;
|
||||
|
||||
azureDragonsList.clear();
|
||||
gameObjectList.clear();
|
||||
}
|
||||
|
||||
void ProcessEvent(Unit* /*unit*/, uint32 eventId)
|
||||
{
|
||||
if (eventId != EVENT_CALL_DRAGON)
|
||||
return;
|
||||
|
||||
if (azureDragonsList.empty())
|
||||
return;
|
||||
|
||||
Creature* nearestDragon = NULL;
|
||||
Creature* varos = instance->GetCreature(varosGUID);
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = azureDragonsList.begin(); itr != azureDragonsList.end(); ++itr)
|
||||
{
|
||||
if (Creature* dragon = instance->GetCreature(*itr))
|
||||
{
|
||||
if (!dragon->isAlive() && dragon->isInCombat())
|
||||
continue;
|
||||
|
||||
if (!nearestDragon)
|
||||
nearestDragon = dragon;
|
||||
else if (varos)
|
||||
{
|
||||
if (nearestDragon->GetExactDist(varos) > dragon->GetExactDist(varos))
|
||||
nearestDragon = dragon;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (nearestDragon)
|
||||
nearestDragon->AI()->DoAction(ACTION_CALL_DRAGON_EVENT);
|
||||
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature)
|
||||
{
|
||||
switch(creature->GetEntry())
|
||||
{
|
||||
case CREATURE_DRAKOS:
|
||||
uiDrakos = creature->GetGUID();
|
||||
case NPC_DRAKOS:
|
||||
drakosGUID = creature->GetGUID();
|
||||
break;
|
||||
case CREATURE_VAROS:
|
||||
uiVaros = creature->GetGUID();
|
||||
case NPC_VAROS:
|
||||
varosGUID = creature->GetGUID();
|
||||
break;
|
||||
case CREATURE_UROM:
|
||||
uiUrom = creature->GetGUID();
|
||||
case NPC_UROM:
|
||||
uromGUID = creature->GetGUID();
|
||||
break;
|
||||
case CREATURE_EREGOS:
|
||||
uiEregos = creature->GetGUID();
|
||||
case NPC_EREGOS:
|
||||
eregosGUIDs = creature->GetGUID();
|
||||
break;
|
||||
case NPC_AZURE_RING_GUARDIAN:
|
||||
azureDragonsList.push_back(creature->GetGUID());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -85,7 +117,7 @@ public:
|
||||
else
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
|
||||
GameObjectList.push_back(go->GetGUID());
|
||||
gameObjectList.push_back(go->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,21 +126,21 @@ public:
|
||||
switch(type)
|
||||
{
|
||||
case DATA_DRAKOS_EVENT:
|
||||
m_auiEncounter[0] = data;
|
||||
encounter[0] = data;
|
||||
if (data == DONE)
|
||||
OpenCageDoors();
|
||||
break;
|
||||
case DATA_VAROS_EVENT:
|
||||
m_auiEncounter[1] = data;
|
||||
encounter[1] = data;
|
||||
break;
|
||||
case DATA_UROM_EVENT:
|
||||
m_auiEncounter[2] = data;
|
||||
encounter[2] = data;
|
||||
break;
|
||||
case DATA_EREGOS_EVENT:
|
||||
m_auiEncounter[3] = data;
|
||||
encounter[3] = data;
|
||||
break;
|
||||
case DATA_UROM_PLATAFORM:
|
||||
uiPlataformUrom = data;
|
||||
platformUrom = data;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -120,11 +152,11 @@ public:
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_DRAKOS_EVENT: return m_auiEncounter[0];
|
||||
case DATA_VAROS_EVENT: return m_auiEncounter[1];
|
||||
case DATA_UROM_EVENT: return m_auiEncounter[2];
|
||||
case DATA_EREGOS_EVENT: return m_auiEncounter[3];
|
||||
case DATA_UROM_PLATAFORM: return uiPlataformUrom;
|
||||
case DATA_DRAKOS_EVENT: return encounter[0];
|
||||
case DATA_VAROS_EVENT: return encounter[1];
|
||||
case DATA_UROM_EVENT: return encounter[2];
|
||||
case DATA_EREGOS_EVENT: return encounter[3];
|
||||
case DATA_UROM_PLATAFORM: return platformUrom;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -134,10 +166,10 @@ public:
|
||||
{
|
||||
switch(identifier)
|
||||
{
|
||||
case DATA_DRAKOS: return uiDrakos;
|
||||
case DATA_VAROS: return uiVaros;
|
||||
case DATA_UROM: return uiUrom;
|
||||
case DATA_EREGOS: return uiEregos;
|
||||
case DATA_DRAKOS: return drakosGUID;
|
||||
case DATA_VAROS: return varosGUID;
|
||||
case DATA_UROM: return uromGUID;
|
||||
case DATA_EREGOS: return eregosGUIDs;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -145,10 +177,10 @@ public:
|
||||
|
||||
void OpenCageDoors()
|
||||
{
|
||||
if (GameObjectList.empty())
|
||||
if (gameObjectList.empty())
|
||||
return;
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = GameObjectList.begin(); itr != GameObjectList.end(); ++itr)
|
||||
for (std::list<uint64>::const_iterator itr = gameObjectList.begin(); itr != gameObjectList.end(); ++itr)
|
||||
{
|
||||
if (GameObject* go = instance->GetGameObject(*itr))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
@@ -160,7 +192,7 @@ public:
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "T O " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " " << m_auiEncounter[2] << " " << m_auiEncounter[3];
|
||||
saveStream << "T O " << encounter[0] << " " << encounter[1] << " " << encounter[2] << " " << encounter[3];
|
||||
|
||||
str_data = saveStream.str();
|
||||
|
||||
@@ -186,19 +218,32 @@ public:
|
||||
|
||||
if (dataHead1 == 'T' && dataHead2 == 'O')
|
||||
{
|
||||
m_auiEncounter[0] = data0;
|
||||
m_auiEncounter[1] = data1;
|
||||
m_auiEncounter[2] = data2;
|
||||
m_auiEncounter[3] = data3;
|
||||
encounter[0] = data0;
|
||||
encounter[1] = data1;
|
||||
encounter[2] = data2;
|
||||
encounter[3] = data3;
|
||||
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
if (encounter[i] == IN_PROGRESS)
|
||||
encounter[i] = NOT_STARTED;
|
||||
|
||||
} else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
private:
|
||||
uint64 drakosGUID;
|
||||
uint64 varosGUID;
|
||||
uint64 uromGUID;
|
||||
uint64 eregosGUIDs;
|
||||
|
||||
uint8 platformUrom;
|
||||
|
||||
uint16 encounter[MAX_ENCOUNTER];
|
||||
std::string str_data;
|
||||
|
||||
std::list<uint64> gameObjectList;
|
||||
std::list<uint64> azureDragonsList;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -37,15 +37,27 @@ enum Data64
|
||||
|
||||
enum Bosses
|
||||
{
|
||||
CREATURE_DRAKOS = 27654,
|
||||
CREATURE_VAROS = 27447,
|
||||
CREATURE_UROM = 27655,
|
||||
CREATURE_EREGOS = 27656
|
||||
};
|
||||
NPC_DRAKOS = 27654,
|
||||
NPC_VAROS = 27447,
|
||||
NPC_UROM = 27655,
|
||||
NPC_EREGOS = 27656,
|
||||
|
||||
NPC_AZURE_RING_GUARDIAN = 27638
|
||||
};
|
||||
|
||||
enum GameObjects
|
||||
{
|
||||
GO_DRAGON_CAGE_DOOR = 193995
|
||||
};
|
||||
|
||||
enum SpellEvents
|
||||
{
|
||||
EVENT_CALL_DRAGON = 12229
|
||||
};
|
||||
|
||||
enum CreatureActions
|
||||
{
|
||||
ACTION_CALL_DRAGON_EVENT = 1
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user