diff options
-rw-r--r-- | world/map/db/const.txt | 2 | ||||
-rw-r--r-- | world/map/npc/013-2/notes.txt | 6 | ||||
-rw-r--r-- | world/map/npc/functions/barber.txt | 135 | ||||
-rw-r--r-- | world/map/npc/functions/headstyles.txt | 54 | ||||
-rw-r--r-- | world/map/npc/items/mirror.txt | 22 | ||||
-rw-r--r-- | world/map/npc/scripts.conf | 2 |
6 files changed, 152 insertions, 69 deletions
diff --git a/world/map/db/const.txt b/world/map/db/const.txt index 52752c1d..90118b47 100644 --- a/world/map/db/const.txt +++ b/world/map/db/const.txt @@ -17,7 +17,7 @@ MaxSp 8 1 //StatusPoint 9 1 BaseLevel 11 1 //SkillPoint 12 1 -//Class 19 1 +Class 19 1 Zeny 20 1 Sex 21 1 //NextBaseExp 22 1 diff --git a/world/map/npc/013-2/notes.txt b/world/map/npc/013-2/notes.txt index 9b9f46dc..c8b386bd 100644 --- a/world/map/npc/013-2/notes.txt +++ b/world/map/npc/013-2/notes.txt @@ -27,10 +27,8 @@ next; mes "Your looks suddenly change..."; next; - set @style, rand(20); - set @color, rand(12); - setlook LOOK_HAIR_STYLE, @style; - setlook LOOK_HAIR_COLOR, @color + 1; + set @fixedMirror, 1; + callfunc "useMirror"; close; } diff --git a/world/map/npc/functions/barber.txt b/world/map/npc/functions/barber.txt index 76b06dd7..46b423ce 100644 --- a/world/map/npc/functions/barber.txt +++ b/world/map/npc/functions/barber.txt @@ -11,15 +11,16 @@ function|script|Barber|, { + callfunc "getHeadStyles"; 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]; + set @style$, @HairStyles$[@style]; + if (@color >= 0 && @color < 120) + set @color$, @HairColors$[@color]; if (@color == 127) set @color$, "Shocked White"; @@ -35,39 +36,52 @@ L_Main: "Nah, I'm fine", L_Done; 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 - "Bald", L_MenuItems, - "Flat ponytail", L_MenuItems, - "Bowl cut", L_MenuItems, - "Combed back", L_MenuItems, - "Emo", L_MenuItems, - "Mohawk", L_MenuItems, - "Pompadour", L_MenuItems, - "Center parting/Short and slick", L_MenuItems, - "Long and slick", L_MenuItems, - "Short and curly", L_MenuItems, - "Pigtails", L_MenuItems, - "Long and curly", L_MenuItems, - "Parted", L_MenuItems, - "Perky ponytail", L_MenuItems, - "Wave", L_MenuItems, - "Mane", L_MenuItems, - "Bun", L_MenuItems, - "Shoulder Length Flick", L_MenuItems, - "Fizzy", L_MenuItems, - "Long and Clipped", L_MenuItems, - "Surprise me", L_RandomStyle, - "Nah, I'm fine", L_Done; + @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, + @HairStyles$[22], L_MenuItems, + @HairStyles$[23], L_MenuItems, + @HairStyles$[24], L_MenuItems, + @HairStyles$[25], L_MenuItems; L_MenuItems: if (@menu - 1 == @style) goto L_SameStyle; - + if(@menu == (getarraysize(@HairStyles$) - 1)) goto L_RandomStyle; + if(@menu == getarraysize(@HairStyles$)) goto L_Done; + if(@menu == 1) + set @menu, 21; // bald headstyle setlook LOOK_HAIR_STYLE, @menu - 1; goto L_Done; L_RandomStyle: - setlook LOOK_HAIR_STYLE, rand(20); + set @randomStyle, rand(0, (getarraysize(@HairStyles$) -4)); + if(@randomStyle == 0) + set @randomStyle, 20; + setlook LOOK_HAIR_STYLE, @randomStyle; goto L_Done; L_SameStyle: @@ -75,36 +89,43 @@ L_SameStyle: goto L_Main; L_Color: + if(@style == 20) goto L_SameColor; + if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Surprise me"; + if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Nah, I'm fine"; + if(!@colorOpts) set @colorOpts, 1; menu - "Brunette", L_MenuItems1, - "Green", L_MenuItems1, - "Dark red", L_MenuItems1, - "Light purple", L_MenuItems1, - "Gray", L_MenuItems1, - "Blonde", L_MenuItems1, - "Teal", L_MenuItems1, - "Light red", L_MenuItems1, - "Blue", L_MenuItems1, - "Dark purple", L_MenuItems1, - "Black", L_MenuItems1, - "Pink", L_MenuItems1, - "Brown", L_MenuItems1, - "Surprise me", L_RandomColor, - "Nah, I'm fine", L_Done; + @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; - - setlook LOOK_HAIR_COLOR, @menu - 1; + if(@menu == (getarraysize(@HairColors$) - 1)) goto L_RandomColor; + if(@menu == getarraysize(@HairColors$)) goto L_Done; + setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * Class)); goto L_Done; L_RandomColor: - setlook LOOK_HAIR_COLOR, rand(13); + setlook LOOK_HAIR_COLOR, rand((15 * Class), ((getarraysize(@HairColors$) -4) + (15 * Class))); goto L_Done; L_SameColor: - mes "Your hair is already that color."; + mes "You are either bald or your hair is already that color."; goto L_Main; L_Done: @@ -112,23 +133,9 @@ L_Done: set @menu, 0; set @style, 0; set @color, 0; + cleararray @HairStyles$, "", getarraysize(@HairStyles$); + cleararray @HairColors$, "", getarraysize(@HairColors$); + set @hairOpts, 0; + set @colorOpts, 0; return; } - --|script|#BarberConfig|-1, -{ - end; - -OnInit: - 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", "Long and Clipped"; - setarray $@HairColors$, - "Brunette", "Green", "Dark red", "Light purple", "Gray", "Blonde", - "Teal", "Light red", "Blue", "Dark purple", "Black", "Pink", - "Brown"; - end; -} diff --git a/world/map/npc/functions/headstyles.txt b/world/map/npc/functions/headstyles.txt new file mode 100644 index 00000000..cdba58fc --- /dev/null +++ b/world/map/npc/functions/headstyles.txt @@ -0,0 +1,54 @@ +// headstyles config file +// author: meko + +function|script|getHeadStyles|, +{ + set @HairStyles$, 0; + set @HairColors$, 0; + cleararray @HairStyles$, "", getarraysize(@HairStyles$); + cleararray @HairColors$, "", getarraysize(@HairColors$); + if(Class == 0) + setarray @HairStyles$, // TALPONIAN (human) + "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", "Long and Clipped"; + + if(Class == 1) // TRITAN (fish) + setarray @HairStyles$, + "no fins", "fins 1", "fins 2", "fins 3", "fins 4"; + + if(Class == 2) // GISPAAN (demon) + setarray @HairStyles$, + "no horns", "horns 1", "horns 2", "horns 3", "horns 4", "horns 5"; + + if(Class == 3) // SPARRON (orc) + setarray @HairStyles$, + "bald"; + + if(Class == 0) + setarray @HairColors$, // TALPONIAN (human) + "Brunette", "Green", "Dark red", "Light purple", "Gray", "Blonde", + "Teal", "Light red", "Blue", "Dark purple", "Black", "Pink", + "Brown";//, "(free slot)", "(free slot)"; + + if(Class == 1) // TRITAN (fish) + setarray @HairColors$, + "Green", "Blue", "Light blue", "Dark purple", "Black";//, "(free slot)", + //"(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", + //"(free slot)", "(free slot)", "(free slot)"; + + if(Class == 2) // GISPAAN (demon) + setarray @HairColors$, + "Light brown", "Red", "Gray", "Yellow", "Light red";//, "(free slot)", + //"(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", + //"(free slot)", "(free slot)", "(free slot)"; + + if(Class == 3) // SPARRON (orc) + setarray @HairColors$, + "(no colors yet)";//, "(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", + //"(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", "(free slot)", + //"(free slot)", "(free slot)", "(free slot)"; + return; +} diff --git a/world/map/npc/items/mirror.txt b/world/map/npc/items/mirror.txt new file mode 100644 index 00000000..0c200efa --- /dev/null +++ b/world/map/npc/items/mirror.txt @@ -0,0 +1,22 @@ +function|script|useMirror|, +{ + callfunc "getHeadStyles"; + goto L_Rand; + + L_Rand: + set @style, rand(0,(getarraysize(@HairStyles$) -2)); + if(@style == 0) + set @style, 20; + set @color, rand((15 * Class),((getarraysize(@HairColors$) -2) + (15 * Class))); + if((getlook(LOOK_HAIR_STYLE) == @style) || (getlook(LOOK_HAIR_COLOR) == @color)) + goto L_Rand; + goto L_Proceed; + + L_Proceed: + if(@fixedMirror) + setlook LOOK_HAIR_STYLE, @style; + setlook LOOK_HAIR_COLOR, @color; + //if(!@fixedMirror) getitem "SilverMirror", 1; <== this can be used in the future to have a portable hair color changer (like scissors but for the color) + set @fixedMirror, 0; + return; +} diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf index 90c11883..047d7dbb 100644 --- a/world/map/npc/scripts.conf +++ b/world/map/npc/scripts.conf @@ -22,6 +22,7 @@ npc: npc/functions/debug.txt npc: npc/functions/lockpicking.txt npc: npc/functions/default_npc_checks.txt npc: npc/functions/undead_debug.txt +npc: npc/functions/headstyles.txt // Item Functions npc: npc/items/magic_gm_top_hat.txt @@ -35,6 +36,7 @@ npc: npc/items/warpTowels.txt npc: npc/items/unequipcb.txt npc: npc/items/launcher_ammo.txt npc: npc/items/check_wand.txt +npc: npc/items/mirror.txt import: npc/_import.txt // GM Events |