aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp24
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h32
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp32
-rw-r--r--src/server/game/Spells/Spell.cpp9
-rw-r--r--src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp4
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;