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; }