aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Unit.cpp18
-rw-r--r--src/game/Unit.h1
-rw-r--r--src/game/World.cpp2
-rw-r--r--src/trinitycore/trinitycore.conf.dist2
4 files changed, 16 insertions, 7 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index ec9d836bda5..f5437310046 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -68,6 +68,17 @@ float baseMoveSpeed[MAX_MOVE_TYPE] =
4.5f, // MOVE_FLIGHT_BACK
3.14f // MOVE_PITCH_RATE
};
+float playerBaseMoveSpeed[MAX_MOVE_TYPE] = {
+ 2.5f, // MOVE_WALK
+ 7.0f, // MOVE_RUN
+ 3.0f, // MOVE_RUN_BACK
+ 4.722222f, // MOVE_SWIM
+ 4.5f, // MOVE_SWIM_BACK
+ 3.141594f, // MOVE_TURN_RATE
+ 7.0f, // MOVE_FLIGHT
+ 4.5f, // MOVE_FLIGHT_BACK
+ 3.14f // MOVE_PITCH_RATE
+};
// Used for prepare can/can`t triggr aura
static bool InitTriggerAuraData();
@@ -10860,7 +10871,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
non_stack_bonus = (100.0 + GetMaxPositiveAuraModifier(SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK))/100.0f;
- // Update speed for vehicle if avalible
+ // Update speed for vehicle if available
if (GetTypeId()==TYPEID_PLAYER && GetVehicle())
GetVehicleBase()->UpdateSpeed(MOVE_FLIGHT, true);
break;
@@ -10890,7 +10901,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
if(int32 normalization = GetMaxPositiveAuraModifier(SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED))
{
// Use speed from aura
- float max_speed = normalization / baseMoveSpeed[mtype];
+ float max_speed = normalization / (IsControlledByPlayer() ? playerBaseMoveSpeed[mtype] : baseMoveSpeed[mtype]);
if (speed > max_speed)
speed = max_speed;
}
@@ -10900,9 +10911,6 @@ void Unit::UpdateSpeed(UnitMoveType mtype, bool forced)
break;
}
- // Only players and pets should get speed increase from Rate.MoveSpeed
- if(GetTypeId() != TYPEID_PLAYER && GetOwner()->GetTypeId() != TYPEID_PLAYER) speed /= sWorld.getRate(RATE_MOVESPEED);
-
// Apply strongest slow aura mod to speed
int32 slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED);
if (slow)
diff --git a/src/game/Unit.h b/src/game/Unit.h
index 402debfaa4e..608dffcccd9 100644
--- a/src/game/Unit.h
+++ b/src/game/Unit.h
@@ -481,6 +481,7 @@ enum UnitMoveType
#define MAX_MOVE_TYPE 9
extern float baseMoveSpeed[MAX_MOVE_TYPE];
+extern float playerBaseMoveSpeed[MAX_MOVE_TYPE];
enum WeaponAttackType
{
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 0aa2551e5c4..0923ec3cbbd 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -524,7 +524,7 @@ void World::LoadConfigSettings(bool reload)
sLog.outError("Rate.MoveSpeed (%f) must be > 0. Using 1 instead.",rate_values[RATE_MOVESPEED]);
rate_values[RATE_MOVESPEED] = 1.0f;
}
- for(uint8 i = 0; i < MAX_MOVE_TYPE; ++i) baseMoveSpeed[i] *= rate_values[RATE_MOVESPEED];
+ for(uint8 i = 0; i < MAX_MOVE_TYPE; ++i) playerBaseMoveSpeed[i] = baseMoveSpeed[i] * rate_values[RATE_MOVESPEED];
rate_values[RATE_CORPSE_DECAY_LOOTED] = sConfig.GetFloatDefault("Rate.Corpse.Decay.Looted",0.5f);
rate_values[RATE_TARGET_POS_RECALCULATION_RANGE] = sConfig.GetFloatDefault("TargetPosRecalculateRange",1.5f);
diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist
index 483095c9182..963a7c29bb7 100644
--- a/src/trinitycore/trinitycore.conf.dist
+++ b/src/trinitycore/trinitycore.conf.dist
@@ -1259,7 +1259,7 @@ Visibility.Distance.Grey.Object = 10
# Default: 1
#
# Rate.MoveSpeed
-# Multiply the default movement speed for players and their pets.
+# Multiply the default movement speed for players, and whatever they're controlling.
# Default: 1 - no change
# 1.4 - 40% increase
#