// Evol scripts. // Authors: // omatt // Reid // Travolta // Jesusalva // Description: // Function for supporting barber NPC. // BarberSayStyle({what}) // what: 1 = Style; 2 = Color; 3 = Style + Color in dialog function script BarberSayStyle { .@get_color = getlook(LOOK_HAIR_COLOR); .@get_look = getlook(LOOK_HAIR); .@style_name$ = $@hairstyle$[.@get_look]; .@color_name$ = $@haircolor$[.@get_color]; switch (getarg(0, 3)) { case 1: message strcharinfo(0), l("%s", .@style_name$); break; case 2: message strcharinfo(0), l("%s", .@color_name$); break; case 3: speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("Your hairstyle is @@ and its color is @@.", .@style_name$, .@color_name$); break; } return; } function script BarberChangeStyle { do { .@hairsizearray = getarraysize($@hairstyle$); .@get_look = getlook(LOOK_HAIR); // Here .@i starts from 1 because hairstyle 0 doesn't exist. for (.@i = 1; .@i < .@hairsizearray; .@i++) { .@menustr$ = .@menustr$ + rif(.@get_look != .@i, l("" + $@hairstyle$[.@i] + "")) + ":"; } .@menustr$ = .@menustr$ + l("I'm fine for now, thank you."); .@idx = select(l("As you want!"),.@menustr$); if (.@idx == .@i + 1) return; // last choice to quit dialog switch (@menu) { case 1: do { // here "- 1" because i don't use the 0 of array .@rand_hair = rand(1,(.@hairsizearray - 1)); } while (.@rand_hair == getlook(LOOK_HAIR)); setlook LOOK_HAIR, .@rand_hair; setlook LOOK_HAIR_COLOR, getlook(LOOK_HAIR_COLOR); BarberSayStyle(1); break; default: // and here "- 1" because the first choice is taken by the random setlook LOOK_HAIR, (@menu - 1); setlook LOOK_HAIR_COLOR, getlook(LOOK_HAIR_COLOR); break; } .@menustr$ = ""; } while (1); } function script BarberChangeColor { do { .@get_look = getlook(LOOK_HAIR_COLOR); .@hairsizearray = getarraysize($@haircolor$); for (.@i = 0; .@i < .@hairsizearray; .@i++) { .@menustr$ = .@menustr$ + rif(.@get_look != .@i && .@i != HC_PURPLE, l("" + $@haircolor$[.@i] + "")) + ":"; } .@menustr$ = l("Surprise me!") + ":" + .@menustr$ + l("I'm fine for now, thank you."); .@idx = select(.@menustr$); if (.@idx == .@i + 2) return; switch (@menu) { case 1: do { .@rand_color = rand(0, .@hairsizearray); } while (.@rand_color == getlook(LOOK_HAIR_COLOR)); setlook LOOK_HAIR_COLOR, .@rand_color; BarberSayStyle(2); break; default: setlook LOOK_HAIR_COLOR, (@menu - 2); break; } .@menustr$ = ""; } while (1); return; } // 3 = Abs (Real value is 1) // 2 = Boobs (Real value is 0) // 1 = Shirt (Real value is 3) function script BarberChangeBodyType { mesn l("Note"); mes b(l("Changing your body type will send you back to the character selection screen.")); next(); mes l("Please select the desired body type:"); menuint( rif(BodyType == BODYTYPE_3, "► ") + l("Body type %s", "A"), BODYTYPE_3, rif(BodyType == BODYTYPE_2, "► ") + l("Body type %s", "B"), BODYTYPE_2, rif(BodyType == BODYTYPE_1, "► ") + l("Body type %s", "C"), BODYTYPE_1); if (BodyType == @menuret) { return; // don't kick to char selection when not needed } // FIXME: when manaplus supports seamless changing for evol2, use a simple return; closedialog(); close2(); BodyType = @menuret; close; } function script BarberChangeRace { mes l("What's your race?"); mesc l("WARNING: Changing race may have side effects."); menuint l("Talpan"), Talpan, l("Tritan"), Tritan, l("Ifriton"), Ifriton, rif(is_dev(), l("Gispaan")), Gispaan, rif(is_dev(), l("Sparron")), Sparron, rif(countitem(SkeletonCharm), l("Undead")), Skellie; mes ""; // Not needed if (Class == @menuret) return; // Change race and we're done //Class = @menuret; jobchange(@menuret); // STUPID idea, but imposed by Hercules return; } // Jack of all trades // Barber({intro=True}) function script Barber { if (getarg(0, true)) { mesn; mesq l("Hello."); next; } mesq l("What would you like me to do?"); next; do { select l("What is my current hairstyle and hair color?"), l("I'd like to get a different style."), l("Can you do something with my color?"), l("How about changing my body type?"), rif(BaseLevel > 70, l("I would like to change my species.")), l("I'm fine for now, thank you."); switch (@menu) { case 1: BarberSayStyle(); break; case 2: BarberChangeStyle(); speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("Enjoy your new style."), l("Anything else?"); break; case 3: BarberChangeColor(); speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("I hope you like this color."), l("Anything else?"); break; case 4: BarberChangeBodyType(); speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("You look fantastic."), l("Anything else?"); break; case 5: BarberChangeRace(); speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("This service is provided with no warranties on regards of side effects."), l("Anything else?"); break; break; case 6: speech S_FIRST_BLANK_LINE | S_LAST_NEXT, l("Feel free to come visit me another time."); goodbye; return; } } while (true); return; }