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].lv = 0;
|
||||||
sd->status.skill[sk_idx].flag = SKILL_FLAG_PERMANENT;
|
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.
|
clif_displaymessage(fd, msg_txt(sd,71)); // You have forgotten the skill.
|
||||||
|
|
||||||
return 0;
|
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].id = 0;
|
||||||
sd->status.skill[idx].lv = 0;
|
sd->status.skill[idx].lv = 0;
|
||||||
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
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 ) {
|
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].id = 0;
|
||||||
sd->status.skill[idx].lv = 0;
|
sd->status.skill[idx].lv = 0;
|
||||||
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||||
clif_deleteskill(sd,WE_CALLBABY);
|
clif_deleteskill(*sd,WE_CALLBABY);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
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).
|
/// Deletes a skill from the skill tree.
|
||||||
/// 0441 <skill id>.W
|
/// 0441 <skill id>.W (ZC_SKILLINFO_DELETE)
|
||||||
void clif_deleteskill(map_session_data *sd, int skill_id, bool skip_infoblock)
|
void clif_deleteskill(map_session_data& sd, uint16 skill_id, bool skip_infoblock){
|
||||||
{
|
#if PACKETVER >= 20081126
|
||||||
#if PACKETVER >= 20081217
|
|
||||||
nullpo_retv(sd);
|
|
||||||
|
|
||||||
int fd = sd->fd;
|
|
||||||
uint16 idx = skill_get_index(skill_id);
|
uint16 idx = skill_get_index(skill_id);
|
||||||
|
|
||||||
if (!session_isActive(fd) || !idx)
|
if (idx == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
WFIFOHEAD(fd,packet_len(0x441));
|
PACKET_ZC_SKILLINFO_DELETE p{};
|
||||||
WFIFOW(fd,0) = 0x441;
|
|
||||||
WFIFOW(fd,2) = skill_id;
|
p.packetType = HEADER_ZC_SKILLINFO_DELETE;
|
||||||
WFIFOSET(fd,packet_len(0x441));
|
p.skillID = skill_id;
|
||||||
|
|
||||||
|
clif_send(&p,sizeof(p),&sd.bl,SELF);
|
||||||
#endif
|
#endif
|
||||||
#if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190918
|
#if PACKETVER_MAIN_NUM >= 20190807 || PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190918
|
||||||
if (!skip_infoblock)
|
if (!skip_infoblock)
|
||||||
#endif
|
#endif
|
||||||
clif_skillinfoblock(sd);
|
clif_skillinfoblock(&sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates a skill in the skill tree (ZC_SKILLINFO_UPDATE).
|
/// 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_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_skillinfo(map_session_data *sd,int skill_id, int inf);
|
||||||
void clif_addskill(map_session_data *sd, int skill_id);
|
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_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 );
|
void clif_skillcastcancel( block_list& bl );
|
||||||
|
|||||||
@ -1209,7 +1209,6 @@
|
|||||||
// 2008-11-26aSakexe
|
// 2008-11-26aSakexe
|
||||||
#if PACKETVER >= 20081126
|
#if PACKETVER >= 20081126
|
||||||
packet(0x01a2,37);
|
packet(0x01a2,37);
|
||||||
packet(0x0441,4);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 2008-12-10aSakexe
|
// 2008-12-10aSakexe
|
||||||
|
|||||||
@ -1118,6 +1118,12 @@ struct PACKET_ZC_SKILL_DISAPPEAR {
|
|||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
DEFINE_PACKET_HEADER(ZC_SKILL_DISAPPEAR, 0x120);
|
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 {
|
struct PACKET_ZC_SKILL_UPDATE {
|
||||||
int16 packetType;
|
int16 packetType;
|
||||||
uint32 GID;
|
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;
|
sd->status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||||
if (level == 0) { //Remove skill.
|
if (level == 0) { //Remove skill.
|
||||||
sd->status.skill[idx].id = 0;
|
sd->status.skill[idx].id = 0;
|
||||||
clif_deleteskill(sd,skill_id);
|
clif_deleteskill(*sd,skill_id);
|
||||||
} else
|
} else
|
||||||
clif_addskill(sd,skill_id);
|
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.
|
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;
|
sd->status.skill[idx].flag = SKILL_FLAG_PERM_GRANTED;
|
||||||
if (level == 0) { //Remove skill.
|
if (level == 0) { //Remove skill.
|
||||||
sd->status.skill[idx].id = 0;
|
sd->status.skill[idx].id = 0;
|
||||||
clif_deleteskill(sd,skill_id);
|
clif_deleteskill(*sd,skill_id);
|
||||||
} else
|
} else
|
||||||
clif_addskill(sd,skill_id);
|
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.
|
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].id = 0;
|
||||||
sd.status.skill[idx].lv = 0;
|
sd.status.skill[idx].lv = 0;
|
||||||
sd.status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
sd.status.skill[idx].flag = SKILL_FLAG_PERMANENT;
|
||||||
clif_deleteskill(&sd, skill_id);
|
clif_deleteskill(sd, skill_id);
|
||||||
|
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
sd.cloneskill_idx = 0;
|
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
|
case 1: //Copied by Plagiarism
|
||||||
{
|
{
|
||||||
if (tsd->cloneskill_idx > 0 && tsd->status.skill[tsd->cloneskill_idx].flag == SKILL_FLAG_PLAGIARIZED) {
|
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].id = 0;
|
||||||
tsd->status.skill[tsd->cloneskill_idx].lv = 0;
|
tsd->status.skill[tsd->cloneskill_idx].lv = 0;
|
||||||
tsd->status.skill[tsd->cloneskill_idx].flag = SKILL_FLAG_PERMANENT;
|
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
|
//Skill level copied depends on Reproduce skill that used
|
||||||
lv = (tsc) ? tsc->getSCE(SC__REPRODUCE)->val1 : 1;
|
lv = (tsc) ? tsc->getSCE(SC__REPRODUCE)->val1 : 1;
|
||||||
if( tsd->reproduceskill_idx > 0 && tsd->status.skill[tsd->reproduceskill_idx].flag == SKILL_FLAG_PLAGIARIZED ) {
|
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].id = 0;
|
||||||
tsd->status.skill[tsd->reproduceskill_idx].lv = 0;
|
tsd->status.skill[tsd->reproduceskill_idx].lv = 0;
|
||||||
tsd->status.skill[tsd->reproduceskill_idx].flag = SKILL_FLAG_PERMANENT;
|
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.
|
// Client doesn't delete unavailable skills even if we refresh the skill tree, individually delete them.
|
||||||
for (i = 0; i < MAX_SKILL; i++) {
|
for (i = 0; i < MAX_SKILL; i++) {
|
||||||
if (b_skill[i].id != 0 && sd->status.skill[i].id == 0)
|
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
|
#endif
|
||||||
clif_skillinfoblock(sd);
|
clif_skillinfoblock(sd);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user