summaryrefslogtreecommitdiff
path: root/world/map/npc/functions
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/functions')
-rw-r--r--world/map/npc/functions/barber.txt20
-rw-r--r--world/map/npc/functions/clear_vars.txt4
-rw-r--r--world/map/npc/functions/headstyles.txt55
3 files changed, 45 insertions, 34 deletions
diff --git a/world/map/npc/functions/barber.txt b/world/map/npc/functions/barber.txt
index 0f9b4ffb..58fee175 100644
--- a/world/map/npc/functions/barber.txt
+++ b/world/map/npc/functions/barber.txt
@@ -19,9 +19,11 @@ L_Main:
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 < 120)
+ if (@style >= 1 && @style <= 20)
+ set @style$, @HairStyles$[(@style - 1)];
+ if (Class > 1)
+ set @color, (@color - (15 * Class));
+ if (@color >= 0 && @color <= 15)
set @color$, @HairColors$[@color];
if (@color == 127)
set @color$, "Shocked White";
@@ -66,15 +68,15 @@ L_Style:
@HairStyles$[25], L_MenuItems;
L_MenuItems:
- if (@menu - 1 == @style)
+ if (@menu == @style)
goto L_SameStyle;
if(@menu == (getarraysize(@HairStyles$) - 1)) goto L_RandomStyle;
if(@menu == getarraysize(@HairStyles$)) goto L_Done;
- setlook LOOK_HAIR_STYLE, @menu - 1;
+ setlook LOOK_HAIR_STYLE, @menu;
goto L_Main;
L_RandomStyle:
- set @randomStyle, rand(0, (getarraysize(@HairStyles$) -4));
+ set @randomStyle, rand(1, (getarraysize(@HairStyles$) -4));
if(@randomStyle == @style) goto L_RandomStyle;
setlook LOOK_HAIR_STYLE, @randomStyle;
menu
@@ -87,7 +89,7 @@ L_SameStyle:
goto L_Main;
L_Color:
- if(@style == Class) goto L_SameColor; // first headstyle of any class is bald
+ if(@style == @BaldStyle) goto L_SameColor; // last headstyle of any class is bald
if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Surprise me";
if(!@colorOpts) set @HairColors$[getarraysize(@HairColors$)], "Nah, I'm fine";
if(!@colorOpts) set @colorOpts, 1;
@@ -115,11 +117,11 @@ L_MenuItems1:
goto L_SameColor;
if(@menu == (getarraysize(@HairColors$) - 1)) goto L_RandomColor;
if(@menu == getarraysize(@HairColors$)) goto L_Done;
- setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * Class));
+ setlook LOOK_HAIR_COLOR, ((@menu - 1) + (15 * (Class - 1)));
goto L_Main;
L_RandomColor:
- set @randomColor, rand((15 * Class), ((getarraysize(@HairColors$) -4) + (15 * Class)));
+ set @randomColor, rand((15 * (Class - 1)), ((getarraysize(@HairColors$) -4) + (15 * (Class - 1))));
if(@randomColor == @color) goto L_RandomColor;
setlook LOOK_HAIR_COLOR, @randomColor;
menu
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
index 0a0247b7..588c22d5 100644
--- a/world/map/npc/functions/clear_vars.txt
+++ b/world/map/npc/functions/clear_vars.txt
@@ -251,6 +251,10 @@ L_Fix_Skills:
if(getskilllv(SKILL_TRADE) > 0) setskill SKILL_TRADE, 0;
if(getskilllv(SKILL_PARTY) > 0) setskill SKILL_PARTY, 0;
if(getskilllv(SKILL_EMOTE) > 0) setskill SKILL_EMOTE, 0;
+ goto L_Barber_Janitor;
+
+L_Barber_Janitor:
+ callfunc "getHeadStyles"; // this converts class, color and hair
goto L_Return;
L_Return:
diff --git a/world/map/npc/functions/headstyles.txt b/world/map/npc/functions/headstyles.txt
index 989bef83..4648ede4 100644
--- a/world/map/npc/functions/headstyles.txt
+++ b/world/map/npc/functions/headstyles.txt
@@ -5,37 +5,42 @@ function|script|getHeadStyles|,
{
set @HairStyles$, 0;
set @HairColors$, 0;
- set @BaseClass, 0; // this is the default class
+ set @BaseClass, 1; // this is the default class
cleararray @HairStyles$, "", getarraysize(@HairStyles$);
cleararray @HairColors$, "", getarraysize(@HairColors$);
cleararray @ValidClasses, "", getarraysize(@ValidClasses);
- setarray @ValidClasses, 0; // add new classes here
+ setarray @ValidClasses, 1; // add new classes here
set @loop, 0;
goto L_LoopValid;
- L_LoopValid:
- if(@ValidClasses[@loop] == Class) goto L_ValidClass;
- set @loop, (@loop + 1);
- if(@loop >= getarraysize(@ValidClasses)) goto L_FixClass;
- goto L_LoopValid;
+L_Janitor:
+ set @BaldStyle, getarraysize(@HairStyles$); // we set it as a variable because we use it with the barber
+ if(getlook(LOOK_HAIR_STYLE) < 1) setlook LOOK_HAIR_STYLE, @BaldStyle; // the last head of any race has no hair/fins/whatever
+ return;
- L_FixClass:
- set Class, @BaseClass;
- goto L_ValidClass;
+L_LoopValid: // here we fix non-existant classes
+ if(@ValidClasses[@loop] == Class) goto L_ValidClass;
+ set @loop, (@loop + 1);
+ if(@loop >= getarraysize(@ValidClasses)) goto L_FixClass;
+ goto L_LoopValid;
+
+L_FixClass:
+ set Class, @BaseClass;
+ goto L_ValidClass;
- L_ValidClass:
- 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 == 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)";
- // adding a new species is as simple as adding another if(Class == X) and adding the class to @ValidClasses
- return;
+L_ValidClass:
+ if(Class == 1)
+ setarray @HairStyles$, // TALPONIAN (human)
+ "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", "Bald";
+ if(Class == 1)
+ 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)";
+ // adding a new species is as simple as adding another if(Class == X) and adding the class to @ValidClasses
+ goto L_Janitor;
}