Scripts/Icecrown Citadel
* Call EnterEvadeMode before teleporting players to entrance - prevents players being stuck in combat * Fixed Gaseous Blight stacking damage * Properly initialize phase for Professor Putricide when entering combat * Fixed Blood Nova and Boiling Blood abilities of Deathbringer Saurfang
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,45 +3921,6 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_MASTER;
|
||||
count++;
|
||||
break;
|
||||
case 71413: // Green Ooze Summon
|
||||
case 71414: // Orange Ooze Summon
|
||||
spellInfo->EffectImplicitTargetA[0] = TARGET_DEST_DEST;
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
spellInfo->EffectRadiusIndex[0] = 28; // another missing radius
|
||||
count++;
|
||||
break;
|
||||
case 71708: // Empowered Flare
|
||||
case 72785: // Empowered Flare
|
||||
case 72786: // Empowered Flare
|
||||
@@ -3997,10 +3928,94 @@ void SpellMgr::LoadSpellCustomAttr()
|
||||
spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_DONE_BONUS;
|
||||
count++;
|
||||
break;
|
||||
case 71340: // Pact of the Darkfallen
|
||||
// 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 (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 (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 (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 (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 71340: // Pact of the Darkfallen (Blood-Queen Lana'thel)
|
||||
spellInfo->DurationIndex = 21;
|
||||
count++;
|
||||
break;
|
||||
case 71266: // Swarming Shadows
|
||||
spellInfo->AreaGroupId = 0;
|
||||
count++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user