Converted ZC_SKILLINFO_DELETE to struct (#8595)
Co-authored-by: Atemo <Atemo@users.noreply.github.com> Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
parent
61b3f4a34d
commit
077f714e05
@ -3792,7 +3792,7 @@ ACMD_FUNC(lostskill)
|
||||
|
||||
sd->status.skill[sk_idx].lv = 0;
|
||||
sd->status.skill[sk_idx].flag = SKILL_FLAG_PERMANENT;
|
||||
clif_deleteskill(sd,skill_id);
|
||||
clif_deleteskill(*sd,skill_id);
|
||||
clif_displaymessage(fd, msg_txt(sd,71)); // You have forgotten the skill.
|
||||
|
||||
return 0;
|
||||
|
@ -1065,7 +1065,7 @@ int chrif_deadopt(uint32 father_id, uint32 mother_id, uint32 child_id) {
|
||||
sd->status.skill[idx].id = 0;
|
||||
sd->status.skill[idx].lv = 0;
|
||||
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||
clif_deleteskill(sd,WE_CALLBABY);
|
||||
clif_deleteskill(*sd,WE_CALLBABY);
|
||||
}
|
||||
|
||||
if( mother_id && ( sd = map_charid2sd(mother_id) ) != nullptr && sd->status.child == child_id ) {
|
||||
@ -1073,7 +1073,7 @@ int chrif_deadopt(uint32 father_id, uint32 mother_id, uint32 child_id) {
|
||||
sd->status.skill[idx].id = 0;
|
||||
sd->status.skill[idx].lv = 0;
|
||||
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||
clif_deleteskill(sd,WE_CALLBABY);
|
||||
clif_deleteskill(*sd,WE_CALLBABY);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -5698,28 +5698,26 @@ 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, bool skip_infoblock)
|
||||
{
|
||||
#if PACKETVER >= 20081217
|
||||
nullpo_retv(sd);
|
||||
|
||||
int fd = sd->fd;
|
||||
/// Deletes a skill from the skill tree.
|
||||
/// 0441 <skill id>.W (ZC_SKILLINFO_DELETE)
|
||||
void clif_deleteskill(map_session_data& sd, uint16 skill_id, bool skip_infoblock){
|
||||
#if PACKETVER >= 20081126
|
||||
uint16 idx = skill_get_index(skill_id);
|
||||
|
||||
if (!session_isActive(fd) || !idx)
|
||||
if (idx == 0)
|
||||
return;
|
||||
|
||||
WFIFOHEAD(fd,packet_len(0x441));
|
||||
WFIFOW(fd,0) = 0x441;
|
||||
WFIFOW(fd,2) = skill_id;
|
||||
WFIFOSET(fd,packet_len(0x441));
|
||||
PACKET_ZC_SKILLINFO_DELETE p{};
|
||||
|
||||
p.packetType = HEADER_ZC_SKILLINFO_DELETE;
|
||||
p.skillID = skill_id;
|
||||
|
||||
clif_send(&p,sizeof(p),&sd.bl,SELF);
|
||||
#endif
|
||||
#if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190918
|
||||
if (!skip_infoblock)
|
||||
#endif
|
||||
clif_skillinfoblock(sd);
|
||||
clif_skillinfoblock(&sd);
|
||||
}
|
||||
|
||||
/// Updates a skill in the skill tree (ZC_SKILLINFO_UPDATE).
|
||||
|
@ -933,7 +933,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, bool skip_infoblock = false);
|
||||
void clif_deleteskill(map_session_data& sd, uint16 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( block_list& bl );
|
||||
|
@ -1209,7 +1209,6 @@
|
||||
// 2008-11-26aSakexe
|
||||
#if PACKETVER >= 20081126
|
||||
packet(0x01a2,37);
|
||||
packet(0x0441,4);
|
||||
#endif
|
||||
|
||||
// 2008-12-10aSakexe
|
||||
|
@ -1118,6 +1118,12 @@ struct PACKET_ZC_SKILL_DISAPPEAR {
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_SKILL_DISAPPEAR, 0x120);
|
||||
|
||||
struct PACKET_ZC_SKILLINFO_DELETE {
|
||||
uint16 packetType;
|
||||
uint16 skillID;
|
||||
} __attribute__((packed));
|
||||
DEFINE_PACKET_HEADER(ZC_SKILLINFO_DELETE, 0x441);
|
||||
|
||||
struct PACKET_ZC_SKILL_UPDATE {
|
||||
int16 packetType;
|
||||
uint32 GID;
|
||||
|
@ -5345,7 +5345,7 @@ bool pc_skill(map_session_data* sd, uint16 skill_id, int level, enum e_addskill_
|
||||
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||
if (level == 0) { //Remove skill.
|
||||
sd->status.skill[idx].id = 0;
|
||||
clif_deleteskill(sd,skill_id);
|
||||
clif_deleteskill(*sd,skill_id);
|
||||
} else
|
||||
clif_addskill(sd,skill_id);
|
||||
if (!skill_get_inf(skill_id) || pc_checkskill_summoner(sd, SUMMONER_POWER_LAND) >= 20 || pc_checkskill_summoner(sd, SUMMONER_POWER_SEA) >= 20) //Only recalculate for passive skills.
|
||||
@ -5380,7 +5380,7 @@ bool pc_skill(map_session_data* sd, uint16 skill_id, int level, enum e_addskill_
|
||||
sd->status.skill[idx].flag = SKILL_FLAG_PERM_GRANTED;
|
||||
if (level == 0) { //Remove skill.
|
||||
sd->status.skill[idx].id = 0;
|
||||
clif_deleteskill(sd,skill_id);
|
||||
clif_deleteskill(*sd,skill_id);
|
||||
} else
|
||||
clif_addskill(sd,skill_id);
|
||||
if (!skill_get_inf(skill_id) || pc_checkskill_summoner(sd, SUMMONER_POWER_LAND) >= 20 || pc_checkskill_summoner(sd, SUMMONER_POWER_SEA) >= 20) //Only recalculate for passive skills.
|
||||
@ -5462,7 +5462,7 @@ bool pc_skill_plagiarism_reset(map_session_data &sd, uint8 type)
|
||||
sd.status.skill[idx].id = 0;
|
||||
sd.status.skill[idx].lv = 0;
|
||||
sd.status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||
clif_deleteskill(&sd, skill_id);
|
||||
clif_deleteskill(sd, skill_id);
|
||||
|
||||
if (type == 1) {
|
||||
sd.cloneskill_idx = 0;
|
||||
|
@ -3395,7 +3395,7 @@ static void skill_do_copy(struct block_list* src,struct block_list *bl, uint16 s
|
||||
case 1: //Copied by Plagiarism
|
||||
{
|
||||
if (tsd->cloneskill_idx > 0 && tsd->status.skill[tsd->cloneskill_idx].flag == SKILL_FLAG_PLAGIARIZED) {
|
||||
clif_deleteskill(tsd,tsd->status.skill[tsd->cloneskill_idx].id, true);
|
||||
clif_deleteskill(*tsd,tsd->status.skill[tsd->cloneskill_idx].id, true);
|
||||
tsd->status.skill[tsd->cloneskill_idx].id = 0;
|
||||
tsd->status.skill[tsd->cloneskill_idx].lv = 0;
|
||||
tsd->status.skill[tsd->cloneskill_idx].flag = SKILL_FLAG_PERMANENT;
|
||||
@ -3415,7 +3415,7 @@ static void skill_do_copy(struct block_list* src,struct block_list *bl, uint16 s
|
||||
//Skill level copied depends on Reproduce skill that used
|
||||
lv = (tsc) ? tsc->getSCE(SC__REPRODUCE)->val1 : 1;
|
||||
if( tsd->reproduceskill_idx > 0 && tsd->status.skill[tsd->reproduceskill_idx].flag == SKILL_FLAG_PLAGIARIZED ) {
|
||||
clif_deleteskill(tsd,tsd->status.skill[tsd->reproduceskill_idx].id, true);
|
||||
clif_deleteskill(*tsd,tsd->status.skill[tsd->reproduceskill_idx].id, true);
|
||||
tsd->status.skill[tsd->reproduceskill_idx].id = 0;
|
||||
tsd->status.skill[tsd->reproduceskill_idx].lv = 0;
|
||||
tsd->status.skill[tsd->reproduceskill_idx].flag = SKILL_FLAG_PERMANENT;
|
||||
|
@ -4914,7 +4914,7 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
|
||||
// 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);
|
||||
clif_deleteskill(*sd, b_skill[i].id, true);
|
||||
}
|
||||
#endif
|
||||
clif_skillinfoblock(sd);
|
||||
|
Loading…
x
Reference in New Issue
Block a user