diff options
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: |