// The Barber script has been around since before the repository split // so it's hard to figure out who wrote it. // o11c updated it according to new scripting standards while adding pink. // ... and added the code that shows your old color/style. // Note: there is a soft limit of 15 colors per classes and 20 styles (0-19) // This is the number that can be set when creating a character // or using GM commands, but scripts (such as this one) can set // any value 0-255 function|script|Barber { if (getequipid(equip_head) == 647) goto L_Debug; callfunc "getHeadStyles"; set @hairOpts, 0; set @colorOpts, 0; set @menu, 0; goto L_Main; L_MainClear: clear; goto L_Main; L_Main: set @style, getlook(LOOK_HAIR_STYLE); set @color, getlook(LOOK_HAIR_COLOR); set @style$, "Unknown"; set @color$, "Unknown"; if (@style >= 1 && @style <= 20) set @style$, @HairStyles$[(@style - 1)]; if (@color == ((HC_WHITE - Class) + 1)) set @color$, "Shocked White"; set @color, (@color - (15 * (Class - 1))); if (@color >= 0 && @color <= 15) set @color$, @HairColors$[@color]; if (Sex == 0) set @gender$, " female"; elif (Sex == 1) set @gender$, " male"; elif (Class == 3 || Class == 6) set @gender$, "n"; else set @gender$, ""; mes "You are a" + @gender$ + " " + @species$ + "."; mes "Your current style is " + @style$ + " and your current color is " + @color$ + "."; set @style$, ""; set @color$, ""; menu "Change my style", L_Style, "Change my color", L_Color, "Change my gender", L_Gender, "Change my species", L_Species, "Nah, I'm fine", L_Done; L_Gender: menu "Female.", L_Female, "Male.", L_Male, "Non-binary.", L_NonBinary, "Nah, I'm fine", L_MainClear; L_Female: set Sex, 0; goto L_MainClear; L_Male: set Sex, 1; goto L_MainClear; L_NonBinary: set Sex, 3; goto L_MainClear; L_Species: if (countitem("SkeletonCharm") >= 1) menu "Talpan", L_Species_next, "Tritan", L_Species_next, "Ifriton", L_Species_next, //"Gispaan", L_Species_next, //"Sparron", L_Species_next, "Undead", L_Species_next, "Nah, I'm fine", L_MainClear; //else menu "Talpan", L_Species_next, "Tritan", L_Species_next, "Ifriton", L_Species_next, //"Gispaan", L_Species_next, //"Sparron", L_Species_next, "Nah, I'm fine", L_MainClear; L_Species_next: if (@menu == 4) set @menu, 6; set Class, @menu; callfunc "fixHeadStyles"; goto L_MainClear; 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 == (getarraysize(@HairStyles$) - 1)) goto L_RandomStyle; if(@menu >= getarraysize(@HairStyles$)) goto L_MainClear; setlook LOOK_HAIR_STYLE, @menu; goto L_MainClear; 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_MainClear, "Goodbye", L_Done; 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 == (getarraysize(@HairColors$) - 1)) goto L_RandomColor; if(@menu >= getarraysize(@HairColors$)) goto L_MainClear; setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * (Class - 1))); goto L_MainClear; 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_MainClear, "Goodbye", L_Done; L_Done: // cleanup set @menu, 0; set @style, 0; set @color, 0; cleararray @HairStyles$, "", getarraysize(@HairStyles$); cleararray @HairColors$, "", getarraysize(@HairColors$); set @hairOpts, 0; set @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: set @dbg_class, 0; mes "input class (0-32767)"; input @dbg_class; if (@dbg_class >= 0 && @dbg_class <= 32767) set Class, @dbg_class; set @dbg_class, 0; goto L_Debug; L_DebugStyle: set @dbg_style, 0; mes "input style (0-255)"; input @dbg_style; if (@dbg_style >= 0 && @dbg_style <= 255) setlook LOOK_HAIR_STYLE, @dbg_style; set @dbg_style, 0; goto L_Debug; L_DebugColor: set @dbg_color, 0; mes "input color (0-255)"; input @dbg_color; if (@dbg_color >= 0 && @dbg_color <= 255) setlook LOOK_HAIR_COLOR, @dbg_color; set @dbg_color, 0; goto L_Debug; L_DebugGender: set @dbg_gender, 0; mes "input gender (0-3)"; input @dbg_gender; if (@dbg_gender >= 0 && @dbg_gender <= 3) set Sex, @dbg_gender; set @dbg_gender, 0; goto L_Debug; }