diff options
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 26 |
1 files changed, 7 insertions, 19 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c3ee6c0288f..e82790df46a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12895,25 +12895,13 @@ void Unit::ModSpellCastTime(SpellInfo const* spellInfo, int32 & castTime, Spell* if (Player* modOwner = GetSpellModOwner()) modOwner->ApplySpellMod(spellInfo->Id, SPELLMOD_CASTING_TIME, castTime, spell); - switch (spellInfo->DmgClass) - { - case SPELL_DAMAGE_CLASS_NONE: - if (spellInfo->AttributesEx5 & SPELL_ATTR5_HASTE_AFFECT_DURATION) // required double check - castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED)); - else if (spellInfo->SpellVisual[0] == 3881 && HasAura(67556)) // cooking with Chef Hat. - castTime = 500; - break; - case SPELL_DAMAGE_CLASS_MELEE: - break; // no known cases - case SPELL_DAMAGE_CLASS_MAGIC: - castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED)); - break; - case SPELL_DAMAGE_CLASS_RANGED: - castTime = int32(float(castTime) * m_modAttackSpeedPct[RANGED_ATTACK]); - break; - default: - break; - } + if (!((spellInfo->Attributes & (SPELL_ATTR0_ABILITY | SPELL_ATTR0_TRADESPELL)) || (spellInfo->AttributesEx3 & SPELL_ATTR3_NO_DONE_BONUS)) && + ((GetTypeId() == TYPEID_PLAYER && spellInfo->SpellFamilyName) || GetTypeId() == TYPEID_UNIT)) + castTime = int32(float(castTime) * GetFloatValue(UNIT_MOD_CAST_SPEED)); + else if (spellInfo->Attributes & SPELL_ATTR0_REQ_AMMO && !(spellInfo->AttributesEx2 & SPELL_ATTR2_AUTOREPEAT_FLAG)) + castTime = int32(float(castTime) * m_modAttackSpeedPct[RANGED_ATTACK]); + else if (spellInfo->SpellVisual[0] == 3881 && HasAura(67556)) // cooking with Chef Hat. + castTime = 500; } DiminishingLevels Unit::GetDiminishing(DiminishingGroup group) |