diff options
author | Kudlaty <none@none> | 2009-07-24 06:16:31 +0200 |
---|---|---|
committer | Kudlaty <none@none> | 2009-07-24 06:16:31 +0200 |
commit | 4f7e94ace27126cb272924f1f809635032edca97 (patch) | |
tree | ca660a977092e68d33fb8c650c7ceb6d1d547fce /src | |
parent | 607dfaf8c9cf723a9a2244f88de506b609651341 (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')
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 |