summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--world/map/db/const.txt2
-rw-r--r--world/map/npc/013-2/notes.txt6
-rw-r--r--world/map/npc/functions/barber.txt135
-rw-r--r--world/map/npc/functions/headstyles.txt54
-rw-r--r--world/map/npc/items/mirror.txt22
-rw-r--r--world/map/npc/scripts.conf2
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