summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-21 15:28:25 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-21 15:28:25 +0300
commit691928f93da5874e62171f569baeb7e3c73e2c16 (patch)
tree453433ca1776f6e0b0670bcd02c483406b55c11b
parent5ce3ea5e8377a1f9898dc08b6cc7f3a9679f4232 (diff)
downloadmanaplus-691928f93da5874e62171f569baeb7e3c73e2c16.tar.gz
manaplus-691928f93da5874e62171f569baeb7e3c73e2c16.tar.bz2
manaplus-691928f93da5874e62171f569baeb7e3c73e2c16.tar.xz
manaplus-691928f93da5874e62171f569baeb7e3c73e2c16.zip
Restore all usable mercenary stats if it respawned.
-rw-r--r--src/being/mercenaryinfo.h8
-rw-r--r--src/being/playerinfo.cpp2
-rw-r--r--src/net/eathena/mercenaryhandler.cpp4
3 files changed, 10 insertions, 4 deletions
diff --git a/src/being/mercenaryinfo.h b/src/being/mercenaryinfo.h
index 6bb9fd84d..9aa1bee66 100644
--- a/src/being/mercenaryinfo.h
+++ b/src/being/mercenaryinfo.h
@@ -26,14 +26,18 @@
struct MercenaryInfo final
{
MercenaryInfo() :
+ name(),
id(0),
- name()
+ level(0),
+ range(0)
{ }
A_DELETE_COPY(MercenaryInfo)
- int id;
std::string name;
+ int id;
+ int level;
+ int range;
};
#endif // BEING_MERCENARYINFO_H
diff --git a/src/being/playerinfo.cpp b/src/being/playerinfo.cpp
index ba36d59a3..e23c4c1b5 100644
--- a/src/being/playerinfo.cpp
+++ b/src/being/playerinfo.cpp
@@ -479,6 +479,8 @@ void setMercenaryBeing(Being *const being)
return;
being->setName(mMercenary->name);
being->setOwner(localPlayer);
+ being->setLevel(mMercenary->level);
+ being->setAttackRange(mMercenary->range);
}
MercenaryInfo *getMercenary()
diff --git a/src/net/eathena/mercenaryhandler.cpp b/src/net/eathena/mercenaryhandler.cpp
index d197b6101..702319c01 100644
--- a/src/net/eathena/mercenaryhandler.cpp
+++ b/src/net/eathena/mercenaryhandler.cpp
@@ -115,10 +115,10 @@ void MercenaryHandler::processMercenaryInfo(Net::MessageIn &msg)
MercenaryInfo *const mercenary = new MercenaryInfo;
mercenary->id = dstBeing->getId();
mercenary->name = name;
+ mercenary->level = level;
+ mercenary->range = range;
PlayerInfo::setMercenary(mercenary);
PlayerInfo::setMercenaryBeing(dstBeing);
- dstBeing->setLevel(level);
- dstBeing->setAttackRange(range);
}
}