mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripting/Obsidian Sanctum: Updated scripts to use Events.
This commit is contained in:
@@ -449,6 +449,7 @@ void AddSC_oculus();
|
||||
void AddSC_boss_malygos(); // The Nexus: Eye of Eternity
|
||||
void AddSC_instance_eye_of_eternity();
|
||||
void AddSC_boss_sartharion(); //Obsidian Sanctum
|
||||
void AddSC_obsidian_sanctum();
|
||||
void AddSC_instance_obsidian_sanctum();
|
||||
void AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
|
||||
void AddSC_boss_loken();
|
||||
@@ -1287,6 +1288,7 @@ void AddNorthrendScripts()
|
||||
AddSC_boss_malygos(); // The Nexus: Eye of Eternity
|
||||
AddSC_instance_eye_of_eternity();
|
||||
AddSC_boss_sartharion(); //Obsidian Sanctum
|
||||
AddSC_obsidian_sanctum();
|
||||
AddSC_instance_obsidian_sanctum();
|
||||
AddSC_boss_bjarngrim(); //Ulduar Halls of Lightning
|
||||
AddSC_boss_loken();
|
||||
|
||||
@@ -45,6 +45,7 @@ set(scripts_STAT_SRCS
|
||||
Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
|
||||
Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.h
|
||||
Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
|
||||
Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
|
||||
Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp
|
||||
Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h
|
||||
Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -19,8 +19,6 @@
|
||||
#include "InstanceScript.h"
|
||||
#include "obsidian_sanctum.h"
|
||||
|
||||
#define MAX_ENCOUNTER 1
|
||||
|
||||
/* Obsidian Sanctum encounters:
|
||||
0 - Sartharion
|
||||
*/
|
||||
@@ -28,48 +26,18 @@
|
||||
class instance_obsidian_sanctum : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
instance_obsidian_sanctum() : InstanceMapScript("instance_obsidian_sanctum", 615) { }
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE
|
||||
{
|
||||
return new instance_obsidian_sanctum_InstanceMapScript(map);
|
||||
}
|
||||
instance_obsidian_sanctum() : InstanceMapScript(OSScriptName, 615) { }
|
||||
|
||||
struct instance_obsidian_sanctum_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_obsidian_sanctum_InstanceMapScript(Map* map) : InstanceScript(map) { }
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint64 m_uiSartharionGUID;
|
||||
uint64 m_uiTenebronGUID;
|
||||
uint64 m_uiShadronGUID;
|
||||
uint64 m_uiVesperonGUID;
|
||||
|
||||
bool m_bTenebronKilled;
|
||||
bool m_bShadronKilled;
|
||||
bool m_bVesperonKilled;
|
||||
|
||||
void Initialize() OVERRIDE
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
m_uiSartharionGUID = 0;
|
||||
m_uiTenebronGUID = 0;
|
||||
m_uiShadronGUID = 0;
|
||||
m_uiVesperonGUID = 0;
|
||||
|
||||
m_bTenebronKilled = false;
|
||||
m_bShadronKilled = false;
|
||||
m_bVesperonKilled = false;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const OVERRIDE
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
sartharionGUID = 0;
|
||||
tenebronGUID = 0;
|
||||
shadronGUID = 0;
|
||||
vesperonGUID = 0;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) OVERRIDE
|
||||
@@ -77,68 +45,113 @@ public:
|
||||
switch (creature->GetEntry())
|
||||
{
|
||||
case NPC_SARTHARION:
|
||||
m_uiSartharionGUID = creature->GetGUID();
|
||||
sartharionGUID = creature->GetGUID();
|
||||
break;
|
||||
//three dragons below set to active state once created.
|
||||
//we must expect bigger raid to encounter main boss, and then three dragons must be active due to grid differences
|
||||
// Three dragons below set to active state once created.
|
||||
// We must expect bigger raid to encounter main boss, and then three dragons must be active due to grid differences
|
||||
case NPC_TENEBRON:
|
||||
m_uiTenebronGUID = creature->GetGUID();
|
||||
tenebronGUID = creature->GetGUID();
|
||||
creature->setActive(true);
|
||||
break;
|
||||
case NPC_SHADRON:
|
||||
m_uiShadronGUID = creature->GetGUID();
|
||||
shadronGUID = creature->GetGUID();
|
||||
creature->setActive(true);
|
||||
break;
|
||||
case NPC_VESPERON:
|
||||
m_uiVesperonGUID = creature->GetGUID();
|
||||
vesperonGUID = creature->GetGUID();
|
||||
creature->setActive(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 uiType, uint32 uiData) OVERRIDE
|
||||
bool SetBossState(uint32 type, EncounterState state) OVERRIDE
|
||||
{
|
||||
if (uiType == TYPE_SARTHARION_EVENT)
|
||||
m_auiEncounter[0] = uiData;
|
||||
else if (uiType == TYPE_TENEBRON_PREKILLED)
|
||||
m_bTenebronKilled = true;
|
||||
else if (uiType == TYPE_SHADRON_PREKILLED)
|
||||
m_bShadronKilled = true;
|
||||
else if (uiType == TYPE_VESPERON_PREKILLED)
|
||||
m_bVesperonKilled = true;
|
||||
}
|
||||
if (!InstanceScript::SetBossState(type, state))
|
||||
return false;
|
||||
|
||||
uint32 GetData(uint32 uiType) const OVERRIDE
|
||||
{
|
||||
if (uiType == TYPE_SARTHARION_EVENT)
|
||||
return m_auiEncounter[0];
|
||||
else if (uiType == TYPE_TENEBRON_PREKILLED)
|
||||
return m_bTenebronKilled;
|
||||
else if (uiType == TYPE_SHADRON_PREKILLED)
|
||||
return m_bShadronKilled;
|
||||
else if (uiType == TYPE_VESPERON_PREKILLED)
|
||||
return m_bVesperonKilled;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 uiData) const OVERRIDE
|
||||
{
|
||||
switch (uiData)
|
||||
switch (type)
|
||||
{
|
||||
case DATA_SARTHARION:
|
||||
return m_uiSartharionGUID;
|
||||
case DATA_TENEBRON:
|
||||
return m_uiTenebronGUID;
|
||||
case DATA_SHADRON:
|
||||
return m_uiShadronGUID;
|
||||
case DATA_VESPERON:
|
||||
return m_uiVesperonGUID;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 Data) const OVERRIDE
|
||||
{
|
||||
switch (Data)
|
||||
{
|
||||
case DATA_SARTHARION:
|
||||
return sartharionGUID;
|
||||
case DATA_TENEBRON:
|
||||
return tenebronGUID;
|
||||
case DATA_SHADRON:
|
||||
return shadronGUID;
|
||||
case DATA_VESPERON:
|
||||
return vesperonGUID;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string GetSaveData() OVERRIDE
|
||||
{
|
||||
OUT_SAVE_INST_DATA;
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "O S " << GetBossSaveData();
|
||||
|
||||
OUT_SAVE_INST_DATA_COMPLETE;
|
||||
return saveStream.str();
|
||||
}
|
||||
|
||||
void Load(const char* str) OVERRIDE
|
||||
{
|
||||
if (!str)
|
||||
{
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
return;
|
||||
}
|
||||
|
||||
OUT_LOAD_INST_DATA(str);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
|
||||
std::istringstream loadStream(str);
|
||||
loadStream >> dataHead1 >> dataHead2;
|
||||
|
||||
if (dataHead1 == 'O' && dataHead2 == 'S')
|
||||
{
|
||||
for (uint32 i = 0; i < EncounterCount; ++i)
|
||||
{
|
||||
uint32 tmpState;
|
||||
loadStream >> tmpState;
|
||||
if (tmpState == IN_PROGRESS || tmpState > SPECIAL)
|
||||
tmpState = NOT_STARTED;
|
||||
SetBossState(i, EncounterState(tmpState));
|
||||
}
|
||||
}
|
||||
else
|
||||
OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 sartharionGUID;
|
||||
uint64 tenebronGUID;
|
||||
uint64 shadronGUID;
|
||||
uint64 vesperonGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const OVERRIDE
|
||||
{
|
||||
return new instance_obsidian_sanctum_InstanceMapScript(map);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_instance_obsidian_sanctum()
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -18,17 +18,18 @@
|
||||
#ifndef DEF_OBSIDIAN_SANCTUM_H
|
||||
#define DEF_OBSIDIAN_SANCTUM_H
|
||||
|
||||
#define OSScriptName "instance_obsidian_sanctum"
|
||||
|
||||
uint32 const EncounterCount = 5;
|
||||
|
||||
enum DataTypes
|
||||
{
|
||||
TYPE_SARTHARION_EVENT = 1,
|
||||
TYPE_TENEBRON_PREKILLED = 2,
|
||||
TYPE_SHADRON_PREKILLED = 3,
|
||||
TYPE_VESPERON_PREKILLED = 4,
|
||||
|
||||
DATA_SARTHARION = 10,
|
||||
DATA_TENEBRON = 11,
|
||||
DATA_SHADRON = 12,
|
||||
DATA_VESPERON = 13
|
||||
DATA_SARTHARION = 0,
|
||||
DATA_TENEBRON = 1,
|
||||
DATA_SHADRON = 2,
|
||||
DATA_VESPERON = 3,
|
||||
DATA_PORTAL_OPEN = 4,
|
||||
TWILIGHT_ACHIEVEMENTS = 5
|
||||
};
|
||||
|
||||
enum CreaturesIds
|
||||
|
||||
Reference in New Issue
Block a user