diff options
Diffstat (limited to 'world/map')
-rw-r--r-- | world/map/npc/001-1/barber.txt | 4 | ||||
-rw-r--r-- | world/map/npc/functions/barber.txt | 54 |
2 files changed, 52 insertions, 6 deletions
diff --git a/world/map/npc/001-1/barber.txt b/world/map/npc/001-1/barber.txt index 4a0b9d57..103e303a 100644 --- a/world/map/npc/001-1/barber.txt +++ b/world/map/npc/001-1/barber.txt @@ -8,4 +8,8 @@ mes "[Nicolas the Barber]"; mes "\"Come again!\""; close; + +// OnInit doesn't work for functions, they need our help +OnInit: + callfunc "OnInitBarber"; } diff --git a/world/map/npc/functions/barber.txt b/world/map/npc/functions/barber.txt index f4ad055d..09282106 100644 --- a/world/map/npc/functions/barber.txt +++ b/world/map/npc/functions/barber.txt @@ -2,6 +2,7 @@ // 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 12 colors (0-11) and 20 styles (0-19) // This is the number that can be set when creating a character @@ -9,11 +10,23 @@ // any value 0-255 function|script|Barber|{ - // TODO do something like this, but with names - //set @style, getlook(LOOK_HAIR_STYLE); - //set @color, getlook(LOOK_HAIR_COLOR); - //mes "Your current style is " + @style + " and your current color is " + @color + "."; + set @style, getlook(LOOK_HAIR_STYLE); + set @color, getlook(LOOK_HAIR_COLOR); + set @style$, "Unknown"; + set @color$, "Unknown"; + if (@style >= 0 && @style < 20) + set @style$, $@HairStyles$[@style]; + if (@color >= 0 && color < 20) + set @color$, $@HairColors$[@color]; + if (@color == 127) + set @color$, "Shocked White"; + + mes "Your current style is " + @style$ + " and your current color is " + @color$ + "."; + set @style$, ""; + set @color$, ""; + +L_Main: menu "Change my style", L_Style, "Change my color", L_Color, @@ -44,6 +57,9 @@ L_Style: "Surprise me", L_RandomStyle, "Nah, I'm fine", L_Done; + if (@menu - 1 == @style) + goto L_SameStyle; + setlook LOOK_HAIR_STYLE, @menu - 1; goto L_Done; @@ -51,6 +67,10 @@ L_RandomStyle: setlook LOOK_HAIR_STYLE, rand(20); goto L_Done; +L_SameStyle: + mes "Your hair was already that style"; + goto L_Main; + L_Color: menu "Brunette", -, @@ -68,6 +88,9 @@ L_Color: "Surprise me", L_RandomColor, "Nah, I'm fine", L_Done; + if (@menu - 1 == @color) + goto L_SameColor; + setlook LOOK_HAIR_COLOR, @menu - 1; goto L_Done; @@ -75,10 +98,29 @@ L_RandomColor: setlook LOOK_HAIR_COLOR, rand(12); goto L_Done; +L_SameColor: + mes "Your hair was already that color"; + goto L_Main; + L_Done: // cleanup set @menu, 0; - //set @style, 0; - //set @color, 0; + set @style, 0; + set @color, 0; + return; +} + +// Since this is a function, not an NPC, OnInit doesn't work +// So call this from a real NPC's OnInit (001-1/barber.txt) +function|script|OnInitBarber|{ + setarray $@HairStyles$, + "Bald", "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", "Shoulder Length Flick", + "Fizzy", "Bald"; + setarray $@HairColors$, + "Brunette", "Green", "Dark red", "Light purple", "Gray", "Blonde", + "Teal", "Light red", "Blue", "Dark purple", "Black", "Pink"; return; } |