diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 5a4f2d293c..bb23abad8b 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -8291,23 +8291,18 @@ void clif_send_petstatus( map_session_data& sd, pet_data& pd ){ } -/// Notification about a pet's emotion/talk (ZC_PET_ACT). -/// 01aa .L .L +/// Notification about a pet's emotion/talk. +/// 01aa .L .L (ZC_PET_ACT) /// data: /// @see CZ_PET_ACT. -void clif_pet_emotion(struct pet_data *pd,int param) -{ - unsigned char buf[16]; +void clif_pet_emotion( pet_data& pd, int32 param ){ + PACKET_ZC_PET_ACT packet{}; - nullpo_retv(pd); + packet.packetType = HEADER_ZC_PET_ACT; + packet.GID = pd.bl.id; + packet.data = param; - memset(buf,0,packet_len(0x1aa)); - - WBUFW(buf,0)=0x1aa; - WBUFL(buf,2)=pd->bl.id; - WBUFL(buf,6)=param; - - clif_send(buf,packet_len(0x1aa),&pd->bl,AREA); + clif_send( &packet, sizeof( packet ), &pd.bl, AREA ); } @@ -10876,7 +10871,7 @@ void clif_parse_LoadEndAck(int fd,map_session_data *sd) } if(sd->pd && sd->pd->pet.intimate > 900) - clif_pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet_hungry_val(sd->pd)); + clif_pet_emotion( *sd->pd, (sd->pd->pet.class_ - 100)*100 + 50 + pet_hungry_val(sd->pd) ); if(hom_is_active(sd->hd)) hom_init_timers(sd->hd); @@ -14590,7 +14585,7 @@ void clif_parse_SelectEgg(int fd, map_session_data *sd){ void clif_parse_SendEmotion(int fd, map_session_data *sd) { if(sd->pd) - clif_pet_emotion(sd->pd,RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0])); + clif_pet_emotion( *sd->pd, RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]) ); } diff --git a/src/map/clif.hpp b/src/map/clif.hpp index b897f8a0a9..058dddb785 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -1104,7 +1104,7 @@ void clif_send_petstatus( map_session_data& sd, pet_data& pd ); void clif_send_petdata( map_session_data* sd, pet_data& pd, e_changestate_pet data_type, int32 value ); #define clif_pet_equip(sd, pd) clif_send_petdata(sd, pd, CHANGESTATEPET_ACCESSORY, (pd).vd.head_bottom) #define clif_pet_equip_area(pd) clif_send_petdata(nullptr, pd, CHANGESTATEPET_ACCESSORY, (pd).vd.head_bottom) -void clif_pet_emotion(struct pet_data *pd,int param); +void clif_pet_emotion( pet_data& pd, int32 param ); void clif_pet_food( map_session_data& sd, int32 foodid, bool success ); void clif_pet_autofeed_status(map_session_data* sd, bool force); diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index b88dd8334a..958a7fff47 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -254,7 +254,6 @@ parseable_packet(0x01a7,4,clif_parse_SelectEgg,2); packet(0x01a8,4); parseable_packet(0x01a9,6,clif_parse_SendEmotion,2); - packet(0x01aa,10); packet(0x01ac,6); packet(0x01ad,-1); parseable_packet( HEADER_CZ_REQ_MAKINGARROW, sizeof( PACKET_CZ_REQ_MAKINGARROW ), clif_parse_SelectArrow, 0 ); diff --git a/src/map/packets.hpp b/src/map/packets.hpp index 2c0dfeeede..d15e3646ea 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -1075,6 +1075,13 @@ struct PACKET_ZC_ACK_REQNAME_BYGID { DEFINE_PACKET_HEADER(ZC_ACK_REQNAME_BYGID, 0x194); #endif +struct PACKET_ZC_PET_ACT { + int16 packetType; + uint32 GID; + int32 data; +} __attribute__((packed)); +DEFINE_PACKET_HEADER(ZC_PET_ACT, 0x1aa); + // 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 )