From f1c13a7c79f7c2eb5d1d08d3e4724a29d383538c Mon Sep 17 00:00:00 2001 From: DiSlord Date: Fri, 20 Feb 2009 16:12:47 -0600 Subject: [PATCH 1/6] fix for height maps --HG-- branch : trunk --- contrib/extractor/adt.cpp | 14 ++++++---- src/game/Map.cpp | 58 +++++++++++++++++++++++++++++++++++++-- src/game/Map.h | 4 ++- 3 files changed, 67 insertions(+), 9 deletions(-) diff --git a/contrib/extractor/adt.cpp b/contrib/extractor/adt.cpp index 37e4c0883d9..b512fc6a715 100644 --- a/contrib/extractor/adt.cpp +++ b/contrib/extractor/adt.cpp @@ -403,15 +403,14 @@ void TransformData() { for(int y=0;y<128;y++) { - cell->v8[x][y] = (float)mcells->ch[x/8][y/8].v8[x%8][y%8]; - cell->v9[x][y] = (float)mcells->ch[x/8][y/8].v9[x%8][y%8]; + cell->v8[y][x] = (float)mcells->ch[x/8][y/8].v8[x%8][y%8]; + cell->v9[y][x] = (float)mcells->ch[x/8][y/8].v9[x%8][y%8]; } //extra 1 point on bounds - cell->v9[x][128] = (float)mcells->ch[x/8][15].v9[x%8][8]; + cell->v9[128][x] = (float)mcells->ch[x/8][15].v9[x%8][8]; //x==y - cell->v9[128][x] = (float)mcells->ch[15][x/8].v9[8][x%8]; - + cell->v9[x][128] = (float)mcells->ch[15][x/8].v9[8][x%8]; } //and the last 1 @@ -470,6 +469,7 @@ bool ConvertADT(char * filename,char * filename2) delete cell; TransformData(); + /* for(unsigned int x=0;xv9, 1, sizeof(cell->v9), output); + fwrite(&cell->v8, 1, sizeof(cell->v8), output); fclose(output); delete cell; /* diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 2211aa5b69c..8d0b40c90ac 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1082,8 +1082,8 @@ float Map::GetHeight(float x, float y, float z, bool pUseVmaps) const int gx=(int)(32-x/SIZE_OF_GRIDS); //grid x int gy=(int)(32-y/SIZE_OF_GRIDS); //grid y - float lx=MAP_RESOLUTION*(32 -x/SIZE_OF_GRIDS - gx); - float ly=MAP_RESOLUTION*(32 -y/SIZE_OF_GRIDS - gy); + float lx=128*(32 -x/SIZE_OF_GRIDS - gx); + float ly=128*(32 -y/SIZE_OF_GRIDS - gy); // ensure GridMap is loaded const_cast(this)->EnsureGridCreated(GridPair(63-gx,63-gy)); @@ -1095,10 +1095,63 @@ float Map::GetHeight(float x, float y, float z, bool pUseVmaps) const int lx_int = (int)lx; int ly_int = (int)ly; + lx -= lx_int; + ly -= ly_int; + + float a,b,c; + if (lx+ly < 1) + { + if (lx > ly) + { + // 1 + float h1 = gmap->v9[lx_int][ly_int]; + float h2 = gmap->v9[lx_int+1][ly_int]; + float h5 = 2 * gmap->v8[lx_int][ly_int]; + a = h2-h1; + b = h5-h1-h2; + c = h1; + } + else + { + // 2 + float h1 = gmap->v9[lx_int][ly_int]; + float h3 = gmap->v9[lx_int][ly_int+1]; + float h5 = 2 * gmap->v8[lx_int][ly_int]; + a = h5 - h1 - h3; + b = h3 - h1; + c = h1; + } + } + else + { + if (lx > ly) + { + // 3 + float h2 = gmap->v9[lx_int+1][ly_int]; + float h4 = gmap->v9[lx_int+1][ly_int+1]; + float h5 = 2 * gmap->v8[lx_int][ly_int]; + a = h2 + h4 - h5; + b = h4 - h2; + c = h5 - h4; + } + else + { + // 4 + float h3 = gmap->v9[lx_int][ly_int+1]; + float h4 = gmap->v9[lx_int+1][ly_int+1]; + float h5 = 2 * gmap->v8[lx_int][ly_int]; + a = h4 - h3; + b = h3 + h4 - h5; + c = h5 - h4; + } + } + float _mapheight = a * lx + b * ly + c; + // In some very rare case this will happen. Need find a better way. if(lx_int == MAP_RESOLUTION) --lx_int; if(ly_int == MAP_RESOLUTION) --ly_int; + /* float zi[4]; // Probe 4 nearest points (except border cases) zi[0] = gmap->Z[lx_int][ly_int]; @@ -1117,6 +1170,7 @@ float Map::GetHeight(float x, float y, float z, bool pUseVmaps) const // Use the simplified bilinear equation, as described in [url="http://en.wikipedia.org/wiki/Bilinear_interpolation"]http://en.wikipedia.org/wiki/Bilinear_interpolation[/url] float _mapheight = b[0] + (b[1]*fact_x) + (b[2]*fact_y) + (b[3]*fact_x*fact_y); + */ // look from a bit higher pos to find the floor, ignore under surface case if(z + 2.0f > _mapheight) mapHeight = _mapheight; diff --git a/src/game/Map.h b/src/game/Map.h index fb921309cba..10d8c914cc2 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -75,7 +75,9 @@ typedef struct uint16 area_flag[16][16]; uint8 terrain_type[16][16]; float liquid_level[128][128]; - float Z[MAP_RESOLUTION][MAP_RESOLUTION]; + float v9[16 * 8 + 1][16 * 8 + 1]; + float v8[16 * 8][16 * 8]; + //float Z[MAP_RESOLUTION][MAP_RESOLUTION]; }GridMap; struct CreatureMover From 6f7c53b7f5b082dcd0422ff66659c4ddadcd3253 Mon Sep 17 00:00:00 2001 From: raczman Date: Fri, 20 Feb 2009 18:22:39 -0600 Subject: [PATCH 2/6] fix cmake/ACE for freeBSD and Mac OSX --HG-- branch : trunk --- CMakeLists.txt | 5 +++++ contrib/extractor/libmpq/mpq.h | 3 +++ dep/ACE_wrappers/ace/OS_NS_netdb.inl | 10 +++++----- src/bindings/scripts/CMakeLists.txt | 4 ++++ src/framework/Platform/Define.h | 9 +++++++-- src/trinitycore/CMakeLists.txt | 11 ++++++++++- src/trinityrealm/CMakeLists.txt | 14 ++++++++++---- 7 files changed, 44 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d03b0ff681..27bbaa17674 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,11 @@ endif(ACE_FOUND) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) +IF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + SET(OSX_LIBS -lcrypto) + add_definitions(-D__ASSERTMACROS__) +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + add_definitions(--no-warnings) #to make build look nice, no gcc nazi warnings. diff --git a/contrib/extractor/libmpq/mpq.h b/contrib/extractor/libmpq/mpq.h index 008c7147aba..1ed19d5bc3f 100644 --- a/contrib/extractor/libmpq/mpq.h +++ b/contrib/extractor/libmpq/mpq.h @@ -36,6 +36,9 @@ #define PATH_MAX 260 #endif +#if defined(__APPLE_CC__) + #define lseek64 lseek +#endif #define LIBMPQ_MAJOR_VERSION 0 /* Major version number... maybe sometimes we reach version 1 :) */ #define LIBMPQ_MINOR_VERSION 3 /* Minor version number - increased only for small changes */ diff --git a/dep/ACE_wrappers/ace/OS_NS_netdb.inl b/dep/ACE_wrappers/ace/OS_NS_netdb.inl index f1d0009eef3..508831d4380 100644 --- a/dep/ACE_wrappers/ace/OS_NS_netdb.inl +++ b/dep/ACE_wrappers/ace/OS_NS_netdb.inl @@ -125,7 +125,7 @@ ACE_OS::gethostbyaddr_r (const char *addr, *h_errnop = h_errno; return (struct hostent *) 0; } -# elif defined (__GLIBC__) +# elif defined (__GLIBC__) || defined (__FreeBSD__) // GNU C library has a different signature ACE_OS::memset (buffer, 0, sizeof (ACE_HOSTENT_DATA)); @@ -318,7 +318,7 @@ ACE_OS::gethostbyname_r (const char *name, *h_errnop = h_errno; return (struct hostent *) 0; } -# elif defined (__GLIBC__) +# elif defined (__GLIBC__) || defined (__FreeBSD__) // GNU C library has a different signature ACE_OS::memset (buffer, 0, sizeof (ACE_HOSTENT_DATA)); @@ -528,7 +528,7 @@ ACE_OS::getprotobyname_r (const char *name, else return 0; //FUZZ: enable check_for_lack_ACE_OS -# elif defined (__GLIBC__) +# elif defined (__GLIBC__) || defined (__FreeBSD__) // GNU C library has a different signature //FUZZ: disable check_for_lack_ACE_OS if (::getprotobyname_r (name, @@ -609,7 +609,7 @@ ACE_OS::getprotobynumber_r (int proto, //FUZZ: enable check_for_lack_ACE_OS else return 0; -# elif defined (__GLIBC__) +# elif defined (__GLIBC__) || defined (__FreeBSD__) // GNU C library has a different signature //FUZZ: disable check_for_lack_ACE_OS if (::getprotobynumber_r (proto, @@ -695,7 +695,7 @@ ACE_OS::getservbyname_r (const char *svc, //FUZZ: enable check_for_lack_ACE_OS else return (struct servent *) 0; -# elif defined (__GLIBC__) +# elif defined (__GLIBC__) || defined (__FreeBSD__) // GNU C library has a different signature ACE_OS::memset (buf, 0, sizeof (ACE_SERVENT_DATA)); diff --git a/src/bindings/scripts/CMakeLists.txt b/src/bindings/scripts/CMakeLists.txt index d908064ca9b..39d7a556fa7 100644 --- a/src/bindings/scripts/CMakeLists.txt +++ b/src/bindings/scripts/CMakeLists.txt @@ -383,6 +383,10 @@ add_library(trinityscript SHARED ${trinityscript_LIB_SRCS}) add_definitions(-D_TRINITY_SCRIPT_CONFIG='"${CONF_DIR}/trinitycore.conf"') +IF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + SET_TARGET_PROPERTIES(trinityscript PROPERTIES LINK_FLAGS "-flat_namespace -undefined suppress") +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + target_link_libraries(trinityscript) set_target_properties(trinityscript PROPERTIES VERSION 4.2.0 SOVERSION 4) diff --git a/src/framework/Platform/Define.h b/src/framework/Platform/Define.h index cf4fa3e0def..5e0cdfdd179 100644 --- a/src/framework/Platform/Define.h +++ b/src/framework/Platform/Define.h @@ -60,8 +60,13 @@ # else # define TRINITY_IMPORT __attribute__ ((cdecl)) # endif //__APPLE_CC__ && BIG_ENDIAN -# define TRINITY_SCRIPT_EXT ".so" -# define TRINITY_SCRIPT_NAME "libtrinityscript" +# if defined(__APPLE_CC__) +# define TRINITY_SCRIPT_EXT ".dylib" +# define TRINITY_SCRIPT_NAME "../lib/libtrinityscript" +# else +# define TRINITY_SCRIPT_EXT ".so" +# define TRINITY_SCRIPT_NAME "libtrinityscript" +# endif //__APPLE_CC__ # define TRINITY_PATH_MAX PATH_MAX #endif //PLATFORM diff --git a/src/trinitycore/CMakeLists.txt b/src/trinitycore/CMakeLists.txt index 72ceca8dd33..2c7c4544577 100644 --- a/src/trinitycore/CMakeLists.txt +++ b/src/trinitycore/CMakeLists.txt @@ -13,15 +13,23 @@ WorldRunnable.cpp WorldRunnable.h ) +SET(trinity-core_LINK_FLAGS "") + add_executable(trinity-core ${trinity-core_SRCS}) add_definitions( -D_TRINITY_CORE_CONFIG='"${CONF_DIR}/trinitycore.conf"' ) IF (DO_MYSQL) - SET_TARGET_PROPERTIES(trinity-core PROPERTIES LINK_FLAGS "-pthread") + SET(trinity-core_LINK_FLAGS "-pthread ${trinity-core_LINK_FLAGS}") ENDIF(DO_MYSQL) +IF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + SET(trinity-core_LINK_FLAGS "-framework Carbon ${trinity-core_LINK_FLAGS}") + SET(SCRIPT_LIB "") +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + +SET_TARGET_PROPERTIES(trinity-core PROPERTIES LINK_FLAGS "${trinity-core_LINK_FLAGS}") target_link_libraries( trinity-core @@ -42,6 +50,7 @@ ${POSTGRE_LIBS} ${SSLLIB} ${ACE_LIBRARY} ${ZLIB} +${OSX_LIBS} ) install(TARGETS trinity-core DESTINATION bin) diff --git a/src/trinityrealm/CMakeLists.txt b/src/trinityrealm/CMakeLists.txt index cddea04ea47..f883259bbf5 100644 --- a/src/trinityrealm/CMakeLists.txt +++ b/src/trinityrealm/CMakeLists.txt @@ -9,18 +9,24 @@ RealmList.cpp RealmList.h ) +SET(trinity-realm_LINK_FLAGS "") + add_executable(trinity-realm ${trinity-realm_SRCS}) add_definitions( -D_TRINITY_REALM_CONFIG='"${CONF_DIR}/trinityrealm.conf"' ) IF (DO_MYSQL) - #SET_TARGET_PROPERTIES(mangos-realmd PROPERTIES LINK_FLAGS ${MYSQL_LIBS}) - SET_TARGET_PROPERTIES(trinity-realm PROPERTIES LINK_FLAGS "-pthread") + SET(trinity-realm_LINK_FLAGS "-pthread ${trinity-realm_LINK_FLAGS}") ENDIF(DO_MYSQL) IF (DO_POSTGRE) - SET_TARGET_PROPERTIES(trinity-realmd PROPERTIES LINK_FLAGS ${POSTGRE_LIBS}) + SET(trinity-realm_LINK_FLAGS "${POSTGRE_LIBS} ${trinity-realm_LINK_FLAGS}") ENDIF(DO_POSTGRE) +IF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + SET(trinity-realm_LINK_FLAGS "-framework Carbon ${trinity-realm_LINK_FLAGS}") +ENDIF (CMAKE_SYSTEM_NAME MATCHES "Darwin") + +SET_TARGET_PROPERTIES(trinity-realm PROPERTIES LINK_FLAGS "${trinity-realm_LINK_FLAGS}") target_link_libraries( trinity-realm @@ -34,11 +40,11 @@ ZThread zlib ${SSLLIB} ${MYSQL_LIBRARIES} +${OSX_LIBS} ) install(TARGETS trinity-realm DESTINATION bin) - ########### install files ############### install(FILES trinityrealm.conf.dist DESTINATION etc) From a5e78b0f3136c664c6fcee1b8cce1c5f4aa7ca6e Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 21 Feb 2009 10:09:59 +0100 Subject: [PATCH 3/6] *Fix a typo - by Xlybriem --HG-- branch : trunk --- sql/world_scripts_full.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/world_scripts_full.sql b/sql/world_scripts_full.sql index ed2b963fea1..4fa86b68082 100644 --- a/sql/world_scripts_full.sql +++ b/sql/world_scripts_full.sql @@ -510,7 +510,7 @@ UPDATE `creature_template` SET `ScriptName`='boss_romulo' WHERE `entry`=17533; UPDATE `creature_template` SET `ScriptName`='boss_dorothee' WHERE `entry`=17535; UPDATE `creature_template` SET `ScriptName`='boss_strawman' WHERE `entry`=17543; UPDATE `creature_template` SET `ScriptName`='boss_tinhead' WHERE `entry`=17547; -UPDATE `creature_template` SET `ScriptName`='boss_tito' WHERE `entry`=17548; +UPDATE `creature_template` SET `ScriptName`='mob_tito' WHERE `entry`=17548; UPDATE `creature_template` SET `ScriptName`='boss_roar' WHERE `entry`=17546; UPDATE `creature_template` SET `ScriptName`='boss_crone' WHERE `entry`=18168; UPDATE `creature_template` SET `ScriptName`='boss_terestian_illhoof' WHERE `entry`=15688; From f538c2253d2ccb928e5f67d9226341b3e263a108 Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 21 Feb 2009 10:16:05 +0100 Subject: [PATCH 4/6] *Added Wrath of the Astromancer for Solarian - by streetrat --HG-- branch : trunk --- .../zone/tempest_keep/the_eye/boss_astromancer.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp index fa177b7b240..896ccc3a3bf 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp @@ -41,6 +41,7 @@ EndScriptData */ #define SPELL_FEAR 29321 #define SPELL_VOID_BOLT 39329 #define SPELL_SPOTLIGHT 25824 +#define SPELL_WRATH_OF_THE_ASTROMANCER 42783 #define CENTER_X 432.909f #define CENTER_Y -373.424f @@ -95,6 +96,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI uint32 MarkOfTheSolarian_Timer; uint32 Jump_Timer; uint32 defaultarmor; + uint32 Wrath_Timer; float defaultsize; float Portals[3][3]; @@ -117,6 +119,7 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI AppearDelay = false; MarkOfTheSolarian_Timer=45000; Jump_Timer=8000; + Wrath_Timer = 20000+rand()%5000;//twice in phase one Phase = 1; if(pInstance) @@ -224,6 +227,13 @@ struct TRINITY_DLL_DECL boss_high_astromancer_solarianAI : public ScriptedAI BlindingLight_Timer = 45000; }else BlindingLight_Timer -= diff; + if( Wrath_Timer < diff) + { + m_creature->InterruptNonMeleeSpells(false); + DoCast(SelectUnit(SELECT_TARGET_RANDOM,1,100,true), SPELL_WRATH_OF_THE_ASTROMANCER, true); + Wrath_Timer = 20000+rand()%5000; + }else Wrath_Timer -= diff; + if (ArcaneMissiles_Timer < diff) { if(BlindingLight) From 34ade920cfaffe6a2ac9d8a255334449053e8bf5 Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 21 Feb 2009 10:57:39 +0100 Subject: [PATCH 5/6] *Small fix in Nethermancer Sepethrea script - by Anubisss --HG-- branch : trunk --- .../boss_nethermancer_sepethrea.cpp | 50 ++++++++++--------- .../tempest_keep/the_mechanar/def_mechanar.h | 3 +- .../the_mechanar/instance_mechanar.cpp | 22 ++++---- 3 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp index 85cb419c4db..93b653a344c 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp @@ -33,6 +33,7 @@ EndScriptData */ #define SAY_DEATH -1554019 #define SPELL_SUMMON_RAGIN_FLAMES 35275 +#define H_SPELL_SUMMON_RAGIN_FLAMES 39084 #define SPELL_FROST_ATTACK 35263 #define SPELL_ARCANE_BLAST 35314 @@ -66,18 +67,18 @@ boss_nethermancer_sepethreaAI(Creature *c) : ScriptedAI(c) dragons_breath_Timer = 18000 + rand()%4000; knockback_Timer = 22000 + rand()%6000; solarburn_Timer = 30000; + + if(pInstance) + pInstance->SetData(DATA_NETHERMANCER_EVENT, NOT_STARTED); } void Aggro(Unit *who) { - DoScriptText(SAY_AGGRO, m_creature); + if(pInstance) + pInstance->SetData(DATA_NETHERMANCER_EVENT, IN_PROGRESS); - //Summon two guards, three in heroic - uint8 am = (HeroicMode ? 1 : 2); - for(int i = 0; i < am; i++) - { - DoCast(who,SPELL_SUMMON_RAGIN_FLAMES); - } + DoScriptText(SAY_AGGRO, m_creature); + DoCast(who, HeroicMode ? H_SPELL_SUMMON_RAGIN_FLAMES : SPELL_SUMMON_RAGIN_FLAMES); DoScriptText(SAY_SUMMON, m_creature); } @@ -93,8 +94,9 @@ boss_nethermancer_sepethreaAI(Creature *c) : ScriptedAI(c) void JustDied(Unit* Killer) { DoScriptText(SAY_DEATH, m_creature); + if(pInstance) - pInstance->SetData(DATA_SEPETHREA_DEATH, 0); + pInstance->SetData(DATA_NETHERMANCER_EVENT, DONE); } void UpdateAI(const uint32 diff) @@ -190,6 +192,7 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI onlyonce = false; m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); + m_creature->SetSpeed(MOVE_RUN, HeroicMode ? 0.7f : 0.5f); } void Aggro(Unit* who) @@ -201,6 +204,21 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI if (!UpdateVictim()) return; + //Check_Timer + if(Check_Timer < diff) + { + if(pInstance) + { + if(pInstance->GetData(DATA_NETHERMANCER_EVENT) != IN_PROGRESS) + { + //remove + m_creature->setDeathState(JUST_DIED); + m_creature->RemoveCorpse(); + } + } + Check_Timer = 1000; + }else Check_Timer -= diff; + if (!onlyonce) { if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0)) @@ -221,22 +239,6 @@ struct TRINITY_DLL_DECL mob_ragin_flamesAI : public ScriptedAI flame_timer = 500; }else flame_timer -=diff; - //Check_Timer - if(Check_Timer < diff) - { - if(pInstance) - { - if(pInstance->GetData(DATA_SEPETHREAISDEAD)) - { - //remove - m_creature->setDeathState(JUST_DIED); - m_creature->RemoveCorpse(); - } - } - - Check_Timer = 1000; - }else Check_Timer -= diff; - DoMeleeAttackIfReady(); } diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/def_mechanar.h b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/def_mechanar.h index 8a054604b9d..d1b53eebf53 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/def_mechanar.h +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/def_mechanar.h @@ -1,7 +1,6 @@ #ifndef DEF_MECHANAR_H #define DEF_MECHANAR_H -#define DATA_SEPETHREA_DEATH 1 -#define DATA_SEPETHREAISDEAD 2 +#define DATA_NETHERMANCER_EVENT 1 #endif diff --git a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp index e87ef22d774..d2c62b89234 100644 --- a/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp +++ b/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp @@ -24,12 +24,14 @@ EndScriptData */ #include "precompiled.h" #include "def_mechanar.h" +#define ENCOUNTERS 1 + struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance { instance_mechanar(Map *map) : ScriptedInstance(map) {Initialize();}; - bool IsBossDied[1]; + uint32 Encounters[ENCOUNTERS]; void OnCreatureCreate (Creature *creature, uint32 creature_entry) { @@ -37,12 +39,15 @@ struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance void Initialize() { - IsBossDied[0] = false; + for(uint8 i = 0; i < ENCOUNTERS; ++i) + Encounters[i] = NOT_STARTED; } bool IsEncounterInProgress() const { - //not active + for(uint8 i = 0; i < ENCOUNTERS; ++i) + if(Encounters[i]) return true; + return false; } @@ -50,13 +55,10 @@ struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance { switch(type) { - case DATA_SEPETHREAISDEAD: - if(IsBossDied[0]) - return 1; - break; + case DATA_NETHERMANCER_EVENT: return Encounters[0]; } - return 0; + return false; } uint64 GetData64 (uint32 identifier) @@ -68,9 +70,7 @@ struct TRINITY_DLL_DECL instance_mechanar : public ScriptedInstance { switch(type) { - case DATA_SEPETHREA_DEATH: - IsBossDied[0] = true; - break; + case DATA_NETHERMANCER_EVENT: Encounters[0] = data; break; } } }; From 7aa6a72673635069a786e0651c96ababd925ac7b Mon Sep 17 00:00:00 2001 From: Blaymoira Date: Sat, 21 Feb 2009 10:58:02 +0100 Subject: [PATCH 6/6] *Do not proc 45429 on friendly targets - by Anubisss --HG-- branch : trunk --- src/game/Unit.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 1be40b33fa7..f2e1867ac3c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5543,6 +5543,9 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu // Get Scryers reputation rank if (((Player *)this)->GetReputationRank(934) == REP_EXALTED) { + if(this->IsFriendlyTo(target)) + return false; + triggered_spell_id = 45429; break; }