|
@@ -4972,9 +4972,9 @@ void clif_storageclose( map_session_data& sd ){
|
|
|
/// Notifies clients in an area of a player's souls.
|
|
|
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
|
|
|
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
|
|
|
-/// 0b73 <id>.L <amount>.W
|
|
|
+/// 0b73 <id>.L <amount>.W (ZC_SOULENERGY)
|
|
|
void clif_soulball( map_session_data *sd, struct block_list* target, enum send_target send_target ){
|
|
|
-#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
|
|
+#if PACKETVER_MAIN_NUM >= 20200414 || PACKETVER_RE_NUM >= 20200723 || PACKETVER_ZERO_NUM >= 20200506
|
|
|
struct PACKET_ZC_SOULENERGY p = {};
|
|
|
|
|
|
p.PacketType = HEADER_ZC_SOULENERGY;
|
|
@@ -19597,15 +19597,15 @@ void clif_autoshadowspell_list( map_session_data& sd ){
|
|
|
|
|
|
p->packetType = HEADER_ZC_SKILL_SELECT_REQUEST;
|
|
|
p->packetLength = sizeof( *p );
|
|
|
- p->why = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1
|
|
|
+ p->flag = 1; // enum PACKET_ZC_SKILL_SELECT_REQUEST::enumWHY::WHY_SC_AUTOSHADOWSPELL = 0x1
|
|
|
|
|
|
size_t count = 0;
|
|
|
for( size_t i = 0; i < MAX_SKILL; i++ ){
|
|
|
if( sd.status.skill[i].flag == SKILL_FLAG_PLAGIARIZED && sd.status.skill[i].id > 0 &&
|
|
|
skill_get_inf2(sd.status.skill[i].id, INF2_ISAUTOSHADOWSPELL))
|
|
|
{
|
|
|
- p->skills[count].skill_id = sd.status.skill[i].id;
|
|
|
- p->packetLength += sizeof( p->skills[0] );
|
|
|
+ p->skillIds[count] = sd.status.skill[i].id;
|
|
|
+ p->packetLength += sizeof( p->skillIds[0] );
|
|
|
count++;
|
|
|
}
|
|
|
}
|
|
@@ -19651,19 +19651,18 @@ int clif_skill_itemlistwindow( map_session_data *sd, uint16 skill_id, uint16 ski
|
|
|
/*==========================================
|
|
|
* Select a skill into a given list (used by SA_AUTOSPELL/SC_AUTOSHADOWSPELL)
|
|
|
* 0443 <type>.L <skill_id>.W (CZ_SKILL_SELECT_RESPONSE)
|
|
|
- * RFIFOL(fd,2) - type (currently not used)
|
|
|
*------------------------------------------*/
|
|
|
void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
|
|
|
+#if PACKETVER >= 20081210
|
|
|
if( sd == nullptr ){
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
|
|
|
- //int type = RFIFOL(fd,info->pos[0]); //WHY_LOWERVER_COMPATIBILITY = 0x0, WHY_SC_AUTOSHADOWSPELL = 0x1,
|
|
|
+ PACKET_CZ_SKILL_SELECT_RESPONSE* p = reinterpret_cast<PACKET_CZ_SKILL_SELECT_RESPONSE*>( RFIFOP( fd, 0 ) );
|
|
|
|
|
|
if (sd->menuskill_id == SA_AUTOSPELL) {
|
|
|
sd->state.workinprogress = WIP_DISABLE_NONE;
|
|
|
- skill_autospell(sd, RFIFOW(fd, info->pos[1]));
|
|
|
+ skill_autospell(sd, p->selectedSkillId);
|
|
|
} else if (sd->menuskill_id == SC_AUTOSHADOWSPELL) {
|
|
|
if (pc_istrading(sd)) {
|
|
|
clif_skill_fail( *sd, sd->ud.skill_id );
|
|
@@ -19671,11 +19670,12 @@ void clif_parse_SkillSelectMenu(int fd, map_session_data *sd) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- skill_select_menu(*sd, RFIFOW(fd, info->pos[1]));
|
|
|
+ skill_select_menu(*sd, p->selectedSkillId);
|
|
|
} else
|
|
|
return;
|
|
|
|
|
|
clif_menuskill_clear(sd);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
|