Advertisement
Guest User

Untitled

a guest
Jan 2nd, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. @@ -3348,12 +3348,11 @@ void AuraEffect::HandleModStateImmunityMask(AuraApplication const* aurApp, uint8
  2. target->ApplySpellImmune(GetId(), IMMUNITY_STATE, *iter, apply);
  3.  
  4. // Patch 3.0.3 Bladestorm now breaks all snares and roots on the warrior when activated.
  5. if (apply && GetId() == 46924)
  6. {
  7. - target->RemoveAurasByType(SPELL_AURA_MOD_ROOT);
  8. - target->RemoveAurasByType(SPELL_AURA_MOD_DECREASE_SPEED);
  9. + target->RemoveMovementImpairingAuras();
  10. }
  11.  
  12. if (apply && GetSpellInfo()->AttributesEx & SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY)
  13. for (std::list <AuraType>::iterator iter = immunity_list.begin(); iter != immunity_list.end(); ++iter)
  14. target->RemoveAurasByType(*iter);
  15. @@ -3373,11 +3372,11 @@ void AuraEffect::HandleModMechanicImmunity(AuraApplication const* aurApp, uint8
  16. case 59752: // Every Man for Himself
  17. mechanic = IMMUNE_TO_MOVEMENT_IMPAIRMENT_AND_LOSS_CONTROL_MASK;
  18. // Actually we should apply immunities here, too, but the aura has only 100 ms duration, so there is practically no point
  19. break;
  20. case 54508: // Demonic Empowerment
  21. - mechanic = (1 << MECHANIC_SNARE) | (1 << MECHANIC_ROOT);
  22. + mechanic = (1 << MECHANIC_SNARE) | (1 << MECHANIC_ROOT) | (1 << MECHANIC_STUN);
  23. target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_SNARE, apply);
  24. target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_ROOT, apply);
  25. target->ApplySpellImmune(GetId(), IMMUNITY_MECHANIC, MECHANIC_STUN, apply);
  26. break;
  27. case 34471: // The Beast Within
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. #2 SpellScript
  37.  
  38.  
  39. @@ -24,10 +24,11 @@
  40.  
  41. #include "ScriptPCH.h"
  42. #include "SpellAuraEffects.h"
  43. #include "SkillDiscovery.h"
  44. #include "GridNotifiers.h"
  45. +#include "Group.h"
  46.  
  47. class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
  48. {
  49. public:
  50. spell_gen_absorb0_hitlimit1() : SpellScriptLoader("spell_gen_absorb0_hitlimit1") { }
  51. @@ -1559,10 +1560,67 @@ class spell_gen_turkey_tracker : public SpellScriptLoader
  52. {
  53. return new spell_gen_turkey_tracker_SpellScript();
  54. }
  55. };
  56.  
  57. +class spell_shadowmeld : public SpellScriptLoader
  58. +{
  59. + public:
  60. + spell_shadowmeld() : SpellScriptLoader("spell_shadowmeld_fight") {}
  61. +
  62. + class spell_shadowmeld_SpellScript : public SpellScript
  63. + {
  64. + PrepareSpellScript(spell_shadowmeld_SpellScript);
  65. +
  66. + void HandleDummy(SpellEffIndex /*effIndex*/)
  67. + {
  68. + Unit *caster = GetCaster();
  69. + if (!caster)
  70. + return;
  71. +
  72. + caster->InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
  73. + caster->InterruptSpell(CURRENT_CHANNELED_SPELL); // cancel Spells like Autoshot etc.
  74. +
  75. + bool instant_combatexit = true;
  76. + if (Player *caster = caster->ToPlayer())
  77. + {
  78. + uint64 myGUID = caster->GetGUID();
  79. + float visibilityRange = caster->GetMap()->GetVisibilityRange();
  80. + if (Group *pGroup = caster->GetGroup())
  81. + {
  82. + const Group::MemberSlotList membersList = pGroup->GetMemberSlots();
  83. + for (Group::member_citerator itr=membersList.begin(); itr!=membersList.end() && instant_combatexit; ++itr)
  84. + if (itr->guid != myGUID)
  85. + if (Player *GroupMember = Unit::GetPlayer(*caster, itr->guid))
  86. + if (GroupMember->isInCombat() && caster->GetMap() == GroupMember->GetMap() && caster->IsWithinDistInMap(GroupMember, visibilityRange))
  87. + instant_combatexit = false;
  88. + }
  89. + caster->SendAttackSwingCancelAttack();
  90. + }
  91. +
  92. + if (!caster->GetInstanceScript() || !caster->GetInstanceScript()->IsEncounterInProgress()) //Don't leave combat if you are in combat with a boss
  93. + {
  94. + if (!instant_combatexit)
  95. + caster->getHostileRefManager().deleteReferences(); // exit combat after 6 seconds
  96. + else
  97. + caster->CombatStop();
  98. + }
  99. + }
  100. +
  101. + void Register()
  102. + {
  103. + OnEffectHitTarget += SpellEffectFn(spell_shadowmeld_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY);
  104. + }
  105. + };
  106. +
  107. + SpellScript* GetSpellScript() const
  108. + {
  109. + return new spell_shadowmeld_SpellScript();
  110. + }
  111. +};
  112. +
  113. +
  114. void AddSC_generic_spell_scripts()
  115. {
  116. new spell_gen_absorb0_hitlimit1();
  117. new spell_gen_aura_of_anger();
  118. new spell_gen_av_drekthar_presence();
  119. @@ -1594,6 +1652,7 @@ void AddSC_generic_spell_scripts()
  120. new spell_gen_vehicle_scaling();
  121. new spell_gen_oracle_wolvar_reputation();
  122. new spell_gen_damage_reduction_aura();
  123. new spell_gen_luck_of_the_draw();
  124. new spell_gen_turkey_tracker();
  125. + new spell_shadowmeld();
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement