aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-01-03 21:24:19 -0600
committermegamage <none@none>2009-01-03 21:24:19 -0600
commit5d4dcba0de0d764ae9bf81071171ef41e377b063 (patch)
tree6d4f30e331d8e2778d12ff146640f55d75b5e859 /src/game/Unit.cpp
parent3c1691497d189836adcc0e5fd702665a602cb266 (diff)
*Update pet's speed when pet is incombat rather than when owner is in combat.
--HG-- branch : trunk
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp33
1 files changed, 17 insertions, 16 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index ee4ca89eaa5..8582d262e3a 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -9757,18 +9757,16 @@ void Unit::SetInCombatState(bool PvP)
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
- if(isCharmed() || GetTypeId()!=TYPEID_PLAYER && ((Creature*)this)->isPet())
- SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
-
- if(GetTypeId() == TYPEID_PLAYER && GetPetGUID())
+ if(GetTypeId() != TYPEID_PLAYER && ((Creature*)this)->isPet())
{
- if(Pet *pet = GetPet())
- {
- pet->UpdateSpeed(MOVE_RUN, true);
- pet->UpdateSpeed(MOVE_SWIM, true);
- pet->UpdateSpeed(MOVE_FLIGHT, true);
- }
+ UpdateSpeed(MOVE_RUN, true);
+ UpdateSpeed(MOVE_SWIM, true);
+ UpdateSpeed(MOVE_FLIGHT, true);
}
+ else if(!isCharmed())
+ return;
+
+ SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
}
void Unit::ClearInCombat()
@@ -9776,19 +9774,22 @@ void Unit::ClearInCombat()
m_CombatTimer = 0;
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
- if(isCharmed() || GetTypeId()!=TYPEID_PLAYER && ((Creature*)this)->isPet())
- RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
-
// Player's state will be cleared in Player::UpdateContestedPvP
if(GetTypeId()!=TYPEID_PLAYER)
clearUnitState(UNIT_STAT_ATTACK_PLAYER);
- if(GetTypeId() == TYPEID_PLAYER && GetPetGUID())
+ if(GetTypeId() != TYPEID_PLAYER && ((Creature*)this)->isPet())
{
- if(Pet *pet = GetPet())
+ if(Unit *owner = GetOwner())
+ {
for(int i = 0; i < MAX_MOVE_TYPE; ++i)
- pet->SetSpeed(UnitMoveType(i), m_speed_rate[i], true);
+ SetSpeed(UnitMoveType(i), owner->GetSpeedRate(UnitMoveType(i)), true);
+ }
}
+ else if(!isCharmed())
+ return;
+
+ RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
}
//TODO: remove this function