diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-12-24 15:06:37 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-12-24 15:06:37 +0300 |
commit | a1f5338e93e5f8b2bdac2c305824a925fd2e4141 (patch) | |
tree | ca2b0d85f2e026d45ee8b0f66d282333a96f0d83 | |
parent | 1821dfad294c0d850be326639946b12cdbdcecaf (diff) | |
download | manaplus-a1f5338e93e5f8b2bdac2c305824a925fd2e4141.tar.gz manaplus-a1f5338e93e5f8b2bdac2c305824a925fd2e4141.tar.bz2 manaplus-a1f5338e93e5f8b2bdac2c305824a925fd2e4141.tar.xz manaplus-a1f5338e93e5f8b2bdac2c305824a925fd2e4141.zip |
add speed parameter for pets.
New pet db option: walkSpeed
-rw-r--r-- | src/being/being.cpp | 10 | ||||
-rw-r--r-- | src/being/being.h | 2 | ||||
-rw-r--r-- | src/resources/beinginfo.cpp | 1 | ||||
-rw-r--r-- | src/resources/beinginfo.h | 7 | ||||
-rw-r--r-- | src/resources/db/petdb.cpp | 3 |
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) { |