Scripts/Icecrown Citadel: Fixed Scent of Blood on heroic mode of Deathbringer Saurfang encounter
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
DELETE FROM `creature_text` WHERE `entry`=37813 AND `groupid`=14;
|
||||||
|
INSERT INTO `creature_text` (`entry`,`groupid`,`text`,`type`,`comment`) VALUES (37813,14,'%s''s Blood Beasts gain the scent of blood!',41,'Deathbringer Saurfang - EMOTE_SCENT_OF_BLOOD');
|
||||||
|
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=72771;
|
||||||
|
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES
|
||||||
|
(13,3,72771,31,3,38508,'Deathbringer Saurfang - Scent of Blood on Blood Beast');
|
||||||
@@ -1085,10 +1085,6 @@ void Spell::EffectForceCast(SpellEffIndex effIndex)
|
|||||||
case 52349: // Overtake
|
case 52349: // Overtake
|
||||||
unitTarget->CastCustomSpell(unitTarget, spellInfo->Id, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID);
|
unitTarget->CastCustomSpell(unitTarget, spellInfo->Id, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID);
|
||||||
return;
|
return;
|
||||||
case 72378: // Blood Nova
|
|
||||||
case 73058: // Blood Nova
|
|
||||||
m_caster->CastSpell(unitTarget, damage, true); // additional spell cast
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5710,9 +5706,9 @@ void Spell::EffectSummonDeadPet(SpellEffIndex /*effIndex*/)
|
|||||||
}
|
}
|
||||||
if (!pet)
|
if (!pet)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player->GetMap()->CreatureRelocation(pet, x, y, z, player->GetOrientation());
|
player->GetMap()->CreatureRelocation(pet, x, y, z, player->GetOrientation());
|
||||||
|
|
||||||
pet->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
pet->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||||
pet->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
pet->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
||||||
pet->setDeathState(ALIVE);
|
pet->setDeathState(ALIVE);
|
||||||
|
|||||||
@@ -3346,13 +3346,22 @@ void SpellMgr::LoadDbcDataCorrections()
|
|||||||
case 70835: // Bone Storm (Lord Marrowgar)
|
case 70835: // Bone Storm (Lord Marrowgar)
|
||||||
case 70836: // Bone Storm (Lord Marrowgar)
|
case 70836: // Bone Storm (Lord Marrowgar)
|
||||||
case 72864: // Death Plague (Rotting Frost Giant)
|
case 72864: // Death Plague (Rotting Frost Giant)
|
||||||
case 72378: // Blood Nova (Deathbringer Saurfang)
|
|
||||||
case 73058: // Blood Nova (Deathbringer Saurfang)
|
|
||||||
case 71160: // Plague Stench (Stinky)
|
case 71160: // Plague Stench (Stinky)
|
||||||
case 71161: // Plague Stench (Stinky)
|
case 71161: // Plague Stench (Stinky)
|
||||||
case 71123: // Decimate (Stinky & Precious)
|
case 71123: // Decimate (Stinky & Precious)
|
||||||
spellInfo->EffectRadiusIndex[0] = EFFECT_RADIUS_100_YARDS; // 100yd
|
spellInfo->EffectRadiusIndex[0] = EFFECT_RADIUS_100_YARDS; // 100yd
|
||||||
break;
|
break;
|
||||||
|
case 72378: // Blood Nova (Deathbringer Saurfang)
|
||||||
|
case 73058: // Blood Nova (Deathbringer Saurfang)
|
||||||
|
spellInfo->EffectRadiusIndex[0] = EFFECT_RADIUS_200_YARDS;
|
||||||
|
spellInfo->EffectRadiusIndex[1] = EFFECT_RADIUS_200_YARDS;
|
||||||
|
break;
|
||||||
|
case 72769: // Scent of Blood (Deathbringer Saurfang)
|
||||||
|
spellInfo->EffectRadiusIndex[0] = EFFECT_RADIUS_200_YARDS;
|
||||||
|
// no break
|
||||||
|
case 72771: // Scent of Blood (Deathbringer Saurfang)
|
||||||
|
spellInfo->EffectRadiusIndex[1] = EFFECT_RADIUS_200_YARDS;
|
||||||
|
break;
|
||||||
case 72723: // Resistant Skin (Deathbringer Saurfang adds)
|
case 72723: // Resistant Skin (Deathbringer Saurfang adds)
|
||||||
// this spell initially granted Shadow damage immunity, however it was removed but the data was left in client
|
// this spell initially granted Shadow damage immunity, however it was removed but the data was left in client
|
||||||
spellInfo->Effect[2] = 0;
|
spellInfo->Effect[2] = 0;
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ enum ScriptTexts
|
|||||||
SAY_FRENZY = 11,
|
SAY_FRENZY = 11,
|
||||||
SAY_BERSERK = 12,
|
SAY_BERSERK = 12,
|
||||||
SAY_DEATH = 13,
|
SAY_DEATH = 13,
|
||||||
|
EMOTE_SCENT_OF_BLOOD = 14,
|
||||||
|
|
||||||
// High Overlord Saurfang
|
// High Overlord Saurfang
|
||||||
SAY_INTRO_HORDE_1 = 0,
|
SAY_INTRO_HORDE_1 = 0,
|
||||||
@@ -145,6 +146,7 @@ enum EventTypes
|
|||||||
EVENT_BOILING_BLOOD = 20,
|
EVENT_BOILING_BLOOD = 20,
|
||||||
EVENT_BLOOD_NOVA = 21,
|
EVENT_BLOOD_NOVA = 21,
|
||||||
EVENT_RUNE_OF_BLOOD = 22,
|
EVENT_RUNE_OF_BLOOD = 22,
|
||||||
|
EVENT_SCENT_OF_BLOOD = 52,
|
||||||
|
|
||||||
EVENT_OUTRO_ALLIANCE_1 = 23,
|
EVENT_OUTRO_ALLIANCE_1 = 23,
|
||||||
EVENT_OUTRO_ALLIANCE_2 = 24,
|
EVENT_OUTRO_ALLIANCE_2 = 24,
|
||||||
@@ -374,16 +376,13 @@ class boss_deathbringer_saurfang : public CreatureScript
|
|||||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
|
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
|
||||||
summon->AI()->AttackStart(target);
|
summon->AI()->AttackStart(target);
|
||||||
|
|
||||||
if (IsHeroic())
|
summon->CastSpell(summon, SPELL_BLOOD_LINK_BEAST, true);
|
||||||
DoCast(summon, SPELL_SCENT_OF_BLOOD);
|
summon->CastSpell(summon, SPELL_RESISTANT_SKIN, true);
|
||||||
|
|
||||||
summon->AI()->DoCast(summon, SPELL_BLOOD_LINK_BEAST, true);
|
|
||||||
summon->AI()->DoCast(summon, SPELL_RESISTANT_SKIN, true);
|
|
||||||
summons.Summon(summon);
|
summons.Summon(summon);
|
||||||
DoZoneInCombat(summon);
|
DoZoneInCombat(summon);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SummonedCreatureDespawn(Creature* summon)
|
void SummonedCreatureDies(Creature* summon, Unit* /*killer*/)
|
||||||
{
|
{
|
||||||
summons.Despawn(summon);
|
summons.Despawn(summon);
|
||||||
}
|
}
|
||||||
@@ -463,18 +462,13 @@ class boss_deathbringer_saurfang : public CreatureScript
|
|||||||
DoCast(me, SPELL_SUMMON_BLOOD_BEAST_25_MAN+i25);
|
DoCast(me, SPELL_SUMMON_BLOOD_BEAST_25_MAN+i25);
|
||||||
Talk(SAY_BLOOD_BEASTS);
|
Talk(SAY_BLOOD_BEASTS);
|
||||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40000, 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40000, 0, PHASE_COMBAT);
|
||||||
|
if (IsHeroic())
|
||||||
|
events.ScheduleEvent(EVENT_SCENT_OF_BLOOD, 10000, 0, PHASE_COMBAT);
|
||||||
break;
|
break;
|
||||||
case EVENT_BLOOD_NOVA:
|
case EVENT_BLOOD_NOVA:
|
||||||
{
|
DoCastAOE(SPELL_BLOOD_NOVA_TRIGGER);
|
||||||
// select at range only
|
|
||||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true);
|
|
||||||
if (!target)
|
|
||||||
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true); // noone? select melee
|
|
||||||
if (target)
|
|
||||||
DoCast(target, SPELL_BLOOD_NOVA_TRIGGER);
|
|
||||||
events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case EVENT_RUNE_OF_BLOOD:
|
case EVENT_RUNE_OF_BLOOD:
|
||||||
DoCastVictim(SPELL_RUNE_OF_BLOOD);
|
DoCastVictim(SPELL_RUNE_OF_BLOOD);
|
||||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT);
|
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT);
|
||||||
@@ -487,6 +481,13 @@ class boss_deathbringer_saurfang : public CreatureScript
|
|||||||
DoCast(me, SPELL_BERSERK);
|
DoCast(me, SPELL_BERSERK);
|
||||||
Talk(SAY_BERSERK);
|
Talk(SAY_BERSERK);
|
||||||
break;
|
break;
|
||||||
|
case EVENT_SCENT_OF_BLOOD:
|
||||||
|
if (!summons.empty())
|
||||||
|
{
|
||||||
|
Talk(EMOTE_SCENT_OF_BLOOD);
|
||||||
|
DoCastAOE(SPELL_SCENT_OF_BLOOD);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1237,10 +1238,16 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader
|
|||||||
unitList.push_back(target);
|
unitList.push_back(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HandleForceCast(SpellEffIndex /*effIndex*/)
|
||||||
|
{
|
||||||
|
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), TRIGGERED_FULL_MASK);
|
||||||
|
}
|
||||||
|
|
||||||
void Register()
|
void Register()
|
||||||
{
|
{
|
||||||
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_blood_nova_targeting_SpellScript::FilterTargetsInitial, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_blood_nova_targeting_SpellScript::FilterTargetsInitial, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||||
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_blood_nova_targeting_SpellScript::FilterTargetsSubsequent, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
|
OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_blood_nova_targeting_SpellScript::FilterTargetsSubsequent, EFFECT_1, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||||
|
OnEffectHitTarget += SpellEffectFn(spell_deathbringer_blood_nova_targeting_SpellScript::HandleForceCast, EFFECT_0, SPELL_EFFECT_FORCE_CAST);
|
||||||
}
|
}
|
||||||
|
|
||||||
Unit* target;
|
Unit* target;
|
||||||
|
|||||||
Reference in New Issue
Block a user