function script Barber {
if (getequipid(equip_head) == 647)
goto L_Debug;
callfunc "getHeadStyles";
goto L_Main;
L_Main:
@style = getlook(LOOK_HAIR_STYLE);
@color = getlook(LOOK_HAIR_COLOR);
@style$ = "Unknown";
@color$ = "Unknown";
if (@style >= 1 && @style <= 20)
@style$ = @HairStyles$[(@style - 1)];
if (@color == ((HC_WHITE - Class) + 1))
@color$ = "Shocked White";
@color = (@color - (15 * (Class - 1)));
if (@color >= 0 && @color <= 15)
@color$ = @HairColors$[@color];
mes "Your current style is " + @style$ + " and your current color is " + @color$ + ".";
@style$ = "";
@color$ = "";
menu
"Change my style", L_Style,
"Change my color", L_Color,
"Change my gender", L_Gender,
"Nah, I'm fine", L_Done;
L_Gender:
menu
"Female.", L_Female,
"Male.", L_Male,
"Non-binary.", L_NonBinary,
"Nah, I'm fine", L_Done;
L_Female:
@Sex = 0;
goto L_Change;
L_Male:
@Sex = 1;
goto L_Change;
L_NonBinary:
@Sex = 3;
goto L_Change;
L_Change:
if (Sex == @Sex)
goto L_Already_Change;
Sex = @Sex;
return;
L_Already_Change:
mes "\"Umm, you are that gender already.\"";
return;
L_Style:
if(!@hairOpts) set @HairStyles$[getarraysize(@HairStyles$)], "Surprise me";
if(!@hairOpts) set @HairStyles$[getarraysize(@HairStyles$)], "Nah, I'm fine";
if(!@hairOpts) set @hairOpts, 1;
menu
@HairStyles$[0], L_MenuItems,
@HairStyles$[1], L_MenuItems,
@HairStyles$[2], L_MenuItems,
@HairStyles$[3], L_MenuItems,
@HairStyles$[4], L_MenuItems,
@HairStyles$[5], L_MenuItems,
@HairStyles$[6], L_MenuItems,
@HairStyles$[7], L_MenuItems,
@HairStyles$[8], L_MenuItems,
@HairStyles$[9], L_MenuItems,
@HairStyles$[10], L_MenuItems,
@HairStyles$[11], L_MenuItems,
@HairStyles$[12], L_MenuItems,
@HairStyles$[13], L_MenuItems,
@HairStyles$[14], L_MenuItems,
@HairStyles$[15], L_MenuItems,
@HairStyles$[16], L_MenuItems,
@HairStyles$[17], L_MenuItems,
@HairStyles$[18], L_MenuItems,
@HairStyles$[19], L_MenuItems,
@HairStyles$[20], L_MenuItems,
@HairStyles$[21], L_MenuItems;
L_MenuItems:
if (@menu == @style)
goto L_SameStyle;
if(@menu == (getarraysize(@HairStyles$) - 1)) goto L_RandomStyle;
if(@menu >= getarraysize(@HairStyles$)) goto L_Done;
setlook LOOK_HAIR_STYLE, @menu;
goto L_Main;
L_RandomStyle:
setarray @randomStyle[0], rand(1, (getarraysize(@HairStyles$) - 2));
setarray @randomStyle[1], @randomStyle[1] + 1; // infinite loop prevention
if(@randomStyle[0] == @style && @randomStyle[1] < 15) goto L_RandomStyle;
setlook LOOK_HAIR_STYLE, @randomStyle[0];
setarray @randomStyle[1], 0;
menu
"Surprise me once again", L_RandomStyle,
"Go back", L_Main,
"Goodbye", L_Done;
L_SameStyle:
mes "Your hair already has that style.";
goto L_Main;
L_Color:
if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Surprise me";
if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Nah, I'm fine";
if(!@colorOpts) set @colorOpts, 1;
menu
@HairColors$[0], L_MenuItems1,
@HairColors$[1], L_MenuItems1,
@HairColors$[2], L_MenuItems1,
@HairColors$[3], L_MenuItems1,
@HairColors$[4], L_MenuItems1,
@HairColors$[5], L_MenuItems1,
@HairColors$[6], L_MenuItems1,
@HairColors$[7], L_MenuItems1,
@HairColors$[8], L_MenuItems1,
@HairColors$[9], L_MenuItems1,
@HairColors$[10], L_MenuItems1,
@HairColors$[11], L_MenuItems1,
@HairColors$[12], L_MenuItems1,
@HairColors$[13], L_MenuItems1,
@HairColors$[14], L_MenuItems1,
@HairColors$[15], L_MenuItems1,
@HairColors$[16], L_MenuItems1;
L_MenuItems1:
if (@menu - 1 == @color)
goto L_SameColor;
if(@menu == (getarraysize(@HairColors$) - 1)) goto L_RandomColor;
if(@menu >= getarraysize(@HairColors$)) goto L_Done;
setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * (Class - 1)));
goto L_Main;
L_RandomColor:
setarray @randomColor[0], rand((15 * (Class - 1)), ((getarraysize(@HairColors$) - 3) + (15 * (Class - 1))));
setarray @randomColor[1], @randomColor[1] + 1;
if(@randomColor[0] == @color && @randomColor[1] < 15) goto L_RandomColor;
setlook LOOK_HAIR_COLOR, @randomColor[0];
setarray @randomColor[1], 0;
menu
"Surprise me once again", L_RandomColor,
"Go back", L_Main,
"Goodbye", L_Done;
L_SameColor:
mes "You already have that color.";
goto L_Main;
L_Done:
// cleanup
@menu = 0;
@style = 0;
@color = 0;
cleararray @HairStyles$, "", getarraysize(@HairStyles$);
cleararray @HairColors$, "", getarraysize(@HairColors$);
@hairOpts = 0;
@colorOpts = 0;
return;
L_Debug:
npcaction 9; // FIXME: this should become a builtin (ie `clear`)
mes "Class: " + Class;
mes "Style: " + getlook(LOOK_HAIR_STYLE);
mes "Color: " + getlook(LOOK_HAIR_COLOR);
mes "Gender: " + Sex;
menu
"edit| Set Class", L_DebugClass,
"edit| Set Style", L_DebugStyle,
"edit| Set Color", L_DebugColor,
"edit| Set Gender", L_DebugGender,
"toggle| Simulate logout", L_DebugLogout,
"Close", L_Done;
L_DebugLogout:
callfunc "fixHeadStyles";
goto L_Debug;
L_DebugClass:
@dbg_class = 0;
mes "input class (0-32767)";
input @dbg_class;
if (@dbg_class >= 0 && @dbg_class <= 32767)
Class = @dbg_class;
@dbg_class = 0;
goto L_Debug;
L_DebugStyle:
@dbg_style = 0;
mes "input style (0-255)";
input @dbg_style;
if (@dbg_style >= 0 && @dbg_style <= 255)
setlook LOOK_HAIR_STYLE, @dbg_style;
@dbg_style = 0;
goto L_Debug;
L_DebugColor:
@dbg_color = 0;
mes "input color (0-255)";
input @dbg_color;
if (@dbg_color >= 0 && @dbg_color <= 255)
setlook LOOK_HAIR_COLOR, @dbg_color;
@dbg_color = 0;
goto L_Debug;
L_DebugGender:
@dbg_gender = 0;
mes "input gender (0-3)";
input @dbg_gender;
if (@dbg_gender >= 0 && @dbg_gender <= 3)
Sex = @dbg_gender;
@dbg_gender = 0;
goto L_Debug;
}