From be4cdba28bd9e710d1bca4d26466b4d012a53768 Mon Sep 17 00:00:00 2001 From: Rat Date: Thu, 2 Apr 2009 20:17:45 +0200 Subject: *fix teron gorefiend's doom blossom --HG-- branch : trunk --- .../zone/black_temple/boss_teron_gorefiend.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp index 1eb75a78b08..7e60a1cdfa5 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp @@ -68,6 +68,12 @@ struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI void AttackStart(Unit* who) { } void MoveInLineOfSight(Unit* who) { } + void Despawn() + { + m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_creature->RemoveCorpse(); + } + void UpdateAI(const uint32 diff) { if(CheckTeronTimer < diff) @@ -78,22 +84,20 @@ struct TRINITY_DLL_DECL mob_doom_blossomAI : public ScriptedAI Creature* Teron = ((Creature*)Unit::GetUnit((*m_creature), TeronGUID)); if((Teron) && (!Teron->isAlive() || Teron->IsInEvadeMode())) - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + Despawn(); } else - m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + Despawn(); CheckTeronTimer = 5000; - }else CheckTeronTimer -= diff; - - if(!UpdateVictim()) - return; + }else CheckTeronTimer -= diff; - if(ShadowBoltTimer < diff) + if(ShadowBoltTimer < diff && InCombat) { DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SHADOWBOLT); ShadowBoltTimer = 10000; }else ShadowBoltTimer -= diff; + return; } void SetTeronGUID(uint64 guid){ TeronGUID = guid; } @@ -414,7 +418,9 @@ struct TRINITY_DLL_DECL boss_teron_gorefiendAI : public ScriptedAI { float X = CalculateRandomLocation(target->GetPositionX(), 20); float Y = CalculateRandomLocation(target->GetPositionY(), 20); - Creature* DoomBlossom = m_creature->SummonCreature(CREATURE_DOOM_BLOSSOM, X, Y, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000); + float Z = target->GetPositionZ(); + Z = m_creature->GetMap()->GetVmapHeight(X, Y, Z, true); + Creature* DoomBlossom = m_creature->SummonCreature(CREATURE_DOOM_BLOSSOM, X, Y, Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000); if(DoomBlossom) { DoomBlossom->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); -- cgit v1.2.3 From 43b9dbe31eb5b5648b6ca95e03ec41041b11589d Mon Sep 17 00:00:00 2001 From: Rat Date: Thu, 2 Apr 2009 23:22:20 +0200 Subject: *fixed Black Temple doors --HG-- branch : trunk --- .../zone/black_temple/instance_black_temple.cpp | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/bindings/scripts') diff --git a/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp b/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp index a5db59abb52..9232f96e04a 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp @@ -166,16 +166,25 @@ struct TRINITY_DLL_DECL instance_black_temple : public ScriptedInstance { switch(go->GetEntry()) { - case 185483: NajentusGate = go->GetGUID();break; // Gate past Naj'entus (at the entrance to Supermoose's courtyards) - case 185882: MainTempleDoors = go->GetGUID();break; // Main Temple Doors - right past Supermoose (Supremus) + case 185483: NajentusGate = go->GetGUID();// Gate past Naj'entus (at the entrance to Supermoose's courtyards) + if(Encounters[0] == DONE) go->SetGoState(0);break; + case 185882: MainTempleDoors = go->GetGUID();// Main Temple Doors - right past Supermoose (Supremus) + if(Encounters[1] == DONE)go->SetGoState(0);break; case 185478: ShadeOfAkamaDoor = go->GetGUID();break; - case 185480: CommonDoor = go->GetGUID();break; - case 186153: TeronDoor = go->GetGUID();break; - case 185892: GuurtogDoor = go->GetGUID();break; - case 185479: TempleDoor = go->GetGUID();break; - case 185482: MotherDoor = go->GetGUID();break; - case 185481: CouncilDoor = go->GetGUID();break; - case 186152: SimpleDoor = go->GetGUID();break; + case 185480: CommonDoor = go->GetGUID(); + if(Encounters[3] == DONE) go->SetGoState(0);break; + case 186153: TeronDoor = go->GetGUID(); + if(Encounters[3] == DONE)go->SetGoState(0);break; + case 185892: GuurtogDoor = go->GetGUID(); + if(Encounters[4] == DONE)go->SetGoState(0);break; + case 185479: TempleDoor = go->GetGUID(); + if(Encounters[5] == DONE)go->SetGoState(0);break; + case 185482: MotherDoor = go->GetGUID(); + if(Encounters[6] == DONE)go->SetGoState(0);break; + case 185481: CouncilDoor = go->GetGUID(); + if(Encounters[7] == DONE)go->SetGoState(0);break; + case 186152: SimpleDoor = go->GetGUID(); + if(Encounters[7] == DONE)go->SetGoState(0);break; case 185905: IllidanGate = go->GetGUID(); break; // Gate leading to Temple Summit case 186261: IllidanDoor[0] = go->GetGUID(); break; // Right door at Temple Summit case 186262: IllidanDoor[1] = go->GetGUID(); break; // Left door at Temple Summit -- cgit v1.2.3