mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
Merge pull request #257 from jellemeeus/fix(Naxx40)lvl60slimeandsteed
Naxx40: Construct, Plague, Military, trash adjustments
This commit is contained in:
@@ -179,16 +179,21 @@ public:
|
||||
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||
return;
|
||||
|
||||
|
||||
switch (events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_BERSERK:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
{
|
||||
Talk(EMOTE_ENRAGE);
|
||||
me->CastSpell(me, SPELL_ENRAGE, true);
|
||||
int32 bp1 = 99; // Enrage melee haste
|
||||
int32 bp2 = 49; // Enrage damage percent
|
||||
me->CastCustomSpell(me, SPELL_ENRAGE, &bp1, &bp2, 0, true);
|
||||
events.RepeatEvent(22000);
|
||||
break;
|
||||
}
|
||||
case EVENT_MORTAL_WOUND:
|
||||
me->CastSpell(me->GetVictim(), SPELL_MORTAL_WOUND, false);
|
||||
events.RepeatEvent(10000);
|
||||
|
||||
@@ -26,12 +26,13 @@
|
||||
enum Spells
|
||||
{
|
||||
SPELL_POISON_CLOUD = 28240,
|
||||
SPELL_POISON_CLOUD_POISON_DAMAGE = 28241,
|
||||
SPELL_MUTATING_INJECTION = 28169,
|
||||
SPELL_MUTATING_EXPLOSION = 28206,
|
||||
SPELL_SLIME_SPRAY = 28157,
|
||||
SPELL_POISON_CLOUD_DAMAGE_AURA = 28158,
|
||||
SPELL_BERSERK = 26662,
|
||||
SPELL_BOMBARD_SLIME = 28280
|
||||
SPELL_BOMBARD_SLIME = 90003 // update summon entry
|
||||
};
|
||||
|
||||
enum Emotes
|
||||
@@ -170,10 +171,13 @@ public:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
break;
|
||||
case EVENT_SLIME_SPRAY:
|
||||
{
|
||||
Talk(EMOTE_SLIME);
|
||||
me->CastSpell(me->GetVictim(), SPELL_SLIME_SPRAY, false);
|
||||
int32 modifiedSlimeSprayDamage = urand(3200, 3400);
|
||||
me->CastCustomSpell(me->GetVictim(), SPELL_SLIME_SPRAY, &modifiedSlimeSprayDamage, 0, 0, false);
|
||||
events.RepeatEvent(20000);
|
||||
break;
|
||||
}
|
||||
case EVENT_MUTATING_INJECTION:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true, true, -SPELL_MUTATING_INJECTION))
|
||||
{
|
||||
@@ -275,14 +279,16 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class spell_grobbulus_mutating_injection : public SpellScriptLoader
|
||||
|
||||
// This will overwrite the declared 10 and 25 man mutating injection to handle all versions of the spell script
|
||||
class spell_grobbulus_mutating_injection_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_grobbulus_mutating_injection() : SpellScriptLoader("spell_grobbulus_mutating_injection") { }
|
||||
spell_grobbulus_mutating_injection_40() : SpellScriptLoader("spell_grobbulus_mutating_injection") { }
|
||||
|
||||
class spell_grobbulus_mutating_injection_AuraScript : public AuraScript
|
||||
class spell_grobbulus_mutating_injection_40_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_grobbulus_mutating_injection_AuraScript);
|
||||
PrepareAuraScript(spell_grobbulus_mutating_injection_40_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
@@ -297,7 +303,15 @@ class spell_grobbulus_mutating_injection : public SpellScriptLoader
|
||||
case AURA_REMOVE_BY_EXPIRE:
|
||||
if (auto caster = GetCaster())
|
||||
{
|
||||
caster->CastSpell(GetTarget(), SPELL_MUTATING_EXPLOSION, true);
|
||||
if (caster->GetMap()->GetDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
|
||||
{
|
||||
int32 modifiedMutatingExplosionDamage = 2379;
|
||||
caster->CastCustomSpell(GetTarget(), SPELL_MUTATING_EXPLOSION, &modifiedMutatingExplosionDamage, 0, 0, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
caster->CastSpell(GetTarget(), SPELL_MUTATING_EXPLOSION, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -307,13 +321,52 @@ class spell_grobbulus_mutating_injection : public SpellScriptLoader
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_grobbulus_mutating_injection_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_grobbulus_mutating_injection_40_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_grobbulus_mutating_injection_AuraScript();
|
||||
return new spell_grobbulus_mutating_injection_40_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class spell_grobbulus_poison_cloud_poison_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_grobbulus_poison_cloud_poison_40() : SpellScriptLoader("spell_grobbulus_poison_cloud_poison_40") { }
|
||||
|
||||
class spell_grobbulus_poison_cloud_poison_40_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_grobbulus_poison_cloud_poison_40_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_POISON_CLOUD_POISON_DAMAGE }); // Poison trigger
|
||||
}
|
||||
|
||||
void HandleTriggerSpell(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
PreventDefaultAction();
|
||||
int32 bp0 = 1109;
|
||||
caster->CastCustomSpell(GetTarget(), SPELL_POISON_CLOUD_POISON_DAMAGE, &bp0, 0, 0, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_grobbulus_poison_cloud_poison_40_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_grobbulus_poison_cloud_poison_40_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -321,6 +374,7 @@ void AddSC_boss_grobbulus_40()
|
||||
{
|
||||
new boss_grobbulus_40();
|
||||
new boss_grobbulus_poison_cloud_40();
|
||||
// new spell_grobbulus_mutating_injection();
|
||||
new spell_grobbulus_mutating_injection_40();
|
||||
// new spell_grobbulus_poison();
|
||||
new spell_grobbulus_poison_cloud_poison_40();
|
||||
}
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "ScriptedGossip.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellInfo.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellScriptLoader.h"
|
||||
#include "naxxramas.h"
|
||||
|
||||
enum Says
|
||||
@@ -36,6 +41,7 @@ enum Spells
|
||||
SPELL_SPELL_DISRUPTION = 29310,
|
||||
SPELL_DECREPIT_FEVER = 29998,
|
||||
SPELL_PLAGUE_CLOUD = 29350,
|
||||
SPELL_PLAGUE_CLOUD_TRIGGER = 30122,
|
||||
SPELL_TELEPORT_SELF = 30211
|
||||
};
|
||||
|
||||
@@ -187,9 +193,12 @@ public:
|
||||
events.RepeatEvent(10000);
|
||||
break;
|
||||
case EVENT_DECEPIT_FEVER:
|
||||
me->CastSpell(me, SPELL_DECREPIT_FEVER, false);
|
||||
{
|
||||
int32 bp1 = 499;
|
||||
me->CastCustomSpell(me, SPELL_DECREPIT_FEVER, 0, &bp1, 0, false, nullptr, nullptr, ObjectGuid::Empty);
|
||||
events.RepeatEvent(urand(22000, 25000));
|
||||
break;
|
||||
}
|
||||
case EVENT_PLAGUE_CLOUD:
|
||||
me->CastSpell(me, SPELL_PLAGUE_CLOUD, false);
|
||||
break;
|
||||
@@ -245,7 +254,80 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
class spell_heigan_plague_cloud_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_heigan_plague_cloud_40() : SpellScriptLoader("spell_heigan_plague_cloud_40") { }
|
||||
|
||||
class spell_heigan_plague_cloud_40_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_heigan_plague_cloud_40_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PLAGUE_CLOUD_TRIGGER });
|
||||
}
|
||||
|
||||
void HandleTriggerSpell(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
PreventDefaultAction();
|
||||
int32 bp0 = 4000;
|
||||
caster->CastCustomSpell(caster, SPELL_PLAGUE_CLOUD_TRIGGER, &bp0, 0, 0, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_heigan_plague_cloud_40_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_heigan_plague_cloud_40_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class spell_heigan_eruption_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_heigan_eruption_40() : SpellScriptLoader("spell_heigan_eruption_40") { }
|
||||
|
||||
class spell_heigan_eruption_40_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_heigan_eruption_40_SpellScript);
|
||||
|
||||
void HandleDamageCalc(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
uint32 damage = urand(3500, 4500);
|
||||
SetHitDamage(damage);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_heigan_eruption_40_SpellScript::HandleDamageCalc, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_heigan_eruption_40_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_heigan_40()
|
||||
{
|
||||
new boss_heigan_40();
|
||||
new spell_heigan_plague_cloud_40();
|
||||
new spell_heigan_eruption_40();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
enum Spells
|
||||
{
|
||||
SPELL_NECROTIC_AURA = 55593,
|
||||
SPELL_SUMMON_SPORE = 29234,
|
||||
SPELL_SUMMON_SPORE = 90006,
|
||||
SPELL_DEATHBLOOM = 29865,
|
||||
SPELL_INEVITABLE_DOOM = 29204,
|
||||
SPELL_BERSERK = 26662
|
||||
@@ -159,14 +159,21 @@ public:
|
||||
events.RepeatEvent(20000);
|
||||
break;
|
||||
case EVENT_DEATHBLOOM:
|
||||
me->CastSpell(me, SPELL_DEATHBLOOM, false);
|
||||
{
|
||||
//me->CastSpell(me, SPELL_DEATHBLOOM, false);
|
||||
int32 bp0 = 33; // TODO: Amplitude should be 6k, but is 1k. 200 dmg after 6 seconds
|
||||
me->CastCustomSpell(me, SPELL_DEATHBLOOM, &bp0, 0, 0, false);
|
||||
events.RepeatEvent(30000);
|
||||
break;
|
||||
}
|
||||
case EVENT_INEVITABLE_DOOM:
|
||||
me->CastSpell(me, SPELL_INEVITABLE_DOOM, false);
|
||||
{
|
||||
int32 bp0 = 2549;
|
||||
me->CastCustomSpell(me, SPELL_INEVITABLE_DOOM, &bp0, 0, 0, false);
|
||||
doomCounter++;
|
||||
events.RepeatEvent(doomCounter < 6 ? 30000 : 15000);
|
||||
break;
|
||||
}
|
||||
case EVENT_BERSERK:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
break;
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellScript.h"
|
||||
#include "naxxramas.h"
|
||||
|
||||
enum Says
|
||||
@@ -35,6 +37,7 @@ enum Says
|
||||
enum Spells
|
||||
{
|
||||
SPELL_CURSE_OF_THE_PLAGUEBRINGER = 29213,
|
||||
SPELL_REVENGE_OF_THE_PLAGUEBRINGER = 29214,
|
||||
SPELL_CRIPPLE = 29212,
|
||||
SPELL_SUMMON_PLAGUED_WARRIORS = 29237,
|
||||
SPELL_TELEPORT = 29216,
|
||||
@@ -103,7 +106,7 @@ public:
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_MOVE_TO_BALCONY, 110000);
|
||||
events.ScheduleEvent(EVENT_CURSE, 15000);
|
||||
//events.ScheduleEvent(EVENT_CURSE, urand(50000, 60000)); // more curses, down from 150s to 50-60s
|
||||
events.ScheduleEvent(EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE, 10000);
|
||||
if (Is25ManRaid())
|
||||
{
|
||||
@@ -232,9 +235,9 @@ public:
|
||||
case EVENT_CURSE:
|
||||
if (events.GetPhaseMask() == 0)
|
||||
{
|
||||
me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, 10, me, false);
|
||||
me->CastCustomSpell(SPELL_CURSE_OF_THE_PLAGUEBRINGER, SPELLVALUE_MAX_TARGETS, 10, me, false); // TODO: Increase to 20 on 40man
|
||||
}
|
||||
events.RepeatEvent(25000);
|
||||
events.RepeatEvent(25000); // 50-60 seconds in 40man
|
||||
break;
|
||||
case EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE:
|
||||
Talk(SAY_SUMMON);
|
||||
@@ -297,7 +300,51 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
class spell_gothik_curse_of_the_plaguebringer_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gothik_curse_of_the_plaguebringer_40() : SpellScriptLoader("spell_gothik_curse_of_the_plaguebringer_40") { }
|
||||
|
||||
class spell_gothik_curse_of_the_plaguebringer_40_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gothik_curse_of_the_plaguebringer_40_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_REVENGE_OF_THE_PLAGUEBRINGER }); // Revenge of the Plaguebringer
|
||||
}
|
||||
|
||||
void HandleTriggerSpell(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || (caster->GetMap()->GetDifficulty() != RAID_DIFFICULTY_10MAN_HEROIC))
|
||||
{
|
||||
return;
|
||||
}
|
||||
PreventDefaultAction();
|
||||
CustomSpellValues values;
|
||||
int32 bp0 = 1757; // instant damage
|
||||
int32 bp1 = 874; // periodic damage
|
||||
values.AddSpellMod(SPELLVALUE_BASE_POINT0, bp0);
|
||||
values.AddSpellMod(SPELLVALUE_BASE_POINT1, bp1);
|
||||
values.AddSpellMod(SPELLVALUE_RADIUS_MOD, 3500); // 35yd
|
||||
GetTarget()->CastCustomSpell(SPELL_REVENGE_OF_THE_PLAGUEBRINGER, values, GetTarget(), TRIGGERED_NONE, nullptr, nullptr, GetCasterGUID());
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_gothik_curse_of_the_plaguebringer_40_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_gothik_curse_of_the_plaguebringer_40_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_noth_40()
|
||||
{
|
||||
new boss_noth_40();
|
||||
new spell_gothik_curse_of_the_plaguebringer_40();
|
||||
}
|
||||
|
||||
@@ -155,7 +155,8 @@ public:
|
||||
}
|
||||
if (finalTarget)
|
||||
{
|
||||
me->CastSpell(finalTarget, SPELL_HATEFUL_STRIKE, false);
|
||||
int32 dmg = urand(22100,22850);
|
||||
me->CastCustomSpell(finalTarget, SPELL_HATEFUL_STRIKE, &dmg, 0, 0, false);
|
||||
}
|
||||
events.RepeatEvent(1200);
|
||||
break;
|
||||
|
||||
@@ -135,9 +135,9 @@ public:
|
||||
{
|
||||
BossAI::JustEngagedWith(who);
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(EVENT_UNBALANCING_STRIKE, 20000);
|
||||
events.ScheduleEvent(EVENT_UNBALANCING_STRIKE, 20000); // TODO: This can be 30 seconds to match vanilla
|
||||
events.ScheduleEvent(EVENT_DISRUPTING_SHOUT, 15000);
|
||||
events.ScheduleEvent(EVENT_JAGGED_KNIFE, 10000);
|
||||
//events.ScheduleEvent(EVENT_JAGGED_KNIFE, 10000); // New wrath mechanic
|
||||
summons.DoZoneInCombat();
|
||||
}
|
||||
|
||||
@@ -157,9 +157,17 @@ public:
|
||||
events.RepeatEvent(20000);
|
||||
break;
|
||||
case EVENT_DISRUPTING_SHOUT:
|
||||
me->CastSpell(me, SPELL_DISRUPTING_SHOUT, false);
|
||||
{
|
||||
// TODO: Custom patch needed to implement power burn, or remove visual effect
|
||||
// 45yd that ignores line of sight
|
||||
CustomSpellValues values;
|
||||
int32 customDisruptingShoutDamage = 2200; // some value as we ignore LoS without patch
|
||||
values.AddSpellMod(SPELLVALUE_BASE_POINT0, customDisruptingShoutDamage);
|
||||
values.AddSpellMod(SPELLVALUE_RADIUS_MOD, 4500); // 45yd
|
||||
me->CastCustomSpell(SPELL_DISRUPTING_SHOUT, values, me, TRIGGERED_NONE, nullptr, nullptr, ObjectGuid::Empty);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
case EVENT_JAGGED_KNIFE:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45.0f))
|
||||
{
|
||||
|
||||
@@ -61,7 +61,7 @@ enum Spells
|
||||
SPELL_STALAGG_CHAIN = 28096,
|
||||
|
||||
// Feugen
|
||||
SPELL_STATIC_FIELD = 28135,
|
||||
SPELL_STATIC_FIELD = 90041, // power burn 500
|
||||
SPELL_FEUGEN_CHAIN = 28111,
|
||||
|
||||
// Thaddius
|
||||
@@ -338,9 +338,15 @@ public:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
break;
|
||||
case EVENT_THADDIUS_CHAIN_LIGHTNING:
|
||||
me->CastSpell(me->GetVictim(), SPELL_CHAIN_LIGHTNING, false);
|
||||
{
|
||||
CustomSpellValues values;
|
||||
int32 customChainLightningDamage = 1850; // (1850, 2150), die 675
|
||||
values.AddSpellMod(SPELLVALUE_BASE_POINT0, customChainLightningDamage);
|
||||
values.AddSpellMod(SPELLVALUE_MAX_TARGETS, 15);
|
||||
me->CastCustomSpell(SPELL_CHAIN_LIGHTNING, values, me->GetVictim(), TRIGGERED_NONE, nullptr, nullptr, ObjectGuid::Empty);
|
||||
events.RepeatEvent(15000);
|
||||
break;
|
||||
}
|
||||
case EVENT_THADDIUS_POLARITY_SHIFT:
|
||||
me->CastSpell(me, SPELL_POLARITY_SHIFT, false);
|
||||
events.RepeatEvent(30000);
|
||||
@@ -358,7 +364,8 @@ public:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat))
|
||||
{
|
||||
me->CastSpell(target, SPELL_BALL_LIGHTNING, false);
|
||||
int32 customBallLightningDamage = 6000;
|
||||
me->CastCustomSpell(target, SPELL_BALL_LIGHTNING, &customBallLightningDamage, 0, 0, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -582,7 +589,8 @@ public:
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 1000.f, true))
|
||||
{
|
||||
cr->CastStop(SPELL_TESLA_SHOCK);
|
||||
cr->CastSpell(target, SPELL_TESLA_SHOCK, true);
|
||||
int32 customTeslaShockDamage = 4374;
|
||||
cr->CastCustomSpell(target, SPELL_TESLA_SHOCK, &customTeslaShockDamage, 0, 0, true);
|
||||
}
|
||||
events.RepeatEvent(1500);
|
||||
break;
|
||||
@@ -601,14 +609,15 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
class spell_thaddius_pos_neg_charge : public SpellScriptLoader
|
||||
// This will overwrite the declared 10 and 25 man pos_neg_charge to handle all versions of the spell script
|
||||
class spell_thaddius_pos_neg_charge_40 : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_thaddius_pos_neg_charge() : SpellScriptLoader("spell_thaddius_pos_neg_charge") { }
|
||||
spell_thaddius_pos_neg_charge_40() : SpellScriptLoader("spell_thaddius_pos_neg_charge") { }
|
||||
|
||||
class spell_thaddius_pos_neg_charge_SpellScript : public SpellScript
|
||||
class spell_thaddius_pos_neg_charge_40_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_thaddius_pos_neg_charge_SpellScript);
|
||||
PrepareSpellScript(spell_thaddius_pos_neg_charge_40_SpellScript);
|
||||
|
||||
void HandleTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
@@ -651,18 +660,23 @@ public:
|
||||
{
|
||||
target->GetInstanceScript()->SetData(DATA_CHARGES_CROSSED, 0);
|
||||
}
|
||||
// Adjust damage to 2000 from 4500 for naxx40
|
||||
if (target->GetMap()->GetDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
|
||||
{
|
||||
SetHitDamage(2000);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_thaddius_pos_neg_charge_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_thaddius_pos_neg_charge_SpellScript::HandleTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_thaddius_pos_neg_charge_40_SpellScript::HandleDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_thaddius_pos_neg_charge_40_SpellScript::HandleTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ALLY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_thaddius_pos_neg_charge_SpellScript();
|
||||
return new spell_thaddius_pos_neg_charge_40_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -766,7 +780,7 @@ void AddSC_boss_thaddius_40()
|
||||
new boss_thaddius_40();
|
||||
new boss_thaddius_summon_40();
|
||||
// new npc_tesla();
|
||||
// new spell_thaddius_pos_neg_charge();
|
||||
new spell_thaddius_pos_neg_charge_40();
|
||||
// new spell_thaddius_polarity_shift();
|
||||
// new at_thaddius_entrance();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user