summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/being/being.cpp10
-rw-r--r--src/being/being.h2
-rw-r--r--src/resources/beinginfo.cpp1
-rw-r--r--src/resources/beinginfo.h7
-rw-r--r--src/resources/db/petdb.cpp3
5 files changed, 22 insertions, 1 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp
index 39cf09741..2da3c644f 100644
--- a/src/being/being.cpp
+++ b/src/being/being.cpp
@@ -292,6 +292,16 @@ void Being::setSubtype(const uint16_t subtype, const uint8_t look)
{
setupSpriteDisplay(mInfo->getDisplay(), false);
mYDiff = mInfo->getSortOffsetY();
+ const int speed = mInfo->getWalkSpeed();
+ if (!speed)
+ {
+ setWalkSpeed(Net::getPlayerHandler()
+ ->getDefaultWalkSpeed());
+ }
+ else
+ {
+ setWalkSpeed(Vector(speed, speed, 0));
+ }
}
}
else if (mType == PLAYER)
diff --git a/src/being/being.h b/src/being/being.h
index e20db69f4..6722e5d4c 100644
--- a/src/being/being.h
+++ b/src/being/being.h
@@ -478,7 +478,7 @@ class Being : public ActorSprite, public ConfigListener
* in pixels per second for eAthena,
* in tiles per second for Manaserv.
*/
- void setWalkSpeed(const Vector &speed)
+ void setWalkSpeed(Vector speed)
{ mWalkSpeed = speed; mSpeed = speed.x; }
/**
diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp
index 7a8d1e0ce..7d769acbe 100644
--- a/src/resources/beinginfo.cpp
+++ b/src/resources/beinginfo.cpp
@@ -62,6 +62,7 @@ BeingInfo::BeingInfo() :
mHeight(0),
mStartFollowDist(3),
mFollowDist(1),
+ mWalkSpeed(0),
mStaticMaxHP(false),
mTargetSelection(true)
{
diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h
index a752898f8..556088380 100644
--- a/src/resources/beinginfo.h
+++ b/src/resources/beinginfo.h
@@ -236,6 +236,12 @@ class BeingInfo final
int getFollowDist()
{ return mFollowDist; }
+ void setWalkSpeed(const int n)
+ { mWalkSpeed = n; }
+
+ int getWalkSpeed()
+ { return mWalkSpeed; }
+
void setColorsList(const std::string &name);
std::string getColor(const int idx) const;
@@ -268,6 +274,7 @@ class BeingInfo final
int mHeight;
int mStartFollowDist;
int mFollowDist;
+ int mWalkSpeed;
bool mStaticMaxHP;
bool mTargetSelection;
};
diff --git a/src/resources/db/petdb.cpp b/src/resources/db/petdb.cpp
index 829da3ef6..0af2621ae 100644
--- a/src/resources/db/petdb.cpp
+++ b/src/resources/db/petdb.cpp
@@ -87,6 +87,9 @@ void PETDB::load()
currentInfo->setFollowDist(XML::getProperty(petNode,
"followDistance", 1));
+ currentInfo->setWalkSpeed(XML::getProperty(petNode,
+ "walkSpeed", 0));
+
SpriteDisplay display;
for_each_xml_child_node(spriteNode, petNode)
{