Fix for issue . Rewrite of GetSpeed Function.

This commit is contained in:
devn00b 2022-10-27 22:21:55 +00:00
parent 6dd2e6680a
commit 63b2c7d54c

View file

@ -2124,25 +2124,36 @@ float Entity::CalculateCastingSpeedMod() {
float Entity::GetSpeed() {
float ret = speed > GetBaseSpeed() ? speed : GetBaseSpeed();
if (EngagedInCombat() && GetMaxSpeed() > 0.0f)
ret = GetMaxSpeed();
MStats.lock();
if ((IsStealthed() || IsInvis()) && stats.count(ITEM_STAT_STEALTHINVISSPEEDMOD))
if ((IsStealthed() || IsInvis()) && stats.count(ITEM_STAT_STEALTHINVISSPEEDMOD)) {
ret += stats[ITEM_STAT_STEALTHINVISSPEEDMOD];
else if (EngagedInCombat() && stats.count(ITEM_STAT_OFFENSIVESPEED))
ret += stats[ITEM_STAT_OFFENSIVESPEED];
else if (stats.count(ITEM_STAT_SPEED) && stats.count(ITEM_STAT_MOUNTSPEED))
ret += max(stats[ITEM_STAT_SPEED], stats[ITEM_STAT_MOUNTSPEED]);
else if (stats.count(ITEM_STAT_SPEED))
ret += stats[ITEM_STAT_SPEED];
else if (stats.count(ITEM_STAT_MOUNTSPEED))
ret += stats[ITEM_STAT_MOUNTSPEED];
}
if (!EngagedInCombat()) {
if (stats.count(ITEM_STAT_SPEED) && stats.count(ITEM_STAT_MOUNTSPEED)) {
ret += max(stats[ITEM_STAT_SPEED], stats[ITEM_STAT_MOUNTSPEED]);
}
else if (stats.count(ITEM_STAT_SPEED)) {
ret += stats[ITEM_STAT_SPEED];
}
else if (stats.count(ITEM_STAT_MOUNTSPEED)) {
ret += stats[ITEM_STAT_MOUNTSPEED];
}
}
if (EngagedInCombat()) {
if (GetMaxSpeed() > 0.0f)
ret = GetMaxSpeed();
if (stats.count(ITEM_STAT_OFFENSIVESPEED)) {
ret += stats[ITEM_STAT_OFFENSIVESPEED];
}
}
MStats.unlock();
ret *= speed_multiplier;
return ret;
}