aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp6
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp8
-rw-r--r--src/server/game/Entities/Player/Player.cpp22
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp87
-rw-r--r--src/server/game/Entities/Unit/Unit.h12
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp2
-rw-r--r--src/server/game/Spells/SpellHistory.cpp4
-rw-r--r--src/server/game/Spells/SpellInfo.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp2
-rw-r--r--src/server/scripts/Pet/pet_hunter.cpp2
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp2
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp2
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp2
-rw-r--r--src/server/scripts/World/mob_generic_creature.cpp2
15 files changed, 79 insertions, 78 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 9c1089392d9..a4a9b0b4e53 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -437,9 +437,9 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/)
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
- SetAttackTime(BASE_ATTACK, cInfo->BaseAttackTime);
- SetAttackTime(OFF_ATTACK, cInfo->BaseAttackTime);
- SetAttackTime(RANGED_ATTACK, cInfo->RangeAttackTime);
+ SetBaseAttackTime(BASE_ATTACK, cInfo->BaseAttackTime);
+ SetBaseAttackTime(OFF_ATTACK, cInfo->BaseAttackTime);
+ SetBaseAttackTime(RANGED_ATTACK, cInfo->RangeAttackTime);
SelectLevel();
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 3f104ffe8e9..88737925b5c 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -828,9 +828,9 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, float(petlevel*50));
- SetAttackTime(BASE_ATTACK, BASE_ATTACK_TIME);
- SetAttackTime(OFF_ATTACK, BASE_ATTACK_TIME);
- SetAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(BASE_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(OFF_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f);
SetFloatValue(UNIT_MOD_CAST_HASTE, 1.0f);
@@ -981,7 +981,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
SetCreateHealth(30*petlevel);
// wolf attack speed is 1.5s
- SetAttackTime(BASE_ATTACK, cinfo->BaseAttackTime);
+ SetBaseAttackTime(BASE_ATTACK, cinfo->BaseAttackTime);
SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float((petlevel * 4 - petlevel)));
SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float((petlevel * 4 + petlevel)));
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 91166e411e7..c88f7933704 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2567,9 +2567,9 @@ void Player::InitStatsForLevel(bool reapplyMods)
SetFloatValue(PLAYER_FIELD_MOD_SPELL_POWER_PCT, 1.0f);
//reset attack power, damage and attack speed fields
- SetFloatValue(UNIT_FIELD_BASEATTACKTIME, 2000.0f);
- SetFloatValue(UNIT_FIELD_BASEATTACKTIME + 1, 2000.0f); // offhand attack time
- SetFloatValue(UNIT_FIELD_RANGEDATTACKTIME, 2000.0f);
+ SetBaseAttackTime(BASE_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(OFF_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
SetFloatValue(UNIT_FIELD_MINDAMAGE, 0.0f);
SetFloatValue(UNIT_FIELD_MAXDAMAGE, 0.0f);
@@ -5170,10 +5170,10 @@ void Player::SetRegularAttackTime()
{
ItemTemplate const* proto = tmpitem->GetTemplate();
if (proto->GetDelay())
- SetAttackTime(WeaponAttackType(i), proto->GetDelay());
+ SetBaseAttackTime(WeaponAttackType(i), proto->GetDelay());
}
else
- SetAttackTime(WeaponAttackType(i), BASE_ATTACK_TIME); // If there is no weapon reset attack time to base (might have been changed from forms)
+ SetBaseAttackTime(WeaponAttackType(i), BASE_ATTACK_TIME); // If there is no weapon reset attack time to base (might have been changed from forms)
}
}
@@ -7467,7 +7467,7 @@ void Player::_ApplyWeaponDamage(uint8 slot, Item* item, bool apply)
SpellShapeshiftFormEntry const* shapeshift = sSpellShapeshiftFormStore.LookupEntry(GetShapeshiftForm());
if (proto->GetDelay() && !(shapeshift && shapeshift->CombatRoundTime))
- SetAttackTime(attType, apply ? proto->GetDelay() : BASE_ATTACK_TIME);
+ SetBaseAttackTime(attType, apply ? proto->GetDelay() : BASE_ATTACK_TIME);
if (CanModifyStats() && (damage || proto->GetDelay()))
UpdateDamagePhysical(attType);
@@ -7748,7 +7748,7 @@ void Player::CastItemCombatSpell(Unit* target, WeaponAttackType attType, uint32
if (proto->SpellPPMRate)
{
- uint32 WeaponSpeed = GetAttackTime(attType);
+ uint32 WeaponSpeed = GetBaseAttackTime(attType);
chance = GetPPMProcChance(WeaponSpeed, proto->SpellPPMRate, spellInfo);
}
else if (chance > 100.0f)
@@ -20414,7 +20414,7 @@ void Player::outDebugValues() const
TC_LOG_DEBUG("entities.unit", "MIN_DAMAGE is: \t\t%f\tMAX_DAMAGE is: \t\t%f", GetFloatValue(UNIT_FIELD_MINDAMAGE), GetFloatValue(UNIT_FIELD_MAXDAMAGE));
TC_LOG_DEBUG("entities.unit", "MIN_OFFHAND_DAMAGE is: \t%f\tMAX_OFFHAND_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE), GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE));
TC_LOG_DEBUG("entities.unit", "MIN_RANGED_DAMAGE is: \t%f\tMAX_RANGED_DAMAGE is: \t%f", GetFloatValue(UNIT_FIELD_MINRANGEDDAMAGE), GetFloatValue(UNIT_FIELD_MAXRANGEDDAMAGE));
- TC_LOG_DEBUG("entities.unit", "ATTACK_TIME is: \t%u\t\tRANGE_ATTACK_TIME is: \t%u", GetAttackTime(BASE_ATTACK), GetAttackTime(RANGED_ATTACK));
+ TC_LOG_DEBUG("entities.unit", "ATTACK_TIME is: \t%u\t\tRANGE_ATTACK_TIME is: \t%u", GetBaseAttackTime(BASE_ATTACK), GetBaseAttackTime(RANGED_ATTACK));
}
/*********************************************************/
@@ -21683,9 +21683,9 @@ void Player::InitDataForForm(bool reapplyMods)
SpellShapeshiftFormEntry const* ssEntry = sSpellShapeshiftFormStore.LookupEntry(form);
if (ssEntry && ssEntry->CombatRoundTime)
{
- SetAttackTime(BASE_ATTACK, ssEntry->CombatRoundTime);
- SetAttackTime(OFF_ATTACK, ssEntry->CombatRoundTime);
- SetAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
+ SetBaseAttackTime(BASE_ATTACK, ssEntry->CombatRoundTime);
+ SetBaseAttackTime(OFF_ATTACK, ssEntry->CombatRoundTime);
+ SetBaseAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
}
else
SetRegularAttackTime();
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index dac82f8302a..c5bbecfdb5e 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -1208,7 +1208,7 @@ void Guardian::UpdateDamagePhysical(WeaponAttackType attType)
UnitMods unitMod = UNIT_MOD_DAMAGE_MAINHAND;
- float att_speed = float(GetAttackTime(BASE_ATTACK))/1000.0f;
+ float att_speed = float(GetBaseAttackTime(BASE_ATTACK))/1000.0f;
float base_value = GetModifierValue(unitMod, BASE_VALUE) + GetTotalAttackPowerValue(attType)/ 3.5f * att_speed + bonusDamage;
float base_pct = GetModifierValue(unitMod, BASE_PCT);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 8625ba31b9d..bc470d0ea1e 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -209,12 +209,12 @@ Unit::Unit(bool isWorldObject) :
m_updateFlag = UPDATEFLAG_LIVING;
- m_attackTimer[BASE_ATTACK] = 0;
- m_attackTimer[OFF_ATTACK] = 0;
- m_attackTimer[RANGED_ATTACK] = 0;
- m_modAttackSpeedPct[BASE_ATTACK] = 1.0f;
- m_modAttackSpeedPct[OFF_ATTACK] = 1.0f;
- m_modAttackSpeedPct[RANGED_ATTACK] = 1.0f;
+ for (uint32 i = 0; i < MAX_ATTACK; ++i)
+ {
+ m_baseAttackSpeed[i] = 0;
+ m_modAttackSpeedPct[i] = 1.0f;
+ m_attackTimer[i] = 0;
+ }
m_extraAttacks = 0;
m_canDualWield = false;
@@ -482,7 +482,7 @@ void Unit::DisableSpline()
void Unit::resetAttackTimer(WeaponAttackType type)
{
- m_attackTimer[type] = uint32(GetAttackTime(type) * m_modAttackSpeedPct[type]);
+ m_attackTimer[type] = uint32(GetBaseAttackTime(type) * m_modAttackSpeedPct[type]);
}
bool Unit::IsWithinCombatRange(const Unit* obj, float dist2compare) const
@@ -677,7 +677,7 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam
// Rage from Damage made (only from direct weapon damage)
if (cleanDamage && (cleanDamage->attackType == BASE_ATTACK || cleanDamage->attackType == OFF_ATTACK) && damagetype == DIRECT_DAMAGE && this != victim && getPowerType() == POWER_RAGE)
{
- uint32 rage = uint32(GetAttackTime(cleanDamage->attackType) / 1000.f * 1.75f);
+ uint32 rage = uint32(GetBaseAttackTime(cleanDamage->attackType) / 1000.f * 1.75f);
if (cleanDamage->attackType == OFF_ATTACK)
rage /= 2;
RewardRage(rage);
@@ -1309,7 +1309,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
// Reduce attack time
if (victim->haveOffhandWeapon() && offtime < basetime)
{
- float percent20 = victim->GetAttackTime(OFF_ATTACK) * 0.20f;
+ float percent20 = victim->GetBaseAttackTime(OFF_ATTACK) * 0.20f;
float percent60 = 3.0f * percent20;
if (offtime > percent20 && offtime <= percent60)
victim->setAttackTimer(OFF_ATTACK, uint32(percent20));
@@ -1321,7 +1321,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
}
else
{
- float percent20 = victim->GetAttackTime(BASE_ATTACK) * 0.20f;
+ float percent20 = victim->GetBaseAttackTime(BASE_ATTACK) * 0.20f;
float percent60 = 3.0f * percent20;
if (basetime > percent20 && basetime <= percent60)
victim->setAttackTimer(BASE_ATTACK, uint32(percent20));
@@ -9117,9 +9117,9 @@ float Unit::GetWeaponProcChance() const
// normalized proc chance for weapon attack speed
// (odd formula...)
if (isAttackReady(BASE_ATTACK))
- return (GetAttackTime(BASE_ATTACK) * 1.8f / 1000.0f);
+ return (GetBaseAttackTime(BASE_ATTACK) * 1.8f / 1000.0f);
else if (haveOffhandWeapon() && isAttackReady(OFF_ATTACK))
- return (GetAttackTime(OFF_ATTACK) * 1.6f / 1000.0f);
+ return (GetBaseAttackTime(OFF_ATTACK) * 1.6f / 1000.0f);
return 0;
}
@@ -9766,12 +9766,6 @@ int32 Unit::ModifyPowerPct(Powers power, float pct, bool apply)
return ModifyPower(power, (int32)amount - GetMaxPower(power));
}
-uint32 Unit::GetAttackTime(WeaponAttackType att) const
-{
- float f_BaseAttackTime = GetFloatValue(UNIT_FIELD_BASEATTACKTIME+att) / m_modAttackSpeedPct[att];
- return (uint32)f_BaseAttackTime;
-}
-
bool Unit::IsAlwaysVisibleFor(WorldObject const* seer) const
{
if (WorldObject::IsAlwaysVisibleFor(seer))
@@ -12423,36 +12417,46 @@ Unit* Unit::SelectNearbyTarget(Unit* exclude, float dist) const
return Trinity::Containers::SelectRandomContainerElement(targets);
}
+uint32 Unit::GetBaseAttackTime(WeaponAttackType att) const
+{
+ return m_baseAttackSpeed[att];
+}
+
+void Unit::SetBaseAttackTime(WeaponAttackType att, uint32 val)
+{
+ m_baseAttackSpeed[att] = val;
+ UpdateAttackTimeField(att);
+}
+
+void Unit::UpdateAttackTimeField(WeaponAttackType att)
+{
+ SetUInt32Value(UNIT_FIELD_BASEATTACKTIME + att, uint32(m_baseAttackSpeed[att] * m_modAttackSpeedPct[att]));
+}
+
void Unit::ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply)
{
- float remainingTimePct = (float)m_attackTimer[att] / (GetAttackTime(att) * m_modAttackSpeedPct[att]);
+ float remainingTimePct = float(m_attackTimer[att]) / (m_baseAttackSpeed[att] * m_modAttackSpeedPct[att]);
if (val > 0)
{
ApplyPercentModFloatVar(m_modAttackSpeedPct[att], val, !apply);
- ApplyPercentModFloatValue(UNIT_FIELD_BASEATTACKTIME+att, val, !apply);
- if (GetTypeId() == TYPEID_PLAYER)
- {
- if (att == BASE_ATTACK)
- ApplyPercentModFloatValue(UNIT_FIELD_MOD_HASTE, val, !apply);
- else if (att == RANGED_ATTACK)
- ApplyPercentModFloatValue(UNIT_FIELD_MOD_RANGED_HASTE, val, !apply);
- }
+ if (att == BASE_ATTACK)
+ ApplyPercentModFloatValue(UNIT_FIELD_MOD_HASTE, val, !apply);
+ else if (att == RANGED_ATTACK)
+ ApplyPercentModFloatValue(UNIT_FIELD_MOD_RANGED_HASTE, val, !apply);
}
else
{
ApplyPercentModFloatVar(m_modAttackSpeedPct[att], -val, apply);
- ApplyPercentModFloatValue(UNIT_FIELD_BASEATTACKTIME+att, -val, apply);
- if (GetTypeId() == TYPEID_PLAYER)
- {
- if (att == BASE_ATTACK)
- ApplyPercentModFloatValue(UNIT_FIELD_MOD_HASTE, -val, apply);
- else if (att == RANGED_ATTACK)
- ApplyPercentModFloatValue(UNIT_FIELD_MOD_RANGED_HASTE, -val, apply);
- }
+ if (att == BASE_ATTACK)
+ ApplyPercentModFloatValue(UNIT_FIELD_MOD_HASTE, -val, apply);
+ else if (att == RANGED_ATTACK)
+ ApplyPercentModFloatValue(UNIT_FIELD_MOD_RANGED_HASTE, -val, apply);
}
- m_attackTimer[att] = uint32(GetAttackTime(att) * m_modAttackSpeedPct[att] * remainingTimePct);
+
+ UpdateAttackTimeField(att);
+ m_attackTimer[att] = uint32(m_baseAttackSpeed[att] * m_modAttackSpeedPct[att] * remainingTimePct);
}
void Unit::ApplyCastTimePercentMod(float val, bool apply)
@@ -12618,7 +12622,7 @@ float Unit::CalculateDefaultCoefficient(SpellInfo const* spellInfo, DamageEffect
float Unit::GetAPMultiplier(WeaponAttackType attType, bool normalized)
{
if (GetTypeId() != TYPEID_PLAYER)
- return GetAttackTime(attType) / 1000.0f;
+ return GetBaseAttackTime(attType) / 1000.0f;
Item* weapon = ToPlayer()->GetWeaponForAttack(attType, true);
if (!weapon)
@@ -12855,12 +12859,12 @@ bool Unit::RollProcResult(Unit* victim, Aura* aura, WeaponAttackType attType, bo
{
if (!isVictim)
{
- uint32 weaponSpeed = GetAttackTime(attType);
+ uint32 weaponSpeed = GetBaseAttackTime(attType);
chance = GetPPMProcChance(weaponSpeed, spellProcEvent->ppmRate, spellInfo);
}
else if (victim)
{
- uint32 weaponSpeed = victim->GetAttackTime(attType);
+ uint32 weaponSpeed = victim->GetBaseAttackTime(attType);
chance = victim->GetPPMProcChance(weaponSpeed, spellProcEvent->ppmRate, spellInfo);
}
}
@@ -15841,11 +15845,6 @@ void Unit::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target)
*data << BuildAuraStateUpdateForTarget(target);
}
// FIXME: Some values at server stored in float format but must be sent to client in uint32 format
- else if (index >= UNIT_FIELD_BASEATTACKTIME && index <= UNIT_FIELD_RANGEDATTACKTIME)
- {
- // convert from float to uint32 and send
- *data << uint32(m_floatValues[index] < 0 ? 0 : m_floatValues[index]);
- }
// there are some float values which may be negative or can't get negative due to other checks
else if ((index >= UNIT_FIELD_NEGSTAT && index < UNIT_FIELD_NEGSTAT + MAX_STATS) ||
(index >= UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE && index < (UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE + MAX_SPELL_SCHOOL)) ||
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 8ceb636acb5..eaeb9bbb68c 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1476,8 +1476,9 @@ class TC_GAME_API Unit : public WorldObject
int32 ModifyPower(Powers power, int32 val);
int32 ModifyPowerPct(Powers power, float pct, bool apply = true);
- uint32 GetAttackTime(WeaponAttackType att) const;
- void SetAttackTime(WeaponAttackType att, uint32 val) { SetFloatValue(UNIT_FIELD_BASEATTACKTIME + att, val*m_modAttackSpeedPct[att]); }
+ uint32 GetBaseAttackTime(WeaponAttackType att) const;
+ void SetBaseAttackTime(WeaponAttackType att, uint32 val);
+ void UpdateAttackTimeField(WeaponAttackType att);
void ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply);
void ApplyCastTimePercentMod(float val, bool apply);
@@ -1970,7 +1971,10 @@ class TC_GAME_API Unit : public WorldObject
int32 m_baseSpellCritChance;
float m_threatModifier[MAX_SPELL_SCHOOL];
- float m_modAttackSpeedPct[3];
+
+ uint32 m_baseAttackSpeed[MAX_ATTACK];
+ float m_modAttackSpeedPct[MAX_ATTACK];
+ uint32 m_attackTimer[MAX_ATTACK];
// Event handler
EventProcessor m_Events;
@@ -2281,8 +2285,6 @@ class TC_GAME_API Unit : public WorldObject
bool m_AutoRepeatFirstCast;
- uint32 m_attackTimer[MAX_ATTACK];
-
float m_createStats[MAX_STATS];
AttackerSet m_attackers;
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index 4e846027e5d..5f3c193e3e2 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -1857,7 +1857,7 @@ float Aura::CalcProcChance(SpellProcEntry const& procEntry, ProcEventInfo& event
// calculate ppm chance if present and we're using weapon
if (eventInfo.GetDamageInfo() && procEntry.ratePerMinute != 0)
{
- uint32 WeaponSpeed = caster->GetAttackTime(eventInfo.GetDamageInfo()->GetAttackType());
+ uint32 WeaponSpeed = caster->GetBaseAttackTime(eventInfo.GetDamageInfo()->GetAttackType());
chance = caster->GetPPMProcChance(WeaponSpeed, procEntry.ratePerMinute, GetSpellInfo());
}
// apply chance modifer aura, applies also to ppm chance (see improved judgement of light spell)
diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp
index 657d6027594..7b4f3ecae78 100644
--- a/src/server/game/Spells/SpellHistory.cpp
+++ b/src/server/game/Spells/SpellHistory.cpp
@@ -407,10 +407,10 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel
}
else
{
- // shoot spells used equipped item cooldown values already assigned in GetAttackTime(RANGED_ATTACK)
+ // shoot spells used equipped item cooldown values already assigned in SetBaseAttackTime(RANGED_ATTACK)
// prevent 0 cooldowns set by another way
if (cooldown <= 0 && categoryCooldown <= 0 && (categoryId == 76 || (spellInfo->IsAutoRepeatRangedSpell() && spellInfo->Id != 75)))
- cooldown = _owner->GetAttackTime(RANGED_ATTACK);
+ cooldown = _owner->GetUInt32Value(UNIT_FIELD_RANGEDATTACKTIME);
// Now we have cooldown data (if found any), time to apply mods
if (Player* modOwner = _owner->GetSpellModOwner())
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 45a79f8c458..16b05fc6329 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2629,7 +2629,7 @@ std::vector<SpellInfo::CostData> SpellInfo::CalcPowerCost(Unit const* caster, Sp
if (HasAttribute(SPELL_ATTR3_REQ_OFFHAND))
slot = OFF_ATTACK;
- speed = caster->GetAttackTime(slot);
+ speed = caster->GetBaseAttackTime(slot);
}
powerCost += speed / 100;
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
index 2920f0787a4..f0dfbb70b20 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp
@@ -420,7 +420,7 @@ public:
//models
SetEquipmentSlots(false, EQUIP_ID_AXE, EQUIP_ID_AXE, EQUIP_NO_CHANGE);
- me->SetAttackTime(OFF_ATTACK, (me->GetAttackTime(BASE_ATTACK)*150)/100);
+ me->SetBaseAttackTime(OFF_ATTACK, (me->GetBaseAttackTime(BASE_ATTACK)*150)/100);
me->SetCanDualWield(true);
}
}
diff --git a/src/server/scripts/Pet/pet_hunter.cpp b/src/server/scripts/Pet/pet_hunter.cpp
index 321e44c8603..c2f51b18fcb 100644
--- a/src/server/scripts/Pet/pet_hunter.cpp
+++ b/src/server/scripts/Pet/pet_hunter.cpp
@@ -66,7 +66,7 @@ class npc_pet_hunter_snake_trap : public CreatureScript
me->SetMaxHealth(uint32(107 * (me->getLevel() - 40) * 0.025f));
// Add delta to make them not all hit the same time
uint32 delta = (rand32() % 7) * 100;
- me->SetAttackTime(BASE_ATTACK, Info->BaseAttackTime + delta);
+ me->SetBaseAttackTime(BASE_ATTACK, Info->BaseAttackTime + delta);
//me->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER, float(Info->attackpower));
// Start attacking attacker of owner on first ai update after spawn - move in line of sight may choose better target
diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp
index 5887aded51c..940f1593379 100644
--- a/src/server/scripts/Spells/spell_paladin.cpp
+++ b/src/server/scripts/Spells/spell_paladin.cpp
@@ -1196,7 +1196,7 @@ class spell_pal_seal_of_righteousness : public SpellScriptLoader
float ap = GetTarget()->GetTotalAttackPowerValue(BASE_ATTACK);
int32 holy = GetTarget()->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
holy += eventInfo.GetProcTarget()->SpellBaseDamageBonusTaken(SPELL_SCHOOL_MASK_HOLY);
- int32 bp = int32((ap * 0.022f + 0.044f * holy) * GetTarget()->GetAttackTime(BASE_ATTACK) / 1000);
+ int32 bp = int32((ap * 0.022f + 0.044f * holy) * GetTarget()->GetBaseAttackTime(BASE_ATTACK) / 1000);
GetTarget()->CastCustomSpell(SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS, SPELLVALUE_BASE_POINT0, bp, eventInfo.GetProcTarget(), true, NULL, aurEff);
}
diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp
index ce9ae033bcb..1d69ec37815 100644
--- a/src/server/scripts/Spells/spell_shaman.cpp
+++ b/src/server/scripts/Spells/spell_shaman.cpp
@@ -413,7 +413,7 @@ public:
PreventDefaultAction();
Unit* attacker = eventInfo.GetActor();
- int32 damage = int32(attacker->GetTotalAttackPowerValue(BASE_ATTACK) * 0.125f / 2600 * attacker->GetAttackTime(BASE_ATTACK));
+ int32 damage = int32(attacker->GetTotalAttackPowerValue(BASE_ATTACK) * 0.125f / 2600 * attacker->GetBaseAttackTime(BASE_ATTACK));
attacker->CastCustomSpell(SPELL_SHAMAN_FLAMETONGUE_ATTACK, SPELLVALUE_BASE_POINT0, damage, eventInfo.GetActionTarget(), TRIGGERED_FULL_MASK, nullptr, aurEff);
}
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index 5d686f6aa38..3fc820d90d9 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -469,7 +469,7 @@ class spell_warr_rend : public SpellScriptLoader
// $0.25 * (($MWB + $mwb) / 2 + $AP / 14 * $MWS) bonus per tick
float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);
- int32 mws = caster->GetAttackTime(BASE_ATTACK);
+ int32 mws = caster->GetBaseAttackTime(BASE_ATTACK);
float mwbMin = caster->GetWeaponDamageRange(BASE_ATTACK, MINDAMAGE);
float mwbMax = caster->GetWeaponDamageRange(BASE_ATTACK, MAXDAMAGE);
float mwb = ((mwbMin + mwbMax) / 2 + ap * mws / 14000) * 0.25f;
diff --git a/src/server/scripts/World/mob_generic_creature.cpp b/src/server/scripts/World/mob_generic_creature.cpp
index fd58f0b6a83..0371264a004 100644
--- a/src/server/scripts/World/mob_generic_creature.cpp
+++ b/src/server/scripts/World/mob_generic_creature.cpp
@@ -187,7 +187,7 @@ public:
trigger_periodicAI(Creature* creature) : NullCreatureAI(creature)
{
spell = me->m_spells[0] ? sSpellMgr->GetSpellInfo(me->m_spells[0]) : NULL;
- interval = me->GetAttackTime(BASE_ATTACK);
+ interval = me->GetBaseAttackTime(BASE_ATTACK);
timer = interval;
}