// Evol scripts. // Authors: // omatt // Reid // Travolta // Jesusalva // Description: // Function for supporting barber NPC. 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)) { case 1: message strcharinfo(0), l("@@", .@style_name$); break; case 2: message strcharinfo(0), l("@@", .@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, 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; } function script BarberChangeBodyType { mesn("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_1, "► ") + l("Body type %i", 1), BODYTYPE_1, rif(BodyType == BODYTYPE_2, "► ") + l("Body type %i", 2), BODYTYPE_2, rif(BodyType == BODYTYPE_3, "► ") + l("Body type %i", 3), BODYTYPE_3); 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; } // THIS FUNCTION SHOULD BE USED ONLY AT REBIRTH // Unless current game development design changes! function script BarberChangeRace { mes l("What's your race?"); menuint get_race(GETRACE_FULL, KaizeiViro), KaizeiViro, get_race(GETRACE_FULL, ArgaesViro), ArgaesViro, get_race(GETRACE_FULL, TonoriViro), TonoriViro, get_race(GETRACE_FULL, CaveUkar), CaveUkar, get_race(GETRACE_FULL, MountainUkar), MountainUkar, get_race(GETRACE_FULL, SeaTritan), SeaTritan, get_race(GETRACE_FULL, LakeTritan), LakeTritan, rif(REBIRTH, get_race(GETRACE_FULL, LightRaijin)), LightRaijin, rif(REBIRTH, get_race(GETRACE_FULL, DarkRaijin)), DarkRaijin, rif(REBIRTH, get_race(GETRACE_FULL, FireKralog)), FireKralog, rif(REBIRTH, get_race(GETRACE_FULL, FrostKralog)), FrostKralog; mes ""; // Something went *terribly* wrong if (@menuret >= LightRaijin && !REBIRTH) { channelmes("#irc", "Illegal operation at BarberChangeRace, sysadmin help required."); consolemes(CONSOLEMES_ERROR, "Account %d tried to change race to %d but rebirth is not set. Race not changed.", getcharid(3), @menuret); return; } // Change race and we're done //Class = @menuret; jobchange(@menuret); // STUPID idea, but imposed by Hercules return; }