From d560503a0342d66741d70a992b04dd76f7d0999f Mon Sep 17 00:00:00 2001 From: SilverIce Date: Fri, 3 Dec 2010 04:11:52 +0200 Subject: [PATCH] [10819] Fixed creature's speed recalculation, forgotten DB speed mods are used now Also properly update speeds at creature entry change(in case there are aura speed bonuses), thanks to Vladimir for pointing --- src/game/Creature.cpp | 7 +++---- src/game/Unit.cpp | 16 ++++++++++++++++ src/shared/revision_nr.h | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 4bb3c7eb8..ec637db18 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -283,10 +283,9 @@ bool Creature::InitEntry(uint32 Entry, const CreatureData *data ) SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); - SetSpeedRate(MOVE_WALK, cinfo->speed_walk); - SetSpeedRate(MOVE_RUN, cinfo->speed_run); - SetSpeedRate(MOVE_SWIM, 1.0f); // using 1.0 rate - SetSpeedRate(MOVE_FLIGHT, 1.0f); // using 1.0 rate + // update speed for the new CreatureInfo base speed mods + UpdateSpeed(MOVE_WALK, false); + UpdateSpeed(MOVE_RUN, false); // checked at loading m_defaultMovementType = MovementGeneratorType(cinfo->MovementType); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 7d643382e..ba0a46c1e 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8250,6 +8250,22 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced, float ratio) if (speed < min_speed) speed = min_speed; } + + if (GetTypeId() == TYPEID_UNIT) + { + switch(mtype) + { + case MOVE_RUN: + speed *= ((Creature*)this)->GetCreatureInfo()->speed_run; + break; + case MOVE_WALK: + speed *= ((Creature*)this)->GetCreatureInfo()->speed_walk; + break; + default: + break; + } + } + SetSpeedRate(mtype, speed * ratio, forced); } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index bd22554fe..87f2e02d4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10818" + #define REVISION_NR "10819" #endif // __REVISION_NR_H__