aboutsummaryrefslogtreecommitdiff
path: root/src/bindings/scripts
diff options
context:
space:
mode:
authorBlaymoira <none@none>2008-12-12 20:34:51 +0100
committerBlaymoira <none@none>2008-12-12 20:34:51 +0100
commitab59d3adcc2a4afc743afe1a998290b99ed95929 (patch)
tree198a3ddb3aba4e7505869bcb0d631d5a289b817f /src/bindings/scripts
parentec12b76b392d65f02ad1b2d48508771f77284b50 (diff)
parentb6c288ca9fb271923f493ee39d78b5dc4b2a996f (diff)
*Merged with 464.
--HG-- branch : trunk
Diffstat (limited to 'src/bindings/scripts')
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp41
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/def_serpent_shrine.h1
-rw-r--r--src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp113
-rw-r--r--src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp2
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);
}
}
}