Converted some packets to structs (#8332)

This commit is contained in:
Atemo 2024-05-20 21:13:59 +02:00 committed by GitHub
parent c83f41a5a3
commit d1cf6f4ac7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 300 additions and 269 deletions

View File

@ -2416,7 +2416,7 @@ ACMD_FUNC(refine)
sd->inventory.u.items_inventory[i].refine = final_refine;
current_position = sd->inventory.u.items_inventory[i].equip;
pc_unequipitem(sd, i, 3);
clif_refine(fd, 0, i, sd->inventory.u.items_inventory[i].refine);
clif_refine( *sd, i, ITEMREFINING_SUCCESS );
clif_delitem( *sd, i, 1, 3 );
clif_additem(sd, i, 1, 0);
pc_equipitem(sd, i, current_position);

View File

@ -9862,7 +9862,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
if (dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1)) {
uint16 skill_lv = tsc->getSCE(SC_AUTOCOUNTER)->val1;
clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
clif_skillcastcancel( *target ); //Remove the casting bar. [Skotlex]
clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, DMG_NORMAL, 0, false); //Display MISS.
status_change_end(target, SC_AUTOCOUNTER);
skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skill_lv,tick,0);

View File

@ -1984,16 +1984,14 @@ void clif_homskillup( homun_data& hd, uint16 skill_id ){
/// result:
/// 0 = failure
/// 1 = success
void clif_hom_food( map_session_data *sd, int foodid, int fail ){
nullpo_retv( sd );
void clif_hom_food( map_session_data& sd, int32 foodid, bool success ){
PACKET_ZC_FEED_MER packet{};
struct PACKET_ZC_FEED_MER p;
packet.packetType = HEADER_ZC_FEED_MER;
packet.result = success;
packet.itemId = client_nameid( foodid );
p.packetType = 0x22f;
p.result = fail;
p.itemId = client_nameid( foodid );
clif_send( &p, sizeof( p ), &sd->bl, SELF );
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
@ -3118,7 +3116,7 @@ void clif_inventorylist( map_session_data *sd ){
}
if( sd->equip_index[EQI_AMMO] >= 0 )
clif_arrowequip( sd, sd->equip_index[EQI_AMMO] );
clif_arrowequip( *sd );
if( equip ) {
itemlist_equip.PacketType = inventorylistequipType;
@ -3898,29 +3896,20 @@ void clif_updatestatus( map_session_data& sd, enum _sp type ){
}
/// Notifies client of a parameter change of an another player (ZC_PAR_CHANGE_USER).
/// 01ab <account id>.L <var id>.W <value>.L
void clif_changestatus(map_session_data* sd,int type,int val)
{
unsigned char buf[12];
/// Notifies client of a parameter change of an another player.
/// 01ab <account id>.L <var id>.W <value>.L (ZC_PAR_CHANGE_USER)
/// var id:
/// SP_MANNER
/// ?
void clif_changemanner( map_session_data& sd ) {
PACKET_ZC_PAR_CHANGE_USER packet{};
nullpo_retv(sd);
packet.packetType = HEADER_ZC_PAR_CHANGE_USER;
packet.gid = sd.bl.id;
packet.type = static_cast<decltype(packet.type)>(SP_MANNER);
packet.value = sd.status.manner;
WBUFW(buf,0)=0x1ab;
WBUFL(buf,2)=sd->bl.id;
WBUFW(buf,6)=type;
switch(type)
{
case SP_MANNER:
WBUFL(buf,8)=val;
break;
default:
ShowError("clif_changestatus : unrecognized type %d.\n",type);
return;
}
clif_send(buf,packet_len(0x1ab),&sd->bl,AREA_WOS);
clif_send( &packet, sizeof( packet ), &sd.bl, AREA_WOS );
}
@ -4108,104 +4097,100 @@ void clif_refreshlook(struct block_list *bl, int id, int type, int val, enum sen
/// <int>.B <need int>.B <dex>.B <need dex>.B <luk>.B <need luk>.B <atk>.W <atk2>.W
/// <matk min>.W <matk max>.W <def>.W <def2>.W <mdef>.W <mdef2>.W <hit>.W
/// <flee>.W <flee2>.W <crit>.W <aspd>.W <aspd2>.W
void clif_initialstatus(map_session_data *sd) {
int fd, mdef2;
unsigned char *buf;
void clif_initialstatus( map_session_data& sd ) {
PACKET_ZC_STATUS packet{};
nullpo_retv(sd);
packet.packetType = HEADER_ZC_STATUS;
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0xbd));
buf = WFIFOP(fd,0);
packet.point = min(sd.status.status_point, INT16_MAX);
packet.str = min(sd.status.str, UINT8_MAX);
packet.standardStr = pc_need_status_point( &sd, SP_STR, 1 );
packet.agi = min(sd.status.agi, UINT8_MAX);
packet.standardAgi = pc_need_status_point( &sd, SP_AGI,1 );
packet.vit = min(sd.status.vit, UINT8_MAX);
packet.standardVit = pc_need_status_point( &sd, SP_VIT,1 );
packet.int_ = min(sd.status.int_, UINT8_MAX);
packet.standardInt = pc_need_status_point( &sd, SP_INT,1 );
packet.dex = min(sd.status.dex, UINT8_MAX);
packet.standardDex = pc_need_status_point( &sd, SP_DEX,1 );
packet.luk = min(sd.status.luk, UINT8_MAX);
packet.standardLuk = pc_need_status_point( &sd, SP_LUK,1 );
WBUFW(buf,0) = 0xbd;
WBUFW(buf,2) = min(sd->status.status_point, INT16_MAX);
WBUFB(buf,4) = min(sd->status.str, UINT8_MAX);
WBUFB(buf,5) = pc_need_status_point(sd,SP_STR,1);
WBUFB(buf,6) = min(sd->status.agi, UINT8_MAX);
WBUFB(buf,7) = pc_need_status_point(sd,SP_AGI,1);
WBUFB(buf,8) = min(sd->status.vit, UINT8_MAX);
WBUFB(buf,9) = pc_need_status_point(sd,SP_VIT,1);
WBUFB(buf,10) = min(sd->status.int_, UINT8_MAX);
WBUFB(buf,11) = pc_need_status_point(sd,SP_INT,1);
WBUFB(buf,12) = min(sd->status.dex, UINT8_MAX);
WBUFB(buf,13) = pc_need_status_point(sd,SP_DEX,1);
WBUFB(buf,14) = min(sd->status.luk, UINT8_MAX);
WBUFB(buf,15) = pc_need_status_point(sd,SP_LUK,1);
WBUFW(buf,16) = pc_leftside_atk(sd);
WBUFW(buf,18) = pc_rightside_atk(sd);
WBUFW(buf,20) = pc_rightside_matk(sd);
WBUFW(buf,22) = pc_leftside_matk(sd);
WBUFW(buf,24) = pc_leftside_def(sd);
WBUFW(buf,26) = pc_rightside_def(sd);
WBUFW(buf,28) = pc_leftside_mdef(sd);
mdef2 = pc_rightside_mdef(sd);
WBUFW(buf,30) =
#ifndef RENEWAL
( mdef2 < 0 ) ? 0 : //Negative check for Frenzy'ed characters.
#endif
mdef2;
WBUFW(buf,32) = sd->battle_status.hit;
WBUFW(buf,34) = sd->battle_status.flee;
WBUFW(buf,36) = sd->battle_status.flee2/10;
WBUFW(buf,38) = sd->battle_status.cri/10;
WBUFW(buf,40) = sd->battle_status.amotion; // aspd
WBUFW(buf,42) = 0; // always 0 (plusASPD)
WFIFOSET(fd, packet_len(0xbd));
clif_updatestatus(*sd, SP_STR);
clif_updatestatus(*sd, SP_AGI);
clif_updatestatus(*sd, SP_VIT);
clif_updatestatus(*sd, SP_INT);
clif_updatestatus(*sd, SP_DEX);
clif_updatestatus(*sd, SP_LUK);
clif_updatestatus(*sd, SP_ATTACKRANGE);
clif_updatestatus(*sd, SP_ASPD);
packet.attPower = pc_leftside_atk( &sd );
packet.refiningPower = pc_rightside_atk( &sd );
packet.max_mattPower = pc_rightside_matk( &sd );
packet.min_mattPower = pc_leftside_matk( &sd );
packet.itemdefPower = pc_leftside_def( &sd );
packet.plusdefPower = pc_rightside_def( &sd );
packet.mdefPower = pc_leftside_mdef( &sd );
#ifdef RENEWAL
clif_updatestatus(*sd, SP_POW);
clif_updatestatus(*sd, SP_STA);
clif_updatestatus(*sd, SP_WIS);
clif_updatestatus(*sd, SP_SPL);
clif_updatestatus(*sd, SP_CON);
clif_updatestatus(*sd, SP_CRT);
clif_updatestatus(*sd, SP_PATK);
clif_updatestatus(*sd, SP_SMATK);
clif_updatestatus(*sd, SP_RES);
clif_updatestatus(*sd, SP_MRES);
clif_updatestatus(*sd, SP_HPLUS);
clif_updatestatus(*sd, SP_CRATE);
clif_updatestatus(*sd, SP_TRAITPOINT);
clif_updatestatus(*sd, SP_AP);
clif_updatestatus(*sd, SP_MAXAP);
clif_updatestatus(*sd, SP_UPOW);
clif_updatestatus(*sd, SP_USTA);
clif_updatestatus(*sd, SP_UWIS);
clif_updatestatus(*sd, SP_USPL);
clif_updatestatus(*sd, SP_UCON);
clif_updatestatus(*sd, SP_UCRT);
packet.plusmdefPower = pc_rightside_mdef( &sd );
#else
// Negative check for Frenzy'ed characters.
packet.plusmdefPower = std::max( pc_rightside_mdef( &sd ), 0 );
#endif
packet.hitSuccessValue = sd.battle_status.hit;
packet.avoidSuccessValue = sd.battle_status.flee;
packet.plusAvoidSuccessValue = sd.battle_status.flee2 / 10;
packet.criticalSuccessValue = sd.battle_status.cri / 10;
packet.ASPD = sd.battle_status.amotion;
packet.plusASPD = 0;
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
clif_updatestatus(sd, SP_STR);
clif_updatestatus(sd, SP_AGI);
clif_updatestatus(sd, SP_VIT);
clif_updatestatus(sd, SP_INT);
clif_updatestatus(sd, SP_DEX);
clif_updatestatus(sd, SP_LUK);
clif_updatestatus(sd, SP_ATTACKRANGE);
clif_updatestatus(sd, SP_ASPD);
#ifdef RENEWAL
clif_updatestatus(sd, SP_POW);
clif_updatestatus(sd, SP_STA);
clif_updatestatus(sd, SP_WIS);
clif_updatestatus(sd, SP_SPL);
clif_updatestatus(sd, SP_CON);
clif_updatestatus(sd, SP_CRT);
clif_updatestatus(sd, SP_PATK);
clif_updatestatus(sd, SP_SMATK);
clif_updatestatus(sd, SP_RES);
clif_updatestatus(sd, SP_MRES);
clif_updatestatus(sd, SP_HPLUS);
clif_updatestatus(sd, SP_CRATE);
clif_updatestatus(sd, SP_TRAITPOINT);
clif_updatestatus(sd, SP_AP);
clif_updatestatus(sd, SP_MAXAP);
clif_updatestatus(sd, SP_UPOW);
clif_updatestatus(sd, SP_USTA);
clif_updatestatus(sd, SP_UWIS);
clif_updatestatus(sd, SP_USPL);
clif_updatestatus(sd, SP_UCON);
clif_updatestatus(sd, SP_UCRT);
#endif
}
/// Marks an ammunition item in inventory as equipped (ZC_EQUIP_ARROW).
/// 013c <index>.W
void clif_arrowequip(map_session_data *sd,int val) {
int fd;
nullpo_retv(sd);
/// Marks an ammunition item in inventory as equipped.
/// 013c <index>.W (ZC_EQUIP_ARROW)
void clif_arrowequip( map_session_data& sd ) {
#if PACKETVER >= 20121128
clif_status_change(&sd->bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0);
clif_status_change(&sd.bl, EFST_CLIENT_ONLY_EQUIP_ARROW, 1, INFINITE_TICK, 0, 0, 0);
#endif
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0x013c));
WFIFOW(fd,0) = 0x013c;
WFIFOW(fd,2) = val + 2; //Item ID of the arrow
WFIFOSET(fd, packet_len(0x013c));
PACKET_ZC_EQUIP_ARROW packet{};
packet.packetType = HEADER_ZC_EQUIP_ARROW;
// Inventory index of the arrow
packet.index = client_index( sd.equip_index[EQI_AMMO] );
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
@ -5982,17 +5967,15 @@ void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x,
}
/// Notifies clients in area, that an object canceled casting (ZC_DISPEL).
/// 01b9 <id>.L
void clif_skillcastcancel(struct block_list* bl)
{
unsigned char buf[16];
/// Notifies clients in area, that an object canceled casting.
/// 01b9 <id>.L (ZC_DISPEL)
void clif_skillcastcancel( block_list& bl ){
PACKET_ZC_DISPEL packet{};
nullpo_retv(bl);
packet.packetType = HEADER_ZC_DISPEL;
packet.gid = bl.id;
WBUFW(buf,0) = 0x1b9;
WBUFL(buf,2) = bl->id;
clif_send(buf,packet_len(0x1b9), bl, AREA);
clif_send( &packet, sizeof(PACKET_ZC_DISPEL), &bl, AREA );
}
@ -6045,21 +6028,17 @@ void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_
}
/// Skill cooldown display icon (ZC_SKILL_POSTDELAY).
/// 043d <skill ID>.W <tick>.L
void clif_skill_cooldown(map_session_data *sd, uint16 skill_id, t_tick tick)
{
#if PACKETVER>=20081112
int fd;
/// Skill cooldown display icon.
/// 043d <skill ID>.W <tick>.L (ZC_SKILL_POSTDELAY)
void clif_skill_cooldown( map_session_data &sd, uint16 skill_id, t_tick tick ){
#if PACKETVER_MAIN_NUM >= 20081112 || PACKETVER_RE_NUM >= 20081111 || defined(PACKETVER_ZERO)
PACKET_ZC_SKILL_POSTDELAY packet{};
nullpo_retv(sd);
packet.PacketType = HEADER_ZC_SKILL_POSTDELAY;
packet.SKID = skill_id;
packet.DelayTM = client_tick(tick);
fd=sd->fd;
WFIFOHEAD(fd,packet_len(0x43d));
WFIFOW(fd,0) = 0x43d;
WFIFOW(fd,2) = skill_id;
WFIFOL(fd,4) = client_tick(tick);
WFIFOSET(fd,packet_len(0x43d));
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
#endif
}
@ -6321,8 +6300,8 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l
}
/// Memo message (ZC_ACK_REMEMBER_WARPPOINT).
/// 011e <type>.B
/// Memo message.
/// 011e <type>.B (ZC_ACK_REMEMBER_WARPPOINT)
/// type:
/// 0 = "Saved location as a Memo Point for Warp skill." in color 0xFFFF00 (cyan)
/// 1 = "Skill Level is not high enough." in color 0x0000FF (red)
@ -6330,39 +6309,33 @@ void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_l
///
/// @param sd Who receives the message
/// @param type What message
void clif_skill_memomessage(map_session_data* sd, int type)
{
int fd;
void clif_skill_memomessage( map_session_data& sd, e_ack_remember_warppoint_result result ){
PACKET_ZC_ACK_REMEMBER_WARPPOINT packet{};
nullpo_retv(sd);
packet.packetType = HEADER_ZC_ACK_REMEMBER_WARPPOINT;
packet.type = static_cast<decltype(packet.type)>(result);
fd=sd->fd;
WFIFOHEAD(fd,packet_len(0x11e));
WFIFOW(fd,0)=0x11e;
WFIFOB(fd,2)=type;
WFIFOSET(fd,packet_len(0x11e));
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
/// Teleport message (ZC_NOTIFY_MAPINFO).
/// 0189 <type>.W
/// Teleport message.
/// 0189 <type>.W (ZC_NOTIFY_MAPINFO)
/// type:
/// 0 = "Unable to Teleport in this area" in color 0xFFFF00 (cyan)
/// 1 = "Saved point cannot be memorized." in color 0x0000FF (red)
/// 2 = "This skill cannot be used in this area"
/// 3 = "This item cannot be used in this area"
///
/// @param sd Who receives the message
/// @param type What message
void clif_skill_teleportmessage(map_session_data *sd, int type)
{
int fd;
void clif_skill_teleportmessage( map_session_data& sd, e_notify_mapinfo_result result ){
PACKET_ZC_NOTIFY_MAPINFO packet{};
nullpo_retv(sd);
packet.packetType = HEADER_ZC_NOTIFY_MAPINFO;
packet.type = static_cast<decltype(packet.type)>(result);
fd=sd->fd;
WFIFOHEAD(fd,packet_len(0x189));
WFIFOW(fd,0)=0x189;
WFIFOW(fd,2)=type;
WFIFOSET(fd,packet_len(0x189));
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
@ -6914,23 +6887,22 @@ void clif_heal(int fd,int type,int val) {
}
/// Displays resurrection effect (ZC_RESURRECTION).
/// 0148 <id>.L <type>.W
/// Displays resurrection effect.
/// 0148 <id>.L <type>.W (ZC_RESURRECTION)
/// type:
/// ignored
void clif_resurrection(struct block_list *bl,int type)
{
unsigned char buf[16];
void clif_resurrection( block_list& bl ){
PACKET_ZC_RESURRECTION packet{};
nullpo_retv(bl);
packet.packetType = HEADER_ZC_RESURRECTION;
packet.gid = bl.id;
packet.type = 0;
WBUFW(buf,0)=0x148;
WBUFL(buf,2)=bl->id;
WBUFW(buf,6)=0;
clif_send( &packet, sizeof( packet ), &bl, AREA );
clif_send(buf,packet_len(0x148),bl,type==1 ? AREA : AREA_WOS);
if (disguised(bl))
clif_spawn(bl);
if (disguised(&bl)) {
clif_spawn(&bl);
}
}
@ -6971,19 +6943,15 @@ void clif_map_property(struct block_list *bl, enum map_property property, enum s
clif_send(buf,packet_len(cmd),bl,t);
}
/// Set the map type (ZC_NOTIFY_MAPPROPERTY2).
/// 01d6 <type>.W
void clif_map_type(map_session_data* sd, enum map_type type)
{
int fd;
/// Set the map type.
/// 01d6 <type>.W (ZC_NOTIFY_MAPPROPERTY2)
void clif_map_type( map_session_data& sd, e_map_type type ){
PACKET_ZC_NOTIFY_MAPPROPERTY2 packet{};
nullpo_retv(sd);
packet.packetType = HEADER_ZC_NOTIFY_MAPPROPERTY2;
packet.type = static_cast<decltype(packet.type)>(type);
fd=sd->fd;
WFIFOHEAD(fd,packet_len(0x1D6));
WFIFOW(fd,0)=0x1D6;
WFIFOW(fd,2)=type;
WFIFOSET(fd,packet_len(0x1D6));
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
@ -7032,22 +7000,23 @@ void clif_map_property_mapall(int map_idx, enum map_property property)
clif_map_property( &bl, property, ALL_SAMEMAP );
}
/// Notifies the client about the result of a refine attempt (ZC_ACK_ITEMREFINING).
/// 0188 <result>.W <index>.W <refine>.W
/// Notifies the client about the result of a refine attempt.
/// 0188 <result>.W <index>.W <refine>.W (ZC_ACK_ITEMREFINING)
/// result:
/// 0 = success
/// 1 = failure
/// 2 = downgrade
void clif_refine(int fd, int fail, int index, int val)
{
WFIFOHEAD(fd,packet_len(0x188));
WFIFOW(fd,0)=0x188;
WFIFOW(fd,2)=fail;
WFIFOW(fd,4)=index+2;
WFIFOW(fd,6)=val;
WFIFOSET(fd,packet_len(0x188));
}
/// 3 = failure (?)
void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result ){
PACKET_ZC_ACK_ITEMREFINING packet{};
packet.packetType = HEADER_ZC_ACK_ITEMREFINING;
packet.result = static_cast<decltype(packet.result)>(result);
packet.index = client_index( index );
packet.value = static_cast<decltype(packet.value)>( sd.inventory.u.items_inventory[index].refine );
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
/// Notifies the client about the result of a weapon refine attempt (ZC_ACK_WEAPONREFINE).
/// 0223 <result>.L <nameid>.W
@ -8493,21 +8462,19 @@ void clif_pet_emotion(struct pet_data *pd,int param)
}
/// Result of request to feed a pet (ZC_FEED_PET).
/// 01a3 <result>.B <name id>.W
/// Result of request to feed a pet.
/// 01a3 <result>.B <name id>.W (ZC_FEED_PET)
/// result:
/// 0 = failure
/// 1 = success
void clif_pet_food( map_session_data *sd, int foodid,int fail ){
nullpo_retv( sd );
void clif_pet_food( map_session_data& sd, int32 foodid, bool success ){
PACKET_ZC_FEED_PET packet{};
struct PACKET_ZC_FEED_PET p;
packet.packetType = HEADER_ZC_FEED_PET;
packet.result = success;
packet.itemId = client_nameid( foodid );
p.packetType = 0x1a3;
p.result = fail;
p.itemId = client_nameid( foodid );
clif_send( &p, sizeof( p ), &sd->bl, SELF );
clif_send( &packet, sizeof( packet ), &sd.bl, SELF );
}
/// Send pet auto feed info.
@ -11039,7 +11006,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd)
clif_updatestatus(*sd,SP_JOBEXP);
clif_updatestatus(*sd,SP_NEXTJOBEXP);
clif_updatestatus(*sd,SP_SKILLPOINT);
clif_initialstatus(sd);
clif_initialstatus( *sd );
if (sd->sc.option&OPTION_FALCON)
clif_status_load(&sd->bl, EFST_FALCON, 1);
@ -11161,7 +11128,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd)
if( mapdata->getMapFlag(MF_BATTLEGROUND) )
{
clif_map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode
clif_map_type( *sd, MAPTYPE_BATTLEFIELD ); // Battleground Mode
if( map_getmapflag(sd->bl.m, MF_BATTLEGROUND) == 2 )
clif_bg_updatescore_single(sd);
}
@ -22548,7 +22515,7 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
item->refine = cap_value( item->refine + 1, 0, MAX_REFINE );
log_pick_pc( sd, LOG_TYPE_OTHER, 1, item );
clif_misceffect( &sd->bl, 3 );
clif_refine( fd, 0, index, item->refine );
clif_refine( *sd, index, ITEMREFINING_SUCCESS );
if (info->broadcast_success) {
clif_broadcast_refine_result(*sd, item->nameid, item->refine, true);
}
@ -22564,20 +22531,20 @@ void clif_parse_refineui_refine( int fd, map_session_data* sd ){
}
// Blacksmith blessings were used to prevent breaking and downgrading
if( blacksmith_amount > 0 ){
clif_refine( fd, 3, index, item->refine );
clif_refine( *sd, index, ITEMREFINING_FAILURE2 );
clif_refineui_info( sd, index );
// Delete the item if it is breakable
}else if( cost->breaking_rate > 0 && ( rnd() % 10000 ) < cost->breaking_rate ){
clif_refine( fd, 1, index, item->refine );
clif_refine( *sd, index, ITEMREFINING_FAILURE );
pc_delitem( sd, index, 1, 0, 2, LOG_TYPE_CONSUME );
// Downgrade the item if necessary
}else if( cost->downgrade_amount > 0 ){
item->refine = cap_value( item->refine - cost->downgrade_amount, 0, MAX_REFINE );
clif_refine( fd, 2, index, item->refine );
clif_refine( *sd, index, ITEMREFINING_DOWNGRADE );
clif_refineui_info(sd, index);
// Only show failure, but dont do anything
}else{
clif_refine( fd, 3, index, item->refine );
clif_refine( *sd, index, ITEMREFINING_FAILURE2 );
clif_refineui_info( sd, index );
}

View File

@ -367,7 +367,7 @@ enum map_property : uint8_t
MAPPROPERTY_DENYSKILLZONE = 6,
};
enum map_type : uint8_t
enum e_map_type : uint8_t
{// clif_map_type
MAPTYPE_VILLAGE = 0,
MAPTYPE_VILLAGE_IN = 1,
@ -618,6 +618,26 @@ enum e_siege_teleport_result : uint8 {
SIEGE_TP_INVALID_MODE = 2
};
enum e_ack_remember_warppoint_result : uint8 {
WARPPOINT_SUCCESS = 0,
WARPPOINT_LOW_LEVEL = 1,
WARPPOINT_NOT_LEARNED = 2
};
enum e_notify_mapinfo_result : uint8 {
NOTIFY_MAPINFO_CANT_TP = 0,
NOTIFY_MAPINFO_CANT_MEMO = 1,
NOTIFY_MAPINFO_CANT_USE_SKILL = 2,
NOTIFY_MAPINFO_CANT_USE_ITEM = 3,
};
enum e_ack_itemrefining : uint8 {
ITEMREFINING_SUCCESS = 0,
ITEMREFINING_FAILURE = 1,
ITEMREFINING_DOWNGRADE = 2,
ITEMREFINING_FAILURE2 = 3
};
int clif_setip(const char* ip);
void clif_setbindip(const char* ip);
void clif_setport(uint16 port);
@ -664,7 +684,7 @@ void clif_dropitem( map_session_data& sd, int index, int amount );
void clif_delitem( map_session_data& sd, int index, int amount, short reason );
void clif_update_hp(map_session_data &sd);
void clif_updatestatus( map_session_data& sd, _sp type );
void clif_changestatus(map_session_data* sd,int type,int val); //area
void clif_changemanner( map_session_data& sd );
int clif_damage(struct block_list* src, struct block_list* dst, t_tick tick, int sdelay, int ddelay, int64 sdamage, int div, enum e_damage_type type, int64 sdamage2, bool spdamage); // area
void clif_takeitem(struct block_list* src, struct block_list* dst);
void clif_sitting(struct block_list* bl);
@ -673,7 +693,7 @@ void clif_sprite_change(struct block_list *bl, int id, int type, int val, int va
void clif_changelook(struct block_list *bl,int type,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_arrowequip(map_session_data *sd,int val); //self
void clif_arrowequip( map_session_data& sd );
void clif_arrow_fail(map_session_data *sd,int type); //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
@ -739,17 +759,17 @@ 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_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int property, int casttime);
void clif_skillcastcancel(struct block_list* bl);
void clif_skillcastcancel( block_list& bl );
void clif_skill_fail( map_session_data& sd, uint16 skill_id, enum useskill_fail_cause cause = USESKILL_FAIL_LEVEL, int btype = 0, t_itemid itemId = 0 );
void clif_skill_cooldown(map_session_data *sd, uint16 skill_id, t_tick tick);
void clif_skill_cooldown( map_session_data &sd, uint16 skill_id, t_tick tick );
int clif_skill_damage(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int64 sdamage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type);
//int clif_skill_damage2(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int damage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type);
bool clif_skill_nodamage(struct block_list *src,struct block_list *dst,uint16 skill_id,int heal,t_tick tick);
void clif_skill_poseffect(struct block_list *src,uint16 skill_id,int val,int x,int y,t_tick tick);
void clif_skill_estimation(map_session_data *sd,struct block_list *dst);
void clif_skill_warppoint( map_session_data* sd, uint16 skill_id, uint16 skill_lv, const char* map1, const char* map2 = "", const char* map3 = "", const char* map4 = "" );
void clif_skill_memomessage(map_session_data* sd, int type);
void clif_skill_teleportmessage(map_session_data *sd, int type);
void clif_skill_memomessage( map_session_data& sd, e_ack_remember_warppoint_result result );
void clif_skill_teleportmessage( map_session_data& sd, e_notify_mapinfo_result result );
void clif_skill_produce_mix_list(map_session_data *sd, int skill_id, int trigger);
void clif_cooking_list(map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type);
@ -906,11 +926,11 @@ void clif_disp_message(struct block_list* src, const char* mes, size_t len, enum
void clif_broadcast(struct block_list* bl, const char* mes, size_t len, int type, enum send_target target);
void clif_broadcast2(struct block_list* bl, const char* mes, size_t len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
void clif_heal(int fd,int type,int val);
void clif_resurrection(struct block_list *bl,int type);
void clif_resurrection( block_list& bl );
void clif_map_property(struct block_list *bl, enum map_property property, enum send_target t);
void clif_pvpset(map_session_data *sd, int pvprank, int pvpnum,int type);
void clif_map_property_mapall(int map, enum map_property property);
void clif_refine(int fd, int fail, int index, int val);
void clif_refine( map_session_data& sd, uint16 index, e_ack_itemrefining result );
void clif_upgrademessage( map_session_data* sd, int result, t_itemid item_id );
//petsystem
@ -923,7 +943,7 @@ void clif_send_petdata(map_session_data* sd, struct pet_data* pd, int type, int
#define clif_pet_equip_area(pd) clif_send_petdata(nullptr, pd, 3, (pd)->vd.head_bottom)
#define clif_pet_performance(pd, param) clif_send_petdata(nullptr, pd, 4, param)
void clif_pet_emotion(struct pet_data *pd,int param);
void clif_pet_food(map_session_data *sd,int foodid,int fail);
void clif_pet_food( map_session_data& sd, int32 foodid, bool success );
void clif_pet_autofeed_status(map_session_data* sd, bool force);
//friends list
@ -962,7 +982,7 @@ void clif_feel_hate_reset(map_session_data *sd);
void clif_hominfo(map_session_data *sd, struct homun_data *hd, int flag);
void clif_homskillinfoblock( homun_data& hd );
void clif_homskillup( homun_data& hd, uint16 skill_id );
void clif_hom_food(map_session_data *sd,int foodid,int fail); //[orn]
void clif_hom_food( map_session_data& sd, int32 foodid, bool success );
void clif_send_homdata( homun_data& hd, e_hom_state2 state );
void clif_configuration( map_session_data* sd, enum e_config_type type, bool enabled );

View File

@ -73,7 +73,6 @@
packet(0x00ba,2);
parseable_packet(0x00bb,5,clif_parse_StatusUp,2,4);
packet(0x00bc,6);
packet(0x00bd,44);
parseable_packet(0x00bf,3,clif_parse_Emotion,2);
packet(0x00c0,7);
parseable_packet(0x00c1,2,clif_parse_HowManyConnections,0);
@ -160,7 +159,6 @@
parseable_packet(0x011b,20,clif_parse_UseSkillMap,2,4);
packet(0x011c,68);
parseable_packet(0x011d,2,clif_parse_RequestMemo,0);
packet(0x011e,3);
packet(0x011f,16);
packet(0x0120,6);
packet( cartlistequipType, -1 );
@ -183,7 +181,6 @@
packet(0x0138,3);
packet(0x0139,16);
packet(0x013b,4);
packet(0x013c,4);
packet(0x013d,6);
packet(0x013e,24);
parseable_packet(0x013f,26,clif_parse_GM_Item_Monster,2);
@ -192,7 +189,6 @@
packet(0x0145,19);
parseable_packet(0x0146,6,clif_parse_NpcCloseClicked,2);
packet(0x0147,39);
packet(0x0148,8);
parseable_packet(0x0149,9,clif_parse_GMReqNoChat,2,6,7);
packet(0x014a,6);
packet(0x014b,27);
@ -256,8 +252,6 @@
packet(0x0185,34);
//packet(0x0186,-1);
packet(0x0187,6);
packet(0x0188,8);
packet(0x0189,4);
parseable_packet(0x018a,4,clif_parse_QuitGame,2);
packet(0x018b,4);
packet(0x018c,29);
@ -291,7 +285,6 @@
packet(0x01a8,4);
parseable_packet(0x01a9,6,clif_parse_SendEmotion,2);
packet(0x01aa,10);
packet(0x01ab,12);
packet(0x01ac,6);
packet(0x01ad,-1);
parseable_packet( HEADER_CZ_REQ_MAKINGARROW, sizeof( PACKET_CZ_REQ_MAKINGARROW ), clif_parse_SelectArrow, 0 );
@ -304,7 +297,6 @@
packet(0x01b6,114);
packet(0x01b7,6);
packet(0x01b8,3);
packet(0x01b9,6);
parseable_packet(0x01ba,26,clif_parse_GMShift,2);
parseable_packet(0x01bb,26,clif_parse_GMShift,2);
parseable_packet(0x01bc,26,clif_parse_GMRecall,2);
@ -327,7 +319,6 @@
packet(0x01d1,14);
packet(0x01d2,10);
parseable_packet(0x01d5,-1,clif_parse_NpcStringInput,2,4,8);
packet(0x01d6,4);
packet(0x01d7,11);
packet(0x01d8,54);
packet(0x01d9,53);
@ -1285,7 +1276,6 @@
// 2008-11-13aSakexe
#if PACKETVER >= 20081113
packet(0x043d,8);
packet(0x043e,-1);
packet(0x043f,8);
#endif
@ -1365,7 +1355,6 @@
// 2008-11-12aRagexeRE
#if PACKETVER >= 20081112
packet(0x043d,8);
//packet(0x043e,-1);
packet(0x043f,8);
#endif

View File

@ -878,7 +878,7 @@ int hom_food(map_session_data *sd, struct homun_data *hd)
foodID = hd->homunculusDB->foodID;
i = pc_search_inventory(sd,foodID);
if (i < 0) {
clif_hom_food(sd,foodID,0);
clif_hom_food( *sd, foodID, 0 );
return 1;
}
pc_delitem(sd,i,1,0,0,LOG_TYPE_CONSUME);
@ -909,7 +909,7 @@ int hom_food(map_session_data *sd, struct homun_data *hd)
clif_emotion(&hd->bl,emotion);
clif_send_homdata( *hd, SP_HUNGRY );
clif_send_homdata( *hd, SP_INTIMATE );
clif_hom_food(sd,foodID,1);
clif_hom_food( *sd, foodID, 1 );
// Too much food :/
if(hd->homunculus.intimacy == 0)

View File

@ -800,6 +800,59 @@ struct PACKET_ZC_STATUS {
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_STATUS, 0xbd)
struct PACKET_ZC_NOTIFY_MAPINFO {
int16 packetType;
int16 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPINFO, 0x189)
struct PACKET_ZC_ACK_REMEMBER_WARPPOINT {
int16 packetType;
uint8 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_REMEMBER_WARPPOINT, 0x11e)
struct PACKET_ZC_DISPEL {
int16 packetType;
uint32 gid;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_DISPEL, 0x1b9)
struct PACKET_ZC_RESURRECTION {
int16 packetType;
uint32 gid;
int16 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_RESURRECTION, 0x148)
struct PACKET_ZC_NOTIFY_MAPPROPERTY2 {
int16 packetType;
int16 type;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_NOTIFY_MAPPROPERTY2, 0x1d6)
struct PACKET_ZC_ACK_ITEMREFINING {
int16 packetType;
uint16 result;
uint16 index;
uint16 value;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_ACK_ITEMREFINING, 0x188)
struct PACKET_ZC_PAR_CHANGE_USER {
int16 packetType;
uint32 gid;
int16 type;
uint16 value;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_PAR_CHANGE_USER, 0x1ab)
struct PACKET_ZC_EQUIP_ARROW {
int16 packetType;
uint16 index;
} __attribute__((packed));
DEFINE_PACKET_HEADER(ZC_EQUIP_ARROW, 0x13c)
// NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#if !defined( sun ) && ( !defined( __NETBSD__ ) || __NetBSD_Version__ >= 600000000 )
#pragma pack( pop )
@ -837,6 +890,8 @@ DEFINE_PACKET_HEADER(ZC_STYLE_CHANGE_RES, 0xa47)
DEFINE_PACKET_HEADER(ZC_GROUP_ISALIVE, 0xab2)
DEFINE_PACKET_HEADER(CZ_REQ_STYLE_CHANGE2, 0xafc)
DEFINE_PACKET_HEADER(ZC_REMOVE_EFFECT, 0x0b0d)
DEFINE_PACKET_HEADER(ZC_FEED_MER, 0x22f)
DEFINE_PACKET_HEADER(ZC_FEED_PET, 0x1a3)
const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) );
const int16 MAX_INVENTORY_ITEM_PACKET_EQUIP = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_equip ) - ( sizeof( struct EQUIPITEM_INFO ) * MAX_ITEMLIST ) ) ) / sizeof( struct EQUIPITEM_INFO ) );

View File

@ -6186,7 +6186,7 @@ bool pc_isUseitem(map_session_data *sd,int n)
if( itemdb_group.item_exists( IG_MF_NOTELEPORT, nameid ) ){
if( ( mapdata->getMapFlag(MF_NOTELEPORT) || mapdata_flag_gvg2( mapdata ) ) ){
clif_skill_teleportmessage( sd, 0 );
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_TP );
return false;
}
@ -7070,7 +7070,7 @@ bool pc_memo(map_session_data* sd, int pos)
// check mapflags
if( sd->bl.m >= 0 && (map_getmapflag(sd->bl.m, MF_NOMEMO) || map_getmapflag(sd->bl.m, MF_NOWARPTO)) && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE) ) {
clif_skill_teleportmessage(sd, 1); // "Saved point cannot be memorized."
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_MEMO ); // "Saved point cannot be memorized."
return false;
}
@ -7081,11 +7081,11 @@ bool pc_memo(map_session_data* sd, int pos)
// check required skill level
skill = pc_checkskill(sd, AL_WARP);
if( skill < 1 ) {
clif_skill_memomessage(sd,2); // "You haven't learned Warp."
clif_skill_memomessage( *sd, WARPPOINT_NOT_LEARNED ); // "You haven't learned Warp."
return false;
}
if( skill < 2 || skill - 2 < pos ) {
clif_skill_memomessage(sd,1); // "Skill Level is not high enough."
clif_skill_memomessage( *sd, WARPPOINT_LOW_LEVEL ); // "Skill Level is not high enough."
return false;
}
@ -7109,7 +7109,7 @@ bool pc_memo(map_session_data* sd, int pos)
sd->status.memo_point[pos].x = sd->bl.x;
sd->status.memo_point[pos].y = sd->bl.y;
clif_skill_memomessage(sd, 0);
clif_skill_memomessage( *sd, WARPPOINT_SUCCESS );
return true;
}
@ -9489,7 +9489,7 @@ void pc_respawn(map_session_data* sd, clr_type clrtype)
pc_setstand(sd, true);
pc_setrestartvalue(sd,3);
if( pc_setpos( sd, mapindex_name2id( sd->status.save_point.map ), sd->status.save_point.x, sd->status.save_point.y, clrtype ) != SETPOS_OK ){
clif_resurrection(&sd->bl, 1); //If warping fails, send a normal stand up packet.
clif_resurrection( sd->bl ); //If warping fails, send a normal stand up packet.
}
}
@ -9608,7 +9608,7 @@ int pc_dead(map_session_data *sd,struct block_list *src)
sd->state.snovice_dead_flag = 1;
pc_setrestartvalue(sd,1);
status_percent_heal(&sd->bl, 100, 100);
clif_resurrection(&sd->bl, 1);
clif_resurrection( sd->bl );
if(battle_config.pc_invincible_time)
pc_setinvincibletimer(sd, battle_config.pc_invincible_time);
sc_start(&sd->bl,&sd->bl,SC_STEELBODY,100,5,skill_get_time(MO_STEELBODY,5));
@ -10863,9 +10863,10 @@ bool pc_jobchange(map_session_data *sd,int job, char upper)
status_change_end( &sd->bl, SC_SPIRIT );
}
if(sd->status.manner < 0)
clif_changestatus(sd,SP_MANNER,sd->status.manner);
if(sd->status.manner < 0){
clif_changemanner( *sd );
clif_updatestatus(*sd,SP_MANNER);
}
status_calc_pc(sd,SCO_FORCE);
pc_checkallowskill(sd);
pc_equiplookall(sd);
@ -11973,7 +11974,7 @@ bool pc_equipitem(map_session_data *sd,short n,int req_pos,bool equipswitch)
pc_equipswitch_remove(sd, n);
if(pos==EQP_AMMO) {
clif_arrowequip(sd,n);
clif_arrowequip( *sd );
clif_arrow_fail(sd,3);
}
else

View File

@ -1608,8 +1608,7 @@ int pet_food(map_session_data *sd, struct pet_data *pd)
i = pc_search_inventory(sd,k);
if( i < 0 ) {
clif_pet_food(sd,k,0);
clif_pet_food( *sd, k, 0 );
return 1;
}
@ -1646,7 +1645,7 @@ int pet_food(map_session_data *sd, struct pet_data *pd)
clif_send_petdata(sd,pd,2,pd->pet.hungry);
clif_send_petdata(sd,pd,1,pd->pet.intimate);
clif_pet_food(sd, pet_db_ptr->FoodID,1);
clif_pet_food( *sd, pet_db_ptr->FoodID, 1 );
return 0;
}

View File

@ -9634,7 +9634,7 @@ BUILDIN_FUNC(successrefitem) {
sd->inventory.u.items_inventory[i].refine = cap_value( sd->inventory.u.items_inventory[i].refine, 0, MAX_REFINE);
pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below
clif_refine(sd->fd,0,i,sd->inventory.u.items_inventory[i].refine);
clif_refine( *sd, i, ITEMREFINING_SUCCESS );
clif_delitem( *sd, i, 1, 3 );
//Logs items, got from (N)PC scripts [Lupus]
@ -9693,7 +9693,7 @@ BUILDIN_FUNC(failedrefitem) {
if (i >= 0) {
sd->inventory.u.items_inventory[i].refine = 0;
pc_unequipitem(sd,i,3); //recalculate bonus
clif_refine(sd->fd,1,i,sd->inventory.u.items_inventory[i].refine); //notify client of failure
clif_refine( *sd, i, ITEMREFINING_FAILURE);
pc_delitem(sd,i,1,0,2,LOG_TYPE_SCRIPT);
clif_misceffect(&sd->bl,2); // display failure effect
achievement_update_objective(sd, AG_ENCHANT_FAIL, 1, 1);
@ -9736,7 +9736,7 @@ BUILDIN_FUNC(downrefitem) {
sd->inventory.u.items_inventory[i].refine -= down;
sd->inventory.u.items_inventory[i].refine = cap_value( sd->inventory.u.items_inventory[i].refine, 0, MAX_REFINE);
clif_refine(sd->fd,2,i,sd->inventory.u.items_inventory[i].refine);
clif_refine( *sd, i, ITEMREFINING_DOWNGRADE );
clif_delitem( *sd, i, 1, 3 );
//Logs items, got from (N)PC scripts [Lupus]

View File

@ -889,7 +889,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
case ALL_THANATOS_RECALL:
case ALL_LIGHTHALZEN_RECALL:
if(mapdata->getMapFlag(MF_NOWARP)) {
clif_skill_teleportmessage(&sd,0);
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_TP );
return true;
}
return false;
@ -899,7 +899,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
case ALL_ODINS_RECALL:
case WE_CALLALLFAMILY:
if(mapdata->getMapFlag(MF_NOTELEPORT)) {
clif_skill_teleportmessage(&sd,0);
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_TP );
return true;
}
return false; // gonna be checked in 'skill_castend_nodamage_id'
@ -907,7 +907,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
case WE_CALLPARENT:
case WE_CALLBABY:
if (mapdata->getMapFlag(MF_NOMEMO)) {
clif_skill_teleportmessage(&sd,1);
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_MEMO );
return true;
}
break;
@ -983,7 +983,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
case WM_GLOOMYDAY:
case WM_SATURDAY_NIGHT_FEVER:
if( !mapdata_flag_vs(mapdata) ) {
clif_skill_teleportmessage(&sd,2); // This skill uses this msg instead of skill fails.
clif_skill_teleportmessage( sd, NOTIFY_MAPINFO_CANT_USE_SKILL ); // This skill cannot be used in this area
return true;
}
break;
@ -9316,7 +9316,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if(sd)
{
if (map_getmapflag(bl->m, MF_NOTELEPORT) && skill_lv <= 2) {
clif_skill_teleportmessage(sd,0);
clif_skill_teleportmessage( *sd, NOTIFY_MAPINFO_CANT_TP );
break;
}
if(!battle_config.duel_allow_teleport && sd->duel_group && skill_lv <= 2) { // duel restriction [LuzZza]
@ -11707,7 +11707,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
tstatus->sp -= tstatus->sp * ( 60 - 10 * skill_lv ) / 100;
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
pc_revive((TBL_PC*)bl,heal,0);
clif_resurrection(bl,1);
clif_resurrection( *bl );
}
break;
@ -19717,7 +19717,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
clif_delitem(sd,idx,1,3);
clif_upgrademessage(&sd, 0, item->nameid);
clif_inventorylist(&sd);
clif_refine(sd.fd,0,idx,item->refine);
clif_refine( sd, idx, ITEMREFINING_SUCCESS );
if( ditem->type == IT_WEAPON ){
achievement_update_objective(&sd, AG_ENCHANT_SUCCESS, 2, ditem->weapon_level, item->refine);
}
@ -19745,7 +19745,7 @@ void skill_weaponrefine( map_session_data& sd, int idx ){
if(item->equip)
pc_unequipitem(&sd,idx,3);
clif_upgrademessage(&sd, 1, item->nameid);
clif_refine(sd.fd,1,idx,item->refine);
clif_refine( sd, idx, ITEMREFINING_FAILURE );
achievement_update_objective(&sd, AG_ENCHANT_FAIL, 1, 1);
pc_delitem(&sd,idx,1,0,2, LOG_TYPE_OTHER);
clif_misceffect(&sd.bl,2);
@ -23012,7 +23012,7 @@ int skill_blockpc_start(map_session_data *sd, int skill_id, t_tick tick) {
sd->scd[i]->timer = add_timer(gettick() + tick, skill_blockpc_end, sd->bl.id, i);
if (battle_config.display_status_timers)
clif_skill_cooldown(sd, skill_id, tick);
clif_skill_cooldown( *sd, skill_id, tick );
return 1;
} else {

View File

@ -1915,7 +1915,7 @@ int status_revive(struct block_list *bl, unsigned char per_hp, unsigned char per
status->ap += ap;
if (bl->prev) // Animation only if character is already on a map.
clif_resurrection(bl, 1);
clif_resurrection( *bl );
switch (bl->type) {
case BL_PC: pc_revive((TBL_PC*)bl, hp, sp, ap); break;
case BL_MOB: mob_revive((TBL_MOB*)bl, hp); break;
@ -10895,7 +10895,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
tick = 60000;
val1 = battle_config.manner_system; // Mute filters.
if (sd) {
clif_changestatus(sd,SP_MANNER,sd->status.manner);
clif_changemanner( *sd );
clif_updatestatus(*sd,SP_MANNER);
}
break;
@ -13399,7 +13399,7 @@ int status_change_end(struct block_list* bl, enum sc_type type, int tid)
if (sd && sd->status.manner < 0 && tid != INVALID_TIMER)
sd->status.manner = 0;
if (sd && tid == INVALID_TIMER) {
clif_changestatus(sd,SP_MANNER,sd->status.manner);
clif_changemanner( *sd );
clif_updatestatus(*sd,SP_MANNER);
}
break;
@ -14220,7 +14220,7 @@ TIMER_FUNC(status_change_timer){
case SC_NOCHAT:
if(sd) {
sd->status.manner++;
clif_changestatus(sd,SP_MANNER,sd->status.manner);
clif_changemanner( *sd );
clif_updatestatus(*sd,SP_MANNER);
if (sd->status.manner < 0) { // Every 60 seconds your manner goes up by 1 until it gets back to 0.
sc_timer_next(60000+tick);

View File

@ -2988,7 +2988,7 @@ int unit_skillcastcancel(struct block_list *bl, char type)
if(bl->type==BL_MOB)
((TBL_MOB*)bl)->skill_idx = -1;
clif_skillcastcancel(bl);
clif_skillcastcancel( *bl );
return 1;
}