From 38c7345e781e9f6e645f703ffe178849a2140301 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 24 Dec 2013 15:23:26 +0300 Subject: add support for warp pets if distance very long. New pet db option: warpDistance --- src/being/being.cpp | 9 ++++++++- src/resources/beinginfo.cpp | 1 + src/resources/beinginfo.h | 7 +++++++ src/resources/db/petdb.cpp | 3 +++ 4 files changed, 19 insertions(+), 1 deletion(-) 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) { -- cgit v1.2.3-60-g2f50