Converted some packets to structs (#8351)

This commit is contained in:
Atemo 2024-05-21 21:28:01 +02:00 committed by GitHub
parent d1cf6f4ac7
commit 361530a1b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 343 additions and 278 deletions

View File

@ -1606,7 +1606,7 @@ ACMD_FUNC(baselevelup)
sd->status.base_level += (unsigned int)level; sd->status.base_level += (unsigned int)level;
status_calc_pc(sd, SCO_FORCE); status_calc_pc(sd, SCO_FORCE);
status_percent_heal(&sd->bl, 100, 100); status_percent_heal(&sd->bl, 100, 100);
clif_misceffect(&sd->bl, 0); clif_misceffect( sd->bl, NOTIFYEFFECT_BASE_LEVEL_UP );
for (uint32 j = sd->status.base_level - level; j <= sd->status.base_level; j++) { for (uint32 j = sd->status.base_level - level; j <= sd->status.base_level; j++) {
achievement_update_objective(sd, AG_GOAL_LEVEL, 1, j); achievement_update_objective(sd, AG_GOAL_LEVEL, 1, j);
achievement_update_objective(sd, AG_GOAL_STATUS, 2, j, sd->status.class_); achievement_update_objective(sd, AG_GOAL_STATUS, 2, j, sd->status.class_);
@ -1679,7 +1679,7 @@ ACMD_FUNC(joblevelup)
level = pc_maxjoblv(sd) - sd->status.job_level; level = pc_maxjoblv(sd) - sd->status.job_level;
sd->status.job_level += (unsigned int)level; sd->status.job_level += (unsigned int)level;
sd->status.skill_point += level; sd->status.skill_point += level;
clif_misceffect(&sd->bl, 1); clif_misceffect( sd->bl, NOTIFYEFFECT_JOB_LEVEL_UP );
for (uint32 i = sd->status.job_level - level; i <= sd->status.job_level; i++) for (uint32 i = sd->status.job_level - level; i <= sd->status.job_level; i++)
achievement_update_objective(sd, AG_GOAL_LEVEL, 1, i); achievement_update_objective(sd, AG_GOAL_LEVEL, 1, i);
clif_displaymessage(fd, msg_txt(sd,24)); // Job level raised. clif_displaymessage(fd, msg_txt(sd,24)); // Job level raised.
@ -2420,7 +2420,7 @@ ACMD_FUNC(refine)
clif_delitem( *sd, i, 1, 3 ); clif_delitem( *sd, i, 1, 3 );
clif_additem(sd, i, 1, 0); clif_additem(sd, i, 1, 0);
pc_equipitem(sd, i, current_position); pc_equipitem(sd, i, current_position);
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
if( sd->inventory_data[i]->type == IT_WEAPON ){ if( sd->inventory_data[i]->type == IT_WEAPON ){
achievement_update_objective(sd, AG_ENCHANT_SUCCESS, 2, sd->inventory_data[i]->weapon_level, sd->inventory.u.items_inventory[i].refine); achievement_update_objective(sd, AG_ENCHANT_SUCCESS, 2, sd->inventory_data[i]->weapon_level, sd->inventory.u.items_inventory[i].refine);
} }
@ -2499,7 +2499,7 @@ ACMD_FUNC(grade)
clif_delitem( *sd, i, 1, 3 ); clif_delitem( *sd, i, 1, 3 );
clif_additem(sd, i, 1, 0); clif_additem(sd, i, 1, 0);
pc_equipitem(sd, i, current_position); pc_equipitem(sd, i, current_position);
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
count++; count++;
} }
} }
@ -2562,7 +2562,7 @@ ACMD_FUNC(produce)
tmp_item.card[2] = GetWord(sd->status.char_id, 0); tmp_item.card[2] = GetWord(sd->status.char_id, 0);
tmp_item.card[3] = GetWord(sd->status.char_id, 1); tmp_item.card[3] = GetWord(sd->status.char_id, 1);
clif_produceeffect(sd, 0, item_id); clif_produceeffect(sd, 0, item_id);
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND)))
clif_additem(sd, 0, 0, flag); clif_additem(sd, 0, 0, flag);
@ -4923,7 +4923,7 @@ ACMD_FUNC(repairall)
} }
if (count > 0) { if (count > 0) {
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
clif_equiplist(sd); clif_equiplist(sd);
clif_displaymessage(fd, msg_txt(sd,107)); // All items have been repaired. clif_displaymessage(fd, msg_txt(sd,107)); // All items have been repaired.
} else { } else {
@ -7717,7 +7717,9 @@ ACMD_FUNC(misceffect)
return -1; return -1;
if (sscanf(message, "%11d", &effect) < 1) if (sscanf(message, "%11d", &effect) < 1)
return -1; return -1;
clif_misceffect(&sd->bl,effect); if (effect < NOTIFYEFFECT_BASE_LEVEL_UP || effect > NOTIFYEFFECT_TAEKWON_BASE_LEVEL_UP)
return -1;
clif_misceffect( sd->bl, static_cast<e_notify_effect>(effect) );
return 0; return 0;
} }

View File

@ -9810,7 +9810,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
if (sd->weapontype1 > W_KATAR && sd->weapontype1 < W_HUUMA) if (sd->weapontype1 > W_KATAR && sd->weapontype1 < W_HUUMA)
clif_skill_fail( *sd, 0, USESKILL_FAIL_NEED_MORE_BULLET ); clif_skill_fail( *sd, 0, USESKILL_FAIL_NEED_MORE_BULLET );
else else
clif_arrow_fail(sd,0); clif_arrow_fail( *sd, ARROWFAIL_NO_AMMO );
return ATK_NONE; return ATK_NONE;
} }
//Ammo check by Ishizu-chan //Ammo check by Ishizu-chan
@ -9818,7 +9818,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
switch (sd->status.weapon) { switch (sd->status.weapon) {
case W_BOW: case W_BOW:
if (sd->inventory_data[index]->subtype != AMMO_ARROW) { if (sd->inventory_data[index]->subtype != AMMO_ARROW) {
clif_arrow_fail(sd,0); clif_arrow_fail( *sd, ARROWFAIL_NO_AMMO );
return ATK_NONE; return ATK_NONE;
} }
break; break;

View File

@ -105,7 +105,7 @@ int chat_createpcchat(map_session_data* sd, const char* title, const char* pass,
cd->usersd[0] = sd; cd->usersd[0] = sd;
pc_setchatid(sd,cd->bl.id); pc_setchatid(sd,cd->bl.id);
pc_stop_attack(sd); pc_stop_attack(sd);
clif_createchat(sd,0); clif_createchat( *sd, CREATEROOM_SUCCESS );
clif_dispchat(cd,0); clif_dispchat(cd,0);
if (status_isdead(&sd->bl)) if (status_isdead(&sd->bl))
@ -113,7 +113,7 @@ int chat_createpcchat(map_session_data* sd, const char* title, const char* pass,
else else
achievement_update_objective(sd, AG_CHATTING_CREATE, 1, 1); achievement_update_objective(sd, AG_CHATTING_CREATE, 1, 1);
} else } else
clif_createchat(sd,1); clif_createchat( *sd, CREATEROOM_LIMIT_EXCEEDED );
return 0; return 0;
} }
@ -134,31 +134,31 @@ int chat_joinchat(map_session_data* sd, int chatid, const char* pass)
cd = (struct chat_data*)map_id2bl(chatid); cd = (struct chat_data*)map_id2bl(chatid);
if( cd == nullptr || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->state.vending || sd->state.buyingstore || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit ) { if( cd == nullptr || cd->bl.type != BL_CHAT || cd->bl.m != sd->bl.m || sd->state.vending || sd->state.buyingstore || sd->chatID || ((cd->owner->type == BL_NPC) ? cd->users+1 : cd->users) >= cd->limit ) {
clif_joinchatfail(sd,0); clif_joinchatfail( *sd, ENTERROOM_FULL );
return 0; return 0;
} }
if( !cd->pub && strncmp(pass, cd->pass, sizeof(cd->pass)) != 0 && !pc_has_permission(sd, PC_PERM_JOIN_ALL_CHAT) ) { if( !cd->pub && strncmp(pass, cd->pass, sizeof(cd->pass)) != 0 && !pc_has_permission(sd, PC_PERM_JOIN_ALL_CHAT) ) {
clif_joinchatfail(sd,1); clif_joinchatfail( *sd, ENTERROOM_WRONG_PASSWORD );
return 0; return 0;
} }
if( sd->status.base_level < cd->minLvl || sd->status.base_level > cd->maxLvl ) { if( sd->status.base_level < cd->minLvl || sd->status.base_level > cd->maxLvl ) {
if(sd->status.base_level < cd->minLvl) if(sd->status.base_level < cd->minLvl)
clif_joinchatfail(sd,5); clif_joinchatfail( *sd, ENTERROOM_TOO_LOW_LEVEL );
else else
clif_joinchatfail(sd,6); clif_joinchatfail( *sd, ENTERROOM_TOO_HIGH_LEVEL );
return 0; return 0;
} }
if( sd->status.zeny < cd->zeny ) { if( sd->status.zeny < cd->zeny ) {
clif_joinchatfail(sd,4); clif_joinchatfail( *sd, ENTERROOM_NO_ZENY );
return 0; return 0;
} }
if( cd->owner->type != BL_NPC && idb_exists(cd->kick_list,sd->status.char_id) ) { if( cd->owner->type != BL_NPC && idb_exists(cd->kick_list,sd->status.char_id) ) {
clif_joinchatfail(sd,2);//You have been kicked out of the room. clif_joinchatfail( *sd, ENTERROOM_KICKED );
return 0; return 0;
} }

View File

@ -4194,8 +4194,8 @@ void clif_arrowequip( map_session_data& sd ) {
} }
/// Ammunition action message (ZC_ACTION_FAILURE). /// Ammunition action message.
/// 013b <type>.W /// 013b <type>.W (ZC_ACTION_FAILURE)
/// type: /// type:
/// 0 = MsgStringTable[242]="Please equip the proper ammunition first." /// 0 = MsgStringTable[242]="Please equip the proper ammunition first."
/// 1 = MsgStringTable[243]="You can't Attack or use Skills because your Weight Limit has been exceeded." /// 1 = MsgStringTable[243]="You can't Attack or use Skills because your Weight Limit has been exceeded."
@ -4203,16 +4203,13 @@ void clif_arrowequip( map_session_data& sd ) {
/// 3 = assassin, baby_assassin, assassin_cross => MsgStringTable[1040]="You have equipped throwing daggers." /// 3 = assassin, baby_assassin, assassin_cross => MsgStringTable[1040]="You have equipped throwing daggers."
/// gunslinger => MsgStringTable[1175]="Bullets have been equipped." /// gunslinger => MsgStringTable[1175]="Bullets have been equipped."
/// NOT ninja => MsgStringTable[245]="Ammunition has been equipped." /// NOT ninja => MsgStringTable[245]="Ammunition has been equipped."
void clif_arrow_fail(map_session_data *sd,int type) { void clif_arrow_fail( map_session_data& sd, e_action_failure type ) {
int fd; PACKET_ZC_ACTION_FAILURE packet{};
nullpo_retv(sd); packet.packetType = HEADER_ZC_ACTION_FAILURE;
packet.type = static_cast<decltype(packet.type)>(type);
fd=sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd, packet_len(0x013b));
WFIFOW(fd,0) = 0x013b;
WFIFOW(fd,2) = type;
WFIFOSET(fd, packet_len(0x013b));
} }
@ -4263,25 +4260,22 @@ void clif_arrow_create_list( map_session_data *sd ){
} }
/// Notifies the client, about the result of an status change request (ZC_STATUS_CHANGE_ACK). /// Notifies the client, about the result of an status change request.
/// 00bc <status id>.W <result>.B <value>.B /// 00bc <status id>.W <result>.B <value>.B (ZC_STATUS_CHANGE_ACK)
/// status id: /// status id:
/// SP_STR ~ SP_LUK and SP_POW ~ SP_CRT /// SP_STR ~ SP_LUK and SP_POW ~ SP_CRT
/// result: /// result:
/// 0 = failure /// 0 = failure
/// 1 = success /// 1 = success
void clif_statusupack(map_session_data *sd,int type,int ok,int val) { void clif_statusupack( map_session_data& sd, int32 type, bool success, int32 val ) {
int fd; PACKET_ZC_STATUS_CHANGE_ACK packet{};
nullpo_retv(sd); packet.packetType = HEADER_ZC_STATUS_CHANGE_ACK;
packet.sp = static_cast<decltype(packet.sp)>(type);
packet.ok = success;
packet.value = cap_value(val, 0, UINT8_MAX);
fd=sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd, packet_len(0xbc));
WFIFOW(fd,0) = 0xbc;
WFIFOW(fd,2) = type;
WFIFOB(fd,4) = ok;
WFIFOB(fd,5) = cap_value(val, 0, UINT8_MAX);
WFIFOSET(fd, packet_len(0xbc));
} }
@ -4349,8 +4343,8 @@ void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok)
} }
/// Notifies clients in the area about an special/visual effect (ZC_NOTIFY_EFFECT). /// Notifies clients in the area about an special/visual effect.
/// 019b <id>.L <effect id>.L /// 019b <id>.L <effect id>.L (ZC_NOTIFY_EFFECT)
/// effect id: /// effect id:
/// 0 = base level up /// 0 = base level up
/// 1 = job level up /// 1 = job level up
@ -4362,17 +4356,14 @@ void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok)
/// 7 = base level up (super novice) /// 7 = base level up (super novice)
/// 8 = job level up (super novice) /// 8 = job level up (super novice)
/// 9 = base level up (taekwon) /// 9 = base level up (taekwon)
void clif_misceffect(struct block_list* bl,int type) void clif_misceffect( block_list& bl, e_notify_effect type ){
{ PACKET_ZC_NOTIFY_EFFECT packet{};
unsigned char buf[32];
nullpo_retv(bl); packet.packetType = HEADER_ZC_NOTIFY_EFFECT;
packet.aid = bl.id;
packet.effectId = static_cast<decltype(packet.effectId)>(type);
WBUFW(buf,0) = 0x19b; clif_send( &packet, sizeof( packet ), &bl, AREA );
WBUFL(buf,2) = bl->id;
WBUFL(buf,6) = type;
clif_send(buf,packet_len(0x19b),bl,AREA);
} }
@ -4433,30 +4424,33 @@ void clif_changeoption_target( struct block_list* bl, struct block_list* target
} }
/// Displays status change effects on NPCs/monsters (ZC_NPC_SHOWEFST_UPDATE). /// Displays status change effects on NPCs/monsters.
/// 028a <id>.L <effect state>.L <level>.L <showEFST>.L /// 028a <id>.L <effect state>.L <level>.L <showEFST>.L (ZC_NPC_SHOWEFST_UPDATE)
void clif_changeoption2(struct block_list* bl) void clif_changeoption2( block_list& bl ){
{ status_change *sc = status_get_sc(&bl);
unsigned char buf[20]; if (!sc)
status_change *sc; return; //How can an option change if there's no sc?
sc = status_get_sc(bl); PACKET_ZC_NPC_SHOWEFST_UPDATE packet{};
if (!sc) return; //How can an option change if there's no sc?
WBUFW(buf,0) = 0x28a; packet.packetType = HEADER_ZC_NPC_SHOWEFST_UPDATE;
WBUFL(buf,2) = bl->id; packet.gid = bl.id;
WBUFL(buf,6) = sc->option; packet.effectState = sc->option;
WBUFL(buf,10) = clif_setlevel(bl); packet.level = clif_setlevel(&bl);
WBUFL(buf,14) = sc->opt3; packet.showEFST = sc->opt3;
if(disguised(bl)) {
clif_send(buf,packet_len(0x28a),bl,AREA_WOS); if (disguised(&bl)) {
WBUFL(buf,2) = disguised_bl_id( bl->id ); clif_send( &packet, sizeof( packet ), &bl, AREA_WOS );
clif_send(buf,packet_len(0x28a),bl,SELF);
WBUFL(buf,2) = bl->id; packet.gid = disguised_bl_id( bl.id );
WBUFL(buf,6) = OPTION_INVISIBLE; clif_send( &packet, sizeof( packet ), &bl, SELF );
clif_send(buf,packet_len(0x28a),bl,SELF);
} else packet.gid = bl.id;
clif_send(buf,packet_len(0x28a),bl,AREA); packet.effectState = OPTION_INVISIBLE;
clif_send( &packet, sizeof( packet ), &bl, SELF );
} else {
clif_send( &packet, sizeof( packet ), &bl, AREA );
}
} }
@ -4495,23 +4489,19 @@ void clif_useitemack( map_session_data *sd, int index, int amount, bool ok ){
} }
/// Inform client whether chatroom creation was successful or not (ZC_ACK_CREATE_CHATROOM). /// Inform client whether chatroom creation was successful or not.
/// 00d6 <flag>.B /// 00d6 <flag>.B (ZC_ACK_CREATE_CHATROOM)
/// flag: /// flag:
/// 0 = Room has been successfully created (opens chat room) /// 0 = Room has been successfully created (opens chat room)
/// 1 = Room limit exceeded /// 1 = Room limit exceeded
/// 2 = Same room already exists /// 2 = Same room already exists
void clif_createchat(map_session_data* sd, int flag) void clif_createchat( map_session_data& sd, e_create_chatroom flag ){
{ PACKET_ZC_ACK_CREATE_CHATROOM packet{};
int fd;
nullpo_retv(sd); packet.packetType = HEADER_ZC_ACK_CREATE_CHATROOM;
packet.flag = static_cast<decltype(packet.flag)>(flag);
fd = sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd,packet_len(0xd6));
WFIFOW(fd,0) = 0xd6;
WFIFOB(fd,2) = flag;
WFIFOSET(fd,packet_len(0xd6));
} }
@ -4605,8 +4595,8 @@ void clif_clearchat(struct chat_data *cd,int fd)
} }
/// Displays messages regarding join chat failures (ZC_REFUSE_ENTER_ROOM). /// Displays messages regarding join chat failures.
/// 00da <result>.B /// 00da <result>.B (ZC_REFUSE_ENTER_ROOM)
/// result: /// result:
/// 0 = room full /// 0 = room full
/// 1 = wrong password /// 1 = wrong password
@ -4616,18 +4606,13 @@ void clif_clearchat(struct chat_data *cd,int fd)
/// 5 = too low level /// 5 = too low level
/// 6 = too high level /// 6 = too high level
/// 7 = unsuitable job class /// 7 = unsuitable job class
void clif_joinchatfail(map_session_data *sd,int flag) void clif_joinchatfail( map_session_data& sd, e_refuse_enter_room result ){
{ PACKET_ZC_REFUSE_ENTER_ROOM packet{};
int fd;
nullpo_retv(sd); packet.packetType = HEADER_ZC_REFUSE_ENTER_ROOM;
packet.result = static_cast<decltype(packet.result)>(result);
fd = sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd,packet_len(0xda));
WFIFOW(fd,0) = 0xda;
WFIFOB(fd,2) = flag;
WFIFOSET(fd,packet_len(0xda));
} }
@ -4855,84 +4840,70 @@ void clif_tradeitemok(map_session_data& sd, int index, e_exitem_add_result resul
} }
/// Notifies the client about finishing one side of the current trade (ZC_CONCLUDE_EXCHANGE_ITEM). /// Notifies the client about finishing one side of the current trade.
/// 00ec <who>.B /// 00ec <who>.B (ZC_CONCLUDE_EXCHANGE_ITEM)
/// who: /// who:
/// 0 = self /// 0 = self
/// 1 = other player /// 1 = other player
void clif_tradedeal_lock(map_session_data* sd, int fail) void clif_tradedeal_lock( map_session_data& sd, bool who ){
{ PACKET_ZC_CONCLUDE_EXCHANGE_ITEM packet{};
int fd;
nullpo_retv(sd);
fd = sd->fd; packet.packetType = HEADER_ZC_CONCLUDE_EXCHANGE_ITEM;
WFIFOHEAD(fd,packet_len(0xec)); packet.who = who;
WFIFOW(fd,0) = 0xec;
WFIFOB(fd,2) = fail; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOSET(fd,packet_len(0xec));
} }
/// Notifies the client about the trade being canceled (ZC_CANCEL_EXCHANGE_ITEM). /// Notifies the client about the trade being canceled.
/// 00ee /// 00ee (ZC_CANCEL_EXCHANGE_ITEM)
void clif_tradecancelled(map_session_data* sd) void clif_tradecancelled( map_session_data& sd ){
{ PACKET_ZC_CANCEL_EXCHANGE_ITEM packet{};
int fd;
nullpo_retv(sd);
fd = sd->fd; packet.packetType = HEADER_ZC_CANCEL_EXCHANGE_ITEM;
WFIFOHEAD(fd,packet_len(0xee));
WFIFOW(fd,0) = 0xee; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOSET(fd,packet_len(0xee));
} }
/// Result of a trade (ZC_EXEC_EXCHANGE_ITEM). /// Result of a trade.
/// 00f0 <result>.B /// 00f0 <result>.B (ZC_EXEC_EXCHANGE_ITEM)
/// result: /// result:
/// 0 = success /// 0 = success
/// 1 = failure /// 1 = failure
void clif_tradecompleted(map_session_data* sd, int fail) void clif_tradecompleted( map_session_data& sd ){
{ PACKET_ZC_EXEC_EXCHANGE_ITEM packet{};
int fd;
nullpo_retv(sd);
fd = sd->fd; packet.packetType = HEADER_ZC_EXEC_EXCHANGE_ITEM;
WFIFOHEAD(fd,packet_len(0xf0)); packet.result = 0;
WFIFOW(fd,0) = 0xf0;
WFIFOB(fd,2) = fail; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOSET(fd,packet_len(0xf0));
} }
/// Resets the trade window on the send side (ZC_EXCHANGEITEM_UNDO). /// Resets the trade window on the send side.
/// 00f1 /// 00f1 (ZC_EXCHANGEITEM_UNDO)
/// NOTE: Unknown purpose. Items are not removed until the window is /// NOTE: Unknown purpose. Items are not removed until the window is
/// refreshed (ex. by putting another item in there). /// refreshed (ex. by putting another item in there).
void clif_tradeundo(map_session_data* sd) void clif_tradeundo( map_session_data& sd ){
{ PACKET_ZC_EXCHANGEITEM_UNDO packet{};
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xf1)); packet.packetType = HEADER_ZC_EXCHANGEITEM_UNDO;
WFIFOW(fd,0) = 0xf1;
WFIFOSET(fd,packet_len(0xf1)); clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
} }
/// Updates storage total amount (ZC_NOTIFY_STOREITEM_COUNTINFO). /// Updates storage total amount.
/// 00f2 <current count>.W <max count>.W /// 00f2 <current count>.W <max count>.W (ZC_NOTIFY_STOREITEM_COUNTINFO)
void clif_updatestorageamount(map_session_data* sd, int amount, int max_amount) void clif_updatestorageamount( map_session_data& sd, uint16 amount, uint16 max_amount ){
{ PACKET_ZC_NOTIFY_STOREITEM_COUNTINFO packet{};
int fd;
nullpo_retv(sd); packet.packetType = HEADER_ZC_NOTIFY_STOREITEM_COUNTINFO;
packet.amount = amount;
packet.max_amount = max_amount;
fd=sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd,packet_len(0xf2));
WFIFOW(fd,0) = 0xf2;
WFIFOW(fd,2) = amount;
WFIFOW(fd,4) = max_amount;
WFIFOSET(fd,packet_len(0xf2));
} }
@ -4974,35 +4945,27 @@ void clif_storageitemadded( map_session_data* sd, struct item* i, int index, int
} }
/// Notifies the client of an item being deleted from the storage (ZC_DELETE_ITEM_FROM_STORE). /// Notifies the client of an item being deleted from the storage.
/// 00f6 <index>.W <amount>.L /// 00f6 <index>.W <amount>.L (ZC_DELETE_ITEM_FROM_STORE)
void clif_storageitemremoved(map_session_data* sd, int index, int amount) void clif_storageitemremoved( map_session_data& sd, uint16 index, uint32 amount ){
{ PACKET_ZC_DELETE_ITEM_FROM_STORE packet{};
int fd;
nullpo_retv(sd); packet.packetType = HEADER_ZC_DELETE_ITEM_FROM_STORE;
packet.index = client_storage_index(index);
packet.amount = amount;
fd=sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd,packet_len(0xf6));
WFIFOW(fd,0)=0xf6; // Storage item removed
WFIFOW(fd,2)=client_storage_index(index);
WFIFOL(fd,4)=amount;
WFIFOSET(fd,packet_len(0xf6));
} }
/// Closes storage (ZC_CLOSE_STORE). /// Closes storage.
/// 00f8 /// 00f8 (ZC_CLOSE_STORE)
void clif_storageclose(map_session_data* sd) void clif_storageclose( map_session_data& sd ){
{ PACKET_ZC_CLOSE_STORE packet{};
int fd;
nullpo_retv(sd); packet.packetType = HEADER_ZC_CLOSE_STORE;
fd=sd->fd; clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
WFIFOHEAD(fd,packet_len(0xf8));
WFIFOW(fd,0) = 0xf8; // Storage Closed
WFIFOSET(fd,packet_len(0xf8));
} }
@ -9895,7 +9858,7 @@ void clif_refresh_storagewindow(map_session_data *sd) {
if( sd->state.storage_flag == 1 ) { if( sd->state.storage_flag == 1 ) {
storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage)); storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage));
clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0)); clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0));
clif_updatestorageamount(sd, sd->storage.amount, sd->storage.max_amount); clif_updatestorageamount(*sd, sd->storage.amount, sd->storage.max_amount);
} }
// Notify the client that the gstorage is open otherwise it will // Notify the client that the gstorage is open otherwise it will
// remain locked forever and nobody will be able to access it // remain locked forever and nobody will be able to access it
@ -9907,14 +9870,14 @@ void clif_refresh_storagewindow(map_session_data *sd) {
else { else {
storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild)); storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild));
clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage"); clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage");
clif_updatestorageamount(sd, gstor->amount, gstor->max_amount); clif_updatestorageamount(*sd, gstor->amount, gstor->max_amount);
} }
} }
// Notify the client that the premium storage is open // Notify the client that the premium storage is open
if (sd->state.storage_flag == 3) { if (sd->state.storage_flag == 3) {
storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage)); storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage));
clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id)); clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id));
clif_updatestorageamount(sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount); clif_updatestorageamount(*sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount);
} }
} }
@ -22514,7 +22477,7 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
// Success // Success
item->refine = cap_value( item->refine + 1, 0, MAX_REFINE ); item->refine = cap_value( item->refine + 1, 0, MAX_REFINE );
log_pick_pc( sd, LOG_TYPE_OTHER, 1, item ); log_pick_pc( sd, LOG_TYPE_OTHER, 1, item );
clif_misceffect( &sd->bl, 3 ); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
clif_refine( *sd, index, ITEMREFINING_SUCCESS ); clif_refine( *sd, index, ITEMREFINING_SUCCESS );
if (info->broadcast_success) { if (info->broadcast_success) {
clif_broadcast_refine_result(*sd, item->nameid, item->refine, true); clif_broadcast_refine_result(*sd, item->nameid, item->refine, true);
@ -22548,7 +22511,7 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
clif_refineui_info( sd, index ); clif_refineui_info( sd, index );
} }
clif_misceffect( &sd->bl, 2 ); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
achievement_update_objective( sd, AG_ENCHANT_FAIL, 1, 1 ); achievement_update_objective( sd, AG_ENCHANT_FAIL, 1, 1 );
} }
#endif #endif

View File

@ -638,6 +638,43 @@ enum e_ack_itemrefining : uint8 {
ITEMREFINING_FAILURE2 = 3 ITEMREFINING_FAILURE2 = 3
}; };
enum e_refuse_enter_room : uint8 {
ENTERROOM_FULL = 0,
ENTERROOM_WRONG_PASSWORD = 1,
ENTERROOM_KICKED = 2,
ENTERROOM_SUCCESS = 3,
ENTERROOM_NO_ZENY = 4,
ENTERROOM_TOO_LOW_LEVEL = 5,
ENTERROOM_TOO_HIGH_LEVEL = 6,
ENTERROOM_UNSUITABLE_JOB = 7
};
enum e_create_chatroom : uint8 {
CREATEROOM_SUCCESS = 0,
CREATEROOM_LIMIT_EXCEEDED = 1,
CREATEROOM_ALREADY_EXISTS = 2
};
enum e_action_failure : uint8 {
ARROWFAIL_NO_AMMO = 0,
ARROWFAIL_WEIGHT_LIMIT = 1,
ARROWFAIL_WEIGHT_LIMIT2 = 2,
ARROWFAIL_SUCCESS = 3
};
enum e_notify_effect : uint8 {
NOTIFYEFFECT_BASE_LEVEL_UP = 0,
NOTIFYEFFECT_JOB_LEVEL_UP = 1,
NOTIFYEFFECT_REFINE_FAILURE = 2,
NOTIFYEFFECT_REFINE_SUCCESS = 3,
NOTIFYEFFECT_GAME_OVER = 4,
NOTIFYEFFECT_PHARMACY_SUCCESS = 5,
NOTIFYEFFECT_PHARMACY_FAILURE = 6,
NOTIFYEFFECT_SUPER_NOVICE_BASE_LEVEL_UP = 7,
NOTIFYEFFECT_SUPER_NOVICE_JOB_LEVEL_UP = 8,
NOTIFYEFFECT_TAEKWON_BASE_LEVEL_UP = 9,
};
int clif_setip(const char* ip); int clif_setip(const char* ip);
void clif_setbindip(const char* ip); void clif_setbindip(const char* ip);
void clif_setport(uint16 port); void clif_setport(uint16 port);
@ -694,20 +731,20 @@ void clif_changelook(struct block_list *bl,int type,int val); // area
void clif_changetraplook(struct block_list *bl,int val); // area void clif_changetraplook(struct block_list *bl,int val); // area
void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target); //area specified in 'target' void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target); //area specified in 'target'
void clif_arrowequip( map_session_data& sd ); void clif_arrowequip( map_session_data& sd );
void clif_arrow_fail(map_session_data *sd,int type); //self void clif_arrow_fail( map_session_data& sd, e_action_failure type );
void clif_arrow_create_list(map_session_data *sd); //self void clif_arrow_create_list(map_session_data *sd); //self
void clif_statusupack(map_session_data *sd,int type,int ok,int val); // self void clif_statusupack( map_session_data& sd, int32 type, bool success, int32 val = 0 );
void clif_equipitemack( map_session_data& sd, uint8 flag, int index, int pos = 0 ); // self void clif_equipitemack( map_session_data& sd, uint8 flag, int index, int pos = 0 ); // self
void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok); // self void clif_unequipitemack(map_session_data *sd,int n,int pos,int ok); // self
void clif_misceffect(struct block_list* bl,int type); // area void clif_misceffect( block_list& bl, e_notify_effect type );
void clif_changeoption_target(struct block_list* bl, struct block_list* target); void clif_changeoption_target(struct block_list* bl, struct block_list* target);
#define clif_changeoption(bl) clif_changeoption_target(bl, nullptr) // area #define clif_changeoption(bl) clif_changeoption_target(bl, nullptr) // area
void clif_changeoption2(struct block_list* bl); // area void clif_changeoption2( block_list& bl );
void clif_useitemack(map_session_data *sd,int index,int amount,bool ok); // self void clif_useitemack(map_session_data *sd,int index,int amount,bool ok); // self
void clif_GlobalMessage(struct block_list* bl, const char* message,enum send_target target); void clif_GlobalMessage(struct block_list* bl, const char* message,enum send_target target);
void clif_createchat(map_session_data* sd, int flag); // self void clif_createchat( map_session_data& sd, e_create_chatroom flag );
void clif_dispchat(struct chat_data* cd, int fd); // area or fd void clif_dispchat(struct chat_data* cd, int fd); // area or fd
void clif_joinchatfail(map_session_data *sd,int flag); // self void clif_joinchatfail( map_session_data& sd, e_refuse_enter_room result );
void clif_joinchatok(map_session_data *sd,struct chat_data* cd); // self void clif_joinchatok(map_session_data *sd,struct chat_data* cd); // self
void clif_addchat(struct chat_data* cd,map_session_data *sd); // chat void clif_addchat(struct chat_data* cd,map_session_data *sd); // chat
void clif_changechatowner(struct chat_data* cd, map_session_data* sd); // chat void clif_changechatowner(struct chat_data* cd, map_session_data* sd); // chat
@ -733,17 +770,17 @@ void clif_traderequest(map_session_data* sd, const char* name);
void clif_tradestart(map_session_data* sd, uint8 type); void clif_tradestart(map_session_data* sd, uint8 type);
void clif_tradeadditem(map_session_data* sd, map_session_data* tsd, int index, int amount); void clif_tradeadditem(map_session_data* sd, map_session_data* tsd, int index, int amount);
void clif_tradeitemok(map_session_data& sd, int index, e_exitem_add_result result); void clif_tradeitemok(map_session_data& sd, int index, e_exitem_add_result result);
void clif_tradedeal_lock(map_session_data* sd, int fail); void clif_tradedeal_lock( map_session_data& sd, bool who );
void clif_tradecancelled(map_session_data* sd); void clif_tradecancelled( map_session_data& sd );
void clif_tradecompleted(map_session_data* sd, int fail); void clif_tradecompleted( map_session_data& sd );
void clif_tradeundo(map_session_data* sd); void clif_tradeundo( map_session_data& sd );
// storage // storage
void clif_storagelist(map_session_data* sd, struct item* items, int items_length, const char *storename); void clif_storagelist(map_session_data* sd, struct item* items, int items_length, const char *storename);
void clif_updatestorageamount(map_session_data* sd, int amount, int max_amount); void clif_updatestorageamount( map_session_data& sd, uint16 amount, uint16 max_amount );
void clif_storageitemadded(map_session_data* sd, struct item* i, int index, int amount); void clif_storageitemadded(map_session_data* sd, struct item* i, int index, int amount);
void clif_storageitemremoved(map_session_data* sd, int index, int amount); void clif_storageitemremoved( map_session_data& sd, uint16 index, uint32 amount );
void clif_storageclose(map_session_data* sd); void clif_storageclose( map_session_data& sd );
int clif_insight(struct block_list *bl,va_list ap); // map_forallinmovearea callback int clif_insight(struct block_list *bl,va_list ap); // map_forallinmovearea callback
int clif_outsight(struct block_list *bl,va_list ap); // map_forallinmovearea callback int clif_outsight(struct block_list *bl,va_list ap); // map_forallinmovearea callback

View File

@ -72,7 +72,6 @@
parseable_packet(0x00b9,6,clif_parse_NpcNextClicked,2); parseable_packet(0x00b9,6,clif_parse_NpcNextClicked,2);
packet(0x00ba,2); packet(0x00ba,2);
parseable_packet(0x00bb,5,clif_parse_StatusUp,2,4); parseable_packet(0x00bb,5,clif_parse_StatusUp,2,4);
packet(0x00bc,6);
parseable_packet(0x00bf,3,clif_parse_Emotion,2); parseable_packet(0x00bf,3,clif_parse_Emotion,2);
packet(0x00c0,7); packet(0x00c0,7);
parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0); parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0);
@ -94,11 +93,9 @@
parseable_packet(0x00d3,2,clif_parse_PMIgnoreList,0); parseable_packet(0x00d3,2,clif_parse_PMIgnoreList,0);
packet(0x00d4,-1); packet(0x00d4,-1);
parseable_packet(0x00d5,-1,clif_parse_CreateChatRoom,2,4,6,7,15); parseable_packet(0x00d5,-1,clif_parse_CreateChatRoom,2,4,6,7,15);
packet(0x00d6,3);
packet(0x00d7,-1); packet(0x00d7,-1);
packet(0x00d8,6); packet(0x00d8,6);
parseable_packet(0x00d9,14,clif_parse_ChatAddMember,2,6); parseable_packet(0x00d9,14,clif_parse_ChatAddMember,2,6);
packet(0x00da,3);
packet(0x00db,-1); packet(0x00db,-1);
packet(0x00dc,28); packet(0x00dc,28);
packet(0x00dd,29); packet(0x00dd,29);
@ -115,18 +112,11 @@
parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4); parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4);
packet(0x00ea,5); packet(0x00ea,5);
parseable_packet(0x00eb,2,clif_parse_TradeOk,0); parseable_packet(0x00eb,2,clif_parse_TradeOk,0);
packet(0x00ec,3);
parseable_packet(0x00ed,2,clif_parse_TradeCancel,0); parseable_packet(0x00ed,2,clif_parse_TradeCancel,0);
packet(0x00ee,2);
parseable_packet(0x00ef,2,clif_parse_TradeCommit,0); parseable_packet(0x00ef,2,clif_parse_TradeCommit,0);
packet(0x00f0,3);
packet(0x00f1,2);
packet(0x00f2,6);
parseable_packet(0x00f3,8,clif_parse_MoveToKafra,2,4); parseable_packet(0x00f3,8,clif_parse_MoveToKafra,2,4);
parseable_packet(0x00f5,8,clif_parse_MoveFromKafra,2,4); parseable_packet(0x00f5,8,clif_parse_MoveFromKafra,2,4);
packet(0x00f6,8);
parseable_packet(0x00f7,2,clif_parse_CloseKafra,0); parseable_packet(0x00f7,2,clif_parse_CloseKafra,0);
packet(0x00f8,2);
parseable_packet(0x00f9,26,clif_parse_CreateParty,2); parseable_packet(0x00f9,26,clif_parse_CreateParty,2);
packet(0x00fb,-1); packet(0x00fb,-1);
parseable_packet(0x00fc,6,clif_parse_PartyInvite,2); parseable_packet(0x00fc,6,clif_parse_PartyInvite,2);
@ -180,7 +170,6 @@
packet(0x0137,6); packet(0x0137,6);
packet(0x0138,3); packet(0x0138,3);
packet(0x0139,16); packet(0x0139,16);
packet(0x013b,4);
packet(0x013d,6); packet(0x013d,6);
packet(0x013e,24); packet(0x013e,24);
parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2); parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2);
@ -269,7 +258,6 @@
parseable_packet(0x0198,8,clif_parse_GMChangeMapType,2,4,6); parseable_packet(0x0198,8,clif_parse_GMChangeMapType,2,4,6);
packet(0x0199,4); packet(0x0199,4);
packet(0x019a,14); packet(0x019a,14);
packet(0x019b,10);
parseable_packet(0x019c,-1,clif_parse_LocalBroadcast,2,4); parseable_packet(0x019c,-1,clif_parse_LocalBroadcast,2,4);
parseable_packet(0x019d,6,clif_parse_GMHide,2); parseable_packet(0x019d,6,clif_parse_GMHide,2);
packet(0x019e,2); packet(0x019e,2);
@ -917,7 +905,6 @@
packet(0x0287,-1); packet(0x0287,-1);
packet(0x0288,6); packet(0x0288,6);
packet(0x0289,8); packet(0x0289,8);
packet(0x028a,18);
packet(0x028b,-1); packet(0x028b,-1);
packet(0x028c,46); packet(0x028c,46);
packet(0x028d,34); packet(0x028d,34);

View File

@ -853,6 +853,82 @@ struct PACKET_ZC_EQUIP_ARROW {
} __attribute__((packed)); } __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c) DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c)
struct PACKET_ZC_CLOSE_STORE {
int16 packetType;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_CLOSE_STORE, 0xf8);
struct PACKET_ZC_DELETE_ITEM_FROM_STORE {
int16 packetType;
uint16 index;
uint32 amount;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DELETE_ITEM_FROM_STORE, 0xf6);
struct PACKET_ZC_NOTIFY_STOREITEM_COUNTINFO {
int16 packetType;
uint16 amount;
uint16 max_amount;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_STOREITEM_COUNTINFO, 0xf2);
struct PACKET_ZC_EXCHANGEITEM_UNDO {
int16 packetType;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_EXCHANGEITEM_UNDO, 0xf1);
struct PACKET_ZC_EXEC_EXCHANGE_ITEM {
int16 packetType;
uint8 result;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_EXEC_EXCHANGE_ITEM, 0xf0);
struct PACKET_ZC_CANCEL_EXCHANGE_ITEM {
int16 packetType;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_CANCEL_EXCHANGE_ITEM, 0xee);
struct PACKET_ZC_CONCLUDE_EXCHANGE_ITEM {
int16 packetType;
uint8 who;
} __attribute__((packed));
struct PACKET_ZC_ACK_CREATE_CHATROOM {
int16 packetType;
uint8 flag;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_CREATE_CHATROOM, 0xd6);
DEFINE_PACKET_HEADER(ZC_CONCLUDE_EXCHANGE_ITEM, 0xec);
struct PACKET_ZC_REFUSE_ENTER_ROOM {
int16 packetType;
uint8 result;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_REFUSE_ENTER_ROOM, 0xda);
struct PACKET_ZC_NPC_SHOWEFST_UPDATE {
int16 packetType;
uint32 gid;
uint32 effectState;
int32 level;
uint32 showEFST;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NPC_SHOWEFST_UPDATE, 0x28a);
struct PACKET_ZC_ACTION_FAILURE {
int16 packetType;
uint16 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACTION_FAILURE, 0x13b)
struct PACKET_ZC_NOTIFY_EFFECT {
int16 packetType;
uint32 aid;
uint32 effectId;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT, 0x19b);
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 ) #if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
#pragma pack( pop ) #pragma pack( pop )

View File

@ -8118,7 +8118,7 @@ int pc_checkbaselevelup(map_session_data *sd) {
sc_start(&sd->bl, &sd->bl, status.second->type, 100, 10, 600000); sc_start(&sd->bl, &sd->bl, status.second->type, 100, 10, 600000);
} }
} }
clif_misceffect(&sd->bl,0); clif_misceffect( sd->bl, NOTIFYEFFECT_BASE_LEVEL_UP );
npc_script_event(sd, NPCE_BASELVUP); //LORDALFA - LVLUPEVENT npc_script_event(sd, NPCE_BASELVUP); //LORDALFA - LVLUPEVENT
if(sd->status.party_id) if(sd->status.party_id)
@ -8173,7 +8173,7 @@ int pc_checkjoblevelup(map_session_data *sd)
clif_updatestatus(*sd,SP_NEXTJOBEXP); clif_updatestatus(*sd,SP_NEXTJOBEXP);
clif_updatestatus(*sd,SP_SKILLPOINT); clif_updatestatus(*sd,SP_SKILLPOINT);
status_calc_pc(sd,SCO_FORCE); status_calc_pc(sd,SCO_FORCE);
clif_misceffect(&sd->bl,1); clif_misceffect( sd->bl, NOTIFYEFFECT_JOB_LEVEL_UP );
if (pc_checkskill(sd, SG_DEVIL) && ((sd->class_&MAPID_THIRDMASK) == MAPID_STAR_EMPEROR || pc_is_maxjoblv(sd)) ) if (pc_checkskill(sd, SG_DEVIL) && ((sd->class_&MAPID_THIRDMASK) == MAPID_STAR_EMPEROR || pc_is_maxjoblv(sd)) )
clif_status_change(&sd->bl, EFST_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL. clif_status_change(&sd->bl, EFST_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL.
@ -8705,7 +8705,7 @@ bool pc_statusup(map_session_data* sd, int type, int increase)
// check conditions // check conditions
if (type < SP_STR || type > SP_LUK || increase <= 0) { if (type < SP_STR || type > SP_LUK || increase <= 0) {
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
@ -8714,14 +8714,14 @@ bool pc_statusup(map_session_data* sd, int type, int increase)
max_increase = pc_maxparameterincrease(sd, type); max_increase = pc_maxparameterincrease(sd, type);
increase = cap_value(increase, 0, max_increase); // cap to the maximum status points available increase = cap_value(increase, 0, max_increase); // cap to the maximum status points available
if (increase <= 0 || current + increase > pc_maxparameter(sd, (enum e_params)(type-SP_STR))) { if (increase <= 0 || current + increase > pc_maxparameter(sd, (enum e_params)(type-SP_STR))) {
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
// check status points // check status points
needed_points = pc_need_status_point(sd, type, increase); needed_points = pc_need_status_point(sd, type, increase);
if (needed_points < 0 || needed_points > sd->status.status_point) { // Sanity check if (needed_points < 0 || needed_points > sd->status.status_point) { // Sanity check
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
@ -8738,7 +8738,7 @@ bool pc_statusup(map_session_data* sd, int type, int increase)
clif_updatestatus(*sd, SP_STATUSPOINT); clif_updatestatus(*sd, SP_STATUSPOINT);
// update stat value // update stat value
clif_statusupack(sd, type, 1, final_value); // required clif_statusupack( *sd, type, true, final_value );
if( final_value > 255 ) if( final_value > 255 )
clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value
@ -8766,7 +8766,7 @@ int pc_statusup2(map_session_data* sd, int type, int val)
if( type < SP_STR || type > SP_LUK ) if( type < SP_STR || type > SP_LUK )
{ {
clif_statusupack(sd,type,0,0); clif_statusupack( *sd, type, false );
return 0; return 0;
} }
@ -8782,7 +8782,7 @@ int pc_statusup2(map_session_data* sd, int type, int val)
clif_updatestatus(*sd, static_cast<_sp>( SP_USTR + type-SP_STR ) ); clif_updatestatus(*sd, static_cast<_sp>( SP_USTR + type-SP_STR ) );
// update stat value // update stat value
clif_statusupack(sd,type,1,val); // required clif_statusupack( *sd, type, true, val );
if( val > 255 ) if( val > 255 )
clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value
@ -8865,7 +8865,7 @@ bool pc_traitstatusup(map_session_data* sd, int type, int increase)
// check conditions // check conditions
if (type < SP_POW || type > SP_CRT || increase <= 0) { if (type < SP_POW || type > SP_CRT || increase <= 0) {
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
@ -8875,7 +8875,7 @@ bool pc_traitstatusup(map_session_data* sd, int type, int increase)
increase = cap_value(increase, 0, max_increase); // cap to the maximum status points available increase = cap_value(increase, 0, max_increase); // cap to the maximum status points available
if (increase <= 0 || current + increase > pc_maxparameter(sd, (enum e_params)(PARAM_POW + type - SP_POW))) { if (increase <= 0 || current + increase > pc_maxparameter(sd, (enum e_params)(PARAM_POW + type - SP_POW))) {
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
@ -8883,7 +8883,7 @@ bool pc_traitstatusup(map_session_data* sd, int type, int increase)
int needed_points = pc_need_trait_point(sd, type, increase); int needed_points = pc_need_trait_point(sd, type, increase);
if (needed_points < 0 || needed_points > sd->status.trait_point) { // Sanity check if (needed_points < 0 || needed_points > sd->status.trait_point) { // Sanity check
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return false; return false;
} }
@ -8901,7 +8901,7 @@ bool pc_traitstatusup(map_session_data* sd, int type, int increase)
clif_updatestatus(*sd, SP_TRAITPOINT); clif_updatestatus(*sd, SP_TRAITPOINT);
// update stat value // update stat value
clif_statusupack(sd, type, 1, final_value); // required clif_statusupack( *sd, type, true, final_value );
if (final_value > 255) if (final_value > 255)
clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value
@ -8927,7 +8927,7 @@ int pc_traitstatusup2(map_session_data* sd, int type, int val)
nullpo_ret(sd); nullpo_ret(sd);
if (type < SP_POW || type > SP_CRT) { if (type < SP_POW || type > SP_CRT) {
clif_statusupack(sd, type, 0, 0); clif_statusupack( *sd, type, false );
return 0; return 0;
} }
@ -8943,7 +8943,7 @@ int pc_traitstatusup2(map_session_data* sd, int type, int val)
clif_updatestatus(*sd, static_cast<_sp>( SP_UPOW + type - SP_POW ) ); clif_updatestatus(*sd, static_cast<_sp>( SP_UPOW + type - SP_POW ) );
// update stat value // update stat value
clif_statusupack(sd, type, 1, val); // required clif_statusupack( *sd, type, true, val );
if (val > 255) if (val > 255)
clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value clif_updatestatus(*sd, static_cast<_sp>( type ) ); // send after the 'ack' to override the truncated value
@ -9742,7 +9742,7 @@ int pc_dead(map_session_data *sd,struct block_list *src)
(unsigned int)md->level < pc_maxbaselv(sd) && (unsigned int)md->level < pc_maxbaselv(sd) &&
!md->guardian_data && !md->special_state.ai// Guardians/summons should not level. [Skotlex] !md->guardian_data && !md->special_state.ai// Guardians/summons should not level. [Skotlex]
) { // monster level up [Valaris] ) { // monster level up [Valaris]
clif_misceffect(&md->bl,0); clif_misceffect( md->bl, NOTIFYEFFECT_BASE_LEVEL_UP );
md->level++; md->level++;
status_calc_mob(md, SCO_NONE); status_calc_mob(md, SCO_NONE);
status_percent_heal(src,10,0); status_percent_heal(src,10,0);
@ -11975,7 +11975,7 @@ bool pc_equipitem(map_session_data *sd,short n,int req_pos,bool equipswitch)
if(pos==EQP_AMMO) { if(pos==EQP_AMMO) {
clif_arrowequip( *sd ); clif_arrowequip( *sd );
clif_arrow_fail(sd,3); clif_arrow_fail( *sd, ARROWFAIL_SUCCESS );
} }
else else
clif_equipitemack( *sd, ITEM_EQUIP_ACK_OK, n, pos ); clif_equipitemack( *sd, ITEM_EQUIP_ACK_OK, n, pos );

View File

@ -9343,7 +9343,7 @@ BUILDIN_FUNC(repair)
sd->inventory.u.items_inventory[i].attribute = 0; sd->inventory.u.items_inventory[i].attribute = 0;
clif_equiplist(sd); clif_equiplist(sd);
clif_produceeffect(sd, 0, sd->inventory.u.items_inventory[i].nameid); clif_produceeffect(sd, 0, sd->inventory.u.items_inventory[i].nameid);
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
break; break;
} }
} }
@ -9374,7 +9374,7 @@ BUILDIN_FUNC(repairall)
if(repaircounter) if(repaircounter)
{ {
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
clif_equiplist(sd); clif_equiplist(sd);
} }
@ -9642,7 +9642,7 @@ BUILDIN_FUNC(successrefitem) {
clif_additem(sd,i,1,0); clif_additem(sd,i,1,0);
pc_equipitem(sd,i,ep); pc_equipitem(sd,i,ep);
clif_misceffect(&sd->bl,3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
if( sd->inventory_data[i]->type == IT_WEAPON ){ if( sd->inventory_data[i]->type == IT_WEAPON ){
achievement_update_objective(sd, AG_ENCHANT_SUCCESS, 2, sd->inventory_data[i]->weapon_level, sd->inventory.u.items_inventory[i].refine); achievement_update_objective(sd, AG_ENCHANT_SUCCESS, 2, sd->inventory_data[i]->weapon_level, sd->inventory.u.items_inventory[i].refine);
} }
@ -9695,7 +9695,7 @@ BUILDIN_FUNC(failedrefitem) {
pc_unequipitem(sd,i,3); //recalculate bonus pc_unequipitem(sd,i,3); //recalculate bonus
clif_refine( *sd, i, ITEMREFINING_FAILURE); clif_refine( *sd, i, ITEMREFINING_FAILURE);
pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT); pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT);
clif_misceffect(&sd->bl,2); // display failure effect clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, 1); achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, 1);
script_pushint(st, 1); script_pushint(st, 1);
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
@ -9744,7 +9744,7 @@ BUILDIN_FUNC(downrefitem) {
clif_additem(sd,i,1,0); clif_additem(sd,i,1,0);
pc_equipitem(sd,i,ep); pc_equipitem(sd,i,ep);
clif_misceffect(&sd->bl,2); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, sd->inventory.u.items_inventory[i].refine); achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, sd->inventory.u.items_inventory[i].refine);
script_pushint(st, sd->inventory.u.items_inventory[i].refine); script_pushint(st, sd->inventory.u.items_inventory[i].refine);
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
@ -14050,7 +14050,7 @@ BUILDIN_FUNC(successremovecards) {
map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
} }
clif_misceffect(&sd->bl,3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
} }
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }
@ -14137,7 +14137,7 @@ BUILDIN_FUNC(failedremovecards) {
map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0); map_addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
} }
} }
clif_misceffect(&sd->bl,2); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
} }
return SCRIPT_CMD_SUCCESS; return SCRIPT_CMD_SUCCESS;
} }

View File

@ -18594,7 +18594,7 @@ bool skill_check_condition_castend( map_session_data& sd, uint16 skill_id, uint1
} }
#endif #endif
if((i=sd.equip_index[EQI_AMMO]) < 0 || !sd.inventory_data[i] ) { if((i=sd.equip_index[EQI_AMMO]) < 0 || !sd.inventory_data[i] ) {
clif_arrow_fail(&sd,0); clif_arrow_fail( sd, ARROWFAIL_NO_AMMO );
return false; return false;
} else if( sd.inventory.u.items_inventory[i].amount < require.ammo_qty + extra_ammo ) { } else if( sd.inventory.u.items_inventory[i].amount < require.ammo_qty + extra_ammo ) {
char e_msg[100]; char e_msg[100];
@ -18615,7 +18615,7 @@ bool skill_check_condition_castend( map_session_data& sd, uint16 skill_id, uint1
} }
if (!(require.ammo&1<<sd.inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message if (!(require.ammo&1<<sd.inventory_data[i]->subtype)) { //Ammo type check. Send the "wrong weapon type" message
//which is the closest we have to wrong ammo type. [Skotlex] //which is the closest we have to wrong ammo type. [Skotlex]
clif_arrow_fail(&sd,0); //Haplo suggested we just send the equip-arrows message instead. [Skotlex] clif_arrow_fail( sd, ARROWFAIL_NO_AMMO ); //Haplo suggested we just send the equip-arrows message instead. [Skotlex]
//clif_skill_fail( sd, skill_id, USESKILL_FAIL_THIS_WEAPON ); //clif_skill_fail( sd, skill_id, USESKILL_FAIL_THIS_WEAPON );
return false; return false;
} }
@ -19723,7 +19723,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
} }
if (ep) if (ep)
pc_equipitem(&sd,idx,ep); pc_equipitem(&sd,idx,ep);
clif_misceffect(&sd.bl,3); clif_misceffect( sd.bl, NOTIFYEFFECT_REFINE_SUCCESS );
if(item->refine == 10 && if(item->refine == 10 &&
item->card[0] == CARD0_FORGE && item->card[0] == CARD0_FORGE &&
(int)MakeDWord(item->card[2],item->card[3]) == sd.status.char_id) (int)MakeDWord(item->card[2],item->card[3]) == sd.status.char_id)
@ -19748,7 +19748,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
clif_refine( sd, idx, ITEMREFINING_FAILURE ); clif_refine( sd, idx, ITEMREFINING_FAILURE );
achievement_update_objective(&sd, AG_ENCHANT_FAIL, 1, 1); achievement_update_objective(&sd, AG_ENCHANT_FAIL, 1, 1);
pc_delitem(&sd,idx,1,0,2, LOG_TYPE_OTHER); pc_delitem(&sd,idx,1,0,2, LOG_TYPE_OTHER);
clif_misceffect(&sd.bl,2); clif_misceffect( sd.bl, NOTIFYEFFECT_REFINE_FAILURE );
clif_emotion(&sd.bl, ET_HUK); clif_emotion(&sd.bl, ET_HUK);
} }
} }
@ -22312,7 +22312,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
if (equip) { if (equip) {
clif_produceeffect(sd,0,nameid); clif_produceeffect(sd,0,nameid);
clif_misceffect(&sd->bl,3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
if (wlv >= 3 && ((ele? 1 : 0) + sc) >= 3) // Fame point system [DracoRPG] if (wlv >= 3 && ((ele? 1 : 0) + sc) >= 3) // Fame point system [DracoRPG]
pc_addfame(*sd, battle_config.fame_forge); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point pc_addfame(*sd, battle_config.fame_forge); // Success to forge a lv3 weapon with 3 additional ingredients = +10 fame point
} else { } else {
@ -22364,13 +22364,13 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
case ASC_CDP: case ASC_CDP:
case GC_CREATENEWPOISON: case GC_CREATENEWPOISON:
clif_produceeffect(sd,2,nameid); clif_produceeffect(sd,2,nameid);
clif_misceffect(&sd->bl,5); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_SUCCESS );
break; break;
case BS_IRON: case BS_IRON:
case BS_STEEL: case BS_STEEL:
case BS_ENCHANTEDSTONE: case BS_ENCHANTEDSTONE:
clif_produceeffect(sd,0,nameid); clif_produceeffect(sd,0,nameid);
clif_misceffect(&sd->bl,3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
break; break;
default: //Those that don't require a skill? default: //Those that don't require a skill?
if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items. if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items.
@ -22407,7 +22407,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
} }
if (k) { if (k) {
clif_produceeffect(sd,6,nameid); clif_produceeffect(sd,6,nameid);
clif_misceffect(&sd->bl,5); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_SUCCESS );
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_SUCCESS); clif_msg_skill(sd,skill_id,ITEM_PRODUCE_SUCCESS);
return true; return true;
} }
@ -22421,23 +22421,23 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
switch (skill_id) { switch (skill_id) {
case RK_RUNEMASTERY: case RK_RUNEMASTERY:
clif_produceeffect(sd, 4, nameid); clif_produceeffect(sd, 4, nameid);
clif_misceffect(&sd->bl, 5); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_SUCCESS );
break; break;
case GN_MIX_COOKING: case GN_MIX_COOKING:
case GN_MAKEBOMB: case GN_MAKEBOMB:
case GN_S_PHARMACY: case GN_S_PHARMACY:
clif_produceeffect(sd, 6, nameid); clif_produceeffect(sd, 6, nameid);
clif_misceffect(&sd->bl, 5); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_SUCCESS );
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS); clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS);
break; break;
case MT_M_MACHINE: case MT_M_MACHINE:
clif_produceeffect(sd, 0, nameid); clif_produceeffect(sd, 0, nameid);
clif_misceffect(&sd->bl, 3); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_SUCCESS );
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS); clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS);
break; break;
case BO_BIONIC_PHARMACY: case BO_BIONIC_PHARMACY:
clif_produceeffect(sd, 2, nameid); clif_produceeffect(sd, 2, nameid);
clif_misceffect(&sd->bl, 5); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_SUCCESS );
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS); clif_msg_skill(sd, skill_id, ITEM_PRODUCE_SUCCESS);
break; break;
} }
@ -22452,7 +22452,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
if (equip) { if (equip) {
clif_produceeffect(sd,1,nameid); clif_produceeffect(sd,1,nameid);
clif_misceffect(&sd->bl,2); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
} else { } else {
switch (skill_id) { switch (skill_id) {
case ASC_CDP: //25% Damage yourself, and display same effect as failed potion. case ASC_CDP: //25% Damage yourself, and display same effect as failed potion.
@ -22464,18 +22464,18 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
case AM_TWILIGHT3: case AM_TWILIGHT3:
case GC_CREATENEWPOISON: case GC_CREATENEWPOISON:
clif_produceeffect(sd,3,nameid); clif_produceeffect(sd,3,nameid);
clif_misceffect(&sd->bl,6); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_FAILURE );
sd->potion_success_counter = 0; // Fame point system [DracoRPG] sd->potion_success_counter = 0; // Fame point system [DracoRPG]
break; break;
case BS_IRON: case BS_IRON:
case BS_STEEL: case BS_STEEL:
case BS_ENCHANTEDSTONE: case BS_ENCHANTEDSTONE:
clif_produceeffect(sd,1,nameid); clif_produceeffect(sd,1,nameid);
clif_misceffect(&sd->bl,2); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
break; break;
case RK_RUNEMASTERY: case RK_RUNEMASTERY:
clif_produceeffect(sd,5,nameid); clif_produceeffect(sd,5,nameid);
clif_misceffect(&sd->bl,6); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_FAILURE );
break; break;
case GN_MIX_COOKING: case GN_MIX_COOKING:
if (qty == 0) { if (qty == 0) {
@ -22506,7 +22506,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
} }
} }
clif_produceeffect(sd,7,nameid); clif_produceeffect(sd,7,nameid);
clif_misceffect(&sd->bl,6); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_FAILURE );
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL); clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL);
} }
break; break;
@ -22514,17 +22514,17 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
case GN_S_PHARMACY: case GN_S_PHARMACY:
case GN_CHANGEMATERIAL: case GN_CHANGEMATERIAL:
clif_produceeffect(sd,7,nameid); clif_produceeffect(sd,7,nameid);
clif_misceffect(&sd->bl,6); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_FAILURE );
clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL); clif_msg_skill(sd,skill_id,ITEM_PRODUCE_FAIL);
break; break;
case MT_M_MACHINE: case MT_M_MACHINE:
clif_produceeffect(sd, 1, nameid); clif_produceeffect(sd, 1, nameid);
clif_misceffect(&sd->bl, 2); clif_misceffect( sd->bl, NOTIFYEFFECT_REFINE_FAILURE );
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_FAIL); clif_msg_skill(sd, skill_id, ITEM_PRODUCE_FAIL);
break; break;
case BO_BIONIC_PHARMACY: case BO_BIONIC_PHARMACY:
clif_produceeffect(sd, 3, nameid); clif_produceeffect(sd, 3, nameid);
clif_misceffect(&sd->bl, 6); clif_misceffect( sd->bl, NOTIFYEFFECT_PHARMACY_FAILURE );
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_FAIL); clif_msg_skill(sd, skill_id, ITEM_PRODUCE_FAIL);
break; break;
default: default:

View File

@ -2992,7 +2992,7 @@ void status_calc_pet_(struct pet_data *pd, uint8 opt)
pd->pet.level = lv; pd->pet.level = lv;
if (!(opt&SCO_FIRST)) // Lv Up animation if (!(opt&SCO_FIRST)) // Lv Up animation
clif_misceffect(&pd->bl, 0); clif_misceffect( pd->bl, NOTIFYEFFECT_BASE_LEVEL_UP );
status->rhw.atk = (bstat->rhw.atk*lv)/pd->db->lv; status->rhw.atk = (bstat->rhw.atk*lv)/pd->db->lv;
status->rhw.atk2 = (bstat->rhw.atk2*lv)/pd->db->lv; status->rhw.atk2 = (bstat->rhw.atk2*lv)/pd->db->lv;
status->str = (bstat->str*lv)/pd->db->lv; status->str = (bstat->str*lv)/pd->db->lv;
@ -13811,7 +13811,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
clif_status_change(bl,status_icon,0,0,0,0,0); clif_status_change(bl,status_icon,0,0,0,0,0);
if( opt_flag[SCF_NONPLAYER] ) // bugreport:681 if( opt_flag[SCF_NONPLAYER] ) // bugreport:681
clif_changeoption2(bl); clif_changeoption2( *bl );
else if (!disable_opt_flag && (opt_flag[SCF_SENDOPTION] || opt_flag[SCF_ONTOUCH] || opt_flag[SCF_UNITMOVE] || opt_flag[SCF_NONPLAYER] || opt_flag[SCF_SENDLOOK])) { else if (!disable_opt_flag && (opt_flag[SCF_SENDOPTION] || opt_flag[SCF_ONTOUCH] || opt_flag[SCF_UNITMOVE] || opt_flag[SCF_NONPLAYER] || opt_flag[SCF_SENDLOOK])) {
clif_changeoption(bl); clif_changeoption(bl);
if (sd && opt_flag[SCF_SENDLOOK]) { if (sd && opt_flag[SCF_SENDLOOK]) {

View File

@ -145,7 +145,7 @@ int storage_storageopen(map_session_data *sd)
sd->state.storage_flag = 1; sd->state.storage_flag = 1;
storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage)); storage_sortitem(sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage));
clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0)); clif_storagelist(sd, sd->storage.u.items_storage, ARRAYLENGTH(sd->storage.u.items_storage), storage_getName(0));
clif_updatestorageamount(sd, sd->storage.amount, sd->storage.max_amount); clif_updatestorageamount(*sd, sd->storage.amount, sd->storage.max_amount);
return 0; return 0;
} }
@ -290,7 +290,7 @@ static int storage_additem(map_session_data* sd, struct s_storage *stor, struct
stor->u.items_storage[i].amount = amount; stor->u.items_storage[i].amount = amount;
stor->dirty = true; stor->dirty = true;
clif_storageitemadded(sd,&stor->u.items_storage[i],i,amount); clif_storageitemadded(sd,&stor->u.items_storage[i],i,amount);
clif_updatestorageamount(sd, stor->amount, stor->max_amount); clif_updatestorageamount(*sd, stor->amount, stor->max_amount);
return 0; return 0;
} }
@ -314,11 +314,11 @@ int storage_delitem(map_session_data* sd, struct s_storage *stor, int index, int
memset(&stor->u.items_storage[index],0,sizeof(stor->u.items_storage[0])); memset(&stor->u.items_storage[index],0,sizeof(stor->u.items_storage[0]));
stor->amount--; stor->amount--;
if( sd->state.storage_flag == 1 || sd->state.storage_flag == 3 ) if( sd->state.storage_flag == 1 || sd->state.storage_flag == 3 )
clif_updatestorageamount(sd, stor->amount, stor->max_amount); clif_updatestorageamount(*sd, stor->amount, stor->max_amount);
} }
if( sd->state.storage_flag == 1 || sd->state.storage_flag == 3 ) if( sd->state.storage_flag == 1 || sd->state.storage_flag == 3 )
clif_storageitemremoved(sd,index,amount); clif_storageitemremoved( *sd, index, amount );
return 0; return 0;
} }
@ -353,7 +353,7 @@ void storage_storageadd(map_session_data* sd, struct s_storage *stor, int index,
} }
} }
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_dropitem( *sd, index, 0 ); clif_dropitem( *sd, index, 0 );
} }
@ -378,7 +378,7 @@ void storage_storageget(map_session_data *sd, struct s_storage *stor, int index,
if ((flag = pc_additem(sd,&stor->u.items_storage[index],amount,LOG_TYPE_STORAGE)) == ADDITEM_SUCCESS) if ((flag = pc_additem(sd,&stor->u.items_storage[index],amount,LOG_TYPE_STORAGE)) == ADDITEM_SUCCESS)
storage_delitem(sd,stor,index,amount); storage_delitem(sd,stor,index,amount);
else { else {
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_additem(sd,0,0,flag); clif_additem(sd,0,0,flag);
} }
} }
@ -416,7 +416,7 @@ void storage_storageaddfromcart(map_session_data *sd, struct s_storage *stor, in
} }
} }
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_dropitem( *sd, index, 0 ); clif_dropitem( *sd, index, 0 );
} }
@ -446,7 +446,7 @@ void storage_storagegettocart(map_session_data* sd, struct s_storage *stor, int
if ((flag = pc_cart_additem(sd,&stor->u.items_storage[index],amount,LOG_TYPE_STORAGE)) == 0) if ((flag = pc_cart_additem(sd,&stor->u.items_storage[index],amount,LOG_TYPE_STORAGE)) == 0)
storage_delitem(sd,stor,index,amount); storage_delitem(sd,stor,index,amount);
else { else {
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_cart_additem_ack(sd,(flag==1)?ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT); clif_cart_additem_ack(sd,(flag==1)?ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT);
} }
} }
@ -480,7 +480,7 @@ void storage_storageclose(map_session_data *sd)
if( sd->state.storage_flag == 1 ){ if( sd->state.storage_flag == 1 ){
sd->state.storage_flag = 0; sd->state.storage_flag = 0;
clif_storageclose( sd ); clif_storageclose( *sd );
} }
} }
@ -600,7 +600,7 @@ char storage_guild_storageopen(map_session_data* sd)
sd->state.storage_flag = 2; sd->state.storage_flag = 2;
storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild)); storage_sortitem(gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild));
clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage"); clif_storagelist(sd, gstor->u.items_guild, ARRAYLENGTH(gstor->u.items_guild), "Guild Storage");
clif_updatestorageamount(sd, gstor->amount, gstor->max_amount); clif_updatestorageamount(*sd, gstor->amount, gstor->max_amount);
return GSTORAGE_OPEN; return GSTORAGE_OPEN;
} }
@ -777,7 +777,7 @@ bool storage_guild_additem(map_session_data* sd, struct s_storage* stor, struct
stor->u.items_guild[i].amount = amount; stor->u.items_guild[i].amount = amount;
stor->amount++; stor->amount++;
clif_storageitemadded(sd,&stor->u.items_guild[i],i,amount); clif_storageitemadded(sd,&stor->u.items_guild[i],i,amount);
clif_updatestorageamount(sd, stor->amount, stor->max_amount); clif_updatestorageamount(*sd, stor->amount, stor->max_amount);
stor->dirty = true; stor->dirty = true;
storage_guild_log( sd, &stor->u.items_guild[i], amount ); storage_guild_log( sd, &stor->u.items_guild[i], amount );
@ -856,10 +856,10 @@ bool storage_guild_delitem(map_session_data* sd, struct s_storage* stor, int n,
if(!stor->u.items_guild[n].amount) { if(!stor->u.items_guild[n].amount) {
memset(&stor->u.items_guild[n],0,sizeof(stor->u.items_guild[0])); memset(&stor->u.items_guild[n],0,sizeof(stor->u.items_guild[0]));
stor->amount--; stor->amount--;
clif_updatestorageamount(sd, stor->amount, stor->max_amount); clif_updatestorageamount(*sd, stor->amount, stor->max_amount);
} }
clif_storageitemremoved(sd,n,amount); clif_storageitemremoved( *sd, n, amount );
stor->dirty = true; stor->dirty = true;
return true; return true;
} }
@ -899,7 +899,7 @@ void storage_guild_storageadd(map_session_data* sd, int index, int amount)
if(storage_guild_additem(sd,stor,&sd->inventory.u.items_inventory[index],amount)) if(storage_guild_additem(sd,stor,&sd->inventory.u.items_inventory[index],amount))
pc_delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE); pc_delitem(sd,index,amount,0,4,LOG_TYPE_GSTORAGE);
else { else {
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_dropitem( *sd, index, 0 ); clif_dropitem( *sd, index, 0 );
} }
} }
@ -939,7 +939,7 @@ void storage_guild_storageget(map_session_data* sd, int index, int amount)
if((flag = pc_additem(sd,&stor->u.items_guild[index],amount,LOG_TYPE_GSTORAGE)) == 0) if((flag = pc_additem(sd,&stor->u.items_guild[index],amount,LOG_TYPE_GSTORAGE)) == 0)
storage_guild_delitem(sd,stor,index,amount); storage_guild_delitem(sd,stor,index,amount);
else { // inform fail else { // inform fail
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_additem(sd,0,0,flag); clif_additem(sd,0,0,flag);
} }
} }
@ -972,7 +972,7 @@ void storage_guild_storageaddfromcart(map_session_data* sd, int index, int amoun
if(storage_guild_additem(sd,stor,&sd->cart.u.items_cart[index],amount)) if(storage_guild_additem(sd,stor,&sd->cart.u.items_cart[index],amount))
pc_cart_delitem(sd,index,amount,0,LOG_TYPE_GSTORAGE); pc_cart_delitem(sd,index,amount,0,LOG_TYPE_GSTORAGE);
else { else {
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_dropitem( *sd, index, 0 ); clif_dropitem( *sd, index, 0 );
} }
} }
@ -1007,7 +1007,7 @@ void storage_guild_storagegettocart(map_session_data* sd, int index, int amount)
if((flag = pc_cart_additem(sd,&stor->u.items_guild[index],amount,LOG_TYPE_GSTORAGE)) == 0) if((flag = pc_cart_additem(sd,&stor->u.items_guild[index],amount,LOG_TYPE_GSTORAGE)) == 0)
storage_guild_delitem(sd,stor,index,amount); storage_guild_delitem(sd,stor,index,amount);
else { else {
clif_storageitemremoved(sd,index,0); clif_storageitemremoved( *sd, index, 0 );
clif_cart_additem_ack(sd,(flag == 1) ? ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT); clif_cart_additem_ack(sd,(flag == 1) ? ADDITEM_TO_CART_FAIL_WEIGHT:ADDITEM_TO_CART_FAIL_COUNT);
} }
} }
@ -1061,7 +1061,7 @@ void storage_guild_storageclose(map_session_data* sd)
nullpo_retv(sd); nullpo_retv(sd);
nullpo_retv(stor = guild2storage2(sd->status.guild_id)); nullpo_retv(stor = guild2storage2(sd->status.guild_id));
clif_storageclose(sd); clif_storageclose( *sd );
if (stor->status) { if (stor->status) {
if (save_settings&CHARSAVE_STORAGE) if (save_settings&CHARSAVE_STORAGE)
chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); //This one also saves the storage. [Skotlex] chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); //This one also saves the storage. [Skotlex]
@ -1087,7 +1087,7 @@ void storage_guild_storage_quit(map_session_data* sd, int flag)
nullpo_retv(stor = guild2storage2(sd->status.guild_id)); nullpo_retv(stor = guild2storage2(sd->status.guild_id));
if (flag) { //Only during a guild break flag is 1 (don't save storage) if (flag) { //Only during a guild break flag is 1 (don't save storage)
clif_storageclose(sd); clif_storageclose( *sd );
if (save_settings&CHARSAVE_STORAGE) if (save_settings&CHARSAVE_STORAGE)
chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART); chrif_save(sd, CSAVE_INVENTORY|CSAVE_CART);
@ -1118,7 +1118,7 @@ void storage_premiumStorage_open(map_session_data *sd) {
sd->state.storage_flag = 3; sd->state.storage_flag = 3;
storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage)); storage_sortitem(sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage));
clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id)); clif_storagelist(sd, sd->premiumStorage.u.items_storage, ARRAYLENGTH(sd->premiumStorage.u.items_storage), storage_getName(sd->premiumStorage.stor_id));
clif_updatestorageamount(sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount); clif_updatestorageamount(*sd, sd->premiumStorage.amount, sd->premiumStorage.max_amount);
} }
/** /**
@ -1184,7 +1184,7 @@ void storage_premiumStorage_close(map_session_data *sd) {
if( sd->state.storage_flag == 3 ){ if( sd->state.storage_flag == 3 ){
sd->state.storage_flag = 0; sd->state.storage_flag = 0;
clif_storageclose( sd ); clif_storageclose( *sd );
} }
} }

View File

@ -57,12 +57,12 @@ void trade_traderequest(map_session_data *sd, map_session_data *target_sd)
if ( sd->trade_partner != 0 ) { // If a character tries to trade to another one then cancel the previous one if ( sd->trade_partner != 0 ) { // If a character tries to trade to another one then cancel the previous one
map_session_data *previous_sd = map_id2sd(sd->trade_partner); map_session_data *previous_sd = map_id2sd(sd->trade_partner);
if( previous_sd ){ if( previous_sd != nullptr ){
previous_sd->trade_partner = 0; previous_sd->trade_partner = 0;
clif_tradecancelled(previous_sd); clif_tradecancelled( *previous_sd );
} // Once cancelled then continue to the new one. } // Once cancelled then continue to the new one.
sd->trade_partner = 0; sd->trade_partner = 0;
clif_tradecancelled(sd); clif_tradecancelled( *sd );
} }
if (target_sd->trade_partner != 0) { if (target_sd->trade_partner != 0) {
@ -485,8 +485,8 @@ void trade_tradeok(map_session_data *sd)
sd->state.deal_locked = 1; sd->state.deal_locked = 1;
clif_tradeitemok(*sd, -2, EXITEM_ADD_SUCCEED); // We pass -2 which will becomes 0 in clif_tradeitemok (Official behavior) clif_tradeitemok(*sd, -2, EXITEM_ADD_SUCCEED); // We pass -2 which will becomes 0 in clif_tradeitemok (Official behavior)
clif_tradedeal_lock(sd, 0); clif_tradedeal_lock( *sd, false );
clif_tradedeal_lock(target_sd, 1); clif_tradedeal_lock( *target_sd, true );
} }
/** /**
@ -504,12 +504,12 @@ void trade_tradecancel(map_session_data *sd)
sd->state.isBoundTrading = 0; sd->state.isBoundTrading = 0;
if(!sd->state.trading) { // Not trade accepted if(!sd->state.trading) { // Not trade accepted
if( target_sd ) { if( target_sd != nullptr ) {
target_sd->trade_partner = 0; target_sd->trade_partner = 0;
clif_tradecancelled(target_sd); clif_tradecancelled( *target_sd );
} }
sd->trade_partner = 0; sd->trade_partner = 0;
clif_tradecancelled(sd); clif_tradecancelled( *sd );
return; return;
} }
@ -530,7 +530,7 @@ void trade_tradecancel(map_session_data *sd)
sd->state.deal_locked = 0; sd->state.deal_locked = 0;
sd->state.trading = 0; sd->state.trading = 0;
sd->trade_partner = 0; sd->trade_partner = 0;
clif_tradecancelled(sd); clif_tradecancelled( *sd );
if (!target_sd) if (!target_sd)
return; return;
@ -551,7 +551,7 @@ void trade_tradecancel(map_session_data *sd)
target_sd->state.deal_locked = 0; target_sd->state.deal_locked = 0;
target_sd->trade_partner = 0; target_sd->trade_partner = 0;
target_sd->state.trading = 0; target_sd->state.trading = 0;
clif_tradecancelled(target_sd); clif_tradecancelled( *target_sd );
} }
/** /**
@ -651,8 +651,8 @@ void trade_tradecommit(map_session_data *sd)
tsd->state.trading = 0; tsd->state.trading = 0;
tsd->state.isBoundTrading = 0; tsd->state.isBoundTrading = 0;
clif_tradecompleted(sd, 0); clif_tradecompleted( *sd );
clif_tradecompleted(tsd, 0); clif_tradecompleted( *tsd );
// save both player to avoid crash: they always have no advantage/disadvantage between the 2 players // save both player to avoid crash: they always have no advantage/disadvantage between the 2 players
if (save_settings&CHARSAVE_TRADE) { if (save_settings&CHARSAVE_TRADE) {