mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
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:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user