Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/arcemu-world/HackFixes.cpp b/src/arcemu-world/HackFixes.cpp
- index a521460..fc1bb08 100644
- --- a/src/arcemu-world/HackFixes.cpp
- +++ b/src/arcemu-world/HackFixes.cpp
- @@ -2305,35 +2392,96 @@ void ApplyNormalFixes()
- if(sp != NULL)
- sp->noproc = true;
- + //Paladin - Avenging Wrath marker - Is forced debuff
- + sp = CheckAndReturnSpellEntry(61987);
- + if(sp != NULL)
- + {
- + sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- +
- //Paladin - Forbearance - Is forced debuff
- sp = CheckAndReturnSpellEntry(25771);
- if(sp != NULL)
- - sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
- + {
- + sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- //Divine Protection
- sp = CheckAndReturnSpellEntry(498);
- @@ -3356,11 +3505,12 @@ void ApplyNormalFixes()
- sp->EffectApplyAuraName[0] = SPELL_AURA_PROC_TRIGGER_SPELL;
- sp->EffectTriggerSpell[0] = 33619; //!! WRONG spell, we will make direct dmg here
- }
- - // Weakened Soul - Is forced debuff
- + // Weakened Soul - is debuff
- sp = CheckAndReturnSpellEntry(6788);
- if(sp != NULL)
- {
- sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- }
- // Penance
- @@ -3510,10 +3660,13 @@ void ApplyNormalFixes()
- if(sp != NULL)
- sp->casterAuraSpellNot = 57724; //sated debuff
- - //Sated
- + // Sated - is debuff
- sp = CheckAndReturnSpellEntry(57724);
- if(sp != NULL)
- - sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
- + {
- + sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- /**********************************************************
- * Heroism
- @@ -3523,10 +3676,13 @@ void ApplyNormalFixes()
- if(sp != NULL)
- sp->casterAuraSpellNot = 57723; //sated debuff
- - //Sated
- + // Sated - is debuff
- sp = CheckAndReturnSpellEntry(57723);
- if(sp != NULL)
- - sp->c_is_flags |= SPELL_FLAG_IS_FORCEDDEBUFF;
- + {
- + sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- /**********************************************************
- * Lightning Overload
- @@ -4345,10 +4501,13 @@ void ApplyNormalFixes()
- if(sp != NULL)
- sp->EffectImplicitTargetA[0] = EFF_TARGET_DYNAMIC_OBJECT;
- - // Hypothermia: undispellable
- + // Hypothermia - forced debuff
- sp = CheckAndReturnSpellEntry(41425);
- if(sp != NULL)
- + {
- sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- // Mage - Permafrost Rank 1
- sp = CheckAndReturnSpellEntry(11175);
- @@ -6964,6 +7130,14 @@ void ApplyNormalFixes()
- sp->procChance = 100;
- }
- + // Recently Bandaged - is debuff
- + sp = CheckAndReturnSpellEntry(11196);
- + if(sp != NULL)
- + {
- + sp->c_is_flags = SPELL_FLAG_IS_FORCEDDEBUFF;
- + sp->Attributes = ATTRIBUTES_IGNORE_INVULNERABILITY;
- + }
- +
- sp = CheckAndReturnSpellEntry(44856); // Bash'ir Phasing Device
- if(sp != NULL)
- sp->AuraInterruptFlags = AURA_INTERRUPT_ON_LEAVE_AREA;
- diff --git a/src/arcemu-world/Unit.cpp b/src/arcemu-world/Unit.cpp
- index f84f196..553cb60 100644
- --- a/src/arcemu-world/Unit.cpp
- +++ b/src/arcemu-world/Unit.cpp
- @@ -2526,6 +2516,13 @@ uint32 Unit::HandleProc(uint32 flag, Unit* victim, SpellEntry* CastingSpell, boo
- continue;
- }
- break;
- + case 53489:
- + case 59578: // The Art of War (Paladin talent) should disappear only from flash of light or exorcism
- + {
- + if(CastingSpell->NameHash != SPELL_HASH_FLASH_OF_LIGHT || CastingSpell->NameHash != SPELL_HASH_EXORCISM)
- + continue;
- + }
- + break;
- case 65156: // Juggernaut
- {
- if(CastingSpell->NameHash != SPELL_HASH_MORTAL_STRIKE &&
- @@ -4286,7 +4283,9 @@ void Unit::AddAura(Aura* aur)
- }
- }
- - if(aur->GetSpellProto()->School && SchoolImmunityList[aur->GetSpellProto()->School])
- + if(aur->GetSpellProto()->School && SchoolImmunityList[aur->GetSpellProto()->School]
- + && !aur->IsPositive() && aur->GetSpellProto()->Attributes && aur->GetSpellProto()->Attributes != ATTRIBUTES_IGNORE_INVULNERABILITY)
- + // basically if aura is not positive and aura does not have ignore invulnerability flag, delete aura
- {
- delete aur;
- return;
- @@ -8098,13 +8109,9 @@ bool Unit::IsCriticalDamageForSpell(Object* victim, SpellEntry* spell)
- // HACK!!!
- Aura* fs = NULL;
- if(victim->IsUnit()
- && spell->NameHash == SPELL_HASH_LAVA_BURST
- && ( fs = TO< Unit* >(victim)->FindAuraByNameHash(SPELL_HASH_FLAME_SHOCK) ) != NULL)
- - {
- result = true;
- - if( !HasAura(55447) ) // Glyph of Flame Shock
- - fs->Remove();
- - }
- return result;
- }
- diff --git a/src/arcemu-world/Spell.cpp b/src/arcemu-world/Spell.cpp
- index 821e3ae..2cf22ff 100644
- --- a/src/arcemu-world/Spell.cpp
- +++ b/src/arcemu-world/Spell.cpp
- @@ -2881,16 +2881,12 @@ void Spell::HandleAddAura(uint64 guid)
- uint32 spellid = 0;
- if((GetProto()->MechanicsType == MECHANIC_INVULNARABLE && GetProto()->Id != 25771) || GetProto()->Id == 31884) // Cast spell Forbearance
- {
- if(GetProto()->Id != 31884)
- spellid = 25771;
- - if(Target->IsPlayer())
- - {
- - sEventMgr.AddEvent(TO< Player* >(Target), &Player::AvengingWrath, EVENT_PLAYER_AVENGING_WRATH, 30000, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);
- - TO< Player* >(Target)->mAvengingWrath = false;
- - }
- + p_caster->CastSpell(unitTarget, 61987, true);
- }
- else if(GetProto()->MechanicsType == MECHANIC_HEALING && GetProto()->Id != 11196) // Cast spell Recently Bandaged
- spellid = 11196;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement