diff --git a/src/otclient/core/creature.cpp b/src/otclient/core/creature.cpp index 0e247ee1..b9210ee1 100644 --- a/src/otclient/core/creature.cpp +++ b/src/otclient/core/creature.cpp @@ -36,7 +36,7 @@ Creature::Creature() : Thing(Otc::Creature) m_walking = false; m_walkOffsetX = 0; m_walkOffsetY = 0; - m_walkCount = 0; + m_lastWalkAnim = 1; m_informationFont = g_fonts.getFont("tibia-12px-rounded"); } @@ -126,12 +126,13 @@ void Creature::draw(int x, int y) m_walkOffsetX = std::max(m_walkOffsetX - pixelsWalked, 0); int walkOffset = std::max(std::abs(m_walkOffsetX), std::abs(m_walkOffsetY)); - if(walkOffset % 8 == 0) { - if(m_animation+1 == attributes.animcount) - m_animation = 1; + if(walkOffset % (int)std::ceil(32 / (float)attributes.animcount) == 0) { + if(m_lastWalkAnim+1 == attributes.animcount) + m_lastWalkAnim = 1; else - m_animation++; + m_lastWalkAnim++; } + m_animation = m_lastWalkAnim; if(((m_walkOffsetX == 0 && m_walkOffsetY == 0) && m_walkOffsetX != m_walkOffsetY) || ((m_walkOffsetX == 0 || m_walkOffsetY == 0) && m_walkOffsetX == m_walkOffsetY)) { @@ -251,8 +252,6 @@ void Creature::walk(const Position& position) m_walkTimePerPixel = walkTime / 32.0; m_lastTicks = g_platform.getTicks(); - m_walkCount++; - m_animation = (m_walkCount % 2) + 1; } void Creature::setHealthPercent(uint8 healthPercent) diff --git a/src/otclient/core/creature.h b/src/otclient/core/creature.h index 95c7a316..3217bb06 100644 --- a/src/otclient/core/creature.h +++ b/src/otclient/core/creature.h @@ -92,7 +92,7 @@ private: Color m_informationColor; int m_lastTicks; - int m_walkCount; + int m_lastWalkAnim; bool m_walking; float m_walkTimePerPixel; Position m_walkingFromPosition;