diff options
Diffstat (limited to 'example/scripts/npcs/barber.lua')
-rw-r--r-- | example/scripts/npcs/barber.lua | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/example/scripts/npcs/barber.lua b/example/scripts/npcs/barber.lua new file mode 100644 index 0000000..fbb2862 --- /dev/null +++ b/example/scripts/npcs/barber.lua @@ -0,0 +1,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 |