summaryrefslogtreecommitdiffstats
path: root/example/serverdata/scripts/npcs/barber.lua
blob: fbb2862ca0074ef44be9424637ddd66ed9f874b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
----------------------------------------------------------
-- Barber Function                                      --
----------------------------------------------------------------------------------
--  Copyright 2009 The Mana World Development Team                              --
--                                                                              --
--  This file is part of The Mana World.                                        --
--                                                                              --
--  The Mana World  is free software; you can redistribute  it and/or modify it --
--  under the terms of the GNU General  Public License as published by the Free --
--  Software Foundation; either version 2 of the License, or any later version. --
----------------------------------------------------------------------------------

local barber_styles = {"Flat ponytail", "Bowl cut","Combed back", "Emo", "Mohawk",
        "Pompadour", "Center parting/Short and slick", "Long and slick", "Short and curly",
        "Pigtails", "Long and curly", "Parted", "Perky ponytail", "Wave", "Mane", "Bun"}

local barber_colors = {"Light brown", "Green", "Dark red", "Light purple", "Gray", "Blonde",
        "Blue", "Brown", "Light Bblue", "Dark purple", "Black", "Shock white"}

function Barber(npc, ch, data)
    local style_ids = nil
    local color_ids = nil

    -- If extra data was passed, let's have a look at it
    if data ~= nil then
        style_ids = data[1]
        if #data > 1 then
            color_ids = data[2]
        end
    end

    -- Setup up default styles (if needed)
    if style_ids == nil then
        style_ids = {}
        for i = 1, 13 do
            style_ids[i] = i
        end
    end

    -- Setup up default colors (if needed)
    if color_ids == nil then
        color_ids = {}
        for i = 1, 11 do
            color_ids[i] = i
        end
    end

    -- Nothing to show? Then we can return
    if #color_ids == 0 and #style_ids == 0 then
        return
    end

    local result = 0

    local styles = {}

    -- If we have style IDs, lets get their names
    if #style_ids > 0 then
        for i = 1, #style_ids do
            styles[i] = barber_styles[style_ids[i]]
        end
        result = 1
    end

    local colors = {}

    -- If we have color style IDs, lets get their names
    if #color_ids > 0 then
        for i = 1, #color_ids do
            colors[i] = barber_colors[color_ids[i]]
        end

        if result == 0 then
            result = 2
        else
            result = 3
        end
    end

    -- Choose an appropriate message
    if result == 1 then
        do_message(npc, ch, "Hello! What style would you like today?")
    elseif result == 2 then
        do_message(npc, ch, "Hello! What color would you like today?")
    else
        do_message(npc, ch, "Hello! What can I do for you today?")
    end

    print("#styles ==", #styles)

    -- Repeat until the user selects nothing
    repeat
        if (result == 1) then -- Do styles
            result = do_choice(npc, ch, "Bald", styles, "Surprise me", "Never mind")

            result = result -1

            --Random
            if (result == #styles + 1) then
                result = math.random(#styles + 1) - 1
                print("Random")
            end

            print("Style ==", result)

            if (result == 0) then
                mana.chr_set_hair_style(ch, 0)
                result = 1
            elseif (result <= #styles) then
                mana.chr_set_hair_style(ch, style_ids[result])
                result = 1
            else --"Never mind"
                result = 3
            end
        elseif (result == 2) then -- Do colors
            result = do_choice(npc, ch, colors, "Surprise me", "Never mind")

            --Random
            if (result == #colors + 1) then
                result = math.random(#colors)
            end

            if (result <= #colors) then
                mana.chr_set_hair_color(ch, color_ids[result - 1])
                result = 2
            else --"Never mind"
                result = 3
            end
        end

        -- If we have both styles and colors, show the main menu
        if #styles > 0 and #colors > 0 then
            result = do_choice(npc, ch, "Change my style", "Change my color", "Never mind")
        end
    until result >= 3 --While they've choosen a valid option that isn't "Never mind"

    -- Let's close up
    do_message(npc, ch, "Thank you. Come again!")
end