Advertisement
Guest User

Appled's Patch for Arcemu Community

a guest
Jun 9th, 2012
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 5.56 KB | None | 0 0
  1. diff --git a/src/arcemu-world/HackFixes.cpp b/src/arcemu-world/HackFixes.cpp
  2. index a521460..fc1bb08 100644
  3. --- a/src/arcemu-world/HackFixes.cpp
  4. +++ b/src/arcemu-world/HackFixes.cpp
  5. @@ -2305,35 +2392,96 @@ void ApplyNormalFixes()
  6.     if(sp != NULL)
  7.         sp->noproc = true;
  8.  
  9. +   //Paladin - Avenging Wrath marker - Is forced debuff
  10. +   sp = CheckAndReturnSpellEntry(61987);
  11. +   if(sp != NULL)
  12. +   {
  13. +       sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  14. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  15. +   }
  16. +
  17.     //Paladin - Forbearance - Is forced debuff
  18.     sp = CheckAndReturnSpellEntry(25771);
  19.     if(sp != NULL)
  20. -       sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
  21. +   {
  22. +       sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  23. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  24. +   }
  25.  
  26.     //Divine Protection
  27.     sp = CheckAndReturnSpellEntry(498);
  28. @@ -3356,11 +3505,12 @@ void ApplyNormalFixes()
  29.         sp->EffectApplyAuraName[0] = SPELL_AURA_PROC_TRIGGER_SPELL;
  30.         sp->EffectTriggerSpell[0] = 33619; //!! WRONG spell, we will make direct dmg here
  31.     }
  32. -   // Weakened Soul - Is forced debuff
  33. +   // Weakened Soul - is debuff
  34.     sp = CheckAndReturnSpellEntry(6788);
  35.     if(sp != NULL)
  36.     {
  37.         sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  38. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  39.     }
  40.  
  41.     // Penance
  42. @@ -3510,10 +3660,13 @@ void ApplyNormalFixes()
  43.     if(sp != NULL)
  44.         sp->casterAuraSpellNot = 57724; //sated debuff
  45.  
  46. -   //Sated
  47. +   // Sated - is debuff
  48.     sp = CheckAndReturnSpellEntry(57724);
  49.     if(sp != NULL)
  50. -       sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
  51. +   {
  52. +       sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  53. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  54. +   }
  55.  
  56.     /**********************************************************
  57.      *  Heroism
  58. @@ -3523,10 +3676,13 @@ void ApplyNormalFixes()
  59.     if(sp != NULL)
  60.         sp->casterAuraSpellNot = 57723; //sated debuff
  61.  
  62. -   //Sated
  63. +   // Sated - is debuff
  64.     sp = CheckAndReturnSpellEntry(57723);
  65.     if(sp != NULL)
  66. -       sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
  67. +   {
  68. +       sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  69. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  70. +   }
  71.  
  72.     /**********************************************************
  73.      *  Lightning Overload
  74. @@ -4345,10 +4501,13 @@ void ApplyNormalFixes()
  75.     if(sp != NULL)
  76.         sp->EffectImplicitTargetA[0] = EFF_TARGET_DYNAMIC_OBJECT;
  77.  
  78. -   // Hypothermia: undispellable
  79. +   // Hypothermia - forced debuff
  80.     sp = CheckAndReturnSpellEntry(41425);
  81.     if(sp != NULL)
  82. +   {
  83.         sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  84. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  85. +   }
  86.  
  87.     // Mage - Permafrost Rank 1
  88.     sp = CheckAndReturnSpellEntry(11175);
  89. @@ -6964,6 +7130,14 @@ void ApplyNormalFixes()
  90.         sp->procChance = 100;
  91.     }
  92.  
  93. +   // Recently Bandaged - is debuff
  94. +   sp = CheckAndReturnSpellEntry(11196);
  95. +   if(sp != NULL)
  96. +   {
  97. +       sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
  98. +       sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
  99. +   }
  100. +
  101.     sp = CheckAndReturnSpellEntry(44856);       // Bash'ir Phasing Device
  102.     if(sp != NULL)
  103.         sp->AuraInterruptFlags = AURA_INTERRUPT_ON_LEAVE_AREA;
  104. diff --git a/src/arcemu-world/Unit.cpp b/src/arcemu-world/Unit.cpp
  105. index f84f196..553cb60 100644
  106. --- a/src/arcemu-world/Unit.cpp
  107. +++ b/src/arcemu-world/Unit.cpp
  108. @@ -2526,6 +2516,13 @@ uint32 Unit::HandleProc(uint32 flag, Unit* victim, SpellEntry* CastingSpell, boo
  109.                                     continue;
  110.                             }
  111.                             break;
  112. +                       case 53489:
  113. +                       case 59578: // The Art of War (Paladin talent) should disappear only from flash of light or exorcism
  114. +                           {
  115. +                               if(CastingSpell->NameHash != SPELL_HASH_FLASH_OF_LIGHT || CastingSpell->NameHash != SPELL_HASH_EXORCISM)
  116. +                                   continue;
  117. +                           }
  118. +                           break;
  119.                         case 65156: // Juggernaut
  120.                             {
  121.                                 if(CastingSpell->NameHash != SPELL_HASH_MORTAL_STRIKE &&
  122. @@ -4286,7 +4283,9 @@ void Unit::AddAura(Aura* aur)
  123.         }
  124.     }
  125.  
  126. -   if(aur->GetSpellProto()->School && SchoolImmunityList[aur->GetSpellProto()->School])
  127. +   if(aur->GetSpellProto()->School && SchoolImmunityList[aur->GetSpellProto()->School]
  128. +   && !aur->IsPositive() && aur->GetSpellProto()->Attributes && aur->GetSpellProto()->Attributes != ATTRIBUTES_IGNORE_INVULNERABILITY)
  129. +   // basically if aura is not positive and aura does not have ignore invulnerability flag, delete aura
  130.     {
  131.         delete aur;
  132.         return;
  133. @@ -8098,13 +8109,9 @@ bool Unit::IsCriticalDamageForSpell(Object* victim, SpellEntry* spell)
  134.     // HACK!!!
  135.     Aura* fs = NULL;
  136.     if(victim->IsUnit()
  137.         && spell->NameHash == SPELL_HASH_LAVA_BURST
  138.         && ( fs = TO< Unit* >(victim)->FindAuraByNameHash(SPELL_HASH_FLAME_SHOCK) ) != NULL)
  139. -   {
  140.         result = true;
  141. -       if( !HasAura(55447) )   // Glyph of Flame Shock
  142. -           fs->Remove();
  143. -   }
  144.  
  145.     return result;
  146.  }
  147. diff --git a/src/arcemu-world/Spell.cpp b/src/arcemu-world/Spell.cpp
  148. index 821e3ae..2cf22ff 100644
  149. --- a/src/arcemu-world/Spell.cpp
  150. +++ b/src/arcemu-world/Spell.cpp
  151. @@ -2881,16 +2881,12 @@ void Spell::HandleAddAura(uint64 guid)
  152.  
  153.     uint32 spellid = 0;
  154.  
  155.     if((GetProto()->MechanicsType == MECHANIC_INVULNARABLE && GetProto()->Id != 25771) || GetProto()->Id == 31884)     // Cast spell Forbearance
  156.     {
  157.         if(GetProto()->Id != 31884)
  158.             spellid = 25771;
  159.  
  160. -       if(Target->IsPlayer())
  161. -       {
  162. -           sEventMgr.AddEvent(TO< Player* >(Target), &Player::AvengingWrath, EVENT_PLAYER_AVENGING_WRATH, 30000, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);
  163. -           TO< Player* >(Target)->mAvengingWrath = false;
  164. -       }
  165. +       p_caster->CastSpell(unitTarget, 61987, true);
  166.     }
  167.     else if(GetProto()->MechanicsType == MECHANIC_HEALING && GetProto()->Id != 11196)  // Cast spell Recently Bandaged
  168.         spellid = 11196;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement