aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp67
-rw-r--r--src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp20
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp41
3 files changed, 71 insertions, 57 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
index 71063c9a80b..0affcc59605 100644
--- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
+++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp
@@ -75,11 +75,6 @@ enum Yells
SAY_PREFIGHT_3 = -1601019
};
-enum Misc
-{
- ACHIEV_WATH_HIM_DIE = 1296
-};
-
const Position SpawnPoint[] =
{
{ 566.164f, 682.087f, 769.079f, 2.21657f },
@@ -186,24 +181,8 @@ public:
{
DoScriptText(SAY_DEATH, me);
- if (!pInstance)
- return;
-
- pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE);
- //Achievement: Watch him die
- Creature *pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_GASHRA));
- if (!pAdd || !pAdd->isAlive())
- return;
-
- pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_SILTHIK));
- if (!pAdd || !pAdd->isAlive())
- return;
-
- pAdd = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_NARJIL));
- if (!pAdd || !pAdd->isAlive())
- return;
-
- pInstance->DoCompleteAchievement(ACHIEV_WATH_HIM_DIE);
+ if (pInstance)
+ pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE);
}
void KilledUnit(Unit* victim)
@@ -551,14 +530,40 @@ public:
}
};
+class achievement_watch_him_die : public AchievementCriteriaScript
+{
+ public:
+ achievement_watch_him_die() : AchievementCriteriaScript("achievement_watch_him_die")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ InstanceScript* instance = target->GetInstanceScript();
+ Creature* Watcher[3];
+ if (!instance)
+ return false;
+
+ for (uint8 n = 0; n < 3; ++n)
+ {
+ Watcher[n] = ObjectAccessor::GetCreature(*target, instance->GetData64(DATA_WATCHER_GASHRA + n));
+ if (Watcher[n] && !Watcher[n]->isAlive())
+ return false;
+ }
+
+ return true;
+ }
+};
+
void AddSC_boss_krik_thir()
{
- new boss_krik_thir;
- new npc_skittering_infector;
- new npc_anub_ar_skirmisher;
- new npc_anub_ar_shadowcaster;
- new npc_watcher_gashra;
- new npc_anub_ar_warrior;
- new npc_watcher_silthik;
- new npc_watcher_narjil;
+ new boss_krik_thir();
+ new npc_skittering_infector();
+ new npc_anub_ar_skirmisher();
+ new npc_anub_ar_shadowcaster();
+ new npc_watcher_gashra();
+ new npc_anub_ar_warrior();
+ new npc_watcher_silthik();
+ new npc_watcher_narjil();
+ new achievement_watch_him_die();
}
diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
index 93acb74cee6..6adf8314d5e 100644
--- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
+++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp
@@ -32,7 +32,6 @@ enum Spells
SPELL_STAMPEDE = 55218,
SPELL_WHIRLING_SLASH = 55250,
H_SPELL_WHIRLING_SLASH = 59824,
- SPELL_ECK_RESIDUE = 55817
};
//Yells
@@ -50,11 +49,6 @@ enum Yells
SAY_TRANSFORM_2 = -1604009
};
-enum Achievements
-{
- ACHIEV_WHAT_THE_ECK = 1864,
-};
-
enum Displays
{
DISPLAY_RHINO = 26265,
@@ -276,21 +270,7 @@ public:
DoScriptText(SAY_DEATH, me);
if (pInstance)
- {
- if (IsHeroic())
- {
- AchievementEntry const *achievWhatTheEck = GetAchievementStore()->LookupEntry(ACHIEV_WHAT_THE_ECK);
- if (achievWhatTheEck)
- {
- Map::PlayerList const &players = pInstance->instance->GetPlayers();
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (itr->getSource()->HasAura(SPELL_ECK_RESIDUE))
- itr->getSource()->CompletedAchievement(achievWhatTheEck);
- }
- }
-
pInstance->SetData(DATA_GAL_DARAH_EVENT, DONE);
- }
}
void KilledUnit(Unit* victim)
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp
index ee0dd85519c..051fd1ad5f7 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_auriaya.cpp
@@ -113,7 +113,7 @@ class boss_auriaya : public CreatureScript
{
_Reset();
DefenderGUID = 0;
- defenderLifes = 8;
+ defenderLives = 8;
crazyCatLady = true;
nineLives = false;
}
@@ -165,8 +165,8 @@ class boss_auriaya : public CreatureScript
SetData(DATA_CRAZY_CAT_LADY, 0);
break;
case ACTION_RESPAWN_DEFENDER:
- --defenderLifes;
- if (!defenderLifes)
+ --defenderLives;
+ if (!defenderLives)
{
SetData(DATA_NINE_LIVES, 1);
break;
@@ -247,8 +247,8 @@ class boss_auriaya : public CreatureScript
if (Creature* Defender = ObjectAccessor::GetCreature(*me, DefenderGUID))
{
Defender->Respawn();
- if (defenderLifes)
- Defender->SetAuraStack(SPELL_FERAL_ESSENCE, Defender, defenderLifes);
+ if (defenderLives)
+ Defender->SetAuraStack(SPELL_FERAL_ESSENCE, Defender, defenderLives);
Defender->SetInCombatWithZone();
if (!Defender->isInCombat())
Defender->AI()->AttackStart(me->getVictim());
@@ -273,7 +273,7 @@ class boss_auriaya : public CreatureScript
private:
uint64 DefenderGUID;
- uint8 defenderLifes;
+ uint8 defenderLives;
bool crazyCatLady;
bool nineLives;
};
@@ -507,6 +507,34 @@ class spell_auriaya_strenght_of_the_pack : public SpellScriptLoader
}
};
+class spell_auriaya_sentinel_blast : public SpellScriptLoader
+{
+ public:
+ spell_auriaya_sentinel_blast() : SpellScriptLoader("spell_auriaya_sentinel_blast") { }
+
+ class spell_auriaya_sentinel_blast_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_auriaya_sentinel_blast_SpellScript);
+
+ void FilterTargets(std::list<Unit*>& unitList)
+ {
+ unitList.remove_if(PlayerOrPetCheck());
+ }
+
+ void Register()
+ {
+ OnUnitTargetSelect += SpellUnitTargetFn(spell_auriaya_sentinel_blast_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC);
+ OnUnitTargetSelect += SpellUnitTargetFn(spell_auriaya_sentinel_blast_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_AREA_ENEMY_SRC);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_auriaya_sentinel_blast_SpellScript();
+ }
+};
+
+
class achievement_nine_lives : public AchievementCriteriaScript
{
public:
@@ -548,6 +576,7 @@ void AddSC_boss_auriaya()
new npc_feral_defender();
new npc_sanctum_sentry();
new spell_auriaya_strenght_of_the_pack();
+ new spell_auriaya_sentinel_blast();
new achievement_nine_lives();
new achievement_crazy_cat_lady();
}