diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 19 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 100 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 184 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.h | 5 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 20 |
8 files changed, 110 insertions, 244 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 883adb0747d..293c7507777 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -24242,9 +24242,6 @@ void Player::AddComboPoints(int8 count, Spell* spell) int8 comboPoints = spell ? spell->m_comboPointGain : GetPower(POWER_COMBO_POINTS); - // without combo points lost (duration checked in aura) - RemoveAurasByType(SPELL_AURA_RETAIN_COMBO_POINTS); - comboPoints += count; if (comboPoints > 5) @@ -24274,9 +24271,6 @@ void Player::GainSpellComboPoints(int8 count) void Player::ClearComboPoints() { - // without combopoints lost (duration checked in aura) - RemoveAurasByType(SPELL_AURA_RETAIN_COMBO_POINTS); - SetPower(POWER_COMBO_POINTS, 0); } diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index eaec4bc15ac..2305bfffcec 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -244,15 +244,6 @@ void Player::UpdateArmor() float baseValue = value; value *= GetPctModifierValue(unitMod, BASE_PCT); // armor percent from items value += GetFlatModifierValue(unitMod, TOTAL_VALUE); - - //add dynamic flat mods - AuraEffectList const& mResbyIntellect = GetAuraEffectsByType(SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT); - for (AuraEffectList::const_iterator i = mResbyIntellect.begin(); i != mResbyIntellect.end(); ++i) - { - if ((*i)->GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL) - value += CalculatePct(GetStat(Stats((*i)->GetMiscValueB())), (*i)->GetAmount()); - } - value *= GetPctModifierValue(unitMod, TOTAL_PCT); SetArmor(int32(baseValue), int32(value - baseValue)); @@ -378,9 +369,7 @@ void Player::UpdateAttackPowerAndDamage(bool ranged) if (CanDualWield() || offhand->GetTemplate()->GetFlags3() & ITEM_FLAG3_ALWAYS_ALLOW_DUAL_WIELD) UpdateDamagePhysical(OFF_ATTACK); - if (HasAuraType(SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER) || - HasAuraType(SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER) || - HasAuraType(SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT)) + if (HasAuraType(SPELL_AURA_OVERRIDE_SPELL_POWER_BY_AP_PCT)) UpdateSpellDamageAndHealingBonus(); if (pet && pet->IsPetGhoul()) // At melee attack power change for DK pet diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 5a21feea241..c01b389aa85 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1777,16 +1777,6 @@ void Unit::CalcAbsorbResist(DamageInfo& damageInfo) // Ignore Absorption Auras float auraAbsorbMod(GetMaxPositiveAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL, damageInfo.GetSchoolMask())); - auraAbsorbMod = std::max(auraAbsorbMod, static_cast<float>(GetMaxPositiveAuraModifier(SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL, [&damageInfo](AuraEffect const* aurEff) -> bool - { - if (!(aurEff->GetMiscValue() & damageInfo.GetSchoolMask())) - return false; - - if (!aurEff->IsAffectingSpell(damageInfo.GetSpellInfo())) - return false; - - return true; - }))); RoundToInterval(auraAbsorbMod, 0.0f, 100.0f); @@ -6938,9 +6928,6 @@ int32 Unit::SpellBaseDamageBonusDone(SpellSchoolMask schoolMask) const } } - // ... and attack power - DoneAdvertisedBenefit += static_cast<int32>(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER, schoolMask))); - } return DoneAdvertisedBenefit; @@ -7368,12 +7355,6 @@ int32 Unit::SpellBaseHealingBonusDone(SpellSchoolMask schoolMask) const Stats usedStat = Stats((*i)->GetSpellEffectInfo()->MiscValue); advertisedBenefit += int32(CalculatePct(GetStat(usedStat), (*i)->GetAmount())); } - - // ... and attack power - AuraEffectList const& mHealingDonebyAP = GetAuraEffectsByType(SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER); - for (AuraEffectList::const_iterator i = mHealingDonebyAP.begin(); i != mHealingDonebyAP.end(); ++i) - if ((*i)->GetMiscValue() & schoolMask) - advertisedBenefit += int32(CalculatePct(GetTotalAttackPowerValue(BASE_ATTACK), (*i)->GetAmount())); } return advertisedBenefit; } diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 8b21dc63149..fdf0d27b216 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -142,8 +142,8 @@ enum AuraType : uint32 SPELL_AURA_MOD_DISARM = 67, SPELL_AURA_MOD_STALKED = 68, SPELL_AURA_SCHOOL_ABSORB = 69, - SPELL_AURA_EXTRA_ATTACKS = 70, - SPELL_AURA_71 = 71, + SPELL_AURA_PERIODIC_WEAPON_PERCENT_DAMAGE = 70, + SPELL_AURA_STORE_TELEPORT_RETURN_POINT = 71, // NYI SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT = 72, SPELL_AURA_MOD_POWER_COST_SCHOOL = 73, SPELL_AURA_REFLECT_SPELLS_SCHOOL = 74, @@ -200,7 +200,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN = 125, SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT = 126, SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS = 127, - SPELL_AURA_MOD_POSSESS_PET = 128, + SPELL_AURA_MOD_FIXATE = 128, SPELL_AURA_MOD_SPEED_ALWAYS = 129, SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS = 130, SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS = 131, @@ -217,15 +217,15 @@ enum AuraType : uint32 SPELL_AURA_MOD_BASE_RESISTANCE_PCT = 142, SPELL_AURA_MOD_RECOVERY_RATE_BY_SPELL_LABEL = 143, // NYI SPELL_AURA_SAFE_FALL = 144, - SPELL_AURA_MOD_PET_TALENT_POINTS = 145, + SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT2 = 145, SPELL_AURA_ALLOW_TAME_PET_TYPE = 146, SPELL_AURA_MECHANIC_IMMUNITY_MASK = 147, - SPELL_AURA_RETAIN_COMBO_POINTS = 148, + SPELL_AURA_MOD_CHARGE_RECOVERY_RATE = 148, // NYI SPELL_AURA_REDUCE_PUSHBACK = 149, // Reduce Pushback SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT = 150, SPELL_AURA_TRACK_STEALTHED = 151, // Track Stealthed SPELL_AURA_MOD_DETECTED_RANGE = 152, // Mod Detected Range - SPELL_AURA_153 = 153, // old SPELL_AURA_SPLIT_DAMAGE_FLAT. unused 4.3.4 + SPELL_AURA_MOD_AUTOATTACK_RANGE = 153, SPELL_AURA_MOD_STEALTH_LEVEL = 154, // Stealth Level Modifier SPELL_AURA_MOD_WATER_BREATHING = 155, // Mod Water Breathing SPELL_AURA_MOD_REPUTATION_GAIN = 156, // Mod Reputation Gain @@ -236,12 +236,12 @@ enum AuraType : uint32 SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT = 161, SPELL_AURA_POWER_BURN = 162, SPELL_AURA_MOD_CRIT_DAMAGE_BONUS = 163, - SPELL_AURA_164 = 164, + SPELL_AURA_FORCE_BREATH_BAR = 164, // NYI SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS = 165, SPELL_AURA_MOD_ATTACK_POWER_PCT = 166, SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT = 167, SPELL_AURA_MOD_DAMAGE_DONE_VERSUS = 168, - SPELL_AURA_169 = 169, // old SPELL_AURA_MOD_CRIT_PERCENT_VERSUS. unused 4.3.4 + SPELL_AURA_SET_FFA_PVP = 169, SPELL_AURA_DETECT_AMORE = 170, SPELL_AURA_MOD_SPEED_NOT_STACK = 171, SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK = 172, @@ -253,9 +253,9 @@ enum AuraType : uint32 SPELL_AURA_MOD_MAX_POWER_PCT = 178, SPELL_AURA_MOD_POWER_DISPLAY = 179, SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS = 180, - SPELL_AURA_181 = 181, // old SPELL_AURA_MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - possible flat spell crit damage versus - SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT = 182, - SPELL_AURA_MOD_CRITICAL_THREAT = 183, + SPELL_AURA_MOD_SPELL_CURRENCY_REAGENTS_COUNT_PCT = 181, // NYI + SPELL_AURA_SUPPRESS_ITEM_PASSIVE_EFFECT_BY_SPELL_LABEL = 182, // NYI + SPELL_AURA_MOD_CRIT_CHANCE_VERSUS_TARGET_HEALTH = 183, SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE = 184, SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE = 185, SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE = 186, @@ -267,17 +267,17 @@ enum AuraType : uint32 SPELL_AURA_MOD_MELEE_RANGED_HASTE = 192, SPELL_AURA_MELEE_SLOW = 193, SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL = 194, - SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL = 195, + SPELL_AURA_LEARN_SPELL = 195, SPELL_AURA_MOD_COOLDOWN = 196, // only 24818 Noxious Breath SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197, - SPELL_AURA_198 = 198, // old SPELL_AURA_MOD_ALL_WEAPON_SKILLS + SPELL_AURA_MOD_COMBAT_RATING_FROM_COMBAT_RATING = 198, SPELL_AURA_199 = 199, // old SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT. unused 4.3.4 SPELL_AURA_MOD_XP_PCT = 200, SPELL_AURA_FLY = 201, SPELL_AURA_IGNORE_COMBAT_RESULT = 202, - SPELL_AURA_PREVENT_INTERRUPT = 203, // NYI - SPELL_AURA_PREVENT_CORPSE_RELEASE = 204, // NYI - SPELL_AURA_MOD_CHARGE_COOLDOWN = 205, // NYI + SPELL_AURA_PREVENT_INTERRUPT = 203, // NYI + SPELL_AURA_PREVENT_CORPSE_RELEASE = 204, // NYI + SPELL_AURA_MOD_CHARGE_COOLDOWN = 205, // NYI SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED = 206, SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED = 207, SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED = 208, @@ -290,13 +290,13 @@ enum AuraType : uint32 SPELL_AURA_ARENA_PREPARATION = 215, SPELL_AURA_HASTE_SPELLS = 216, SPELL_AURA_MOD_MELEE_HASTE_2 = 217, - SPELL_AURA_218 = 218, // old SPELL_AURA_HASTE_RANGED - SPELL_AURA_MOD_MANA_REGEN_FROM_STAT = 219, - SPELL_AURA_MOD_ABILITY_SCHOOL_MASK = 220, // NYI + SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL = 218, // NYI + SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL = 219, // NYI + SPELL_AURA_MOD_ABILITY_SCHOOL_MASK = 220, // NYI SPELL_AURA_MOD_DETAUNT = 221, - SPELL_AURA_222 = 222, - SPELL_AURA_223 = 223, // old SPELL_AURA_RAID_PROC_FROM_CHARGE - SPELL_AURA_224 = 224, + SPELL_AURA_REMOVE_TRANSMOG_COST = 222, + SPELL_AURA_REMOVE_BARBER_SHOP_COST = 223, + SPELL_AURA_LEARN_TALENT = 224, // NYI SPELL_AURA_MOD_VISIBILITY_RANGE = 225, SPELL_AURA_PERIODIC_DUMMY = 226, SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227, @@ -307,10 +307,10 @@ enum AuraType : uint32 SPELL_AURA_MECHANIC_DURATION_MOD = 232, SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS = 233, // client-side only SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK = 234, - SPELL_AURA_MOD_DISPEL_RESIST = 235, + SPELL_AURA_MOD_HOVER_NO_HEIGHT_OFFSET = 235, SPELL_AURA_CONTROL_VEHICLE = 236, - SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237, - SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER = 238, + SPELL_AURA_237 = 237, + SPELL_AURA_238 = 238, SPELL_AURA_MOD_SCALE_2 = 239, SPELL_AURA_MOD_EXPERTISE = 240, SPELL_AURA_FORCE_MOVE_FORWARD = 241, @@ -331,22 +331,22 @@ enum AuraType : uint32 SPELL_AURA_NO_REAGENT_USE = 256, SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS = 257, SPELL_AURA_OVERRIDE_SUMMONED_OBJECT = 258, - SPELL_AURA_259 = 259, // old SPELL_AURA_MOD_HOT_PCT, unused 4.3.4 + SPELL_AURA_MOD_HOT_PCT = 259, SPELL_AURA_SCREEN_EFFECT = 260, SPELL_AURA_PHASE = 261, SPELL_AURA_ABILITY_IGNORE_AURASTATE = 262, - SPELL_AURA_ALLOW_ONLY_ABILITY = 263, - SPELL_AURA_264 = 264, + SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES = 263, + SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES = 264, SPELL_AURA_265 = 265, - SPELL_AURA_266 = 266, + SPELL_AURA_SET_VIGNETTE = 266, // NYI SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL = 267, SPELL_AURA_268 = 268, // old SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT. unused 4.3.4 SPELL_AURA_MOD_IGNORE_TARGET_RESIST = 269, SPELL_AURA_MOD_SCHOOL_MASK_DAMAGE_FROM_CASTER = 270, SPELL_AURA_MOD_SPELL_DAMAGE_FROM_CASTER = 271, - SPELL_AURA_IGNORE_MELEE_RESET = 272, + SPELL_AURA_MOD_BLOCK_VALUE_PCT = 272, // NYI SPELL_AURA_X_RAY = 273, - SPELL_AURA_274 = 274, // old SPELL_AURA_ABILITY_CONSUME_NO_AMMO, unused 4.3.4 + SPELL_AURA_MOD_BLOCK_VALUE_FLAT = 274, // NYI SPELL_AURA_MOD_IGNORE_SHAPESHIFT = 275, SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC = 276, SPELL_AURA_277 = 277, // old SPELL_AURA_MOD_MAX_AFFECTED_TARGETS. unused 4.3.4 @@ -367,10 +367,10 @@ enum AuraType : uint32 SPELL_AURA_OPEN_STABLE = 292, SPELL_AURA_OVERRIDE_SPELLS = 293, SPELL_AURA_PREVENT_REGENERATE_POWER = 294, - SPELL_AURA_295 = 295, + SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN = 295, SPELL_AURA_SET_VEHICLE_ID = 296, - SPELL_AURA_BLOCK_SPELL_FAMILY = 297, - SPELL_AURA_STRANGULATE = 298, + SPELL_AURA_MOD_ROOT_DISABLE_GRAVITY = 297, // NYI + SPELL_AURA_MOD_STUN_DISABLE_GRAVITY = 298, // NYI SPELL_AURA_299 = 299, SPELL_AURA_SHARE_DAMAGE_PCT = 300, SPELL_AURA_SCHOOL_HEAL_ABSORB = 301, @@ -378,14 +378,14 @@ enum AuraType : uint32 SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE = 303, SPELL_AURA_MOD_FAKE_INEBRIATE = 304, SPELL_AURA_MOD_MINIMUM_SPEED = 305, - SPELL_AURA_306 = 306, + SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 306, SPELL_AURA_CAST_WHILE_WALKING_BY_SPELL_LABEL = 307, // NYI SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER_WITH_ABILITIES = 308, SPELL_AURA_MOD_RESILIENCE = 309, // NYI SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE = 310, - SPELL_AURA_311 = 311, + SPELL_AURA_IGNORE_COMBAT = 311, // NYI SPELL_AURA_ANIM_REPLACEMENT_SET = 312, - SPELL_AURA_313 = 313, // Not used in 4.3.4 - related to mounts + SPELL_AURA_MOUNT_ANIM_REPLACEMENT_SET = 313, SPELL_AURA_PREVENT_RESURRECTION = 314, SPELL_AURA_UNDERWATER_WALKING = 315, SPELL_AURA_SCHOOL_ABSORB_OVERKILL = 316, // NYI - absorbs overkill damage @@ -406,12 +406,12 @@ enum AuraType : uint32 SPELL_AURA_FORCE_WEATHER = 331, SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS = 332, SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_TRIGGERED = 333, // Spells cast with this override have no cast time or power cost - SPELL_AURA_MOD_BLIND = 334, // NYI + SPELL_AURA_MOD_AUTOATTACK_CRIT_CHANCE = 334, SPELL_AURA_335 = 335, SPELL_AURA_MOUNT_RESTRICTIONS = 336, SPELL_AURA_MOD_VENDOR_ITEMS_PRICES = 337, SPELL_AURA_MOD_DURABILITY_LOSS = 338, - SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 339, + SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER_PET = 339, SPELL_AURA_MOD_RESURRECTED_HEALTH_BY_GUILD_MEMBER = 340, // Increases health gained when resurrected by a guild member by X SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN = 341, // Modifies cooldown of all spells using affected category SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 = 342, @@ -422,11 +422,11 @@ enum AuraType : uint32 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE = 347, SPELL_AURA_MOD_MONEY_GAIN = 348, // Modifies gold gains from source: [Misc = 0, Quests][Misc = 1, Loot] SPELL_AURA_MOD_CURRENCY_GAIN = 349, - SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT = 350, // NYI - SPELL_AURA_351 = 351, + SPELL_AURA_350 = 350, + SPELL_AURA_MOD_CURRENCY_CATEGORY_GAIN_PCT = 351, // NYI SPELL_AURA_352 = 352, SPELL_AURA_MOD_CAMOUFLAGE = 353, // NYI - SPELL_AURA_354 = 354, // Restoration Shaman mastery - mod healing based on target's health (less = more healing) + SPELL_AURA_MOD_HEALING_DONE_PCT_VERSUS_TARGET_HEALTH = 354, // NYI Restoration Shaman mastery - mod healing based on target's health (less = more healing) SPELL_AURA_MOD_CASTING_SPEED = 355, // NYI SPELL_AURA_PROVIDE_TOTEM_CATEGORY = 356, SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME = 357, @@ -447,17 +447,17 @@ enum AuraType : uint32 SPELL_AURA_372 = 372, SPELL_AURA_MOD_SPEED_NO_CONTROL = 373, // NYI SPELL_AURA_MODIFY_FALL_DAMAGE_PCT = 374, // NYI - SPELL_AURA_375 = 375, + SPELL_AURA_HIDE_MODEL_AND_EQUIPEMENT_SLOTS = 375, SPELL_AURA_MOD_CURRENCY_GAIN_FROM_SOURCE = 376, // NYI SPELL_AURA_CAST_WHILE_WALKING_2 = 377, // NYI - SPELL_AURA_378 = 378, + SPELL_AURA_MOD_POSSESS_PET = 378, SPELL_AURA_MOD_MANA_REGEN_PCT = 379, - SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE = 380, // Allows melee abilities to benefit from haste GCD reduction + SPELL_AURA_380 = 380, SPELL_AURA_MOD_DAMAGE_TAKEN_FROM_CASTER_PET = 381, // NYI SPELL_AURA_MOD_PET_STAT_PCT = 382, // NYI SPELL_AURA_IGNORE_SPELL_COOLDOWN = 383, // NYI SPELL_AURA_384 = 384, - SPELL_AURA_CHANCE_OVERRIDE_AUTOATTACK_WITH_SPELL_ON_SELF= 385, // NYI (with triggered spell cast by the initial caster?) + SPELL_AURA_385 = 385, SPELL_AURA_386 = 386, SPELL_AURA_387 = 387, SPELL_AURA_MOD_TAXI_FLIGHT_SPEED = 388, // NYI @@ -465,7 +465,7 @@ enum AuraType : uint32 SPELL_AURA_390 = 390, SPELL_AURA_391 = 391, SPELL_AURA_392 = 392, - SPELL_AURA_393 = 393, + SPELL_AURA_BLOCK_SPELLS_IN_FRONT = 393, // NYI SPELL_AURA_SHOW_CONFIRMATION_PROMPT = 394, SPELL_AURA_AREA_TRIGGER = 395, // NYI SPELL_AURA_TRIGGER_SPELL_ON_POWER_AMOUNT = 396, // NYI Triggers spell when health goes above (MiscA = 0) or falls below (MiscA = 1) specified percent value (once, not every time condition has meet) @@ -477,7 +477,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_OVERRIDE_POWER_DISPLAY = 402, SPELL_AURA_OVERRIDE_SPELL_VISUAL = 403, SPELL_AURA_OVERRIDE_ATTACK_POWER_BY_SP_PCT = 404, - SPELL_AURA_MOD_RATING_PCT = 405, // NYI + SPELL_AURA_MOD_RATING_PCT = 405, SPELL_AURA_KEYBOUND_OVERRIDE = 406, // NYI SPELL_AURA_MOD_FEAR_2 = 407, // NYI SPELL_AURA_SET_ACTION_BUTTON_SPELL_COUNT = 408, @@ -485,8 +485,8 @@ enum AuraType : uint32 SPELL_AURA_410 = 410, SPELL_AURA_MOD_MAX_CHARGES = 411, SPELL_AURA_412 = 412, - SPELL_AURA_413 = 413, - SPELL_AURA_414 = 414, + SPELL_AURA_MOD_RANGED_ATTACK_DEFLECT_CHANCE = 413, // NYI + SPELL_AURA_MOD_RANGED_ATTACK_BLOCK_CHANCE_IN_FRONT = 414, // NYI SPELL_AURA_415 = 415, SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN = 416, SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN = 417, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 55bae41ebc0..36969fba4e1 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -138,8 +138,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModDisarm, // 67 SPELL_AURA_MOD_DISARM &AuraEffect::HandleAuraModStalked, // 68 SPELL_AURA_MOD_STALKED &AuraEffect::HandleNoImmediateEffect, // 69 SPELL_AURA_SCHOOL_ABSORB implemented in Unit::CalcAbsorbResist - &AuraEffect::HandleUnused, // 70 SPELL_AURA_EXTRA_ATTACKS clientside - &AuraEffect::HandleNULL, // 71 SPELL_AURA_71 + &AuraEffect::HandleNULL, // 70 SPELL_AURA_PERIODIC_WEAPON_PERCENT_DAMAGE + &AuraEffect::HandleNULL, // 71 SPELL_AURA_STORE_TELEPORT_RETURN_POINT &AuraEffect::HandleNoImmediateEffect, // 72 SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT &AuraEffect::HandleModPowerCost, // 73 SPELL_AURA_MOD_POWER_COST_SCHOOL &AuraEffect::HandleNoImmediateEffect, // 74 SPELL_AURA_REFLECT_SPELLS_SCHOOL implemented in Unit::SpellHitResult @@ -196,7 +196,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //125 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN implemented in Unit::MeleeDamageBonus &AuraEffect::HandleNoImmediateEffect, //126 SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT implemented in Unit::MeleeDamageBonus &AuraEffect::HandleNoImmediateEffect, //127 SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS implemented in Unit::MeleeDamageBonus - &AuraEffect::HandleModPossessPet, //128 SPELL_AURA_MOD_POSSESS_PET + &AuraEffect::HandleNULL, //128 SPELL_AURA_MOD_FIXATE &AuraEffect::HandleAuraModIncreaseSpeed, //129 SPELL_AURA_MOD_SPEED_ALWAYS &AuraEffect::HandleAuraModIncreaseMountedSpeed, //130 SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS &AuraEffect::HandleNoImmediateEffect, //131 SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS implemented in Unit::MeleeDamageBonus @@ -213,15 +213,15 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModBaseResistancePCT, //142 SPELL_AURA_MOD_BASE_RESISTANCE_PCT &AuraEffect::HandleNULL, //143 SPELL_AURA_MOD_RECOVERY_RATE_BY_SPELL_LABEL &AuraEffect::HandleNoImmediateEffect, //144 SPELL_AURA_SAFE_FALL implemented in WorldSession::HandleMovementOpcodes - &AuraEffect::HandleNULL, //145 used by 5 spells in 6.2.4 dbc but the meaning of this aura changed (it's used by mind control spells but isn't the control itself) + &AuraEffect::HandleNULL, //145 SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT2 &AuraEffect::HandleNoImmediateEffect, //146 SPELL_AURA_ALLOW_TAME_PET_TYPE &AuraEffect::HandleModMechanicImmunityMask, //147 SPELL_AURA_MECHANIC_IMMUNITY_MASK - &AuraEffect::HandleAuraRetainComboPoints, //148 SPELL_AURA_RETAIN_COMBO_POINTS + &AuraEffect::HandleNULL, //148 SPELL_AURA_MOD_CHARGE_RECOVERY_RATE &AuraEffect::HandleNoImmediateEffect, //149 SPELL_AURA_REDUCE_PUSHBACK &AuraEffect::HandleShieldBlockValuePercent, //150 SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT &AuraEffect::HandleAuraTrackStealthed, //151 SPELL_AURA_TRACK_STEALTHED &AuraEffect::HandleNoImmediateEffect, //152 SPELL_AURA_MOD_DETECTED_RANGE implemented in Creature::GetAttackDistance - &AuraEffect::HandleUnused, //153 Unused (4.3.4) old SPELL_AURA_SPLIT_DAMAGE_FLAT + &AuraEffect::HandleNULL, //153 SPELL_AURA_MOD_AUTOATTACK_RANGE &AuraEffect::HandleModStealthLevel, //154 SPELL_AURA_MOD_STEALTH_LEVEL &AuraEffect::HandleNoImmediateEffect, //155 SPELL_AURA_MOD_WATER_BREATHING &AuraEffect::HandleNoImmediateEffect, //156 SPELL_AURA_MOD_REPUTATION_GAIN @@ -232,12 +232,12 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //161 SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT &AuraEffect::HandleNoImmediateEffect, //162 SPELL_AURA_POWER_BURN implemented in AuraEffect::PeriodicTick &AuraEffect::HandleNoImmediateEffect, //163 SPELL_AURA_MOD_CRIT_DAMAGE_BONUS - &AuraEffect::HandleUnused, //164 unused (3.2.0), only one test spell + &AuraEffect::HandleNULL, //164 SPELL_AURA_FORCE_BREATH_BAR &AuraEffect::HandleNoImmediateEffect, //165 SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS implemented in Unit::MeleeDamageBonus &AuraEffect::HandleAuraModAttackPowerPercent, //166 SPELL_AURA_MOD_ATTACK_POWER_PCT &AuraEffect::HandleAuraModRangedAttackPowerPercent, //167 SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT &AuraEffect::HandleNoImmediateEffect, //168 SPELL_AURA_MOD_DAMAGE_DONE_VERSUS implemented in Unit::SpellDamageBonus, Unit::MeleeDamageBonus - &AuraEffect::HandleUnused, //169 Unused (4.3.4) old SPELL_AURA_MOD_CRIT_PERCENT_VERSUS + &AuraEffect::HandleNULL, //169 SPELL_AURA_SET_FFA_PVP &AuraEffect::HandleDetectAmore, //170 SPELL_AURA_DETECT_AMORE used to detect various spells that change visual of units for aura target &AuraEffect::HandleAuraModIncreaseSpeed, //171 SPELL_AURA_MOD_SPEED_NOT_STACK &AuraEffect::HandleAuraModIncreaseMountedSpeed, //172 SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK @@ -249,9 +249,9 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModMaxPowerPct, //178 SPELL_AURA_MOD_MAX_POWER_PCT &AuraEffect::HandleAuraModPowerDisplay, //179 SPELL_AURA_MOD_POWER_DISPLAY &AuraEffect::HandleNoImmediateEffect, //180 SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS implemented in Unit::SpellDamageBonus - &AuraEffect::HandleUnused, //181 unused (4.3.4) old SPELL_AURA_MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - &AuraEffect::HandleAuraModResistenceOfStatPercent, //182 SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT - &AuraEffect::HandleNULL, //183 SPELL_AURA_MOD_CRITICAL_THREAT only used in 28746 - miscvalue - spell school + &AuraEffect::HandleNULL, //181 SPELL_AURA_MOD_SPELL_CURRENCY_REAGENTS_COUNT_PCT + &AuraEffect::HandleNULL, //182 SPELL_AURA_SUPPRESS_ITEM_PASSIVE_EFFECT_BY_SPELL_LABEL + &AuraEffect::HandleNULL, //183 SPELL_AURA_MOD_CRIT_CHANCE_VERSUS_TARGET_HEALTH &AuraEffect::HandleNoImmediateEffect, //184 SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst &AuraEffect::HandleNoImmediateEffect, //185 SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE implemented in Unit::RollMeleeOutcomeAgainst &AuraEffect::HandleNoImmediateEffect, //186 SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE implemented in Unit::MagicSpellHitResult @@ -263,10 +263,10 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModMeleeRangedSpeedPct, //192 SPELL_AURA_MOD_MELEE_RANGED_HASTE &AuraEffect::HandleModCombatSpeedPct, //193 SPELL_AURA_MELEE_SLOW (in fact combat (any type attack) speed pct) &AuraEffect::HandleNoImmediateEffect, //194 SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL implemented in Unit::CalcAbsorbResist - &AuraEffect::HandleNoImmediateEffect, //195 SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL implemented in Unit::CalcAbsorbResist + &AuraEffect::HandleNULL, //195 SPELL_AURA_LEARN_SPELL &AuraEffect::HandleNULL, //196 SPELL_AURA_MOD_COOLDOWN - flat mod of spell cooldowns &AuraEffect::HandleNoImmediateEffect, //197 SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE implemented in Unit::SpellCriticalBonus Unit::GetUnitCriticalChance - &AuraEffect::HandleUnused, //198 unused (4.3.4) old SPELL_AURA_MOD_ALL_WEAPON_SKILLS + &AuraEffect::HandleNULL, //198 SPELL_AURA_MOD_COMBAT_RATING_FROM_COMBAT_RATING &AuraEffect::HandleUnused, //199 unused (4.3.4) old SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT &AuraEffect::HandleNoImmediateEffect, //200 SPELL_AURA_MOD_XP_PCT implemented in Player::RewardPlayerAndGroupAtKill &AuraEffect::HandleAuraAllowFlight, //201 SPELL_AURA_FLY this aura enable flight mode... @@ -286,13 +286,13 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleArenaPreparation, //215 SPELL_AURA_ARENA_PREPARATION &AuraEffect::HandleModCastingSpeed, //216 SPELL_AURA_HASTE_SPELLS &AuraEffect::HandleModMeleeSpeedPct, //217 SPELL_AURA_MOD_MELEE_HASTE_2 - &AuraEffect::HandleNULL, //218 Affects item stats from equipment - &AuraEffect::HandleModManaRegen, //219 SPELL_AURA_MOD_MANA_REGEN_FROM_STAT + &AuraEffect::HandleNULL, //218 SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL + &AuraEffect::HandleNULL, //219 SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL &AuraEffect::HandleNULL, //220 SPELL_AURA_MOD_ABILITY_SCHOOL_MASK &AuraEffect::HandleNULL, //221 SPELL_AURA_MOD_DETAUNT - &AuraEffect::HandleUnused, //222 unused (3.2.0) only for spell 44586 that not used in real spell cast - &AuraEffect::HandleUnused, //223 unused (7.2.0) - &AuraEffect::HandleUnused, //224 unused (4.3.4) + &AuraEffect::HandleNULL, //222 SPELL_AURA_REMOVE_TRANSMOG_COST + &AuraEffect::HandleNULL, //223 SPELL_AURA_REMOVE_BARBER_SHOP_COST + &AuraEffect::HandleNULL, //224 SPELL_AURA_LEARN_TALENT &AuraEffect::HandleNULL, //225 SPELL_AURA_MOD_VISIBILITY_RANGE &AuraEffect::HandleNoImmediateEffect, //226 SPELL_AURA_PERIODIC_DUMMY implemented in AuraEffect::PeriodicTick &AuraEffect::HandleNoImmediateEffect, //227 SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE implemented in AuraEffect::PeriodicTick @@ -305,8 +305,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //234 SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK implement in Unit::CalculateSpellDuration &AuraEffect::HandleNoImmediateEffect, //235 SPELL_AURA_MOD_DISPEL_RESIST implement in Unit::MagicSpellHitResult &AuraEffect::HandleAuraControlVehicle, //236 SPELL_AURA_CONTROL_VEHICLE - &AuraEffect::HandleModSpellDamagePercentFromAttackPower, //237 SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER implemented in Unit::SpellBaseDamageBonus - &AuraEffect::HandleModSpellHealingPercentFromAttackPower, //238 SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER implemented in Unit::SpellBaseHealingBonus + &AuraEffect::HandleNULL, //237 SPELL_AURA_237 + &AuraEffect::HandleNULL, //238 SPELL_AURA_238 &AuraEffect::HandleAuraModScale, //239 SPELL_AURA_MOD_SCALE_2 only in Noggenfogger Elixir (16595) before 2.3.0 aura 61 &AuraEffect::HandleAuraModExpertise, //240 SPELL_AURA_MOD_EXPERTISE &AuraEffect::HandleForceMoveForward, //241 SPELL_AURA_FORCE_MOVE_FORWARD Forces the caster to move forward @@ -327,22 +327,22 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoReagentUseAura, //256 SPELL_AURA_NO_REAGENT_USE Use SpellClassMask for spell select &AuraEffect::HandleNULL, //257 SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS Use SpellClassMask for spell select &AuraEffect::HandleNoImmediateEffect, //258 SPELL_AURA_OVERRIDE_SUMMONED_OBJECT implemented in Spell::EffectTransmitted - &AuraEffect::HandleUnused, //259 unused (4.3.4) old SPELL_AURA_MOD_HOT_PCT + &AuraEffect::HandleNULL, //259 SPELL_AURA_MOD_HOT_PCT &AuraEffect::HandleNoImmediateEffect, //260 SPELL_AURA_SCREEN_EFFECT (miscvalue = id in ScreenEffect.dbc) not required any code &AuraEffect::HandlePhase, //261 SPELL_AURA_PHASE &AuraEffect::HandleNoImmediateEffect, //262 SPELL_AURA_ABILITY_IGNORE_AURASTATE implemented in Spell::CheckCast - &AuraEffect::HandleAuraAllowOnlyAbility, //263 SPELL_AURA_ALLOW_ONLY_ABILITY player can use only abilities set in SpellClassMask - &AuraEffect::HandleUnused, //264 unused (3.2.0) + &AuraEffect::HandleAuraAllowOnlyAbility, //263 SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES + &AuraEffect::HandleNULL, //264 SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES &AuraEffect::HandleUnused, //265 unused (4.3.4) - &AuraEffect::HandleUnused, //266 unused (4.3.4) + &AuraEffect::HandleNULL, //266 SPELL_AURA_SET_VIGNETTE &AuraEffect::HandleNoImmediateEffect, //267 SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL implemented in Unit::IsImmunedToSpellEffect &AuraEffect::HandleUnused, //268 unused (4.3.4) old SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT. &AuraEffect::HandleNoImmediateEffect, //269 SPELL_AURA_MOD_IGNORE_TARGET_RESIST implemented in Unit::CalcAbsorbResist and CalcArmorReducedDamage &AuraEffect::HandleNoImmediateEffect, //270 SPELL_AURA_MOD_SCHOOL_MASK_DAMAGE_FROM_CASTER implemented in Unit::SpellDamageBonusTaken and Unit::MeleeDamageBonusTaken &AuraEffect::HandleNoImmediateEffect, //271 SPELL_AURA_MOD_SPELL_DAMAGE_FROM_CASTER implemented in Unit::SpellDamageBonusTaken and Unit::MeleeDamageBonusTaken - &AuraEffect::HandleNoImmediateEffect, //272 SPELL_AURA_IGNORE_MELEE_RESET + &AuraEffect::HandleNULL, //272 SPELL_AURA_MOD_BLOCK_VALUE_PCT &AuraEffect::HandleUnused, //273 clientside - &AuraEffect::HandleUnused, //274 unused (4.3.4) + &AuraEffect::HandleNULL, //274 SPELL_AURA_MOD_BLOCK_VALUE_FLAT &AuraEffect::HandleNoImmediateEffect, //275 SPELL_AURA_MOD_IGNORE_SHAPESHIFT Use SpellClassMask for spell select &AuraEffect::HandleNULL, //276 mod damage % mechanic? &AuraEffect::HandleUnused, //277 unused (4.3.4) old SPELL_AURA_MOD_MAX_AFFECTED_TARGETS @@ -363,10 +363,10 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraOpenStable, //292 SPELL_AURA_OPEN_STABLE &AuraEffect::HandleAuraOverrideSpells, //293 SPELL_AURA_OVERRIDE_SPELLS auras which probably add set of abilities to their target based on it's miscvalue &AuraEffect::HandleNoImmediateEffect, //294 SPELL_AURA_PREVENT_REGENERATE_POWER implemented in Player::Regenerate(Powers power) - &AuraEffect::HandleUnused, //295 unused (4.3.4) + &AuraEffect::HandleNULL, //295 SPELL_AURA_MOD_PERIODIC_DAMAGE_TAKEN &AuraEffect::HandleAuraSetVehicle, //296 SPELL_AURA_SET_VEHICLE_ID sets vehicle on target - &AuraEffect::HandleNULL, //297 Spirit Burst spells - &AuraEffect::HandleNULL, //298 70569 - Strangulating, maybe prevents talk or cast + &AuraEffect::HandleNULL, //297 SPELL_AURA_MOD_ROOT_DISABLE_GRAVITY + &AuraEffect::HandleNULL, //298 SPELL_AURA_MOD_STUN_DISABLE_GRAVITY &AuraEffect::HandleUnused, //299 unused (4.3.4) &AuraEffect::HandleNoImmediateEffect, //300 SPELL_AURA_SHARE_DAMAGE_PCT implemented in Unit::DealDamage &AuraEffect::HandleNoImmediateEffect, //301 SPELL_AURA_SCHOOL_HEAL_ABSORB implemented in Unit::CalcHealAbsorb @@ -374,14 +374,14 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //303 SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE implemented in Unit::SpellDamageBonus, Unit::MeleeDamageBonus &AuraEffect::HandleAuraModFakeInebriation, //304 SPELL_AURA_MOD_DRUNK &AuraEffect::HandleAuraModIncreaseSpeed, //305 SPELL_AURA_MOD_MINIMUM_SPEED - &AuraEffect::HandleUnused, //306 unused (4.3.4) + &AuraEffect::HandleNULL, //306 SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER &AuraEffect::HandleNULL, //307 SPELL_AURA_CAST_WHILE_WALKING_BY_SPELL_LABEL &AuraEffect::HandleNoImmediateEffect, //308 SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER_WITH_ABILITIES implemented in Unit::GetUnitSpellCriticalChance &AuraEffect::HandleNULL, //309 SPELL_AURA_MOD_RESILIENCE &AuraEffect::HandleNoImmediateEffect, //310 SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE implemented in Spell::CalculateDamageDone - &AuraEffect::HandleNULL, //311 0 spells in 3.3.5 - &AuraEffect::HandleNULL, //312 0 spells in 3.3.5 - &AuraEffect::HandleUnused, //313 unused (4.3.4) + &AuraEffect::HandleNULL, //311 SPELL_AURA_IGNORE_COMBAT + &AuraEffect::HandleNULL, //312 SPELL_AURA_ANIM_REPLACEMENT_SET implemented clientside + &AuraEffect::HandleNULL, //313 SPELL_AURA_MOUNT_ANIM_REPLACEMENT_SET implemented clientside &AuraEffect::HandlePreventResurrection, //314 SPELL_AURA_PREVENT_RESURRECTION todo &AuraEffect::HandleNoImmediateEffect, //315 SPELL_AURA_UNDERWATER_WALKING todo &AuraEffect::HandleNULL, //316 SPELL_AURA_SCHOOL_ABSORB_OVERKILL @@ -402,7 +402,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraForceWeather, //331 SPELL_AURA_FORCE_WEATHER &AuraEffect::HandleNoImmediateEffect, //332 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS implemented in Unit::GetCastSpellInfo &AuraEffect::HandleNoImmediateEffect, //333 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_TRIGGERED implemented in Unit::GetCastSpellInfo - &AuraEffect::HandleNULL, //334 SPELL_AURA_MOD_BLIND + &AuraEffect::HandleNULL, //334 SPELL_AURA_MOD_AUTOATTACK_CRIT_CHANCE &AuraEffect::HandleNULL, //335 SPELL_AURA_335 &AuraEffect::HandleNULL, //336 SPELL_AURA_MOUNT_RESTRICTIONS implemented in Unit::GetMountCapability &AuraEffect::HandleNoImmediateEffect, //337 SPELL_AURA_MOD_VENDOR_ITEMS_PRICES @@ -418,11 +418,11 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNoImmediateEffect, //347 SPELL_AURA_MOD_SPELL_COOLDOWN_BY_HASTE implemented in SpellHistory::StartCooldown &AuraEffect::HandleNoImmediateEffect, //348 SPELL_AURA_MOD_MONEY_GAIN implemented in WorldSession::HandleLootMoneyOpcode &AuraEffect::HandleNoImmediateEffect, //349 SPELL_AURA_MOD_CURRENCY_GAIN implemented in Player::ModifyCurrency - &AuraEffect::HandleNULL, //350 SPELL_AURA_MOD_GATHERING_ITEMS_GAINED_PERCENT - &AuraEffect::HandleNULL, //351 SPELL_AURA_351 + &AuraEffect::HandleNULL, //350 SPELL_AURA_350 + &AuraEffect::HandleNULL, //351 SPELL_AURA_MOD_CURRENCY_CATEGORY_GAIN_PCT &AuraEffect::HandleNULL, //352 SPELL_AURA_352 &AuraEffect::HandleNULL, //353 SPELL_AURA_MOD_CAMOUFLAGE - &AuraEffect::HandleNULL, //354 SPELL_AURA_354 + &AuraEffect::HandleNULL, //354 SPELL_AURA_MOD_HEALING_DONE_PCT_VERSUS_TARGET_HEALTH &AuraEffect::HandleNULL, //355 SPELL_AURA_MOD_CASTING_SPEED &AuraEffect::HandleNoImmediateEffect, //356 SPELL_AURA_PROVIDE_TOTEM_CATEGORY implemented in Player::HasItemTotemCategory &AuraEffect::HandleNULL, //357 SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME @@ -443,17 +443,17 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //372 &AuraEffect::HandleNULL, //373 SPELL_AURA_MOD_SPEED_NO_CONTROL &AuraEffect::HandleNULL, //374 SPELL_AURA_MODIFY_FALL_DAMAGE_PCT - &AuraEffect::HandleNULL, //375 + &AuraEffect::HandleNULL, //375 SPELL_AURA_HIDE_MODEL_AND_EQUIPEMENT_SLOTS implemented clientside &AuraEffect::HandleNULL, //376 SPELL_AURA_MOD_CURRENCY_GAIN_FROM_SOURCE &AuraEffect::HandleNULL, //377 SPELL_AURA_CAST_WHILE_WALKING_2 - &AuraEffect::HandleNULL, //378 + &AuraEffect::HandleModPossessPet, //378 SPELL_AURA_MOD_POSSESS_PET &AuraEffect::HandleModManaRegenPct, //379 SPELL_AURA_MOD_MANA_REGEN_PCT implemented in Player::UpdateManaRegen - &AuraEffect::HandleNoImmediateEffect, //380 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE implemented in Spell::TriggerGlobalCooldown + &AuraEffect::HandleNULL, //380 &AuraEffect::HandleNULL, //381 SPELL_AURA_MOD_DAMAGE_TAKEN_FROM_CASTER_PET &AuraEffect::HandleNULL, //382 SPELL_AURA_MOD_PET_STAT_PCT &AuraEffect::HandleNULL, //383 SPELL_AURA_IGNORE_SPELL_COOLDOWN &AuraEffect::HandleNULL, //384 - &AuraEffect::HandleNULL, //385 SPELL_AURA_CHANCE_OVERRIDE_AUTOATTACK_WITH_SPELL_ON_SELF + &AuraEffect::HandleNULL, //385 &AuraEffect::HandleNULL, //386 &AuraEffect::HandleNULL, //387 &AuraEffect::HandleNULL, //388 SPELL_AURA_MOD_TAXI_FLIGHT_SPEED @@ -461,7 +461,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //390 &AuraEffect::HandleNULL, //391 &AuraEffect::HandleNULL, //392 - &AuraEffect::HandleNULL, //393 + &AuraEffect::HandleNULL, //393 SPELL_AURA_BLOCK_SPELLS_IN_FRONT &AuraEffect::HandleShowConfirmationPrompt, //394 SPELL_AURA_SHOW_CONFIRMATION_PROMPT &AuraEffect::HandleCreateAreaTrigger, //395 SPELL_AURA_AREA_TRIGGER &AuraEffect::HandleNULL, //396 SPELL_AURA_TRIGGER_SPELL_ON_POWER_AMOUNT @@ -481,8 +481,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //410 &AuraEffect::HandleNoImmediateEffect, //411 SPELL_AURA_MOD_MAX_CHARGES implemented in SpellHistory::GetMaxCharges &AuraEffect::HandleNULL, //412 - &AuraEffect::HandleNULL, //413 - &AuraEffect::HandleNULL, //414 + &AuraEffect::HandleNULL, //413 SPELL_AURA_MOD_RANGED_ATTACK_DEFLECT_CHANCE + &AuraEffect::HandleNULL, //414 SPELL_AURA_MOD_RANGED_ATTACK_BLOCK_CHANCE_IN_FRONT &AuraEffect::HandleNULL, //415 &AuraEffect::HandleNoImmediateEffect, //416 SPELL_AURA_MOD_COOLDOWN_BY_HASTE_REGEN implemented in SpellHistory::StartCooldown &AuraEffect::HandleNoImmediateEffect, //417 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_REGEN implemented in Spell::TriggerGlobalCooldown @@ -2374,7 +2374,7 @@ void AuraEffect::HandleAuraAllowOnlyAbility(AuraApplication const* aurApp, uint8 else { // do not remove unit flag if there are more than this auraEffect of that kind on unit on unit - if (target->HasAuraType(SPELL_AURA_ALLOW_ONLY_ABILITY)) + if (target->HasAuraType(SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES)) return; target->RemovePlayerFlag(PLAYER_ALLOW_ONLY_ABILITY); } @@ -3481,36 +3481,6 @@ void AuraEffect::HandleModSpellHealingPercentFromStat(AuraApplication const* aur target->ToPlayer()->UpdateSpellDamageAndHealingBonus(); } -void AuraEffect::HandleModSpellDamagePercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const -{ - if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) - return; - - Unit* target = aurApp->GetTarget(); - - if (target->GetTypeId() != TYPEID_PLAYER) - return; - - // Magic damage modifiers implemented in Unit::SpellDamageBonus - // This information for client side use only - // Recalculate bonus - target->ToPlayer()->UpdateSpellDamageAndHealingBonus(); -} - -void AuraEffect::HandleModSpellHealingPercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const -{ - if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) - return; - - Unit* target = aurApp->GetTarget(); - - if (target->GetTypeId() != TYPEID_PLAYER) - return; - - // Recalculate bonus - target->ToPlayer()->UpdateSpellDamageAndHealingBonus(); -} - void AuraEffect::HandleModHealingDone(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) @@ -3577,28 +3547,6 @@ void AuraEffect::HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 target->SetHealth(std::max<uint32>(CalculatePct(target->GetMaxHealth(), healthPct), (zeroHealth ? 0 : 1))); } -void AuraEffect::HandleAuraModResistenceOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const -{ - if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) - return; - - Unit* target = aurApp->GetTarget(); - - if (target->GetTypeId() != TYPEID_PLAYER) - return; - - if (GetMiscValue() != SPELL_SCHOOL_MASK_NORMAL) - { - // support required adding replace UpdateArmor by loop by UpdateResistence at intellect update - // and include in UpdateResistence same code as in UpdateArmor for aura mod apply. - TC_LOG_ERROR("spells", "Aura SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT(182) does not work for non-armor type resistances!"); - return; - } - - // Recalculate Armor - target->UpdateArmor(); -} - void AuraEffect::HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) @@ -3719,20 +3667,6 @@ void AuraEffect::HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mod HandleModPowerRegen(aurApp, mode, apply); } -void AuraEffect::HandleModManaRegen(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const -{ - if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) - return; - - Unit* target = aurApp->GetTarget(); - - if (target->GetTypeId() != TYPEID_PLAYER) - return; - - //Note: an increase in regen does NOT cause threat. - target->ToPlayer()->UpdateManaRegen(); -} - void AuraEffect::HandleModManaRegenPct(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) @@ -4021,9 +3955,17 @@ void AuraEffect::HandleAuraModBlockPercent(AuraApplication const* aurApp, uint8 target->ToPlayer()->UpdateBlockPercentage(); } -void AuraEffect::HandleAuraModRegenInterrupt(AuraApplication const* aurApp, uint8 mode, bool apply) const +void AuraEffect::HandleAuraModRegenInterrupt(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const { - HandleModManaRegen(aurApp, mode, apply); + if (!(mode & (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_STAT))) + return; + + Unit* target = aurApp->GetTarget(); + + if (!target->IsPlayer()) + return; + + target->ToPlayer()->UpdateManaRegen(); } void AuraEffect::HandleAuraModWeaponCritPercent(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -4472,22 +4414,6 @@ void AuraEffect::HandleNoReagentUseAura(AuraApplication const* aurApp, uint8 mod target->ToPlayer()->SetNoRegentCostMask(mask); } -void AuraEffect::HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const -{ - if (!(mode & AURA_EFFECT_HANDLE_REAL)) - return; - - Unit* target = aurApp->GetTarget(); - - if (target->GetTypeId() != TYPEID_PLAYER) - return; - - // combo points was added in SPELL_EFFECT_ADD_COMBO_POINTS handler - // remove only if aura expire by time (in case combo points amount change aura removed without combo points lost) - if (!apply && aurApp->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE) - target->ToPlayer()->AddComboPoints(-GetAmount()); -} - /*********************************************************/ /*** OTHERS ***/ /*********************************************************/ diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index b73b4210bb8..cf948970a68 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -231,12 +231,9 @@ class TC_GAME_API AuraEffect void HandleModPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellDamagePercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModSpellHealingPercentFromStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleModSpellDamagePercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleModSpellHealingPercentFromAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModHealingDone(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModHealingDonePct(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModTotalPercentStat(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleAuraModResistenceOfStatPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModExpertise(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModStatBonusPercent(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleOverrideSpellPowerByAttackPower(AuraApplication const* aurApp, uint8 mode, bool apply) const; @@ -246,7 +243,6 @@ class TC_GAME_API AuraEffect // heal and energize void HandleModPowerRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModPowerRegenPCT(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleModManaRegen(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleModManaRegenPct(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModIncreaseHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleAuraModIncreaseMaxHealth(AuraApplication const* aurApp, uint8 mode, bool apply) const; @@ -293,7 +289,6 @@ class TC_GAME_API AuraEffect void HandleModPowerCost(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleArenaPreparation(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleNoReagentUseAura(AuraApplication const* aurApp, uint8 mode, bool apply) const; - void HandleAuraRetainComboPoints(AuraApplication const* aurApp, uint8 mode, bool apply) const; // others void HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool apply) const; void HandleChannelDeathItem(AuraApplication const* aurApp, uint8 mode, bool apply) const; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 3a17779261d..2e09b28aa6f 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1084,7 +1084,7 @@ void Aura::UnregisterSingleTarget() SetIsSingleTarget(false); } -int32 Aura::CalcDispelChance(Unit const* auraTarget, bool offensive) const +int32 Aura::CalcDispelChance(Unit const* /*auraTarget*/, bool /*offensive*/) const { // we assume that aura dispel chance is 100% on start // need formula for level difference based chance @@ -1095,11 +1095,6 @@ int32 Aura::CalcDispelChance(Unit const* auraTarget, bool offensive) const if (Player* modOwner = caster->GetSpellModOwner()) modOwner->ApplySpellMod(GetId(), SPELLMOD_RESIST_DISPEL_CHANCE, resistChance); - // Dispel resistance from target SPELL_AURA_MOD_DISPEL_RESIST - // Only affects offensive dispels - if (offensive && auraTarget) - resistChance += auraTarget->GetTotalAuraModifier(SPELL_AURA_MOD_DISPEL_RESIST); - RoundToInterval(resistChance, 0, 100); return 100 - resistChance; } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 19a7878f706..a070167b440 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3754,18 +3754,7 @@ void Spell::finish(bool ok) if (IsAutoActionResetSpell()) { - bool found = false; - Unit::AuraEffectList const& vIgnoreReset = m_caster->GetAuraEffectsByType(SPELL_AURA_IGNORE_MELEE_RESET); - for (Unit::AuraEffectList::const_iterator i = vIgnoreReset.begin(); i != vIgnoreReset.end(); ++i) - { - if ((*i)->IsAffectingSpell(m_spellInfo)) - { - found = true; - break; - } - } - - if (!found && !m_spellInfo->HasAttribute(SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS)) + if (!m_spellInfo->HasAttribute(SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS)) { m_caster->resetAttackTimer(BASE_ATTACK); if (m_caster->haveOffhandWeapon()) @@ -4975,9 +4964,6 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint } } - if (m_caster->HasAuraTypeWithMiscvalue(SPELL_AURA_BLOCK_SPELL_FAMILY, m_spellInfo->SpellFamilyName)) - return SPELL_FAILED_SPELL_UNAVAILABLE; - bool reqCombat = true; Unit::AuraEffectList const& stateAuras = m_caster->GetAuraEffectsByType(SPELL_AURA_ABILITY_IGNORE_AURASTATE); for (Unit::AuraEffectList::const_iterator j = stateAuras.begin(); j != stateAuras.end(); ++j) @@ -6065,7 +6051,7 @@ bool Spell::CheckSpellCancelsCharm(uint32* param1) const bool Spell::CheckSpellCancelsStun(uint32* param1) const { return CheckSpellCancelsAuraEffect(SPELL_AURA_MOD_STUN, param1) && - CheckSpellCancelsAuraEffect(SPELL_AURA_STRANGULATE, param1); + CheckSpellCancelsAuraEffect(SPELL_AURA_MOD_STUN_DISABLE_GRAVITY, param1); } bool Spell::CheckSpellCancelsSilence(uint32* param1) const @@ -7846,7 +7832,7 @@ void Spell::TriggerGlobalCooldown() m_spellInfo->HasAttribute(SPELL_ATTR0_ABILITY); // Apply haste rating - if (gcd > MIN_GCD && ((m_spellInfo->StartRecoveryCategory == 133 && !isMeleeOrRangedSpell) || m_caster->HasAuraTypeWithAffectMask(SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE, m_spellInfo))) + if (gcd > MIN_GCD && ((m_spellInfo->StartRecoveryCategory == 133 && !isMeleeOrRangedSpell))) { gcd = int32(float(gcd) * m_caster->m_unitData->ModSpellHaste); RoundToInterval<int32>(gcd, MIN_GCD, MAX_GCD); |