From 815a432c34d1901d14745d8c3386d489abdf3339 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 27 Jul 2016 21:40:58 +0300 Subject: Impliment packet SMSG_MERCENARY_UPDATE 0x02a2. --- src/net/eathena/mercenaryrecv.cpp | 36 ++++++++++++++++++++++++++++++++---- src/net/eathena/sp.h | 2 +- 2 files changed, 33 insertions(+), 5 deletions(-) (limited to 'src/net/eathena') diff --git a/src/net/eathena/mercenaryrecv.cpp b/src/net/eathena/mercenaryrecv.cpp index 3f338e61a..b00fd0235 100644 --- a/src/net/eathena/mercenaryrecv.cpp +++ b/src/net/eathena/mercenaryrecv.cpp @@ -33,17 +33,45 @@ #include "net/messagein.h" +#include "net/eathena/sp.h" + +#include "utils/checkutils.h" + #include "debug.h" namespace EAthena { +#define setMercStat(sp, stat) \ + case sp: \ + PlayerInfo::setStatBase(stat, \ + val); \ + break; + void MercenaryRecv::processMercenaryUpdate(Net::MessageIn &msg) { - UNIMPLIMENTEDPACKET; - // +++ need create if need mercenary being and update stats - msg.readInt16("type"); - msg.readInt32("value"); + const int sp = msg.readInt16("type"); + const int val = msg.readInt32("value"); + switch (sp) + { + setMercStat(Sp::ATK1, Attributes::MERC_ATK); + setMercStat(Sp::MATK1, Attributes::MERC_MATK); + setMercStat(Sp::HIT, Attributes::MERC_HIT); + setMercStat(Sp::CRITICAL, Attributes::MERC_CRIT); + setMercStat(Sp::DEF1, Attributes::MERC_DEF); + setMercStat(Sp::MDEF1, Attributes::MERC_MDEF); + setMercStat(Sp::MERCFLEE, Attributes::MERC_FLEE); + setMercStat(Sp::ASPD, Attributes::MERC_ATTACK_DELAY); + setMercStat(Sp::HP, Attributes::MERC_HP); + setMercStat(Sp::MAXHP, Attributes::MERC_MAX_HP); + setMercStat(Sp::SP, Attributes::MERC_MP); + setMercStat(Sp::MAXSP, Attributes::MERC_MAX_MP); + setMercStat(Sp::MERCKILLS, Attributes::MERC_KILLS); + setMercStat(Sp::MERCFAITH, Attributes::MERC_FAITH); + default: + reportAlways("Unknown mercenary stat %d", + sp); + } } void MercenaryRecv::processMercenaryInfo(Net::MessageIn &msg) diff --git a/src/net/eathena/sp.h b/src/net/eathena/sp.h index 7a5e08181..53b12c63f 100644 --- a/src/net/eathena/sp.h +++ b/src/net/eathena/sp.h @@ -101,7 +101,7 @@ namespace Sp MOD_DROP = 126, MOD_DEATH = 127, - SP_MERCFLEE = 165, + MERCFLEE = 165, MERCKILLS = 189, MERCFAITH = 190, -- cgit v1.2.3-60-g2f50