Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @@ -3348,12 +3348,11 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
- target->ApplySpellImmune(GetId(), IMMUNITY_STATE, *iter, apply);
- // Patch 3.0.3 Bladestorm now breaks all snares and roots on the warrior when activated.
- if (apply && GetId() == 46924)
- {
- - target->RemoveAurasByType(SPELL_AURA_MOD_ROOT);
- - target->RemoveAurasByType(SPELL_AURA_MOD_DECREASE_SPEED);
- + target->RemoveMovementImpairingAuras();
- }
- if (apply && GetSpellInfo()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
- for (std::list <AuraType>::iterator iter = immunity_list.begin(); iter != immunity_list.end(); ++iter)
- target->RemoveAurasByType(*iter);
- @@ -3373,11 +3372,11 @@ void AuraEffect::HandleModMechanicImmunity(AuraApplication const* aurApp, uint8
- case 59752: // Every Man for Himself
- mechanic = IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK;
- // Actually we should apply immunities here, too, but the aura has only 100 ms duration, so there is practically no point
- break;
- case 54508: // Demonic Empowerment
- - mechanic = (1 << MECHANIC_SNARE) | (1 << MECHANIC_ROOT);
- + mechanic = (1 << MECHANIC_SNARE) | (1 << MECHANIC_ROOT) | (1 << MECHANIC_STUN);
- target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SNARE, apply);
- target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_ROOT, apply);
- target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_STUN, apply);
- break;
- case 34471: // The Beast Within
- #2 SpellScript
- @@ -24,10 +24,11 @@
- #include "ScriptPCH.h"
- #include "SpellAuraEffects.h"
- #include "SkillDiscovery.h"
- #include "GridNotifiers.h"
- +#include "Group.h"
- class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
- {
- public:
- spell_gen_absorb0_hitlimit1() : SpellScriptLoader("spell_gen_absorb0_hitlimit1") { }
- @@ -1559,10 +1560,67 @@ class spell_gen_turkey_tracker : public SpellScriptLoader
- {
- return new spell_gen_turkey_tracker_SpellScript();
- }
- };
- +class spell_shadowmeld : public SpellScriptLoader
- +{
- + public:
- + spell_shadowmeld() : SpellScriptLoader("spell_shadowmeld_fight") {}
- +
- + class spell_shadowmeld_SpellScript : public SpellScript
- + {
- + PrepareSpellScript(spell_shadowmeld_SpellScript);
- +
- + void HandleDummy(SpellEffIndex /*effIndex*/)
- + {
- + Unit *caster = GetCaster();
- + if (!caster)
- + return;
- +
- + caster->InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
- + caster->InterruptSpell(CURRENT_CHANNELED_SPELL); // cancel Spells like Autoshot etc.
- +
- + bool instant_combatexit = true;
- + if (Player *caster = caster->ToPlayer())
- + {
- + uint64 myGUID = caster->GetGUID();
- + float visibilityRange = caster->GetMap()->GetVisibilityRange();
- + if (Group *pGroup = caster->GetGroup())
- + {
- + const Group::MemberSlotList membersList = pGroup->GetMemberSlots();
- + for (Group::member_citerator itr=membersList.begin(); itr!=membersList.end() && instant_combatexit; ++itr)
- + if (itr->guid != myGUID)
- + if (Player *GroupMember = Unit::GetPlayer(*caster, itr->guid))
- + if (GroupMember->isInCombat() && caster->GetMap() == GroupMember->GetMap() && caster->IsWithinDistInMap(GroupMember, visibilityRange))
- + instant_combatexit = false;
- + }
- + caster->SendAttackSwingCancelAttack();
- + }
- +
- + if (!caster->GetInstanceScript() || !caster->GetInstanceScript()->IsEncounterInProgress()) //Don't leave combat if you are in combat with a boss
- + {
- + if (!instant_combatexit)
- + caster->getHostileRefManager().deleteReferences(); // exit combat after 6 seconds
- + else
- + caster->CombatStop();
- + }
- + }
- +
- + void Register()
- + {
- + OnEffectHitTarget += SpellEffectFn(spell_shadowmeld_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY);
- + }
- + };
- +
- + SpellScript* GetSpellScript() const
- + {
- + return new spell_shadowmeld_SpellScript();
- + }
- +};
- +
- +
- void AddSC_generic_spell_scripts()
- {
- new spell_gen_absorb0_hitlimit1();
- new spell_gen_aura_of_anger();
- new spell_gen_av_drekthar_presence();
- @@ -1594,6 +1652,7 @@ void AddSC_generic_spell_scripts()
- new spell_gen_vehicle_scaling();
- new spell_gen_oracle_wolvar_reputation();
- new spell_gen_damage_reduction_aura();
- new spell_gen_luck_of_the_draw();
- new spell_gen_turkey_tracker();
- + new spell_shadowmeld();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement