Implementation. Note - The speeds have to be adjusted in Database to match the Pet attack speeds:
http://www.wow-petopia.com/classic/attackspeed.php
diff --git a/src/game/Object/Pet.cpp b/src/game/Object/Pet.cpp
index 7ec1822..37ac5d9 100644
--- a/src/game/Object/Pet.cpp
+++ b/src/game/Object/Pet.cpp
@@ -1092,9 +1092,30 @@ bool Pet::InitStatsForLevel(uint32 petlevel, Unit* owner)
SetModifierValue(UNIT_MOD_ARMOR, BASE_VALUE, float(petlevel * 50));
- SetAttackTime(BASE_ATTACK, cinfo->MeleeBaseAttackTime);
- SetAttackTime(OFF_ATTACK, cinfo->MeleeBaseAttackTime);
- SetAttackTime(RANGED_ATTACK, cinfo->RangedBaseAttackTime);
+ CreatureInfo const* creatureInfo = ObjectMgr::GetCreatureTemplate(creature_ID);
+ if (creatureInfo)
+ {
+ if (creatureInfo->MeleeBaseAttackTime > 0)
+ SetAttackTime(BASE_ATTACK, creatureInfo->MeleeBaseAttackTime);
+ else
+ SetAttackTime(BASE_ATTACK, BASE_ATTACK_TIME);
+
+ if (creatureInfo->MeleeBaseAttackTime > 0)
+ SetAttackTime(OFF_ATTACK, creatureInfo->MeleeBaseAttackTime);
+ else
+ SetAttackTime(OFF_ATTACK, BASE_ATTACK_TIME);
+
+ if (creatureInfo->RangedBaseAttackTime > 0)
+ SetAttackTime(RANGED_ATTACK, creatureInfo->RangedBaseAttackTime);
+ else
+ SetAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
+ }
+ else
+ {
+ SetAttackTime(BASE_ATTACK, BASE_ATTACK_TIME);
+ SetAttackTime(OFF_ATTACK, BASE_ATTACK_TIME);
+ SetAttackTime(RANGED_ATTACK, BASE_ATTACK_TIME);
+ }
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0);