summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/eathena/packetsin.inc15
-rw-r--r--src/net/eathena/skillrecv.cpp18
-rw-r--r--src/net/eathena/skillrecv.h1
3 files changed, 33 insertions, 1 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc
index 263ca4a1e..928d6eeab 100644
--- a/src/net/eathena/packetsin.inc
+++ b/src/net/eathena/packetsin.inc
@@ -1036,11 +1036,23 @@ if (packetVersion >= 20170502)
}
// 20170315
-if (packetVersion == 20170315)
+if (packetVersion >= 20170315)
{
packet(SMSG_CHANGE_MAP_SERVER, 0x0ac7, 156, &CharServerRecv::processChangeMapServer, 20170315);
}
+// 20170419 re
+if (packetVersionRe >= 20170419)
+{
+ packet(SMSG_SKILL_WARP_POINT, 0x0abe, -1, &SkillRecv::processSkillWarpPoint2, 20170419);
+}
+
+// 20170502 main
+if (packetVersionMain >= 20170502)
+{
+ packet(SMSG_SKILL_WARP_POINT, 0x0abe, -1, &SkillRecv::processSkillWarpPoint2, 20170502);
+}
+
// 20170830
packet(SMSG_PLAYER_STAT_UPDATE_7, 0x0acb, 12, &PlayerRecv::processPlayerStatUpdate7, 20170830);
packet(SMSG_PLAYER_GET_EXP2, 0x0acc, 18, &PlayerRecv::processPlayerGetExp2, 20170830);
@@ -1050,6 +1062,7 @@ if (packets_zero == true)
{
packet(SMSG_ITEM_DROPPED, 0x0add, 22, &ItemRecv::processItemDropped, 20171018);
packet(SMSG_ITEM_MOVE_FAILED, 0x0aa7, 6, &InventoryRecv::processItemMoveFailed, 20171018);
+ packet(SMSG_SKILL_WARP_POINT, 0x0abe, -1, &SkillRecv::processSkillWarpPoint2, 20171018);
}
// 20171207
diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp
index 6307cb3ab..3f22d02bd 100644
--- a/src/net/eathena/skillrecv.cpp
+++ b/src/net/eathena/skillrecv.cpp
@@ -442,6 +442,24 @@ void SkillRecv::processSkillWarpPoint(Net::MessageIn &msg)
dialog->addText(msg.readString(16, "map name"));
}
+void SkillRecv::processSkillWarpPoint2(Net::MessageIn &msg)
+{
+ const int count = (msg.readInt16("len") - 6) / 16;
+ const int skillId = msg.readInt16("skill id");
+
+ TextSelectDialog *const dialog = CREATEWIDGETR(TextSelectDialog,
+ // TRANSLATORS: warp select window name
+ _("Select warp target"),
+ // TRANSLATORS: warp select button
+ _("Warp"),
+ AllowQuit_false);
+ skillWarpListener.setDialog(dialog);
+ skillWarpListener.setSkill(skillId);
+ dialog->addActionListener(&skillWarpListener);
+ for (int f = 0; f < count; f ++)
+ dialog->addText(msg.readString(16, "map name"));
+}
+
void SkillRecv::processSkillMemoMessage(Net::MessageIn &msg)
{
const int type = msg.readUInt8("type");
diff --git a/src/net/eathena/skillrecv.h b/src/net/eathena/skillrecv.h
index 1aaa30514..d9b2c1b5e 100644
--- a/src/net/eathena/skillrecv.h
+++ b/src/net/eathena/skillrecv.h
@@ -42,6 +42,7 @@ namespace EAthena
void processSkillUpdate2(Net::MessageIn &msg);
void processSkillDelete(Net::MessageIn &msg);
void processSkillWarpPoint(Net::MessageIn &msg);
+ void processSkillWarpPoint2(Net::MessageIn &msg);
void processSkillMemoMessage(Net::MessageIn &msg);
void processSkillProduceMixList(Net::MessageIn &msg);
void processSkillProduceEffect(Net::MessageIn &msg);