diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 32 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 32 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 9 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp | 4 |
6 files changed, 60 insertions, 45 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 70e7286f1f7..2284bb75eea 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -10545,6 +10545,10 @@ InventoryResult Player::CanStoreItem(uint8 bag, uint8 slot, ItemPosCountVec& des bool Player::HasItemTotemCategory(uint32 TotemCategory) const { + for (AuraEffect const* providedTotemCategory : GetAuraEffectsByType(SPELL_AURA_PROVIDE_TOTEM_CATEGORY)) + if (DB2Manager::IsTotemCategoryCompatibleWith(providedTotemCategory->GetMiscValueB(), TotemCategory)) + return true; + Item* item; uint8 inventoryEnd = INVENTORY_SLOT_ITEM_START + GetInventorySlotCount(); for (uint8 i = EQUIPMENT_SLOT_START; i < inventoryEnd; ++i) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2e3c994863a..903a0b22a51 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2827,9 +2827,7 @@ float Unit::GetUnitCriticalChance(WeaponAttackType attackType, Unit const* victi chance += victim->GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER, [this](AuraEffect const* aurEff) -> bool { - if (aurEff->GetCasterGUID() == GetGUID()) - return true; - return false; + return aurEff->GetCasterGUID() == GetGUID(); }); chance += victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE); @@ -7069,11 +7067,13 @@ float Unit::GetUnitSpellCriticalChance(Unit* victim, SpellInfo const* spellProto // for this types the bonus was already added in GetUnitCriticalChance, do not add twice if (spellProto->DmgClass != SPELL_DAMAGE_CLASS_MELEE && spellProto->DmgClass != SPELL_DAMAGE_CLASS_RANGED) { - crit_chance += victim->GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER, [this, spellProto](AuraEffect const* aurEff) -> bool + crit_chance += victim->GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER_WITH_ABILITIES, [this, spellProto](AuraEffect const* aurEff) -> bool { - if (aurEff->GetCasterGUID() == GetGUID() && aurEff->IsAffectingSpell(spellProto)) - return true; - return false; + return aurEff->GetCasterGUID() == GetGUID() && aurEff->IsAffectingSpell(spellProto); + }); + crit_chance += victim->GetTotalAuraModifier(SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER, [this](AuraEffect const* aurEff) -> bool + { + return aurEff->GetCasterGUID() != GetGUID(); }); } @@ -7209,7 +7209,7 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui return uint32(std::max(heal, 0.0f)); } -float Unit::SpellHealingPctDone(Unit* /*victim*/, SpellInfo const* spellProto) const +float Unit::SpellHealingPctDone(Unit* victim, SpellInfo const* spellProto) const { // For totems pct done mods are calculated when its calculation is run on the player in SpellHealingBonusDone. if (GetTypeId() == TYPEID_UNIT && IsTotem()) @@ -7231,6 +7231,14 @@ float Unit::SpellHealingPctDone(Unit* /*victim*/, SpellInfo const* spellProto) c float DoneTotalMod = 1.0f; + // bonus against aurastate + DoneTotalMod *= GetTotalAuraMultiplier(SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE, [victim](AuraEffect const* aurEff) -> bool + { + if (victim->HasAuraState(static_cast<AuraStateType>(aurEff->GetMiscValue()))) + return true; + return false; + }); + // Healing done percent DoneTotalMod *= GetTotalAuraMultiplier(SPELL_AURA_MOD_HEALING_DONE_PERCENT); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index e75437322aa..147f2fe450d 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -353,7 +353,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_DISARM_RANGED = 278, SPELL_AURA_INITIALIZE_IMAGES = 279, SPELL_AURA_280 = 280, // old SPELL_AURA_MOD_ARMOR_PENETRATION_PCT unused 4.3.4 - SPELL_AURA_MOD_GUILD_REPUTATION_GAIN_PCT = 281, // NYI + SPELL_AURA_PROVIDE_SPELL_FOCUS = 281, SPELL_AURA_MOD_BASE_HEALTH_PCT = 282, SPELL_AURA_MOD_HEALING_RECEIVED = 283, // Possibly only for some spell family class spells SPELL_AURA_LINKED = 284, @@ -379,8 +379,8 @@ enum AuraType : uint32 SPELL_AURA_MOD_FAKE_INEBRIATE = 304, SPELL_AURA_MOD_MINIMUM_SPEED = 305, SPELL_AURA_306 = 306, - SPELL_AURA_HEAL_ABSORB_TEST = 307, - SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 308, + 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, @@ -388,7 +388,7 @@ enum AuraType : uint32 SPELL_AURA_313 = 313, // Not used in 4.3.4 - related to mounts SPELL_AURA_PREVENT_RESURRECTION = 314, SPELL_AURA_UNDERWATER_WALKING = 315, - SPELL_AURA_PERIODIC_HASTE = 316, // Not used in 4.3.4 (name from 3.3.5a) + SPELL_AURA_SCHOOL_ABSORB_OVERKILL = 316, // NYI - absorbs overkill damage SPELL_AURA_MOD_SPELL_POWER_PCT = 317, SPELL_AURA_MASTERY = 318, SPELL_AURA_MOD_MELEE_HASTE_3 = 319, @@ -399,7 +399,7 @@ enum AuraType : uint32 SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK = 324, // testing aura SPELL_AURA_LEARN_PVP_TALENT = 325, // NYI SPELL_AURA_PHASE_GROUP = 326, // Puts the player in all the phases that are in the group with id = miscB - SPELL_AURA_327 = 327, // Not used in 4.3.4 + SPELL_AURA_PHASE_ALWAYS_VISIBLE = 327, // NYI - sets PhaseShiftFlags::AlwaysVisible SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT = 328, // NYI Triggers spell when power goes above (MiscB = 0) or falls below (MiscB = 1) specified percent value (once, not every time condition has meet) SPELL_AURA_MOD_POWER_GAIN_PCT = 329, // NYI SPELL_AURA_CAST_WHILE_WALKING = 330, @@ -411,7 +411,7 @@ enum AuraType : uint32 SPELL_AURA_MOUNT_RESTRICTIONS = 336, SPELL_AURA_MOD_VENDOR_ITEMS_PRICES = 337, SPELL_AURA_MOD_DURABILITY_LOSS = 338, - SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE = 339, // NYI + SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 339, // NYI 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, @@ -428,10 +428,10 @@ enum AuraType : uint32 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_CASTING_SPEED = 355, // NYI - SPELL_AURA_356 = 356, // Arcane Mage mastery - mod damage based on current mana + SPELL_AURA_PROVIDE_TOTEM_CATEGORY = 356, SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME = 357, SPELL_AURA_WORGEN_ALTERED_FORM = 358, - SPELL_AURA_359 = 359, + SPELL_AURA_MOD_HEALING_DONE_VERSUS_AURASTATE = 359, SPELL_AURA_PROC_TRIGGER_SPELL_COPY = 360, // Procs the same spell that caused this proc (Dragonwrath, Tarecgosa's Rest) SPELL_AURA_OVERRIDE_AUTOATTACK_WITH_MELEE_SPELL = 361, SPELL_AURA_362 = 362, // Not used in 4.3.4 @@ -442,7 +442,7 @@ enum AuraType : uint32 SPELL_AURA_OVERRIDE_AUTOATTACK_WITH_RANGED_SPELL = 367, // NYI SPELL_AURA_368 = 368, // Not used in 4.3.4 SPELL_AURA_ENABLE_POWER_BAR_TIMER = 369, - SPELL_AURA_SET_FAIR_FAR_CLIP = 370, // Overrides client's View Distance setting to max("Fair", current_setting) + SPELL_AURA_SPELL_OVERRIDE_NAME_GROUP = 370, // picks a random SpellOverrideName id from a group (group id in miscValue) SPELL_AURA_371 = 371, SPELL_AURA_372 = 372, SPELL_AURA_MOD_SPEED_NO_CONTROL = 373, // NYI @@ -453,7 +453,7 @@ enum AuraType : uint32 SPELL_AURA_378 = 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_381 = 381, + 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, @@ -471,7 +471,7 @@ enum AuraType : uint32 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) SPELL_AURA_397 = 397, SPELL_AURA_398 = 398, - SPELL_AURA_399 = 399, + SPELL_AURA_MOD_TIME_RATE = 399, SPELL_AURA_MOD_SKILL_2 = 400, SPELL_AURA_401 = 401, SPELL_AURA_MOD_OVERRIDE_POWER_DISPLAY = 402, @@ -480,7 +480,7 @@ enum AuraType : uint32 SPELL_AURA_MOD_RATING_PCT = 405, // NYI SPELL_AURA_KEYBOUND_OVERRIDE = 406, // NYI SPELL_AURA_MOD_FEAR_2 = 407, // NYI - SPELL_AURA_408 = 408, + SPELL_AURA_SET_ACTION_BUTTON_SPELL_COUNT = 408, SPELL_AURA_CAN_TURN_WHILE_FALLING = 409, SPELL_AURA_410 = 410, SPELL_AURA_MOD_MAX_CHARGES = 411, @@ -496,12 +496,12 @@ enum AuraType : uint32 SPELL_AURA_MOD_ABSORB_EFFECTS_DONE_PCT = 421, // NYI SPELL_AURA_MOD_ABSORB_EFFECTS_TAKEN_PCT = 422, // NYI SPELL_AURA_423 = 423, - SPELL_AURA_424 = 424, + SPELL_AURA_CASTER_IGNORE_LOS = 424, // NYI SPELL_AURA_425 = 425, SPELL_AURA_426 = 426, SPELL_AURA_SCALE_PLAYER_LEVEL = 427, // NYI SPELL_AURA_LINKED_SUMMON = 428, - SPELL_AURA_429 = 429, + SPELL_AURA_MOD_SUMMON_DAMAGE = 429, // NYI - increases damage done by all summons, not just controlled pets SPELL_AURA_PLAY_SCENE = 430, SPELL_AURA_MOD_OVERRIDE_ZONE_PVP_TYPE = 431, // NYI SPELL_AURA_432 = 432, @@ -542,11 +542,11 @@ enum AuraType : uint32 SPELL_AURA_MOD_STAT_BONUS_PCT = 467, // Affects stat gain from all sources except base stats SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT = 468, // Triggers spell when health goes above (MiscA = 0) or falls below (MiscA = 1) specified percent value (once, not every time condition has meet) SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY = 469, - SPELL_AURA_470 = 470, + SPELL_AURA_MOD_AURA_TIME_RATE_BY_SPELL_LABEL = 470, // NYI SPELL_AURA_MOD_VERSATILITY = 471, SPELL_AURA_472 = 472, SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT = 473, // Prevents durability loss from dealing/taking damage - SPELL_AURA_474 = 474, + SPELL_AURA_REPLACE_ITEM_BONUS_TREE = 474, // NYI SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED = 475, SPELL_AURA_MOD_CURRENCY_GAIN_LOOTED = 476, SPELL_AURA_477 = 477, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 7bbf761b7d2..9bff264eb5c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -347,7 +347,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModDisarm, //278 SPELL_AURA_MOD_DISARM_RANGED disarm ranged weapon &AuraEffect::HandleNoImmediateEffect, //279 SPELL_AURA_INITIALIZE_IMAGES &AuraEffect::HandleUnused, //280 unused (4.3.4) old SPELL_AURA_MOD_ARMOR_PENETRATION_PCT - &AuraEffect::HandleNULL, //281 SPELL_AURA_MOD_GUILD_REPUTATION_GAIN_PCT + &AuraEffect::HandleNoImmediateEffect, //281 SPELL_AURA_PROVIDE_SPELL_FOCUS implemented in Spell::CheckCast &AuraEffect::HandleAuraIncreaseBaseHealthPercent, //282 SPELL_AURA_MOD_BASE_HEALTH_PCT &AuraEffect::HandleNoImmediateEffect, //283 SPELL_AURA_MOD_HEALING_RECEIVED implemented in Unit::SpellHealingBonus &AuraEffect::HandleAuraLinked, //284 SPELL_AURA_LINKED @@ -373,8 +373,8 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleAuraModFakeInebriation, //304 SPELL_AURA_MOD_DRUNK &AuraEffect::HandleAuraModIncreaseSpeed, //305 SPELL_AURA_MOD_MINIMUM_SPEED &AuraEffect::HandleUnused, //306 unused (4.3.4) - &AuraEffect::HandleUnused, //307 unused (4.3.4) - &AuraEffect::HandleNoImmediateEffect, //308 SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER implemented in Unit::GetUnitCriticalChance and Unit::GetUnitSpellCriticalChance + &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 @@ -382,7 +382,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleUnused, //313 unused (4.3.4) &AuraEffect::HandlePreventResurrection, //314 SPELL_AURA_PREVENT_RESURRECTION todo &AuraEffect::HandleNoImmediateEffect, //315 SPELL_AURA_UNDERWATER_WALKING todo - &AuraEffect::HandleNoImmediateEffect, //316 unused (4.3.4) old SPELL_AURA_PERIODIC_HASTE + &AuraEffect::HandleNULL, //316 SPELL_AURA_SCHOOL_ABSORB_OVERKILL &AuraEffect::HandleNULL, //317 SPELL_AURA_MOD_SPELL_POWER_PCT &AuraEffect::HandleMastery, //318 SPELL_AURA_MASTERY &AuraEffect::HandleModMeleeSpeedPct, //319 SPELL_AURA_MOD_MELEE_HASTE_3 @@ -393,7 +393,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //324 SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK &AuraEffect::HandleUnused, //325 SPELL_AURA_LEARN_PVP_TALENT &AuraEffect::HandlePhaseGroup, //326 SPELL_AURA_PHASE_GROUP - &AuraEffect::HandleUnused, //327 unused (4.3.4) + &AuraEffect::HandleNULL, //327 SPELL_AURA_PHASE_ALWAYS_VISIBLE &AuraEffect::HandleNULL, //328 SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT &AuraEffect::HandleNULL, //329 SPELL_AURA_MOD_POWER_GAIN_PCT &AuraEffect::HandleNoImmediateEffect, //330 SPELL_AURA_CAST_WHILE_WALKING @@ -405,7 +405,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //336 SPELL_AURA_MOUNT_RESTRICTIONS implemented in Unit::GetMountCapability &AuraEffect::HandleNoImmediateEffect, //337 SPELL_AURA_MOD_VENDOR_ITEMS_PRICES &AuraEffect::HandleNoImmediateEffect, //338 SPELL_AURA_MOD_DURABILITY_LOSS - &AuraEffect::HandleNULL, //339 SPELL_AURA_INCREASE_SKILL_GAIN_CHANCE + &AuraEffect::HandleNoImmediateEffect, //339 SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER implemented in Unit::GetUnitCriticalChance and Unit::GetUnitSpellCriticalChance &AuraEffect::HandleNULL, //340 SPELL_AURA_MOD_RESURRECTED_HEALTH_BY_GUILD_MEMBER &AuraEffect::HandleModSpellCategoryCooldown, //341 SPELL_AURA_MOD_SPELL_CATEGORY_COOLDOWN &AuraEffect::HandleModMeleeRangedSpeedPct, //342 SPELL_AURA_MOD_MELEE_RANGED_HASTE_2 @@ -422,10 +422,10 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //353 SPELL_AURA_MOD_CAMOUFLAGE &AuraEffect::HandleNULL, //354 SPELL_AURA_354 &AuraEffect::HandleNULL, //355 SPELL_AURA_MOD_CASTING_SPEED - &AuraEffect::HandleNULL, //356 SPELL_AURA_356 + &AuraEffect::HandleNoImmediateEffect, //356 SPELL_AURA_PROVIDE_TOTEM_CATEGORY implemented in Player::HasItemTotemCategory &AuraEffect::HandleNULL, //357 SPELL_AURA_ENABLE_BOSS1_UNIT_FRAME &AuraEffect::HandleNULL, //358 SPELL_AURA_358 - &AuraEffect::HandleNULL, //359 SPELL_AURA_359 + &AuraEffect::HandleNoImmediateEffect, //359 SPELL_AURA_MOD_HEALING_DONE_VERSUS_AURASTATE implemented in Unit::SpellHealingPctDone &AuraEffect::HandleNULL, //360 SPELL_AURA_PROC_TRIGGER_SPELL_COPY &AuraEffect::HandleNoImmediateEffect, //361 SPELL_AURA_OVERRIDE_AUTOATTACK_WITH_MELEE_SPELL implemented in Unit::AttackerStateUpdate &AuraEffect::HandleUnused, //362 unused (4.3.4) @@ -436,7 +436,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //367 SPELL_AURA_OVERRIDE_AUTOATTACK_WITH_RANGED_SPELL &AuraEffect::HandleUnused, //368 unused (4.3.4) &AuraEffect::HandleNULL, //369 SPELL_AURA_ENABLE_POWER_BAR_TIMER - &AuraEffect::HandleNULL, //370 SPELL_AURA_SET_FAIR_FAR_CLIP + &AuraEffect::HandleNULL, //370 SPELL_AURA_SPELL_OVERRIDE_NAME_GROUP &AuraEffect::HandleNULL, //371 &AuraEffect::HandleNULL, //372 &AuraEffect::HandleNULL, //373 SPELL_AURA_MOD_SPEED_NO_CONTROL @@ -447,7 +447,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //378 &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, //381 + &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 @@ -465,7 +465,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //396 SPELL_AURA_TRIGGER_SPELL_ON_POWER_AMOUNT &AuraEffect::HandleNULL, //397 &AuraEffect::HandleNULL, //398 - &AuraEffect::HandleNULL, //399 + &AuraEffect::HandleNULL, //399 SPELL_AURA_MOD_TIME_RATE &AuraEffect::HandleAuraModSkill, //400 SPELL_AURA_MOD_SKILL_2 &AuraEffect::HandleNULL, //401 &AuraEffect::HandleAuraModOverridePowerDisplay, //402 SPELL_AURA_MOD_OVERRIDE_POWER_DISPLAY @@ -474,7 +474,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModRatingPct, //405 SPELL_AURA_MOD_RATING_PCT &AuraEffect::HandleNULL, //406 SPELL_AURA_KEYBOUND_OVERRIDE &AuraEffect::HandleNULL, //407 SPELL_AURA_MOD_FEAR_2 - &AuraEffect::HandleNULL, //408 + &AuraEffect::HandleUnused, //408 SPELL_AURA_SET_ACTION_BUTTON_SPELL_COUNT clientside &AuraEffect::HandleAuraCanTurnWhileFalling, //409 SPELL_AURA_CAN_TURN_WHILE_FALLING &AuraEffect::HandleNULL, //410 &AuraEffect::HandleNoImmediateEffect, //411 SPELL_AURA_MOD_MAX_CHARGES implemented in SpellHistory::GetMaxCharges @@ -490,12 +490,12 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //421 SPELL_AURA_MOD_ABSORB_EFFECTS_DONE_PCT &AuraEffect::HandleNULL, //422 SPELL_AURA_MOD_ABSORB_EFFECTS_TAKEN_PCT &AuraEffect::HandleNULL, //423 - &AuraEffect::HandleNULL, //424 + &AuraEffect::HandleNULL, //424 SPELL_AURA_CASTER_IGNORE_LOS &AuraEffect::HandleNULL, //425 &AuraEffect::HandleNULL, //426 &AuraEffect::HandleNULL, //427 SPELL_AURA_SCALE_PLAYER_LEVEL &AuraEffect::HandleLinkedSummon, //428 SPELL_AURA_LINKED_SUMMON - &AuraEffect::HandleNULL, //429 + &AuraEffect::HandleNULL, //429 SPELL_AURA_MOD_SUMMON_DAMAGE &AuraEffect::HandlePlayScene, //430 SPELL_AURA_PLAY_SCENE &AuraEffect::HandleModOverrideZonePVPType, //431 SPELL_AURA_MOD_OVERRIDE_ZONE_PVP_TYPE &AuraEffect::HandleNULL, //432 @@ -536,11 +536,11 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleModStatBonusPercent, //467 SPELL_AURA_MOD_STAT_BONUS_PCT &AuraEffect::HandleNULL, //468 SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT &AuraEffect::HandleShowConfirmationPrompt, //469 SPELL_AURA_SHOW_CONFIRMATION_PROMPT_WITH_DIFFICULTY - &AuraEffect::HandleNULL, //470 + &AuraEffect::HandleNULL, //470 SPELL_AURA_MOD_AURA_TIME_RATE_BY_SPELL_LABEL &AuraEffect::HandleModVersatilityByPct, //471 SPELL_AURA_MOD_VERSATILITY &AuraEffect::HandleNULL, //472 &AuraEffect::HandleNoImmediateEffect, //473 SPELL_AURA_PREVENT_DURABILITY_LOSS_FROM_COMBAT implemented in Player::DurabilityPointLossForEquipSlot - &AuraEffect::HandleNULL, //474 + &AuraEffect::HandleNULL, //474 SPELL_AURA_REPLACE_ITEM_BONUS_TREE &AuraEffect::HandleAllowUsingGameobjectsWhileMounted, //475 SPELL_AURA_ALLOW_USING_GAMEOBJECTS_WHILE_MOUNTED &AuraEffect::HandleNULL, //476 SPELL_AURA_MOD_CURRENCY_GAIN_LOOTED &AuraEffect::HandleNULL, //477 diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index fc11311fdc3..fb494c2e233 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5172,9 +5172,12 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint // check spell focus object if (m_spellInfo->RequiresSpellFocus) { - focusObject = SearchSpellFocus(); - if (!focusObject) - return SPELL_FAILED_REQUIRES_SPELL_FOCUS; + if (!m_caster->HasAuraTypeWithMiscvalue(SPELL_AURA_PROVIDE_SPELL_FOCUS, m_spellInfo->RequiresSpellFocus)) + { + focusObject = SearchSpellFocus(); + if (!focusObject) + return SPELL_FAILED_REQUIRES_SPELL_FOCUS; + } } SpellCastResult castResult = SPELL_CAST_OK; diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index 240acf77813..468f1f07863 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -828,8 +828,8 @@ class spell_baleroc_vital_flame : public AuraScript void Register() override { - OnEffectApply += AuraEffectApplyFn(spell_baleroc_vital_flame::OnApply, EFFECT_0, SPELL_AURA_359, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_baleroc_vital_flame::OnRemove, EFFECT_0, SPELL_AURA_359, AURA_EFFECT_HANDLE_REAL); + OnEffectApply += AuraEffectApplyFn(spell_baleroc_vital_flame::OnApply, EFFECT_0, SPELL_AURA_MOD_HEALING_DONE_VERSUS_AURASTATE, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_baleroc_vital_flame::OnRemove, EFFECT_0, SPELL_AURA_MOD_HEALING_DONE_VERSUS_AURASTATE, AURA_EFFECT_HANDLE_REAL); } uint32 stacks = 0u; |