summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/clif.c29
-rw-r--r--src/map/clif.h1
-rw-r--r--src/map/pc.c6
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;
}