parent
a7f05bf696
commit
5b2f4e63a7
@ -5799,7 +5799,7 @@ void clif_addskill(map_session_data *sd, int skill_id)
|
||||
|
||||
/// Deletes a skill from the skill tree (ZC_SKILLINFO_DELETE).
|
||||
/// 0441 <skill id>.W
|
||||
void clif_deleteskill(map_session_data *sd, int skill_id)
|
||||
void clif_deleteskill(map_session_data *sd, int skill_id, bool skip_infoblock)
|
||||
{
|
||||
#if PACKETVER >= 20081217
|
||||
nullpo_retv(sd);
|
||||
@ -5815,7 +5815,10 @@ void clif_deleteskill(map_session_data *sd, int skill_id)
|
||||
WFIFOW(fd,2) = skill_id;
|
||||
WFIFOSET(fd,packet_len(0x441));
|
||||
#endif
|
||||
clif_skillinfoblock(sd);
|
||||
#if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190918
|
||||
if (!skip_infoblock)
|
||||
#endif
|
||||
clif_skillinfoblock(sd);
|
||||
}
|
||||
|
||||
/// Updates a skill in the skill tree (ZC_SKILLINFO_UPDATE).
|
||||
|
@ -735,7 +735,7 @@ void clif_skillinfoblock(map_session_data *sd);
|
||||
void clif_skillup(map_session_data *sd, uint16 skill_id, int lv, int range, int upgradable);
|
||||
void clif_skillinfo(map_session_data *sd,int skill_id, int inf);
|
||||
void clif_addskill(map_session_data *sd, int skill_id);
|
||||
void clif_deleteskill(map_session_data *sd, int skill_id);
|
||||
void clif_deleteskill(map_session_data *sd, int skill_id, bool skip_infoblock = false);
|
||||
|
||||
void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int property, int casttime);
|
||||
void clif_skillcastcancel(struct block_list* bl);
|
||||
|
@ -4833,8 +4833,16 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
|
||||
calculating = 0;
|
||||
return 0;
|
||||
}
|
||||
if(memcmp(b_skill,sd->status.skill,sizeof(sd->status.skill)))
|
||||
if(memcmp(b_skill,sd->status.skill,sizeof(sd->status.skill))) {
|
||||
#if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190918
|
||||
// Client doesn't delete unavailable skills even if we refresh the skill tree, individually delete them.
|
||||
for (i = 0; i < MAX_SKILL; i++) {
|
||||
if (b_skill[i].id != 0 && sd->status.skill[i].id == 0)
|
||||
clif_deleteskill(sd, b_skill[i].id, true);
|
||||
}
|
||||
#endif
|
||||
clif_skillinfoblock(sd);
|
||||
}
|
||||
|
||||
// If the skill is learned, the status is infinite.
|
||||
if (pc_checkskill(sd, SU_SPRITEMABLE) > 0 && !sd->sc.getSCE(SC_SPRITEMABLE))
|
||||
|
Loading…
x
Reference in New Issue
Block a user