diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-12-24 15:23:26 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-12-24 15:23:26 +0300 |
commit | 38c7345e781e9f6e645f703ffe178849a2140301 (patch) | |
tree | fc62b7fc5b346cf755e5b33d3cf52b3550050838 | |
parent | a1f5338e93e5f8b2bdac2c305824a925fd2e4141 (diff) | |
download | mv-38c7345e781e9f6e645f703ffe178849a2140301.tar.gz mv-38c7345e781e9f6e645f703ffe178849a2140301.tar.bz2 mv-38c7345e781e9f6e645f703ffe178849a2140301.tar.xz mv-38c7345e781e9f6e645f703ffe178849a2140301.zip |
add support for warp pets if distance very long.
New pet db option: warpDistance
-rw-r--r-- | src/being/being.cpp | 9 | ||||
-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 |
4 files changed, 19 insertions, 1 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index 2da3c644f..90c5cb316 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -1630,10 +1630,17 @@ void Being::petLogic() int dstX = dstX0; int dstY = dstY0; const int followDist = mInfo->getStartFollowDist(); + const int warpDist = mInfo->getWarpDist(); const int dist = mInfo->getFollowDist(); const int divX = abs(dstX - mX); const int divY = abs(dstY - mY); - if (divX > followDist || divY > followDist) + + if (divX >= warpDist || divY >= warpDist) + { + setAction(Being::STAND, 0); + setTileCoords(dstX0, dstY0); + } + else if (divX > followDist || divY > followDist) { if (divX > followDist) { diff --git a/src/resources/beinginfo.cpp b/src/resources/beinginfo.cpp index 7d769acbe..752b9a5dc 100644 --- a/src/resources/beinginfo.cpp +++ b/src/resources/beinginfo.cpp @@ -62,6 +62,7 @@ BeingInfo::BeingInfo() : mHeight(0), mStartFollowDist(3), mFollowDist(1), + mWarpDist(11), mWalkSpeed(0), mStaticMaxHP(false), mTargetSelection(true) diff --git a/src/resources/beinginfo.h b/src/resources/beinginfo.h index 556088380..b776c20ff 100644 --- a/src/resources/beinginfo.h +++ b/src/resources/beinginfo.h @@ -242,6 +242,12 @@ class BeingInfo final int getWalkSpeed() { return mWalkSpeed; } + void setWarpDist(const int n) + { mWarpDist = n; } + + int getWarpDist() + { return mWarpDist; } + void setColorsList(const std::string &name); std::string getColor(const int idx) const; @@ -274,6 +280,7 @@ class BeingInfo final int mHeight; int mStartFollowDist; int mFollowDist; + int mWarpDist; int mWalkSpeed; bool mStaticMaxHP; bool mTargetSelection; diff --git a/src/resources/db/petdb.cpp b/src/resources/db/petdb.cpp index 0af2621ae..397af6220 100644 --- a/src/resources/db/petdb.cpp +++ b/src/resources/db/petdb.cpp @@ -86,10 +86,13 @@ void PETDB::load() "startFollowDistance", 3)); currentInfo->setFollowDist(XML::getProperty(petNode, "followDistance", 1)); + currentInfo->setWarpDist(XML::getProperty(petNode, + "warpDistance", 11)); currentInfo->setWalkSpeed(XML::getProperty(petNode, "walkSpeed", 0)); + SpriteDisplay display; for_each_xml_child_node(spriteNode, petNode) { |