aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKudlaty <none@none>2009-07-24 06:16:31 +0200
committerKudlaty <none@none>2009-07-24 06:16:31 +0200
commit4f7e94ace27126cb272924f1f809635032edca97 (patch)
treeca660a977092e68d33fb8c650c7ceb6d1d547fce /src
parent607dfaf8c9cf723a9a2244f88de506b609651341 (diff)
Merge [SD2]
r1095 Correct one spellId in hyjal - skip r1096 Remove more grid search code from scripts and use functions. r1097 Remove obsolete functions redefined in 1094 r1098 Added text for bosses in map 615 r1099 Added instance script for map 615 --HG-- branch : trunk
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