aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp24
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp4
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp131
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp4
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp14
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp2
11 files changed, 113 insertions, 76 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 9a29cd99b23..4ca89707a72 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2794,6 +2794,30 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
case 59725: // Improved Spell Reflection - aoe aura
unitList.remove(m_caster);
break;
+ case 72378: // Blood Nova (Deathbringer Saurfang)
+ case 73058:
+ {
+ // select one random target, with preference of ranged targets
+ uint32 targetsAtRange = 0;
+ uint32 const minTargets = m_caster->GetMap()->GetSpawnMode() & 1 ? 10 : 4;
+ unitList.sort(Trinity::ObjectDistanceOrderPred(m_caster, false));
+
+ // get target count at range
+ for (std::list<Unit*>::iterator itr = unitList.begin(); itr != unitList.end(); ++itr, ++targetsAtRange)
+ if ((*itr)->GetDistance(m_caster) < 12.0f)
+ break;
+
+ // set the upper cap
+ if (targetsAtRange < minTargets)
+ targetsAtRange = std::min<uint32>(unitList.size()-1, minTargets);
+
+ std::list<Unit*>::iterator itr = unitList.begin();
+ std::advance(itr, urand(0, targetsAtRange));
+ Unit* target = *itr;
+ unitList.clear();
+ unitList.push_back(target);
+ break;
+ }
case 72255: // Mark of the Fallen Champion (Deathbringer Saurfang)
case 72444:
case 72445:
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 601195a65f0..622b0a10177 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1624,7 +1624,7 @@ void Spell::EffectForceCast(SpellEffIndex effIndex)
if (damage)
{
- switch(m_spellInfo->Id)
+ switch (m_spellInfo->Id)
{
case 52588: // Skeletal Gryphon Escape
case 48598: // Ride Flamebringer Cue
@@ -1636,7 +1636,7 @@ void Spell::EffectForceCast(SpellEffIndex effIndex)
return;
case 72378: // Blood Nova
case 73058: // Blood Nova
- spellInfo = sSpellMgr->GetSpellForDifficultyFromSpell(spellInfo, m_caster);
+ m_caster->CastSpell(unitTarget, 72380, true); // additional spell cast
break;
}
}
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index c736e3e8445..7bc7a974733 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3875,18 +3875,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->AttributesEx |= SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY;
count++;
break;
- case 69055: // Saber Lash
- case 70814: // Saber Lash
- spellInfo->EffectRadiusIndex[0] = 8;
- count++;
- break;
- case 69075: // Bone Storm
- case 70834: // Bone Storm
- case 70835: // Bone Storm
- case 70836: // Bone Storm
- spellInfo->EffectRadiusIndex[0] = 12;
- count++;
- break;
case 18500: // Wing Buffet
case 33086: // Wild Bite
case 49749: // Piercing Blow
@@ -3910,19 +3898,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->StackAmount = 4;
count++;
break;
- // THESE SPELLS ARE WORKING CORRECTLY EVEN WITHOUT THIS HACK
- // THE ONLY REASON ITS HERE IS THAT CURRENT GRID SYSTEM
- // DOES NOT ALLOW FAR OBJECT SELECTION (dist > 333)
- case 70781: // Light's Hammer Teleport
- case 70856: // Oratory of the Damned Teleport
- case 70857: // Rampart of Skulls Teleport
- case 70858: // Deathbringer's Rise Teleport
- case 70859: // Upper Spire Teleport
- case 70860: // Frozen Throne Teleport
- case 70861: // Sindragosa's Lair Teleport
- spellInfo->EffectImplicitTargetA[0] = TARGET_DST_DB;
- count++;
- break;
case 63675: // Improved Devouring Plague
spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
count++;
@@ -3935,11 +3910,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectSpellClassMask[0] = flag96(423937, 276955137, 2049);
count++;
break;
- // this is here until targetAuraSpell and alike support SpellDifficulty.dbc
- case 70459: // Ooze Eruption Search Effect
- spellInfo->targetAuraSpell = 0;
- count++;
- break;
case 70728: // Exploit Weakness
case 70840: // Devious Minds
spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_CASTER;
@@ -3951,54 +3921,99 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_MASTER;
count++;
break;
- case 71413: // Green Ooze Summon
- case 71414: // Orange Ooze Summon
+ case 71708: // Empowered Flare
+ case 72785: // Empowered Flare
+ case 72786: // Empowered Flare
+ case 72787: // Empowered Flare
+ spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
+ count++;
+ break;
+ // ICECROWN CITADEL SPELLS
+ // THESE SPELLS ARE WORKING CORRECTLY EVEN WITHOUT THIS HACK
+ // THE ONLY REASON ITS HERE IS THAT CURRENT GRID SYSTEM
+ // DOES NOT ALLOW FAR OBJECT SELECTION (dist > 333)
+ case 70781: // Light's Hammer Teleport
+ case 70856: // Oratory of the Damned Teleport
+ case 70857: // Rampart of Skulls Teleport
+ case 70858: // Deathbringer's Rise Teleport
+ case 70859: // Upper Spire Teleport
+ case 70860: // Frozen Throne Teleport
+ case 70861: // Sindragosa's Lair Teleport
+ spellInfo->EffectImplicitTargetA[0] = TARGET_DST_DB;
+ count++;
+ break;
+ case 69055: // Saber Lash (Lord Marrowgar)
+ case 70814: // Saber Lash (Lord Marrowgar)
+ spellInfo->EffectRadiusIndex[0] = 8;
+ count++;
+ break;
+ case 69075: // Bone Storm (Lord Marrowgar)
+ case 70834: // Bone Storm (Lord Marrowgar)
+ case 70835: // Bone Storm (Lord Marrowgar)
+ case 70836: // Bone Storm (Lord Marrowgar)
+ case 72378: // Blood Nova (Deathbringer Saurfang)
+ case 73058: // Blood Nova (Deathbringer Saurfang)
+ spellInfo->EffectRadiusIndex[0] = 12;
+ count++;
+ break;
+ case 72385: // Boiling Blood (Deathbringer Saurfang)
+ case 72441: // Boiling Blood (Deathbringer Saurfang)
+ case 72442: // Boiling Blood (Deathbringer Saurfang)
+ case 72443: // Boiling Blood (Deathbringer Saurfang)
+ spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_TARGET_ENEMY;
+ spellInfo->EffectImplicitTargetB[0] = 0;
+ count++;
+ break;
+ case 71413: // Green Ooze Summon (Professor Putricide)
+ case 71414: // Orange Ooze Summon (Professor Putricide)
spellInfo->EffectImplicitTargetA[0] = TARGET_DEST_DEST;
count++;
break;
+ // this is here until targetAuraSpell and alike support SpellDifficulty.dbc
+ case 70459: // Ooze Eruption Search Effect (Professor Putricide)
+ spellInfo->targetAuraSpell = 0;
+ count++;
+ break;
// THIS IS HERE BECAUSE COOLDOWN ON CREATURE PROCS IS NOT IMPLEMENTED
- case 71604: // Mutated Strength
- case 72673: // Mutated Strength
- case 72674: // Mutated Strength
- case 72675: // Mutated Strength
+ case 71604: // Mutated Strength (Professor Putricide)
+ case 72673: // Mutated Strength (Professor Putricide)
+ case 72674: // Mutated Strength (Professor Putricide)
+ case 72675: // Mutated Strength (Professor Putricide)
spellInfo->Effect[1] = 0;
count++;
break;
- case 70447: // Volatile Ooze Adhesive
- case 72836: // Volatile Ooze Adhesive
- case 72837: // Volatile Ooze Adhesive
- case 72838: // Volatile Ooze Adhesive
- case 70672: // Gaseous Bloat
- case 72455: // Gaseous Bloat
- case 72832: // Gaseous Bloat
- case 72833: // Gaseous Bloat
+ case 70447: // Volatile Ooze Adhesive (Professor Putricide)
+ case 72836: // Volatile Ooze Adhesive (Professor Putricide)
+ case 72837: // Volatile Ooze Adhesive (Professor Putricide)
+ case 72838: // Volatile Ooze Adhesive (Professor Putricide)
+ case 70672: // Gaseous Bloat (Professor Putricide)
+ case 72455: // Gaseous Bloat (Professor Putricide)
+ case 72832: // Gaseous Bloat (Professor Putricide)
+ case 72833: // Gaseous Bloat (Professor Putricide)
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_TARGET_ENEMY;
spellInfo->EffectImplicitTargetB[1] = TARGET_UNIT_TARGET_ENEMY;
spellInfo->EffectImplicitTargetB[2] = TARGET_UNIT_TARGET_ENEMY;
count++;
break;
- case 70911: // Unbound Plague
- case 72854: // Unbound Plague
- case 72855: // Unbound Plague
- case 72856: // Unbound Plague
+ case 70911: // Unbound Plague (Professor Putricide)
+ case 72854: // Unbound Plague (Professor Putricide)
+ case 72855: // Unbound Plague (Professor Putricide)
+ case 72856: // Unbound Plague (Professor Putricide)
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_TARGET_ENEMY;
count++;
break;
- case 71518: // Unholy Infusion Quest Credit
- case 72934: // Blood Infusion Quest Credit
- case 72289: // Frost Infusion Quest Credit
+ case 71518: // Unholy Infusion Quest Credit (Professor Putricide)
+ case 72934: // Blood Infusion Quest Credit (Blood-Queen Lana'thel)
+ case 72289: // Frost Infusion Quest Credit (Sindragosa)
spellInfo->EffectRadiusIndex[0] = 28; // another missing radius
count++;
break;
- case 71708: // Empowered Flare
- case 72785: // Empowered Flare
- case 72786: // Empowered Flare
- case 72787: // Empowered Flare
- spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
+ case 71340: // Pact of the Darkfallen (Blood-Queen Lana'thel)
+ spellInfo->DurationIndex = 21;
count++;
break;
- case 71340: // Pact of the Darkfallen
- spellInfo->DurationIndex = 21;
+ case 71266: // Swarming Shadows
+ spellInfo->AreaGroupId = 0;
count++;
break;
default:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
index edde915b73c..154ff8b43e5 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
@@ -203,8 +203,8 @@ class boss_blood_council_controller : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_BLOOD_PRINCE_COUNCIL, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index 8d3eace123c..f894a4f97c6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -159,8 +159,8 @@ class boss_blood_queen_lana_thel : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_BLOOD_QUEEN_LANA_THEL, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
index 6f312c3e99b..d8af0a8a3e6 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
@@ -277,8 +277,8 @@ class boss_deathbringer_saurfang : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_DEATHBRINGER_SAURFANG, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index a5f9c748bb5..fff982fe7d9 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -123,8 +123,8 @@ class boss_festergut : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_FESTERGUT, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
@@ -270,7 +270,7 @@ class boss_festergut : public CreatureScript
if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, gasDummyGUID))
for (uint8 i = 0; i < 3; ++i)
{
- gasDummy->RemoveAurasDueToSpell(gaseousBlight[i]);
+ me->RemoveAurasDueToSpell(gaseousBlight[i]);
gasDummy->RemoveAurasDueToSpell(gaseousBlightVisual[i]);
}
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index 1e1ce88c1a2..f9721c5d066 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -225,8 +225,8 @@ class boss_lady_deathwhisper : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_LADY_DEATHWHISPER, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
index e29ddc4a150..89eba957708 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp
@@ -214,18 +214,13 @@ class boss_professor_putricide : public CreatureScript
if (events.GetPhaseMask() & PHASE_MASK_NOT_SELF)
return;
- if (!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF) && !instance->CheckRequiredBosses(DATA_PROFESSOR_PUTRICIDE, who->ToPlayer()))
+ if (!instance->CheckRequiredBosses(DATA_PROFESSOR_PUTRICIDE, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
- _SetPhase(PHASE_COMBAT_1);
- Talk(SAY_AGGRO);
- DoCast(me, SPELL_OOZE_TANK_PROTECTION, true);
- DoZoneInCombat(me);
-
events.Reset();
events.ScheduleEvent(EVENT_BERSERK, 600000);
events.ScheduleEvent(EVENT_SLIME_PUDDLE, 10000);
@@ -233,6 +228,11 @@ class boss_professor_putricide : public CreatureScript
if (IsHeroic())
events.ScheduleEvent(EVENT_UNBOUND_PLAGUE, 20000);
+ _SetPhase(PHASE_COMBAT_1);
+ Talk(SAY_AGGRO);
+ DoCast(me, SPELL_OOZE_TANK_PROTECTION, true);
+ DoZoneInCombat(me);
+
instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, IN_PROGRESS);
if (GameObject* table = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_PUTRICIDE_TABLE)))
table->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index f71f7ce1b5c..43e07c0521a 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -115,8 +115,8 @@ class boss_rotface : public CreatureScript
{
if (!instance->CheckRequiredBosses(DATA_ROTFACE, who->ToPlayer()))
{
- instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
EnterEvadeMode();
+ instance->DoCastSpellOnPlayers(LIGHT_S_HAMMER_TELEPORT);
return;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 7814137ae23..c739364d23d 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -384,8 +384,6 @@ class instance_icecrown_citadel : public InstanceMapScript
HandleGameObject(putricidePipes[1], true);
}
break;
- case DATA_BLOOD_PRINCE_COUNCIL:
- case DATA_BLOOD_QUEEN_LANA_THEL:
case DATA_VALITHRIA_DREAMWALKER:
case DATA_SINDRAGOSA:
case DATA_THE_LICH_KING: