aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/CMakeLists.txt2
-rw-r--r--src/bindings/scripts/ScriptMgr.cpp6
-rw-r--r--src/bindings/scripts/VC80/80ScriptDev2.vcproj12
-rw-r--r--src/bindings/scripts/VC90/90ScriptDev2.vcproj12
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h16
-rw-r--r--src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp77
-rw-r--r--src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp34
-rw-r--r--src/shared/Errors.h4
8 files changed, 135 insertions, 28 deletions
diff --git a/src/bindings/scripts/CMakeLists.txt b/src/bindings/scripts/CMakeLists.txt
index 3dcd38fa256..e4375732161 100644
--- a/src/bindings/scripts/CMakeLists.txt
+++ b/src/bindings/scripts/CMakeLists.txt
@@ -246,6 +246,8 @@ SET(trinityscript_LIB_SRCS
scripts/zone/naxxramas/def_naxxramas.h
scripts/zone/naxxramas/instance_naxxramas.cpp
scripts/zone/netherstorm/netherstorm.cpp
+ scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
+ scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
scripts/zone/onyxias_lair/boss_onyxia.cpp
scripts/zone/orgrimmar/orgrimmar.cpp
scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp
diff --git a/src/bindings/scripts/ScriptMgr.cpp b/src/bindings/scripts/ScriptMgr.cpp
index 3dbdd4899a1..a7a57818df7 100644
--- a/src/bindings/scripts/ScriptMgr.cpp
+++ b/src/bindings/scripts/ScriptMgr.cpp
@@ -414,6 +414,9 @@ extern void AddSC_boss_ormorok();
extern void AddSC_boss_keristrasza();
extern void AddSC_instance_nexus();
+//Obsidian Sanctum
+extern void AddSC_instance_obsidian_sanctum();
+
//Onyxia's Lair
extern void AddSC_boss_onyxia();
@@ -1315,6 +1318,9 @@ void ScriptsInit(char const* cfg_file = "trinitycore.conf")
AddSC_boss_keristrasza();
AddSC_instance_nexus();
+ //Obsidian Sanctum
+ AddSC_instance_obsidian_sanctum();
+
//Onyxia's Lair
AddSC_boss_onyxia();
diff --git a/src/bindings/scripts/VC80/80ScriptDev2.vcproj b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
index a615d579f4c..fde415501c0 100644
--- a/src/bindings/scripts/VC80/80ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC80/80ScriptDev2.vcproj
@@ -2818,6 +2818,18 @@
</File>
</Filter>
</Filter>
+ <Filter
+ Name="Obsidian Sanctum"
+ >
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\def_obsidian_sanctum.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\instance_obsidian_sanctum.cpp"
+ >
+ </File>
+ </Filter>
<Filter
Name="Vault of Archavon"
>
diff --git a/src/bindings/scripts/VC90/90ScriptDev2.vcproj b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
index effb6e84d13..958a0bf0eae 100644
--- a/src/bindings/scripts/VC90/90ScriptDev2.vcproj
+++ b/src/bindings/scripts/VC90/90ScriptDev2.vcproj
@@ -2819,6 +2819,18 @@
</File>
</Filter>
</Filter>
+ <Filter
+ Name="Obsidian Sanctum"
+ >
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\def_obsidian_sanctum.h"
+ >
+ </File>
+ <File
+ RelativePath="..\scripts\zone\obsidian_sanctum\instance_obsidian_sanctum.cpp"
+ >
+ </File>
+ </Filter>
<Filter
Name="Vault of Archavon"
>
diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h b/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
index 59d76502af3..461834a2386 100644
--- a/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
+++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/def_obsidian_sanctum.h
@@ -1,4 +1,20 @@
#ifndef DEF_OBSIDIAN_SANCTUM_H
#define DEF_OBSIDIAN_SANCTUM_H
+enum
+{
+ TYPE_SARTHARION_EVENT = 1,
+
+ DATA_SARTHARION = 10,
+ DATA_TENEBRON = 11,
+ DATA_SHADRON = 12,
+ DATA_VESPERON = 13,
+
+ NPC_SARTHARION = 28860,
+ NPC_TENEBRON = 30452,
+ NPC_SHADRON = 30451,
+ NPC_VESPERON = 30449,
+ GO_TWILIGHT_PORTAL = 193988
+};
+
#endif
diff --git a/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp b/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
index 898574c99eb..72166261684 100644
--- a/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
+++ b/src/bindings/scripts/scripts/zone/obsidian_sanctum/instance_obsidian_sanctum.cpp
@@ -1,9 +1,86 @@
#include "precompiled.h"
#include "def_obsidian_sanctum.h"
+#define ENCOUNTERS 1
+
+/* Obsidian Sanctum encounters:
+0 - Sartharion
+*/
+
struct TRINITY_DLL_DECL instance_obsidian_sanctum : public ScriptedInstance
{
instance_obsidian_sanctum(Map *Map) : ScriptedInstance(Map) {Initialize();};
+
+ uint32 m_uiEncounter[ENCOUNTERS];
+ uint64 m_uiSartharionGUID;
+ uint64 m_uiTenebronGUID;
+ uint64 m_uiShadronGUID;
+ uint64 m_uiVesperonGUID;
+
+ void Initialize()
+ {
+ m_uiSartharionGUID = 0;
+ m_uiTenebronGUID = 0;
+ m_uiShadronGUID = 0;
+ m_uiVesperonGUID = 0;
+
+ for(uint8 i = 0; i < ENCOUNTERS; ++i)
+ m_uiEncounter[i] = NOT_STARTED;
+ }
+
+ void OnCreatureCreate(Creature* pCreature, uint32 entry)
+ {
+ switch(pCreature->GetEntry())
+ {
+ case NPC_SARTHARION:
+ m_uiSartharionGUID = pCreature->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
+ case NPC_TENEBRON:
+ m_uiTenebronGUID = pCreature->GetGUID();
+ pCreature->setActive(true);
+ break;
+ case NPC_SHADRON:
+ m_uiShadronGUID = pCreature->GetGUID();
+ pCreature->setActive(true);
+ break;
+ case NPC_VESPERON:
+ m_uiVesperonGUID = pCreature->GetGUID();
+ pCreature->setActive(true);
+ break;
+ }
+ }
+
+ void SetData(uint32 uiType, uint32 uiData)
+ {
+ if (uiType == TYPE_SARTHARION_EVENT)
+ m_uiEncounter[0] = uiData;
+ }
+
+ uint32 GetData(uint32 uiType)
+ {
+ if (uiType == TYPE_SARTHARION_EVENT)
+ return m_uiEncounter[0];
+
+ return 0;
+ }
+
+ uint64 GetData64(uint32 uiData)
+ {
+ switch(uiData)
+ {
+ case DATA_SARTHARION:
+ return m_uiSartharionGUID;
+ case DATA_TENEBRON:
+ return m_uiTenebronGUID;
+ case DATA_SHADRON:
+ return m_uiShadronGUID;
+ case DATA_VESPERON:
+ return m_uiVesperonGUID;
+ }
+ return 0;
+ }
};
InstanceData* GetInstanceData_instance_obsidian_sanctum(Map* map)
diff --git a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp
index 3089f3267c8..9449524412c 100644
--- a/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp
+++ b/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp
@@ -312,40 +312,18 @@ struct TRINITY_DLL_DECL boss_twinemperorsAI : public ScriptedAI
}
}
- class AnyBugCheck
- {
- public:
- AnyBugCheck(WorldObject const* obj, float range) : i_obj(obj), i_range(range) {}
- bool operator()(Creature* u)
- {
- Creature *c = u;
- if (!i_obj->IsWithinDistInMap(c, i_range))
- return false;
- return (c->GetEntry() == 15316 || c->GetEntry() == 15317);
- }
- private:
- WorldObject const* i_obj;
- float i_range;
- };
-
Creature *RespawnNearbyBugsAndGetOne()
{
- CellPair p(Trinity::ComputeCellPair(m_creature->GetPositionX(), m_creature->GetPositionY()));
- Cell cell(p);
- cell.data.Part.reserved = ALL_DISTRICT;
- cell.SetNoCreate();
-
- std::list<Creature*> unitList;
+ std::list<Creature*> lUnitList;
+ m_creature->GetCreatureListWithEntryInGrid(lUnitList,15316,150.0f);
+ m_creature->GetCreatureListWithEntryInGrid(lUnitList,15317,150.0f);
- AnyBugCheck u_check(m_creature, 150);
- Trinity::CreatureListSearcher<AnyBugCheck> searcher(m_creature, unitList, u_check);
- TypeContainerVisitor<Trinity::CreatureListSearcher<AnyBugCheck>, GridTypeMapContainer > grid_creature_searcher(searcher);
- CellLock<GridReadGuard> cell_lock(cell, p);
- cell_lock->Visit(cell_lock, grid_creature_searcher, *(m_creature->GetMap()));
+ if (lUnitList.empty())
+ return NULL;
Creature *nearb = NULL;
- for(std::list<Creature*>::iterator iter = unitList.begin(); iter != unitList.end(); ++iter)
+ for(std::list<Creature*>::iterator iter = lUnitList.begin(); iter != lUnitList.end(); ++iter)
{
Creature *c = *iter;
if (c)
diff --git a/src/shared/Errors.h b/src/shared/Errors.h
index 992b1752a0f..5cfd109ee01 100644
--- a/src/shared/Errors.h
+++ b/src/shared/Errors.h
@@ -23,6 +23,10 @@
#include "Common.h"
+#ifndef HAVE_CONFIG_H
+#define HAVE_ACE_STACK_TRACE_H 1
+#endif
+
#ifdef HAVE_ACE_STACK_TRACE_H
#include "ace/Stack_Trace.h"
#endif