diff options
Diffstat (limited to 'src/game/SpellAuras.cpp')
| -rw-r--r-- | src/game/SpellAuras.cpp | 393 |
1 files changed, 247 insertions, 146 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index f4df205e7e2..7f54d5ad294 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -122,7 +122,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleFeignDeath, // 66 SPELL_AURA_FEIGN_DEATH &Aura::HandleAuraModDisarm, // 67 SPELL_AURA_MOD_DISARM &Aura::HandleAuraModStalked, // 68 SPELL_AURA_MOD_STALKED - &Aura::HandleNoImmediateEffect, // 69 SPELL_AURA_SCHOOL_ABSORB implemented in Unit::CalcAbsorbResist + &Aura::HandleSchoolAbsorb, // 69 SPELL_AURA_SCHOOL_ABSORB implemented in Unit::CalcAbsorbResist &Aura::HandleUnused, // 70 SPELL_AURA_EXTRA_ATTACKS Useless, used by only one spell that has only visual effect &Aura::HandleModSpellCritChanceShool, // 71 SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL &Aura::HandleModPowerCostPCT, // 72 SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT @@ -258,7 +258,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNoImmediateEffect, //202 SPELL_AURA_CANNOT_BE_DODGED implemented in Unit::RollPhysicalOutcomeAgainst &Aura::HandleNoImmediateEffect, //203 SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage &Aura::HandleNoImmediateEffect, //204 SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE implemented in Unit::CalculateMeleeDamage and Unit::CalculateSpellDamage - &Aura::HandleNULL, //205 SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN + &Aura::HandleNoImmediateEffect, //205 SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN &Aura::HandleAuraModIncreaseFlightSpeed, //206 SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED &Aura::HandleAuraModIncreaseFlightSpeed, //207 SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED &Aura::HandleAuraModIncreaseFlightSpeed, //208 SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED @@ -326,7 +326,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNoImmediateEffect, //270 SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST implemented in Unit::CalcAbsorbResist and CalcArmorReducedDamage &Aura::HandleNoImmediateEffect, //271 SPELL_AURA_MOD_DAMAGE_FROM_CASTER implemented in Unit::SpellDamageBonus &Aura::HandleNULL, //272 unknown - &Aura::HandleUnused, //273 clientside + &Aura::HandleNoImmediateEffect, //273 SPELL_AURA_X_RAY (client side implementation) &Aura::HandleNoImmediateEffect, //274 SPELL_AURA_CONSUME_NO_AMMO implemented in spell::CalculateDamageDoneForAllTargets &Aura::HandleNoImmediateEffect, //275 SPELL_AURA_MOD_IGNORE_SHAPESHIFT Use SpellClassMask for spell select &Aura::HandleNULL, //276 mod damage % mechanic? @@ -337,17 +337,29 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNoImmediateEffect, //281 SPELL_AURA_MOD_HONOR_GAIN_PCT implemented in Player::RewardHonor &Aura::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_INCREASE_BASE_HEALTH_PERCENT &Aura::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus - &Aura::HandleAuraLinked, //284 SPELL_AURA_LINKED + &Aura::HandleAuraLinked, //284 SPELL_AURA_LINKED 51 spells using &Aura::HandleAuraModAttackPowerOfArmor, //285 SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR implemented in Player::UpdateAttackPowerAndDamage &Aura::HandleNoImmediateEffect, //286 SPELL_AURA_ABILITY_PERIODIC_CRIT implemented in AuraEffect::PeriodicTick &Aura::HandleNoImmediateEffect, //287 SPELL_AURA_DEFLECT_SPELLS implemented in Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult - &Aura::HandleNoImmediateEffect, //288 SPELL_AURA_IGNORE_HIT_DIRECTION implemented in Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult Unit::RollMeleeOutcomeAgainst + &Aura::HandleNoImmediateEffect, //288 SPELL_AURA_IGNORE_HIT_DIRECTION implemented in Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult Unit::RollMeleeOutcomeAgainst &Aura::HandleNULL, //289 unused &Aura::HandleAuraModCritPct, //290 SPELL_AURA_MOD_CRIT_PCT &Aura::HandleNoImmediateEffect, //291 SPELL_AURA_MOD_XP_QUEST_PCT implemented in Player::RewardQuest &Aura::HandleNULL, //292 call stabled pet &Aura::HandleNULL, //293 2 test spells - &Aura::HandleNoImmediateEffect //294 SPELL_AURA_PREVENT_REGENERATE_POWER implemented in Player::Regenerate(Powers power) + &Aura::HandleNoImmediateEffect, //294 SPELL_AURA_PREVENT_REGENERATE_POWER implemented in Player::Regenerate(Powers power) + &Aura::HandleNULL, //295 unused + &Aura::HandleNULL, //296 2 spells + &Aura::HandleNULL, //297 1 spell (counter spell school?) + &Aura::HandleNULL, //298 unused + &Aura::HandleNULL, //299 unused + &Aura::HandleNULL, //300 3 spells (share damage?) + &Aura::HandleNULL, //301 5 spells + &Aura::HandleNULL, //302 unused + &Aura::HandleNULL, //303 17 spells + &Aura::HandleNULL, //304 2 spells (alcohol effect?) + &Aura::HandleAuraModIncreaseSpeed, //305 SPELL_AURA_MOD_MINIMUM_SPEED + &Aura::HandleNULL //306 1 spell }; #undef Aura @@ -931,6 +943,131 @@ void AuraEffect::CleanupTriggeredSpells() m_target->RemoveAurasDueToSpell(tSpellId, GetCasterGUID()); } +void AuraEffect::HandleSchoolAbsorb(bool apply, bool Real, bool changeAmount) +{ + if(!Real) + return; + + Unit* caster = GetCaster(); + if(!caster) + return; + + if (apply) + { + // prevent double apply bonuses + if (m_target->GetTypeId()!=TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading()) + { + float DoneActualBenefit = 0.0f; + switch(m_spellProto->SpellFamilyName) + { + case SPELLFAMILY_PRIEST: + // Power Word: Shield + if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000001)) + //+80.68% from +spell bonus + DoneActualBenefit = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellProto)) * 0.8068f; + break; + case SPELLFAMILY_MAGE: + // Frost Ward, Fire Ward + if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000108)) + //+10% from +spell bonus + DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.1f; + // Ice Barrier + else if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000100000000)) + //+80.67% from +spell bonus + DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.8067f; + break; + case SPELLFAMILY_WARLOCK: + // Shadow Ward + if (m_spellProto->SpellIconID == 207) + //+30% from +spell bonus + DoneActualBenefit = caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellProto)) * 0.30f; + break; + case SPELLFAMILY_PALADIN: + // Sacred Shield + // (check not strictly needed, only Sacred Shield has SPELL_AURA_SCHOOL_ABSORB in SPELLFAMILY_PALADIN at this time) + if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0008000000000000)) + { + // +75% from spell power + DoneActualBenefit = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellProto)) * 0.75f; + } + break; + default: + break; + } + + DoneActualBenefit *= caster->CalculateLevelPenalty(GetSpellProto()); + + m_amount += (int32)DoneActualBenefit; + } + } + else + { + if (caster && + // Power Word: Shield + m_spellProto->SpellFamilyName == SPELLFAMILY_PRIEST && m_spellProto->Mechanic == MECHANIC_SHIELD && + (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000001)) && + // completely absorbed or dispelled + ((m_parentAura->GetRemoveMode() == AURA_REMOVE_BY_DEFAULT && m_amount) || m_parentAura->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)) + { + Unit::AuraEffectList const& vDummyAuras = caster->GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraEffectList::const_iterator itr = vDummyAuras.begin(); itr != vDummyAuras.end(); ++itr) + { + SpellEntry const* vSpell = (*itr)->GetSpellProto(); + + // Rapture (main spell) + if(vSpell->SpellFamilyName == SPELLFAMILY_PRIEST && vSpell->SpellIconID == 2894 && vSpell->Effect[1]) + { + switch((*itr)->m_effIndex) + { + case 0: + { + // energize caster + int32 manapct1000 = 5 * ((*itr)->m_amount + spellmgr.GetSpellRank(vSpell->Id)); + int32 basepoints0 = caster->GetMaxPower(POWER_MANA) * manapct1000 / 1000; + caster->CastCustomSpell(caster, 47755, &basepoints0, NULL, NULL, true); + break; + } + case 1: + { + // energize target + if (!roll_chance_i((*itr)->m_amount) || caster->HasAura(63853)) + break; + + switch(m_target->getPowerType()) + { + case POWER_RUNIC_POWER: + m_target->CastSpell(m_target, 63652, true, NULL, NULL, GetCasterGUID()); + break; + case POWER_RAGE: + m_target->CastSpell(m_target, 63653, true, NULL, NULL, GetCasterGUID()); + break; + case POWER_MANA: + { + int32 basepoints0 = m_target->GetMaxPower(POWER_MANA) * 2 / 100; + m_target->CastCustomSpell(m_target, 63654, &basepoints0, NULL, NULL, true); + break; + } + case POWER_ENERGY: + m_target->CastSpell(m_target, 63655, true, NULL, NULL, GetCasterGUID()); + break; + default: + break; + } + + //cooldwon aura + caster->CastSpell(caster, 63853, true); + break; + } + default: + sLog.outError("Changes in R-dummy spell???: effect 3"); + break; + } + } + } + } + } +} + void Aura::ApplyAllModifiers(bool apply, bool Real) { for (uint8 i = 0; i<MAX_SPELL_EFFECTS; ++i) @@ -1504,6 +1641,9 @@ void AuraEffect::HandleAuraEffectSpecificMods(bool apply, bool Real, bool change // Innervate else if (m_spellProto->Id == 29166 && GetAuraName() == SPELL_AURA_PERIODIC_ENERGIZE) m_amount = m_target->GetCreatePowers(POWER_MANA) * m_amount / (GetTotalTicks() * 100.0f); + // Owlkin Frenzy + else if (m_spellProto->Id == 48391) + m_amount = m_target->GetCreatePowers(POWER_MANA) * 2 / 100; // Thorns else if (m_spellProto->SpellFamilyFlags[0] & 0x100 && GetAuraName() == SPELL_AURA_DAMAGE_SHIELD) // 3.3% from sp bonus @@ -1534,7 +1674,13 @@ void AuraEffect::HandleAuraEffectSpecificMods(bool apply, bool Real, bool change if (m_spellProto->SpellFamilyFlags[1] & 0x80000 && GetAuraName() == SPELL_AURA_SCHOOL_ABSORB) { // 0.75 from sp bonus - DoneActualBenefit = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellProto)) * 0.75f; + float koef = 1.0f; + if (caster->HasAura(53527)) + koef = 1.1f; + if (caster->HasAura(53530)) + koef = 1.2f; + + DoneActualBenefit = caster->SpellBaseHealingBonus(GetSpellSchoolMask(m_spellProto)) * 0.75f * koef; } break; case SPELLFAMILY_SHAMAN: @@ -1579,26 +1725,6 @@ void AuraEffect::HandleAuraEffectSpecificMods(bool apply, bool Real, bool change DoneActualBenefit *= caster->CalculateLevelPenalty(GetSpellProto()); m_amount += (int32)DoneActualBenefit; } - - // we have exact amount now so apply mods affecting all boni - switch (m_spellProto->SpellFamilyName) - { - case SPELLFAMILY_PRIEST: - // Glyph of Power Word: Shield - if (m_spellProto->SpellFamilyFlags[0] & 0x1 && m_spellProto->SpellFamilyFlags[2] & 0x400 && - GetAuraName() == SPELL_AURA_SCHOOL_ABSORB) - { - if (AuraEffect* glyph = caster->GetAuraEffect(55672,0)) - { - // instantly heal m_amount% of the absorb-value - int32 heal = (glyph->GetAmount() * m_amount)/100; - caster->CastCustomSpell(m_target, 56160, &heal, NULL, NULL, true, 0, this); - } - } - break; - default: - break; - } } } } @@ -2079,8 +2205,10 @@ void AuraEffect::HandleShapeshiftBoosts(bool apply) case FORM_SHADOW: spellId = 49868; break; - case FORM_GHOUL: case FORM_GHOSTWOLF: + spellId = 67116; + break; + case FORM_GHOUL: case FORM_AMBIENT: case FORM_STEALTH: case FORM_CREATURECAT: @@ -2287,7 +2415,6 @@ void AuraEffect::HandleAddModifier(bool apply, bool Real, bool changeAmount) mod->value = m_amount; mod->type = SpellModType(m_auraName); // SpellModType value == spell aura types mod->spellId = GetId(); - mod->mask = m_spellProto->EffectSpellClassMask[m_effIndex]; mod->charges = GetParentAura()->GetAuraCharges(); @@ -2922,7 +3049,7 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) { if (m_target->GetMap()->IsDungeon()) { - uint32 spellId = m_target->GetMap()->IsHeroic() ? 46163 : 44190; + uint32 spellId = ((InstanceMap*)m_target->GetMap())->GetDifficulty() == REGULAR_DIFFICULTY ? 44190 : 46163; m_target->CastSpell(m_target, spellId, true, NULL, this); } @@ -2959,6 +3086,30 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) return; } break; + case SPELLFAMILY_PALADIN: + switch (GetSpellProto()->SpellIconID) + { + // Blessing of Sanctuary + // Greater Blessing of Sanctuary + case 19: + case 1804: + { + if (!caster || !m_target) + return; + + if (apply) + { + // Greater Blessing of Sanctuary does not provide strength bonus + int32 bp1 = 0; + caster->CastCustomSpell(m_target, 67480, NULL, (GetSpellProto()->SpellIconID == 1804) ? &bp1 : NULL, NULL, true); + } + else + m_target->RemoveAurasDueToSpell(67480); + + return; + } + } + break; case SPELLFAMILY_PRIEST: // Vampiric Touch if (m_spellProto->SpellFamilyFlags[1] & 0x0400 && GetParentAura()->GetRemoveMode() == AURA_REMOVE_BY_ENEMY_SPELL) @@ -3371,7 +3522,30 @@ void AuraEffect::HandleAuraFeatherFall(bool apply, bool Real, bool /*changeAmoun WorldPacket data; if (apply) + { + Unit* caster = GetCaster(); + if (!caster) + return; + + if (caster->GetGUID() == m_target->GetGUID()) + { + m_target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED); + m_target->RemoveAurasByType(SPELL_AURA_FLY); + } + + if (GetId() == 61243) // No fly zone - Parachute + { + float x, y, z; + caster->GetPosition(x, y, z); + float ground_Z = caster->GetMap()->GetVmapHeight(x, y, z, true); + if (fabs(ground_Z - z) < 0.1f) + { + m_target->RemoveAura(GetId()); + return; + } + } data.Initialize(SMSG_MOVE_FEATHER_FALL, 8+4); + } else data.Initialize(SMSG_MOVE_NORMAL_FALL, 8+4); data.append(m_target->GetPackGUID()); @@ -3417,89 +3591,37 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun switch(form) { case FORM_CAT: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 892; - else - modelid = 8571; - PowerType = POWER_ENERGY; - break; - case FORM_TRAVEL: - modelid = 632; - break; - case FORM_AQUA: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 2428; - else - modelid = 2428; - break; - case FORM_BEAR: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 2281; - else - modelid = 2289; - PowerType = POWER_RAGE; - break; case FORM_GHOUL: - modelid = 24994; PowerType = POWER_ENERGY; break; + case FORM_BEAR: case FORM_DIREBEAR: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 2281; - else - modelid = 2289; + case FORM_BATTLESTANCE: + case FORM_BERSERKERSTANCE: + case FORM_DEFENSIVESTANCE: PowerType = POWER_RAGE; break; + case FORM_TRAVEL: + case FORM_AQUA: case FORM_CREATUREBEAR: - modelid = 902; - break; case FORM_GHOSTWOLF: - modelid = 4613; - break; case FORM_FLIGHT: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 20857; - else - modelid = 20872; - break; case FORM_MOONKIN: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 15374; - else - modelid = 15375; - break; case FORM_FLIGHT_EPIC: - if(Player::TeamForRace(m_target->getRace())==ALLIANCE) - modelid = 21243; - else - modelid = 21244; - break; - case FORM_MASTER_ANGLER: - modelid = 15234; - break; case FORM_METAMORPHOSIS: - modelid = 25277; - break; + case FORM_MASTER_ANGLER: case FORM_AMBIENT: case FORM_SHADOW: case FORM_STEALTH: case FORM_UNDEAD: case FORM_SHADOW_DANCE: - break; case FORM_TREE: - modelid = 864; - break; - case FORM_BATTLESTANCE: - case FORM_BERSERKERSTANCE: - case FORM_DEFENSIVESTANCE: - PowerType = POWER_RAGE; - break; case FORM_SPIRITOFREDEMPTION: - modelid = 16031; break; default: sLog.outError("Auras: Unknown Shapeshift Type: %u", GetMiscValue()); } + modelid = m_target->GetModelForForm(form); // remove polymorph before changing display id to keep new display id switch ( form ) @@ -3566,7 +3688,10 @@ void AuraEffect::HandleAuraModShapeshift(bool apply, bool Real, bool changeAmoun case FORM_BEAR: case FORM_DIREBEAR: if (urand(0,99) < FurorChance) - m_target->CastSpell(m_target, 17057, true); + { + int32 basePoints = 100; // Not sure if 100 is correct basePoints, maybe it should be 10? + m_target->CastCustomSpell(m_target, 17057, &basePoints, NULL, NULL, true, NULL, this); + } default: { uint32 newEnergy = std::min(m_target->GetPower(POWER_ENERGY), FurorChance); @@ -4632,21 +4757,26 @@ void AuraEffect::HandleAuraModStalked(bool apply, bool Real, bool /*changeAmount void AuraEffect::HandlePeriodicTriggerSpell(bool apply, bool Real, bool /*changeAmount*/) { m_isPeriodic = apply; + if (!apply) + { + switch(m_spellProto->Id) + { + case 66: // Invisibility + m_target->CastSpell(m_target, 32612, true, NULL, this); + + return; + case 42783: //Wrath of the Astrom... + m_target->CastSpell(m_target, m_spellProto->CalculateSimpleValue(GetEffIndex()+1), true); + return; + default: + break; + } + } } void AuraEffect::HandlePeriodicTriggerSpellWithValue(bool apply, bool Real, bool /*changeAmount*/) { m_isPeriodic = apply; - - SpellEntry const* spell = GetSpellProto(); - switch (spell->Id) - { - case 58730: // No fly zone - Wintergrasp (3.1.3 only 3.2.2 Does not call this aura) - if (apply) - if (m_target->GetTypeId() == TYPEID_PLAYER) - ((Player *)m_target)->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE); - break; - } } void AuraEffect::HandlePeriodicEnergize(bool apply, bool Real, bool changeAmount) @@ -4668,30 +4798,22 @@ void AuraEffect::HandleAuraPeriodicDummy(bool apply, bool Real, bool changeAmoun Unit* caster = GetCaster(); SpellEntry const*spell = GetSpellProto(); - switch(spell->SpellFamilyName) + switch( spell->SpellFamilyName) { case SPELLFAMILY_GENERIC: { - switch(spell->Id) + if(spell->Id == 62399) // Overload Circuit { - case 62399: // Overload Circuit - if(m_target->GetMap()->IsDungeon() && m_target->GetAuras().count(62399) >= (m_target->GetMap()->IsHeroic() ? 4 : 2)) - { - m_target->CastSpell(m_target, 62475, true); // System Shutdown - if(Unit *veh = m_target->GetVehicleBase()) - veh->CastSpell(m_target, 62475, true); - } - break; - case 58600: // No fly zone - Dalaran - if (apply && m_target->GetTypeId() == TYPEID_PLAYER) - ((Player *)m_target)->GetSession()->SendNotification(LANG_ZONE_NOFLYZONE); - break; - default: - break; + if(m_target->GetMap()->IsDungeon()) + if(m_target->GetAuras().count(62399) >= (((InstanceMap*)m_target->GetMap())->GetDifficulty() == REGULAR_DIFFICULTY ? 2 : 4)) + { + m_target->CastSpell(m_target, 62475, true); // System Shutdown + if(Unit *veh = m_target->GetVehicleBase()) + veh->CastSpell(m_target, 62475, true); + } } break; } - case SPELLFAMILY_WARLOCK: { switch (spell->Id) @@ -4704,12 +4826,11 @@ void AuraEffect::HandleAuraPeriodicDummy(bool apply, bool Real, bool changeAmoun // to prevent remove GO added by new spell // old one is already removed if (GetParentAura()->GetRemoveMode()!=AURA_REMOVE_BY_STACK) - m_target->RemoveGameObject(spell->Id, true); + m_target->RemoveGameObject(spell->Id,true); m_target->RemoveAura(62388); } break; } - break; } case SPELLFAMILY_DEATHKNIGHT: { @@ -5934,11 +6055,10 @@ void AuraEffect::PeriodicTick() bool crit = IsPeriodicTickCrit(pCaster); if (crit) pdamage = pCaster->SpellCriticalDamageBonus(m_spellProto, pdamage, m_target); - - //As of 2.2 resilience reduces damage from DoT ticks as much as the chance to not be critically hit - // Reduce dot damage from resilience for players + + // Reduce dot damage from resilience for players. if (m_target->GetTypeId() == TYPEID_PLAYER) - pdamage-=((Player*)m_target)->GetDotDamageReduction(pdamage); + pdamage-=((Player*)m_target)->GetSpellDamageReduction(pdamage); pCaster->CalcAbsorbResist(m_target, GetSpellSchoolMask(GetSpellProto()), DOT, pdamage, &absorb, &resist, m_spellProto); @@ -6006,11 +6126,10 @@ void AuraEffect::PeriodicTick() cleanDamage.mitigated_damage += pdamage - pdamageReductedArmor; pdamage = pdamageReductedArmor; } - - //As of 2.2 resilience reduces damage from DoT ticks as much as the chance to not be critically hit - // Reduce dot damage from resilience for players + + // Reduce dot damage from resilience for players. if (m_target->GetTypeId() == TYPEID_PLAYER) - pdamage-=((Player*)m_target)->GetDotDamageReduction(pdamage); + pdamage-=((Player*)m_target)->GetSpellDamageReduction(pdamage); pCaster->CalcAbsorbResist(m_target, GetSpellSchoolMask(GetSpellProto()), DOT, pdamage, &absorb, &resist, m_spellProto); @@ -6566,24 +6685,6 @@ void AuraEffect::PeriodicDummyTick() // 7053 Forsaken Skill: Shadow return; } - case 45472: // Parachute - if (m_target->GetTypeId() == TYPEID_PLAYER) - { - Player *plr = (Player*)m_target; - if (plr->IsFalling()) - { - plr->RemoveAurasDueToSpell(45472); - plr->CastSpell(plr, 44795, true); - } - } - break; - case 58600: // No fly Zone - Dalaran - if (10 == m_tickNumber) - { - m_target->RemoveAurasByType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED); - m_target->RemoveAurasByType(SPELL_AURA_FLY); - } - break; case 58549: // Tenacity case 59911: // Tenacity (vehicle) GetParentAura()->RefreshAura(); |
