More fixes to naxx40 (#559)

- fixes to Faerlina's poison bolt volley, Reign of Fire and Frenzy
- Gluth now has an AoE fear
- Razuvious's now uses Mana Burn (26046) instead of Disrupting Shout, with modified mana drain
- Thaddius maybe doesn't repeat himself anymore
- Zombie Chow now casts Infected Wound on itself on spawn
- disabled combat assistance for creatures in the alcoves during Kel'Thuzad phase 1
- Gluth now kills zombie chow instantly and he heals himself for 5% afterwards
- blocking death knights from entering Naxx40
This commit is contained in:
Grimfeather
2025-07-19 23:53:44 +02:00
committed by GitHub
parent 3c989f5a83
commit fd17395462
9 changed files with 75 additions and 43 deletions

View File

@@ -15,6 +15,9 @@ DELETE FROM `creature_addon` WHERE `guid` IN (133917, 133918, 133919, 133920, 13
UPDATE `creature` SET `phaseMask` = 1 WHERE `id1` IN UPDATE `creature` SET `phaseMask` = 1 WHERE `id1` IN
(11102, 16112, 16113, 16114, 16115, 16116, 16131, 16132, 16133, 16134, 16135, 16212, 16225, 16228, 16229, 16256, 16283, 16284, 16376, 16378, 17069, 17072); (11102, 16112, 16113, 16114, 16115, 16116, 16131, 16132, 16133, 16134, 16135, 16212, 16225, 16228, 16229, 16256, 16283, 16284, 16376, 16378, 17069, 17072);
-- Naxx40 - Razuvious
DELETE FROM `spell_script_names` WHERE `spell_id` IN (29107, 55543);
-- Drop source for 2.3 Jewelcrafting Recipe -- Drop source for 2.3 Jewelcrafting Recipe
UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` = 19768; -- disabled for now to prevent the creature from attacking while phased UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` = 19768; -- disabled for now to prevent the creature from attacking while phased

View File

@@ -73,7 +73,7 @@ INSERT INTO `creature_template` (`entry`, `name`, `subname`, `minlevel`, `maxlev
(351066, "Spore", "", 60, 60, 21, 0.4, 0.285714, 18.0, 1.0, 0, 0, 0.6, 2000, 2000, 1.0, 1.0, 1, 0, 2048, 0, 10, 8, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 0.25, 1.0, 0.7, 0.5, 69, 1, 0, 0, 0, ''), (351066, "Spore", "", 60, 60, 21, 0.4, 0.285714, 18.0, 1.0, 0, 0, 0.6, 2000, 2000, 1.0, 1.0, 1, 0, 2048, 0, 10, 8, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 0.25, 1.0, 0.7, 0.5, 69, 1, 0, 0, 0, ''),
(351067, "Fallout Slime", "", 60, 60, 21, 1.0, 1.14286, 20.0, 1.0, 1, 0, 46.2, 1800, 1265, 1.0, 1.0, 1, 64, 2048, 0, 6, 0, 0, 0, 0, 0, 0, '', 0, 1.0, 16.0, 2.0, 1.1, 1.0, 0, 1, 1015758846, 0, 0, ''), (351067, "Fallout Slime", "", 60, 60, 21, 1.0, 1.14286, 20.0, 1.0, 1, 0, 46.2, 1800, 1265, 1.0, 1.0, 1, 64, 2048, 0, 6, 0, 0, 0, 0, 0, 0, '', 0, 1.0, 16.0, 2.0, 1.1, 1.0, 0, 1, 1015758846, 0, 0, ''),
(351068, "Mutated Grub", "", 61, 61, 21, 1.0, 1.14286, 20.0, 1.0, 1, 0, 1.0, 2000, 2000, 1.0, 1.0, 1, 64, 2048, 0, 10, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 8.0, 1.0, 1.15, 1.0, 144, 1, 1022045779, 0, 0, ''), (351068, "Mutated Grub", "", 61, 61, 21, 1.0, 1.14286, 20.0, 1.0, 1, 0, 1.0, 2000, 2000, 1.0, 1.0, 1, 64, 2048, 0, 10, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 8.0, 1.0, 1.15, 1.0, 144, 1, 1022045779, 0, 0, ''),
(351069, "Zombie Chow", "", 60, 60, 89, 1.0, 1.14286, 20.0, 1.0, 1, 0, 3.4, 3000, 2000, 1.0, 1.0, 1, 1, 2048, 0, 6, 72, 0, 0, 0, 0, 0, '', 0, 1.0, 40.0, 3.0, 1.1, 1.0, 100, 1, 1015226896, 0, 0, ''), (351069, "Zombie Chow", "", 60, 60, 89, 1.0, 1.14286, 20.0, 1.0, 1, 0, 3.4, 3000, 2000, 1.0, 1.0, 1, 1, 2048, 0, 6, 72, 0, 0, 0, 0, 0, 'SmartAI', 0, 1.0, 40.0, 3.0, 1.1, 1.0, 100, 1, 1015226896, 0, 0, ''),
(351070, "Necropolis Acolyte", "", 62, 62, 21, 1.0, 1.71429, 20.0, 1.0, 1, 0, 27.0, 2000, 1265, 1.0, 1.0, 2, 0, 2048, 0, 7, 0, 351070, 0, 0, 2865, 9398, '', 1, 1.0, 25.0, 10.0, 1.25, 1.0, 164, 1, 1055604307, 0, 0, ''), (351070, "Necropolis Acolyte", "", 62, 62, 21, 1.0, 1.71429, 20.0, 1.0, 1, 0, 27.0, 2000, 1265, 1.0, 1.0, 2, 0, 2048, 0, 7, 0, 351070, 0, 0, 2865, 9398, '', 1, 1.0, 25.0, 10.0, 1.25, 1.0, 164, 1, 1055604307, 0, 0, ''),
(351071, "Sewage Slime", "", 60, 60, 21, 1.0, 1.14286, 20.0, 2.0, 1, 0, 23.0, 1800, 1265, 1.0, 1.0, 1, 64, 2048, 0, 6, 64, 0, 0, 0, 0, 0, 'SmartAI', 1, 1.0, 50.0, 2.0, 1.1, 1.0, 0, 1, 1015756402, 0, 0, ''), (351071, "Sewage Slime", "", 60, 60, 21, 1.0, 1.14286, 20.0, 2.0, 1, 0, 23.0, 1800, 1265, 1.0, 1.0, 1, 64, 2048, 0, 6, 64, 0, 0, 0, 0, 0, 'SmartAI', 1, 1.0, 50.0, 2.0, 1.1, 1.0, 0, 1, 1015756402, 0, 0, ''),
(351072, "Toxic Tunnel", "", 60, 60, 114, 1.0, 1.14286, 18.0, 1.0, 0, 0, 4.2, 2000, 2000, 1.0, 1.0, 1, 33816578, 2048, 0, 10, 0, 0, 0, 0, 0, 0, 'NullCreatureAI', 0, 1.0, 1.35, 1.0, 2.8, 1.0, 0, 1, 0, 0, 2, ''), (351072, "Toxic Tunnel", "", 60, 60, 114, 1.0, 1.14286, 18.0, 1.0, 0, 0, 4.2, 2000, 2000, 1.0, 1.0, 1, 33816578, 2048, 0, 10, 0, 0, 0, 0, 0, 0, 'NullCreatureAI', 0, 1.0, 1.35, 1.0, 2.8, 1.0, 0, 1, 0, 0, 2, ''),
@@ -4393,6 +4393,7 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
(351065, 0, 5, 0, 2, 0, 100, 0, 0, 30, 60000, 60000, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Infectious Ghoul - On 30% HP - Say EMOTE_FRENZY (Naxx 40)"), (351065, 0, 5, 0, 2, 0, 100, 0, 0, 30, 60000, 60000, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Infectious Ghoul - On 30% HP - Say EMOTE_FRENZY (Naxx 40)"),
(351066, 0, 0, 0, 6, 0, 100, 512, 0, 0, 0, 0, 0, 11, 29232, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell on Death (Naxx 40)"), (351066, 0, 0, 0, 6, 0, 100, 512, 0, 0, 0, 0, 0, 11, 29232, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell on Death (Naxx 40)"),
(351068, 0, 0, 0, 0, 0, 100, 0, 2000, 5000, 6000, 8000, 0, 11, 30109, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell IC (Naxx 40)"), (351068, 0, 0, 0, 0, 0, 100, 0, 2000, 5000, 6000, 8000, 0, 11, 30109, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell IC (Naxx 40)"),
(351069, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 0, 11, 29306, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Zombie Chow - On Spawn - Cast Infected Wound'),
(351071, 0, 0, 0, 1, 0, 100, 7, 1000, 1000, 0, 0, 0, 11, 28153, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Sewage Slime - Out of Combat - Cast 'Disease Cloud' (Naxx 40)"), (351071, 0, 0, 0, 1, 0, 100, 7, 1000, 1000, 0, 0, 0, 11, 28153, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Sewage Slime - Out of Combat - Cast 'Disease Cloud' (Naxx 40)"),
(351078, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 55876, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Plagued Ghoul - On death - Cast Plague contamination (Naxx 40)"), (351078, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 11, 55876, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "Plagued Ghoul - On death - Cast Plague contamination (Naxx 40)"),
(351080, 0, 0, 0, 0, 0, 100, 0, 1000, 1000, 16000, 21000, 0, 11, 56107, 0, 0, 0, 0, 0, 17, 7, 40, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell IC (Naxx 40)"), (351080, 0, 0, 0, 0, 0, 100, 0, 1000, 1000, 16000, 21000, 0, 11, 56107, 0, 0, 0, 0, 0, 17, 7, 40, 0, 0, 0.0, 0.0, 0.0, 0.0, "Cast Spell IC (Naxx 40)"),
@@ -5356,7 +5357,8 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
DELETE FROM `creature_template_addon` WHERE (`entry` = 351073); DELETE FROM `creature_template_addon` WHERE (`entry` = 351073);
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
(351073, 0, 0, 0, 1, 0, 0, '28458'); (351073, 0, 0, 0, 1, 0, 0, '28458');
-- Soul Weaver --512 + 256 Disables combat/assistance
UPDATE `creature_template` SET `unit_flags` = 768 WHERE `entry` IN (351073, 351074, 351075);
-- Wail of Souls -- Wail of Souls
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 351075); DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 351075);
INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES INSERT INTO `creature_template_spell` (`CreatureID`, `Index`, `Spell`, `VerifiedBuild`) VALUES

View File

@@ -152,13 +152,9 @@ DELETE FROM `spell_script_names` WHERE `spell_id` = 28135;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (28135, 'spell_feugen_static_field_40'); INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (28135, 'spell_feugen_static_field_40');
-- Razuvious -- Razuvious
-- ? Script defines 29107? as target but only 55543 works -- Mana Burn - alternative for Disrupting Shout
-- 29107: Disrupting Shout DELETE FROM `spell_script_names` WHERE `spell_id` = 26046;
DELETE FROM `spell_script_names` WHERE `spell_id` = 29107; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (26046, 'spell_razuvious_disrupting_shout_40');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (29107, 'spell_razuvious_disrupting_shout_40');
-- 55543: 10 man version of Disrupting Shout
DELETE FROM `spell_script_names` WHERE `spell_id` = 55543;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (55543, 'spell_razuvious_disrupting_shout_40');
-- Generic Spell Submerge -- Generic Spell Submerge
-- relinquery of souls and eye stalk TC: https://github.com/search?q=repo%3ATrinityCore%2FTrinityCore%20spell_reliquary_of_souls_submerge&type=code -- relinquery of souls and eye stalk TC: https://github.com/search?q=repo%3ATrinityCore%2FTrinityCore%20spell_reliquary_of_souls_submerge&type=code

View File

@@ -40,6 +40,16 @@ enum Spells
SPELL_MINION_WIDOWS_EMBRACE = 54097 SPELL_MINION_WIDOWS_EMBRACE = 54097
}; };
enum SpellValues : int32
{
POISON_BOLT_VOLLEY_BP0 = 1224,
POISON_BOLT_VOLLEY_BP1 = 416,
RAIN_OF_FIRE_BP0 = 1849,
FRENZY_BP0 = 149,
FRENZY_BP1 = 74,
FRENZY_BP2 = 49
};
enum Groups enum Groups
{ {
GROUP_FRENZY = 1 GROUP_FRENZY = 1
@@ -94,11 +104,23 @@ public:
ScheduleTimedEvent(7s, 15s, [&]{ ScheduleTimedEvent(7s, 15s, [&]{
if (!me->HasAura(SPELL_WIDOWS_EMBRACE)) if (!me->HasAura(SPELL_WIDOWS_EMBRACE))
DoCastVictim(SPELL_POISON_BOLT_VOLLEY); {
CustomSpellValues values;
int32 bp0 = POISON_BOLT_VOLLEY_BP0;
int32 bp1 = POISON_BOLT_VOLLEY_BP1;
values.AddSpellMod(SPELLVALUE_MAX_TARGETS, 10);
values.AddSpellMod(SPELLVALUE_BASE_POINT0, bp0);
values.AddSpellMod(SPELLVALUE_BASE_POINT1, bp1);
me->CastCustomSpell(SPELL_POISON_BOLT_VOLLEY, values, me, TRIGGERED_NONE, nullptr, nullptr, ObjectGuid::Empty);
}
}, 7s, 15s); }, 7s, 15s);
ScheduleTimedEvent(8s, 18s, [&] { ScheduleTimedEvent(8s, 18s, [&] {
DoCastRandomTarget(SPELL_RAIN_OF_FIRE); if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
int32 bp0 = RAIN_OF_FIRE_BP0;
me->CastCustomSpell(target, SPELL_RAIN_OF_FIRE, &bp0, 0, 0, false, nullptr, nullptr, ObjectGuid::Empty);
}
}, 8s, 18s); }, 8s, 18s);
scheduler.Schedule(60s, 80s, GROUP_FRENZY, [this](TaskContext context) { scheduler.Schedule(60s, 80s, GROUP_FRENZY, [this](TaskContext context) {
@@ -106,7 +128,10 @@ public:
{ {
Talk(SAY_FRENZY); Talk(SAY_FRENZY);
Talk(EMOTE_FRENZY); Talk(EMOTE_FRENZY);
DoCastSelf(SPELL_FRENZY, true); int32 bp0 = FRENZY_BP0;
int32 bp1 = FRENZY_BP1;
int32 bp2 = FRENZY_BP2;
me->CastCustomSpell(me, SPELL_FRENZY, &bp0, &bp1, &bp2, true, nullptr, nullptr, ObjectGuid::Empty);
context.Repeat(1min); context.Repeat(1min);
} }
else else

View File

@@ -32,6 +32,7 @@ enum Spells
SPELL_DECIMATE_DAMAGE = 28375, SPELL_DECIMATE_DAMAGE = 28375,
SPELL_BERSERK = 26662, SPELL_BERSERK = 26662,
SPELL_INFECTED_WOUND = 29306, SPELL_INFECTED_WOUND = 29306,
SPELL_TERRIFYING_ROAR = 29685,
SPELL_CHOW_SEARCHER = 28404 SPELL_CHOW_SEARCHER = 28404
}; };
@@ -42,7 +43,8 @@ enum Events
EVENT_DECIMATE = 3, EVENT_DECIMATE = 3,
EVENT_BERSERK = 4, EVENT_BERSERK = 4,
EVENT_SUMMON_ZOMBIE = 5, EVENT_SUMMON_ZOMBIE = 5,
EVENT_CAN_EAT_ZOMBIE = 6 EVENT_CAN_EAT_ZOMBIE = 6,
EVENT_TERRIFYING_ROAR = 7
}; };
enum Misc enum Misc
@@ -114,11 +116,12 @@ public:
BossAI::JustEngagedWith(who); BossAI::JustEngagedWith(who);
me->SetInCombatWithZone(); me->SetInCombatWithZone();
events.ScheduleEvent(EVENT_MORTAL_WOUND, 10s); events.ScheduleEvent(EVENT_MORTAL_WOUND, 10s);
events.ScheduleEvent(EVENT_ENRAGE, 22s); events.ScheduleEvent(EVENT_ENRAGE, 10s); // VMangos value
events.ScheduleEvent(EVENT_DECIMATE, RAID_MODE(110000, 90000, 110000, 90000)); events.ScheduleEvent(EVENT_DECIMATE, RAID_MODE(110000, 90000, 110000, 90000));
events.ScheduleEvent(EVENT_BERSERK, 6min); events.ScheduleEvent(EVENT_BERSERK, 6min);
events.ScheduleEvent(EVENT_SUMMON_ZOMBIE, 10s); events.ScheduleEvent(EVENT_SUMMON_ZOMBIE, 6s); // VMangos value
events.ScheduleEvent(EVENT_CAN_EAT_ZOMBIE, 1s); events.ScheduleEvent(EVENT_CAN_EAT_ZOMBIE, 3s); // VMangos value
events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 20s); // VMangos value
} }
void JustSummoned(Creature* summon) override void JustSummoned(Creature* summon) override
@@ -187,8 +190,10 @@ public:
Talk(EMOTE_ENRAGE); Talk(EMOTE_ENRAGE);
int32 bp1 = 99; // Enrage melee haste int32 bp1 = 99; // Enrage melee haste
int32 bp2 = 49; // Enrage damage percent int32 bp2 = 49; // Enrage damage percent
me->CastCustomSpell(me, SPELL_ENRAGE_10, &bp1, &bp2, 0, true); if (me->CastCustomSpell(me, SPELL_ENRAGE_10, &bp1, &bp2, 0, true) == SPELL_CAST_OK)
events.Repeat(22s); events.Repeat(10s);
else
events.Repeat(100ms);
break; break;
} }
case EVENT_MORTAL_WOUND: case EVENT_MORTAL_WOUND:
@@ -239,7 +244,7 @@ public:
} }
(rand == 2 ? rand = 0 : rand++); (rand == 2 ? rand = 0 : rand++);
} }
events.Repeat(10s); events.Repeat(6s);
break; break;
} }
case EVENT_CAN_EAT_ZOMBIE: case EVENT_CAN_EAT_ZOMBIE:
@@ -248,9 +253,22 @@ public:
{ {
me->CastCustomSpell(SPELL_CHOW_SEARCHER, SPELLVALUE_RADIUS_MOD, 20000, me, true); me->CastCustomSpell(SPELL_CHOW_SEARCHER, SPELLVALUE_RADIUS_MOD, 20000, me, true);
Talk(EMOTE_DEVOURS_ALL); Talk(EMOTE_DEVOURS_ALL);
Unit* unitTarget = me->GetVictim();
int32 damage = int32(unitTarget->GetHealth());
Unit::DealDamage(me, unitTarget, damage);
uint32 hp = uint32(me->GetMaxHealth() * 0.05f);
me->SetHealth(me->GetHealth() + hp);
return; // leave it to skip DoMeleeAttackIfReady return; // leave it to skip DoMeleeAttackIfReady
} }
break; break;
case EVENT_TERRIFYING_ROAR:
if (me->CastSpell(me, SPELL_TERRIFYING_ROAR, true) == SPELL_CAST_OK)
events.Repeat(20s);
else
events.Repeat(100ms);
break;
} }
DoMeleeAttackIfReady(); DoMeleeAttackIfReady();
} }

View File

@@ -34,7 +34,8 @@ enum Says
enum Spells enum Spells
{ {
SPELL_UNBALANCING_STRIKE = 26613, SPELL_UNBALANCING_STRIKE = 26613,
SPELL_DISRUPTING_SHOUT = 29107, // SPELL_DISRUPTING_SHOUT = 29107, // 55543
SPELL_MANA_BURN = 26046, // Alternative for Disrupting shout.
SPELL_JAGGED_KNIFE = 55550, SPELL_JAGGED_KNIFE = 55550,
SPELL_HOPELESS = 29125, SPELL_HOPELESS = 29125,
SPELL_TAUNT = 29060 SPELL_TAUNT = 29060
@@ -265,7 +266,7 @@ public:
events.Repeat(20s); events.Repeat(20s);
break; break;
case EVENT_DISRUPTING_SHOUT: case EVENT_DISRUPTING_SHOUT:
me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false); me->CastSpell(me, SPELL_MANA_BURN, false);
events.Repeat(10s); events.Repeat(10s);
break; break;
case EVENT_JAGGED_KNIFE: case EVENT_JAGGED_KNIFE:

View File

@@ -707,7 +707,7 @@ public:
bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override
{ {
InstanceScript* instance = player->GetInstanceScript(); InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetData(DATA_THADDIUS_INTRO) || instance->GetBossState(BOSS_THADDIUS) == DONE) if (!instance || instance->GetData(DATA_THADDIUS_INTRO) == 1 || instance->GetBossState(BOSS_THADDIUS) == DONE)
return true; return true;
if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS)) if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS))

View File

@@ -51,11 +51,12 @@ public:
bool OnGossipHello(Player* player, GameObject* /*go*/) override bool OnGossipHello(Player* player, GameObject* /*go*/) override
{ {
if ((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && (player->GetLevel() <= IP_LEVEL_TBC)) if ((isExcludedFromProgression(player) && (player->GetLevel() <= IP_LEVEL_TBC) && (!player->getClass() == CLASS_DEATH_KNIGHT)) ||
((!sIndividualProgression->requireNaxxStrath || player->GetQuestStatus(NAXX40_ENTRANCE_FLAG) == QUEST_STATUS_REWARDED) && (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))))
{ {
player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC); player->SetRaidDifficulty(RAID_DIFFICULTY_10MAN_HEROIC);
if ((isAttuned(player)) || (isExcludedFromProgression(player) && (player->GetLevel() <= IP_LEVEL_TBC))) if (isAttuned(player) || isExcludedFromProgression(player))
player->TeleportTo(533, 3005.51f, -3434.64f, 304.195f, 6.2831f); player->TeleportTo(533, 3005.51f, -3434.64f, 304.195f, 6.2831f);
} }
return true; return true;

View File

@@ -329,38 +329,24 @@ class spell_noth_curse_of_the_plaguebringer_aura_40 : public AuraScript
} }
}; };
// 26046 - Razuvious - Mana Burn - Alternative for Disrupting Shout
class spell_razuvious_disrupting_shout_40 : public SpellScript class spell_razuvious_disrupting_shout_40 : public SpellScript
{ {
PrepareSpellScript(spell_razuvious_disrupting_shout_40); PrepareSpellScript(spell_razuvious_disrupting_shout_40);
void PreventLaunchHit(SpellEffIndex effIndex) void CalculateDamage(SpellEffIndex effIndex)
{ {
Unit* caster = GetCaster(); Unit* caster = GetCaster();
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC)) if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
{ {
return; return;
} }
if (Unit* target = GetHitUnit()) SetEffectValue(urand(4050,4950));
{
// ignore los -> not ignore los
// radius 60yd -> 45yd
PreventHitDefaultEffect(effIndex);
if (!target->IsWithinLOSInMap(caster) || !target->IsWithinDist2d(caster, 45.0f))
{
SetEffectValue(0);
return;
}
Powers PowerType = POWER_MANA;
// int32 amountToDrain = urand(4050,4950);
int32 amountToDrain = urand(500,501);
int32 drainedAmount = -target->ModifyPower(PowerType, -amountToDrain);
SetEffectValue(drainedAmount);
}
} }
void Register() override void Register() override
{ {
OnEffectHitTarget += SpellEffectFn(spell_razuvious_disrupting_shout_40::PreventLaunchHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); OnEffectHitTarget += SpellEffectFn(spell_razuvious_disrupting_shout_40::CalculateDamage, EFFECT_0, SPELL_EFFECT_POWER_BURN);
} }
}; };