summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/net/eathena/packetsin.inc14
-rw-r--r--src/net/eathena/skillrecv.cpp13
-rw-r--r--src/net/eathena/skillrecv.h3
3 files changed, 27 insertions, 3 deletions
diff --git a/src/net/eathena/packetsin.inc b/src/net/eathena/packetsin.inc
index 12ca2e38d..50c34c862 100644
--- a/src/net/eathena/packetsin.inc
+++ b/src/net/eathena/packetsin.inc
@@ -241,7 +241,7 @@ packet(SMSG_PLAYER_REFINE, 0x0188, 8, &InventoryRecv::processP
packet(SMSG_PLAYER_REPAIR_EFFECT, 0x01fe, 5, &InventoryRecv::processPlayerRepairEffect, 0);
packet(SMSG_PLAYER_REPAIR_LIST, 0x01fc, -1, &InventoryRecv::processPlayerRepairList, 0);
packet(SMSG_PLAYER_SKILLS, 0x010f, -1, &SkillRecv::processPlayerSkills, 0);
-packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x01cd, 30, &SkillRecv::processSkillAutoSpells, 0);
+packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x01cd, 30, &SkillRecv::processSkillAutoSpells1, 0);
packet(SMSG_PLAYER_SKILL_PRODUCE_EFFECT, 0x018f, 6, &SkillRecv::processSkillProduceEffect, 0);
packet(SMSG_PLAYER_SKILL_PRODUCE_MIX_LIST, 0x018d, -1, &SkillRecv::processSkillProduceMixList, 0);
packet(SMSG_PLAYER_SKILL_UP, 0x010e, 11, &Ea::SkillRecv::processPlayerSkillUp, 0);
@@ -1409,6 +1409,18 @@ if (packetVersionRe >= 20181017)
packet(SMSG_ITEM_PREVIEW2, 0x0b13, 48, &InventoryRecv::processShowItemPreview2, 20181017);
}
+// 20181031 re
+if (packetVersionRe >= 20181031)
+{
+ packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x0afb, -1, &SkillRecv::processSkillAutoSpells2, 20181031);
+}
+
+// 20181128 main
+if (packetVersionMain >= 20181128)
+{
+ packet(SMSG_PLAYER_SKILL_AUTO_SPELLS, 0x0afb, -1, &SkillRecv::processSkillAutoSpells2, 20181128);
+}
+
// 0
// evol always packets
packet(SMSG_SERVER_VERSION_RESPONSE, 0x7531, -1, &LoginRecv::processServerVersion, 0);
diff --git a/src/net/eathena/skillrecv.cpp b/src/net/eathena/skillrecv.cpp
index 3f22d02bd..06e423865 100644
--- a/src/net/eathena/skillrecv.cpp
+++ b/src/net/eathena/skillrecv.cpp
@@ -517,7 +517,7 @@ void SkillRecv::processSkillArrowCreateList(Net::MessageIn &msg)
msg.readItemId("item id");
}
-void SkillRecv::processSkillAutoSpells(Net::MessageIn &msg)
+void SkillRecv::processSkillAutoSpells1(Net::MessageIn &msg)
{
UNIMPLEMENTEDPACKET;
@@ -527,6 +527,17 @@ void SkillRecv::processSkillAutoSpells(Net::MessageIn &msg)
menu = MenuType::AutoSpell;
}
+void SkillRecv::processSkillAutoSpells2(Net::MessageIn &msg)
+{
+ UNIMPLEMENTEDPACKET;
+
+ const int count = (msg.readInt16("len") - 4) / 4;
+ for (int f = 0; f < count; f ++)
+ msg.readInt32("skill id");
+
+ menu = MenuType::AutoSpell;
+}
+
void SkillRecv::processSkillDevotionEffect(Net::MessageIn &msg)
{
UNIMPLEMENTEDPACKET;
diff --git a/src/net/eathena/skillrecv.h b/src/net/eathena/skillrecv.h
index d9b2c1b5e..4a2fddd95 100644
--- a/src/net/eathena/skillrecv.h
+++ b/src/net/eathena/skillrecv.h
@@ -48,7 +48,8 @@ namespace EAthena
void processSkillProduceEffect(Net::MessageIn &msg);
void processSkillUnitUpdate(Net::MessageIn &msg);
void processSkillArrowCreateList(Net::MessageIn &msg);
- void processSkillAutoSpells(Net::MessageIn &msg);
+ void processSkillAutoSpells1(Net::MessageIn &msg);
+ void processSkillAutoSpells2(Net::MessageIn &msg);
void processSkillDevotionEffect(Net::MessageIn &msg);
void processSkillItemListWindow(Net::MessageIn &msg);
void processSkillScale(Net::MessageIn &msg);