diff options
-rw-r--r-- | src/map/clif.c | 29 | ||||
-rw-r--r-- | src/map/clif.h | 1 | ||||
-rw-r--r-- | src/map/pc.c | 6 |
3 files changed, 35 insertions, 1 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 908e9ff..e734efe 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -2388,6 +2388,35 @@ int clif_changelook_towards(struct block_list *bl,int type,int val, struct map_s return 0; } +int clif_changehair(struct block_list *bl, int hairStyle, int hairColor) +{ + unsigned char buf[32]; + struct map_session_data *sd = NULL; + + nullpo_retr(0, bl); + + if(bl->type == BL_PC) + sd = (struct map_session_data *)bl; + + if(sd && sd->disguise > 23 && sd->disguise < 4001) // mob disguises [Valaris] + return 0; + + if (sd && sd->status.option & OPTION_INVISIBILITY) + return 0; + + WBUFW(buf,0)=0x1d7; + WBUFL(buf,2)=bl->id; + WBUFB(buf,6)=LOOK_HAIR; + WBUFW(buf,7)=hairStyle; + WBUFW(buf,9)=hairColor; + clif_send(buf, packet_len_table[0x1d7], bl, AREA); + + WBUFB(buf,6)=LOOK_HAIR_COLOR; + WBUFW(buf,7)=hairColor; + WBUFW(buf,9)=hairStyle; + clif_send(buf, packet_len_table[0x1d7], bl, AREA); +} + /*========================================== * *------------------------------------------ diff --git a/src/map/clif.h b/src/map/clif.h index 198bbff..0816093 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -63,6 +63,7 @@ int clif_damage(struct block_list *,struct block_list *,unsigned int,int,int,int #define clif_takeitem(src,dst) clif_damage(src,dst,0,0,0,0,0,1,0) int clif_changelook(struct block_list *,int,int); // area int clif_changelook_towards(struct block_list *,int,int, struct map_session_data *dst); // area or target +int clif_changehair(struct block_list *,int,int); void clif_changelook_accessories(struct block_list *bl, struct map_session_data *dst); // area or target; list gloves, boots etc. int clif_arrowequip(struct map_session_data *sd,int val); //self int clif_arrow_fail(struct map_session_data *sd,int type); //self diff --git a/src/map/pc.c b/src/map/pc.c index e0b4c89..1310743 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -5763,7 +5763,11 @@ int pc_changelook(struct map_session_data *sd,int type,int val) case LOOK_SHOES: break; } - clif_changelook(&sd->bl,type,val); + + if (type == LOOK_HAIR || type == LOOK_HAIR_COLOR) + clif_changehair(&sd->bl,sd->status.hair,sd->status.hair_color); + else + clif_changelook(&sd->bl,type,val); return 0; } |