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
npc_message(npc, ch, "Hello! What style would you like today?")
elseif result == 2 then
npc_message(npc, ch, "Hello! What color would you like today?")
else
npc_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 = npc_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
chr_set_hair_style(ch, 0)
result = 1
elseif (result <= #styles) then
chr_set_hair_style(ch, style_ids[result])
result = 1
else --"Never mind"
result = 3
end
elseif (result == 2) then -- Do colors
result = npc_choice(npc, ch, colors, "Surprise me", "Never mind")
--Random
if (result == #colors + 1) then
result = math.random(#colors)
end
if (result <= #colors) then
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 = npc_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
npc_message(npc, ch, "Thank you. Come again!")
end
|