summaryrefslogblamecommitdiff
path: root/npc/functions/barber.txt
blob: 8b83fe6a6b43fc2f85ae4fce95d6bebb8c7d532b (plain) (tree)
1
2
3
 
 
 


















































                                                                                           
 

                                                
           
 









































































































                                                                                                                
           
 





















































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