diff options
Diffstat (limited to 'src')
2 files changed, 47 insertions, 38 deletions
| diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp index ec2fe76e96e..94a75db6149 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp @@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI      {          pInstance = ((ScriptedInstance*)c->GetInstanceData());          HeroicMode = m_creature->GetMap()->IsHeroic(); -        for(int i=0; i<5; i++) Channelers[i] = NULL; +        for(int i=0; i<5; ++i) Channelers[i] = 0;          Reset();      } @@ -88,7 +88,7 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI      uint32 check_Timer;      bool Firenova;      bool addYell; -    Creature *Channelers[5]; +    uint64 Channelers[5];      void Reset()      { @@ -133,44 +133,50 @@ struct TRINITY_DLL_DECL boss_kelidan_the_breakerAI : public ScriptedAI                  default: DoScriptText(SAY_ADD_AGGRO_3, m_creature); break;              }          } -        for(int i=0; i<5; i++) -            if(who && Channelers[i] && !Channelers[i]->isInCombat()) -                Channelers[i]->AI()->AttackStart(who); +        for(int i=0; i<5; ++i) +		{ +			Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); +			if(who && channeler && !channeler->isInCombat()) +				channeler->AI()->AttackStart(who); +		}      }      void ChannelerDied(Unit* killer)      { -        for(int i=0; i<5; i++) -            if(Channelers[i] && Channelers[i]->isAlive()) -                return; +        for(int i=0; i<5; ++i) +		{ +			Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); +			if(channeler && channeler->isAlive()) +				return; +		} +          if(killer)              m_creature->AI()->AttackStart(killer);      } -    Creature* GetChanneled(Creature *channeler) +    uint64 GetChanneled(Creature *channeler1)      {          SummonChannelers(); -        if(!channeler) return NULL; +        if(!channeler1) return NULL;          int i; -        for(i=0; i<5; i++) -            if(Channelers[i] && Channelers[i]->GetGUID()==channeler->GetGUID()) -                break; +        for(i=0; i<5; ++i) +		{ +			Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); +			if(channeler && channeler->GetGUID()==channeler1->GetGUID()) +				break; +		}          return Channelers[(i+2)%5];      }      void SummonChannelers()      { -        for(int i=0; i<5; i++) -            if(!Channelers[i] || Channelers[i]->isDead()) -                Channelers[i] = m_creature->SummonCreature(ENTRY_CHANNELER,ShadowmoonChannelers[i][0],ShadowmoonChannelers[i][1],ShadowmoonChannelers[i][2],ShadowmoonChannelers[i][3],TEMPSUMMON_CORPSE_TIMED_DESPAWN,300000); -    } -     -    void JustSummoned(Creature *summon) -    { -        for(int i=0; i<5; i++) -            if(!Channelers[i] || Channelers[i]->isDead()) -                return; -        DoCast(m_creature,SPELL_EVOCATION); +		for(int i=0; i<5; ++i) +		{ +			Creature *channeler = (Creature*)Unit::GetUnit(*m_creature, Channelers[i]); +			if(!channeler || channeler->isDead()) +				channeler = m_creature->SummonCreature(ENTRY_CHANNELER,ShadowmoonChannelers[i][0],ShadowmoonChannelers[i][1],ShadowmoonChannelers[i][2],ShadowmoonChannelers[i][3],TEMPSUMMON_CORPSE_TIMED_DESPAWN,300000); +			Channelers[i] = channeler->GetGUID(); +		}      }      void JustDied(Unit* Killer) @@ -309,8 +315,11 @@ struct TRINITY_DLL_DECL mob_shadowmoon_channelerAI : public ScriptedAI              {                  if (!m_creature->IsNonMeleeSpellCasted(false))                      if(Creature *Kelidan = (Creature *)FindCreature(ENTRY_KELIDAN, 100)) -                        if(Creature *channeled = ((boss_kelidan_the_breakerAI*)Kelidan->AI())->GetChanneled(m_creature)) -                            DoCast(channeled,SPELL_CHANNELING); +					{ +						uint64 channeler = ((boss_kelidan_the_breakerAI*)Kelidan->AI())->GetChanneled(m_creature); +						if(Unit *channeled = Unit::GetUnit(*m_creature, channeler)) +							DoCast(channeled,SPELL_CHANNELING); +					}                  check_Timer = 5000;              }else check_Timer -= diff;              return; diff --git a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp index f0a10f74129..3c803350bb6 100644 --- a/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp +++ b/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/instance_blood_furnace.cpp @@ -24,30 +24,30 @@ EndScriptData */  #include "precompiled.h"  #include "def_blood_furnace.h" -#define ENTRY_DOOR1                 181823 -#define ENTRY_DOOR2                 181766 +#define ENTRY_SEWER1                 181823 +#define ENTRY_SEWER2                 181766  struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance  {      instance_blood_furnace(Map *map) : ScriptedInstance(map) {Initialize();}; -    uint64 Door1GUID; -    uint64 Door2GUID; +    uint64 Sewer1GUID; +    uint64 Sewer2GUID;      void Initialize()      { -        Door1GUID = 0; -        Door2GUID = 0; +        Sewer1GUID = 0; +        Sewer2GUID = 0;      }      void OnObjectCreate(GameObject *go)      {          switch(go->GetEntry())          { -            case ENTRY_DOOR1: Door1GUID = go->GetGUID(); break; -            case ENTRY_DOOR2: Door2GUID = go->GetGUID(); break; +            case ENTRY_SEWER1: Sewer1GUID = go->GetGUID(); break; +            case ENTRY_SEWER2: Sewer2GUID = go->GetGUID(); break;          }      } @@ -64,7 +64,7 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance              }          } -        debug_log("SD2: Instance Blood Furnace: GetPlayerInMap, but PlayerList is empty!"); +        debug_log("TSCR: Instance Blood Furnace: GetPlayerInMap, but PlayerList is empty!");          return NULL;      } @@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance          if (!player || !guid)          { -            debug_log("SD2: Blood Furnace: HandleGameObject fail"); +            debug_log("TSCR: Blood Furnace: HandleGameObject fail");              return;          } @@ -89,8 +89,8 @@ struct TRINITY_DLL_DECL instance_blood_furnace : public ScriptedInstance              case DATA_KELIDANEVENT:                  if( data == DONE )                  { -                    HandleGameObject(Door1GUID,0); -                    HandleGameObject(Door2GUID,0); +                    HandleGameObject(Sewer1GUID,0); +                    HandleGameObject(Sewer2GUID,0);                  }                  break;          } | 
