summaryrefslogtreecommitdiff
path: root/src/map/clif.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2019-08-08 22:00:54 +0300
committerAndrei Karas <akaras@inbox.ru>2019-08-21 22:36:41 +0300
commit0c200e53ad49bd443bec30504bd760411bf76015 (patch)
tree770ecfff6cfac330f2e60767a9edb2da9216834f /src/map/clif.c
parent8ccaccfc1a66982132558ae4a7bd11ca32f8e9db (diff)
downloadhercules-0c200e53ad49bd443bec30504bd760411bf76015.tar.gz
hercules-0c200e53ad49bd443bec30504bd760411bf76015.tar.bz2
hercules-0c200e53ad49bd443bec30504bd760411bf76015.tar.xz
hercules-0c200e53ad49bd443bec30504bd760411bf76015.zip
Convert ZC_ADD_SKILL into struct and add new packet version
Diffstat (limited to 'src/map/clif.c')
-rw-r--r--src/map/clif.c41
1 files changed, 23 insertions, 18 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 3b7691ae4..37e2fea64 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -5314,36 +5314,41 @@ static void clif_skillinfoblock(struct map_session_data *sd)
/// 0111 <skill id>.W <type>.L <level>.W <sp cost>.W <attack range>.W <skill name>.24B <upgradable>.B
static void clif_addskill(struct map_session_data *sd, int id)
{
- int fd, skill_lv, idx = skill->get_index(id);
-
nullpo_retv(sd);
- fd = sd->fd;
- if (!fd) return;
+ int fd = sd->fd;
+ if (!fd)
+ return;
+ int idx = skill->get_index(id);
if (sd->status.skill[idx].id <= 0)
return;
- skill_lv = sd->status.skill[idx].lv;
+ int skill_lv = sd->status.skill[idx].lv;
- WFIFOHEAD(fd, packet_len(0x111));
- WFIFOW(fd,0) = 0x111;
- WFIFOW(fd,2) = id;
- WFIFOL(fd,4) = skill->get_inf(id);
- WFIFOW(fd,8) = skill_lv;
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_ADD_SKILL));
+ struct PACKET_ZC_ADD_SKILL *p = WFIFOP(fd, 0);
+ p->packetType = HEADER_ZC_ADD_SKILL;
+ p->id = id;
+ p->inf = skill->get_inf(id);
+ p->level = skill_lv;
if (skill_lv > 0) {
- WFIFOW(fd,10) = skill->get_sp(id, skill_lv);
- WFIFOW(fd,12) = skill->get_range2(&sd->bl, id, skill_lv);
+ p->sp = skill->get_sp(id, skill_lv);
+ p->range2 = skill->get_range2(&sd->bl, id, skill_lv);
} else {
- WFIFOW(fd,10) = 0;
- WFIFOW(fd,12) = 0;
+ p->sp = 0;
+ p->range2 = 0;
}
- safestrncpy(WFIFOP(fd,14), skill->get_name(id), NAME_LENGTH);
+#if PACKETVER_RE_NUM >= 20190807
+ p->level2 = 0;
+#else
+ safestrncpy(p->name, skill->get_name(id), NAME_LENGTH);
+#endif
if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT)
- WFIFOB(fd,38) = (skill_lv < skill->tree_get_max(id, sd->status.class))? 1:0;
+ p->upFlag = (skill_lv < skill->tree_get_max(id, sd->status.class)) ? 1 : 0;
else
- WFIFOB(fd,38) = 0;
- WFIFOSET(fd,packet_len(0x111));
+ p->upFlag = 0;
+ WFIFOSET(fd, sizeof(struct PACKET_ZC_ADD_SKILL));
}
/// Deletes a skill from the skill tree (ZC_SKILLINFO_DELETE).