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
|
||||
(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
|
||||
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, ''),
|
||||
(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, ''),
|
||||
(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, ''),
|
||||
(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, ''),
|
||||
@@ -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)"),
|
||||
(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)"),
|
||||
(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)"),
|
||||
(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)"),
|
||||
@@ -5356,7 +5357,8 @@ INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_
|
||||
DELETE FROM `creature_template_addon` WHERE (`entry` = 351073);
|
||||
INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `visibilityDistanceType`, `auras`) VALUES
|
||||
(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
|
||||
DELETE FROM `creature_template_spell` WHERE (`CreatureID` = 351075);
|
||||
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');
|
||||
|
||||
-- Razuvious
|
||||
-- ? Script defines 29107? as target but only 55543 works
|
||||
-- 29107: Disrupting Shout
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 29107;
|
||||
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');
|
||||
-- Mana Burn - alternative for Disrupting Shout
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 26046;
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (26046, 'spell_razuvious_disrupting_shout_40');
|
||||
|
||||
-- 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
|
||||
|
||||
@@ -40,6 +40,16 @@ enum Spells
|
||||
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
|
||||
{
|
||||
GROUP_FRENZY = 1
|
||||
@@ -94,11 +104,23 @@ public:
|
||||
|
||||
ScheduleTimedEvent(7s, 15s, [&]{
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
scheduler.Schedule(60s, 80s, GROUP_FRENZY, [this](TaskContext context) {
|
||||
@@ -106,7 +128,10 @@ public:
|
||||
{
|
||||
Talk(SAY_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);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -32,6 +32,7 @@ enum Spells
|
||||
SPELL_DECIMATE_DAMAGE = 28375,
|
||||
SPELL_BERSERK = 26662,
|
||||
SPELL_INFECTED_WOUND = 29306,
|
||||
SPELL_TERRIFYING_ROAR = 29685,
|
||||
SPELL_CHOW_SEARCHER = 28404
|
||||
};
|
||||
|
||||
@@ -42,7 +43,8 @@ enum Events
|
||||
EVENT_DECIMATE = 3,
|
||||
EVENT_BERSERK = 4,
|
||||
EVENT_SUMMON_ZOMBIE = 5,
|
||||
EVENT_CAN_EAT_ZOMBIE = 6
|
||||
EVENT_CAN_EAT_ZOMBIE = 6,
|
||||
EVENT_TERRIFYING_ROAR = 7
|
||||
};
|
||||
|
||||
enum Misc
|
||||
@@ -114,11 +116,12 @@ public:
|
||||
BossAI::JustEngagedWith(who);
|
||||
me->SetInCombatWithZone();
|
||||
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_BERSERK, 6min);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIE, 10s);
|
||||
events.ScheduleEvent(EVENT_CAN_EAT_ZOMBIE, 1s);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ZOMBIE, 6s); // VMangos value
|
||||
events.ScheduleEvent(EVENT_CAN_EAT_ZOMBIE, 3s); // VMangos value
|
||||
events.ScheduleEvent(EVENT_TERRIFYING_ROAR, 20s); // VMangos value
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
@@ -187,8 +190,10 @@ public:
|
||||
Talk(EMOTE_ENRAGE);
|
||||
int32 bp1 = 99; // Enrage melee haste
|
||||
int32 bp2 = 49; // Enrage damage percent
|
||||
me->CastCustomSpell(me, SPELL_ENRAGE_10, &bp1, &bp2, 0, true);
|
||||
events.Repeat(22s);
|
||||
if (me->CastCustomSpell(me, SPELL_ENRAGE_10, &bp1, &bp2, 0, true) == SPELL_CAST_OK)
|
||||
events.Repeat(10s);
|
||||
else
|
||||
events.Repeat(100ms);
|
||||
break;
|
||||
}
|
||||
case EVENT_MORTAL_WOUND:
|
||||
@@ -239,7 +244,7 @@ public:
|
||||
}
|
||||
(rand == 2 ? rand = 0 : rand++);
|
||||
}
|
||||
events.Repeat(10s);
|
||||
events.Repeat(6s);
|
||||
break;
|
||||
}
|
||||
case EVENT_CAN_EAT_ZOMBIE:
|
||||
@@ -248,9 +253,22 @@ public:
|
||||
{
|
||||
me->CastCustomSpell(SPELL_CHOW_SEARCHER, SPELLVALUE_RADIUS_MOD, 20000, me, true);
|
||||
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
|
||||
}
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,8 @@ enum Says
|
||||
enum Spells
|
||||
{
|
||||
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_HOPELESS = 29125,
|
||||
SPELL_TAUNT = 29060
|
||||
@@ -265,7 +266,7 @@ public:
|
||||
events.Repeat(20s);
|
||||
break;
|
||||
case EVENT_DISRUPTING_SHOUT:
|
||||
me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false);
|
||||
me->CastSpell(me, SPELL_MANA_BURN, false);
|
||||
events.Repeat(10s);
|
||||
break;
|
||||
case EVENT_JAGGED_KNIFE:
|
||||
|
||||
@@ -707,7 +707,7 @@ public:
|
||||
bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/) override
|
||||
{
|
||||
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;
|
||||
|
||||
if (Creature* thaddius = instance->GetCreature(DATA_THADDIUS_BOSS))
|
||||
|
||||
@@ -51,11 +51,12 @@ public:
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
}
|
||||
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
|
||||
{
|
||||
PrepareSpellScript(spell_razuvious_disrupting_shout_40);
|
||||
|
||||
void PreventLaunchHit(SpellEffIndex effIndex)
|
||||
void CalculateDamage(SpellEffIndex effIndex)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (Unit* target = GetHitUnit())
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
SetEffectValue(urand(4050,4950));
|
||||
}
|
||||
|
||||
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