diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/Entities/Pet/Pet.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 22 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/StatSystem.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 87 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 12 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellHistory.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Pet/pet_hunter.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_paladin.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_shaman.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_warrior.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/World/mob_generic_creature.cpp | 2 |
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; } |
