diff options
| author | Blaymoira <none@none> | 2008-12-12 20:34:51 +0100 |
|---|---|---|
| committer | Blaymoira <none@none> | 2008-12-12 20:34:51 +0100 |
| commit | ab59d3adcc2a4afc743afe1a998290b99ed95929 (patch) | |
| tree | 198a3ddb3aba4e7505869bcb0d631d5a289b817f /src/bindings/scripts | |
| parent | ec12b76b392d65f02ad1b2d48508771f77284b50 (diff) | |
| parent | b6c288ca9fb271923f493ee39d78b5dc4b2a996f (diff) | |
*Merged with 464.
--HG--
branch : trunk
Diffstat (limited to 'src/bindings/scripts')
4 files changed, 117 insertions, 40 deletions
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp index 46a05fcf0cc..2bdd000e340 100644 --- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp +++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp @@ -364,6 +364,10 @@ struct TRINITY_DLL_DECL boss_illidan_stormrageAI : public ScriptedAI { pInstance = ((ScriptedInstance*)c->GetInstanceData()); Reset(); + + SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SHADOWFIEND_PASSIVE); + if(TempSpell) + TempSpell->EffectApplyAuraName[0] = 4; // proc debuff, and summon infinite fiends } ScriptedInstance* pInstance; @@ -1736,14 +1740,14 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI DoCast(m_creature, SPELL_SHADOWFIEND_PASSIVE, true); } - void Aggro(Unit* who) {} - void MoveInLineOfSight(Unit *who){} + void Aggro(Unit* who) { DoZoneInCombat(); } void DoMeleeAttackIfReady() { if( m_creature->isAttackReady() && m_creature->IsWithinMeleeRange(m_creature->getVictim())) { - if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0) && !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0)) + if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0) + && !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0)) { m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack } @@ -1756,16 +1760,15 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI { if(!m_creature->getVictim()) { - if(GETCRE(Illidan, IllidanGUID)) + if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) + AttackStart(target); + else { - if(Illidan->getVictim() && !Illidan->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)) - AttackStart(Illidan->getVictim()); - else - AttackStart(((boss_illidan_stormrageAI*)Illidan->AI())->SelectUnit(SELECT_TARGET_RANDOM, 1)); + m_creature->SetVisibility(VISIBILITY_OFF); + m_creature->setDeathState(JUST_DIED); + return; } } - else - DoMeleeAttackIfReady(); if(CheckTimer < diff) { @@ -1777,6 +1780,8 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI return; }else CheckTimer = 5000; }else CheckTimer -= diff; + + DoMeleeAttackIfReady(); } }; @@ -1866,13 +1871,19 @@ void boss_illidan_stormrageAI::JustSummoned(Creature* summon) switch(summon->GetEntry()) { case PARASITIC_SHADOWFIEND: - case SHADOW_DEMON: { - if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players. - { - summon->AddThreat(target, 5000000.0f); + Unit *target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0, 999, true); + if(!target || target->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0) + || target->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0)) + target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true); + if(target) summon->AI()->AttackStart(target); - } + }break; + case SHADOW_DEMON: + if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players. + { + summon->AddThreat(target, 5000000.0f); + summon->AI()->AttackStart(target); }break; case MAIEV_SHADOWSONG: { diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/def_serpent_shrine.h b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/def_serpent_shrine.h index 04daa79ffac..975a97dcfae 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/def_serpent_shrine.h +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/def_serpent_shrine.h @@ -26,4 +26,5 @@ #define DATA_FATHOMLORDKARATHRESSEVENT 19 #define DATA_LEOTHERAS 20 #define DATA_LEOTHERAS_EVENT_STARTER 21 +#define DATA_CONTROL_CONSOLE 22 #endif diff --git a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp index 25b6a1a54d5..ee4db2259a7 100644 --- a/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp +++ b/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp @@ -35,9 +35,22 @@ EndScriptData */ 5 - Lady Vashj Event */ +bool GOHello_go_bridge_console(Player *player, GameObject* _GO) +{ + ScriptedInstance* pInstance = (ScriptedInstance*)_GO->GetInstanceData(); + + if(!pInstance) + return false; + + if (pInstance) + pInstance->SetData(DATA_CONTROL_CONSOLE, DONE); + + return true; +} + struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance { - instance_serpentshrine_cavern(Map *Map) : ScriptedInstance(Map) {Initialize();}; + instance_serpentshrine_cavern(Map *map) : ScriptedInstance(map) {Initialize();}; uint64 LurkerBelow; uint64 Sharkkis; @@ -46,12 +59,13 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance uint64 LadyVashj; uint64 Karathress; uint64 KarathressEvent_Starter; - uint64 LeotherasTheBlind; uint64 LeotherasEventStarter; - bool ShieldGeneratorDeactivated[4]; + uint64 ControlConsole; + uint64 BridgePart[3]; + bool ShieldGeneratorDeactivated[4]; bool Encounters[ENCOUNTERS]; void Initialize() @@ -63,10 +77,14 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance LadyVashj = 0; Karathress = 0; KarathressEvent_Starter = 0; - LeotherasTheBlind = 0; LeotherasEventStarter = 0; + ControlConsole = 0; + BridgePart[0] = 0; + BridgePart[1] = 0; + BridgePart[2] = 0; + ShieldGeneratorDeactivated[0] = false; ShieldGeneratorDeactivated[1] = false; ShieldGeneratorDeactivated[2] = false; @@ -84,6 +102,38 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance return false; } + void OnObjectCreate(GameObject *go) + { + switch(go->GetEntry()) + { + case 184568: + ControlConsole = go->GetGUID(); + go->setActive(true); + break; + + case 184203: + BridgePart[0] = go->GetGUID(); + go->setActive(true); + break; + + case 184204: + BridgePart[1] = go->GetGUID(); + go->setActive(true); + break; + + case 184205: + BridgePart[2] = go->GetGUID(); + go->setActive(true); + break; + } + } + + void OpenDoor(uint64 DoorGUID, bool open) + { + if(GameObject *Door = instance->GetGameObjectInMap(DoorGUID)) + Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1); + } + void OnCreatureCreate(Creature *creature, uint32 creature_entry) { switch(creature_entry) @@ -126,26 +176,35 @@ struct TRINITY_DLL_DECL instance_serpentshrine_cavern : public ScriptedInstance { switch(type) { - case DATA_HYDROSSTHEUNSTABLEEVENT: Encounters[0] = data; break; - case DATA_LEOTHERASTHEBLINDEVENT: Encounters[1] = data; break; - case DATA_THELURKERBELOWEVENT: Encounters[2] = data; break; - case DATA_KARATHRESSEVENT: Encounters[3] = data; break; - case DATA_MOROGRIMTIDEWALKEREVENT: Encounters[4] = data; break; - //Lady Vashj - case DATA_LADYVASHJEVENT: - if(data == NOT_STARTED) - { - ShieldGeneratorDeactivated[0] = false; - ShieldGeneratorDeactivated[1] = false; - ShieldGeneratorDeactivated[2] = false; - ShieldGeneratorDeactivated[3] = false; - } - Encounters[5] = data; break; - case DATA_SHIELDGENERATOR1:ShieldGeneratorDeactivated[0] = (data) ? true : false; break; - case DATA_SHIELDGENERATOR2:ShieldGeneratorDeactivated[1] = (data) ? true : false; break; - case DATA_SHIELDGENERATOR3:ShieldGeneratorDeactivated[2] = (data) ? true : false; break; - case DATA_SHIELDGENERATOR4:ShieldGeneratorDeactivated[3] = (data) ? true : false; break; - } + case DATA_CONTROL_CONSOLE: + if(data = DONE) + { + OpenDoor(BridgePart[0], true); + OpenDoor(BridgePart[1], true); + OpenDoor(BridgePart[2], true); + } + ControlConsole = data; + case DATA_HYDROSSTHEUNSTABLEEVENT: Encounters[0] = data; break; + case DATA_LEOTHERASTHEBLINDEVENT: Encounters[1] = data; break; + case DATA_THELURKERBELOWEVENT: Encounters[2] = data; break; + case DATA_KARATHRESSEVENT: Encounters[3] = data; break; + case DATA_MOROGRIMTIDEWALKEREVENT: Encounters[4] = data; break; + //Lady Vashj + case DATA_LADYVASHJEVENT: + if(data == NOT_STARTED) + { + ShieldGeneratorDeactivated[0] = false; + ShieldGeneratorDeactivated[1] = false; + ShieldGeneratorDeactivated[2] = false; + ShieldGeneratorDeactivated[3] = false; + } + Encounters[5] = data; break; + case DATA_SHIELDGENERATOR1:ShieldGeneratorDeactivated[0] = (data) ? true : false; break; + case DATA_SHIELDGENERATOR2:ShieldGeneratorDeactivated[1] = (data) ? true : false; break; + case DATA_SHIELDGENERATOR3:ShieldGeneratorDeactivated[2] = (data) ? true : false; break; + case DATA_SHIELDGENERATOR4:ShieldGeneratorDeactivated[3] = (data) ? true : false; break; + } + if(data = DONE) SaveToDB(); } @@ -212,8 +271,14 @@ InstanceData* GetInstanceData_instance_serpentshrine_cavern(Map* map) void AddSC_instance_serpentshrine_cavern() { Script *newscript; + newscript = new Script; newscript->Name = "instance_serpent_shrine"; newscript->GetInstanceData = GetInstanceData_instance_serpentshrine_cavern; newscript->RegisterSelf(); + + newscript = new Script; + newscript->Name="go_bridge_console"; + newscript->pGOHello = &GOHello_go_bridge_console; + newscript->RegisterSelf(); } diff --git a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp index f08ff848237..0bb7be32d99 100644 --- a/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp +++ b/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp @@ -279,7 +279,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI data.append(i_pl->GetPackGUID()); data << uint32(0); i_pl->SendMessageToSet(&data, true); - i_pl->SetSpeed(MOVE_FLY, 2.0f); + i_pl->SetSpeed(MOVE_FLIGHT, 2.0f); } } } |
