fix(Core/Scripts): Bloodscale Enchantress/Rajis Fyashe freezing circle (#13963)

Co-authored-by: Eridium <killyana@users.noreply.github.com>
Co-authored-by: Lucas Nascimento <keader.android@gmail.com>

Co-authored-by: Eridium <killyana@users.noreply.github.com>
Co-authored-by: Lucas Nascimento <keader.android@gmail.com>
This commit is contained in:
Angelo Venturini
2022-12-11 11:35:08 -03:00
committed by GitHub
parent 45be3720a5
commit 72b446fb12
3 changed files with 81 additions and 43 deletions

View File

@@ -1297,48 +1297,6 @@ public:
}
};
class npc_frostbite_invisible_stalker : public CreatureScript
{
public:
npc_frostbite_invisible_stalker() : CreatureScript("npc_frostbite_invisible_stalker") { }
struct npc_frostbite_invisible_stalkerAI: public NullCreatureAI
{
npc_frostbite_invisible_stalkerAI(Creature* creature) : NullCreatureAI(creature)
{
timer = 3500;
for (uint8 i = 0; i < 3; ++i)
{
me->SetOrientation(i * M_PI / 3);
me->CastSpell(me, 34740, true);
me->CastSpell(me, 34746, true);
}
}
uint16 timer;
void UpdateAI(uint32 diff) override
{
if (timer)
{
if (timer <= diff)
{
int32 dmg = 2200;
me->CastCustomSpell(me, 34779, 0, &dmg, 0, true);
timer = 0;
}
else
timer -= diff;
}
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return GetPitOfSaronAI<npc_frostbite_invisible_stalkerAI>(creature);
}
};
class spell_pos_empowered_blizzard : public SpellScriptLoader
{
public:
@@ -1574,7 +1532,6 @@ void AddSC_pit_of_saron()
new npc_pos_martin_or_gorkun_second();
new npc_pos_freed_slave();
new npc_pos_leader_second();
new npc_frostbite_invisible_stalker();
new spell_pos_empowered_blizzard();
new spell_pos_slave_trigger_closest();

View File

@@ -4594,6 +4594,49 @@ class spell_gen_basic_campfire : public SpellScript
}
};
// 34779 - Freezing Circle
enum FreezingCircleSpells
{
SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL = 69574,
SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC = 70276,
SPELL_FREEZING_CIRCLE = 34787,
};
class spell_freezing_circle : public SpellScript
{
PrepareSpellScript(spell_freezing_circle);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL,
SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC,
SPELL_FREEZING_CIRCLE
});
}
void HandleDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
uint32 spellId = 0;
Map* map = caster->GetMap();
if (map->IsDungeon())
spellId = map->IsHeroic() ? SPELL_FREEZING_CIRCLE_PIT_OF_SARON_HEROIC : SPELL_FREEZING_CIRCLE_PIT_OF_SARON_NORMAL;
else
spellId = SPELL_FREEZING_CIRCLE;
if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId))
SetHitDamage(spellInfo->Effects[EFFECT_0].CalcValue());
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_freezing_circle::HandleDamage, EFFECT_1, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
void AddSC_generic_spell_scripts()
{
RegisterSpellScript(spell_silithyst);
@@ -4732,4 +4775,5 @@ void AddSC_generic_spell_scripts()
RegisterSpellScriptWithArgs(spell_gen_apply_aura_after_expiration, "spell_itch_aq20", SPELL_HIVEZARA_CATALYST, EFFECT_0, SPELL_AURA_DUMMY);
RegisterSpellScriptWithArgs(spell_gen_apply_aura_after_expiration, "spell_itch_aq40", SPELL_VEKNISS_CATALYST, EFFECT_0, SPELL_AURA_DUMMY);
RegisterSpellScript(spell_gen_basic_campfire);
RegisterSpellScript(spell_freezing_circle);
}