266 lines
10 KiB
JavaScript
266 lines
10 KiB
JavaScript
var status = 0;
|
||
var service = -1; // 0 = hairstyle change, 1 = hair color change
|
||
var hairPrice = 1000000;
|
||
var hairColorPrice = 50000;
|
||
|
||
/* ── HAIRSTYLE ───────────────────────────────────────────────── */
|
||
var selectedCategory = -1;
|
||
var hairnew = Array();
|
||
|
||
/*
|
||
HAIR CATEGORIES
|
||
Classic I (30xxx): original male hairs — 91 hairs
|
||
Classic II (31xxx): original female hairs — 92 hairs
|
||
Royal I (32xxx): mid-era hairs — 27 hairs
|
||
Royal II (33xxx): mid-era hairs — 76 hairs
|
||
Royal III (34xxx): mid-era hairs — 86 hairs
|
||
Modern I (36xxx / 37xxx): newer hairs — 126 hairs
|
||
Modern II (38xxx / 39xxx): newer hairs — 91 hairs
|
||
Modern III (40xxx / 41xxx / 42xxx): newest hairs — 91 hairs
|
||
|
||
Only base (black) IDs are stored here (units digit = 0).
|
||
Each hair has 8 color variants (units digit 0–7).
|
||
*/
|
||
|
||
var classic1Hairs = Array(
|
||
30000, 30020, 30030, 30040, 30050, 30060, 30100, 30110,
|
||
30120, 30130, 30140, 30150, 30160, 30170, 30180, 30190,
|
||
30200, 30210, 30220, 30230, 30240, 30250, 30260, 30270,
|
||
30280, 30290, 30300, 30310, 30320, 30330, 30340, 30350,
|
||
30360, 30370, 30380, 30400, 30410, 30420, 30430, 30440,
|
||
30450, 30460, 30470, 30480, 30490, 30510, 30520, 30530,
|
||
30540, 30550, 30560, 30570, 30580, 30590, 30600, 30610,
|
||
30620, 30630, 30640, 30650, 30660, 30670, 30680, 30690,
|
||
30700, 30710, 30720, 30730, 30740, 30750, 30760, 30770,
|
||
30780, 30790, 30800, 30810, 30820, 30830, 30840, 30850,
|
||
30860, 30870, 30880, 30890, 30900, 30910, 30920, 30930,
|
||
30940, 30950, 30990
|
||
);
|
||
|
||
var classic2Hairs = Array(
|
||
31000, 31010, 31020, 31030, 31040, 31050, 31060, 31070,
|
||
31080, 31090, 31100, 31110, 31120, 31130, 31140, 31150,
|
||
31160, 31170, 31180, 31190, 31200, 31210, 31220, 31230,
|
||
31240, 31250, 31260, 31270, 31280, 31290, 31300, 31310,
|
||
31320, 31330, 31340, 31350, 31360, 31400, 31410, 31420,
|
||
31430, 31440, 31450, 31460, 31470, 31480, 31490, 31510,
|
||
31520, 31530, 31540, 31550, 31560, 31570, 31580, 31590,
|
||
31600, 31610, 31620, 31630, 31640, 31650, 31660, 31670,
|
||
31680, 31690, 31700, 31710, 31720, 31730, 31740, 31750,
|
||
31760, 31770, 31780, 31790, 31800, 31810, 31820, 31830,
|
||
31840, 31850, 31860, 31870, 31880, 31890, 31910, 31920,
|
||
31930, 31940, 31950, 31990
|
||
);
|
||
|
||
var royal1Hairs = Array(
|
||
32050, 32160, 32310, 32320, 32330, 32340, 32350,
|
||
32360, 32370, 32380, 32390, 32400, 32410, 32420, 32430,
|
||
32440, 32450, 32460, 32470, 32480, 32490, 32500, 32520,
|
||
32530, 32540, 32550
|
||
);
|
||
|
||
var royal2Hairs = Array(
|
||
33000, 33030, 33040, 33050, 33060, 33070, 33080, 33090,
|
||
33100, 33110, 33120, 33130, 33150, 33160, 33170, 33180,
|
||
33190, 33210, 33220, 33240, 33250, 33260, 33270, 33280,
|
||
33290, 33310, 33330, 33350, 33360, 33370, 33380, 33390,
|
||
33400, 33410, 33430, 33440, 33450, 33460, 33470, 33480,
|
||
33500, 33510, 33520, 33530, 33540, 33550, 33580, 33590,
|
||
33600, 33610, 33620, 33630, 33640, 33660, 33670, 33680,
|
||
33690, 33700, 33710, 33720, 33730, 33740, 33750, 33760,
|
||
33770, 33780, 33790, 33800, 33810, 33820, 33830, 33930,
|
||
33940, 33950, 33960, 33990
|
||
);
|
||
|
||
var royal3Hairs = Array(
|
||
34000, 34010, 34020, 34030, 34040, 34050, 34060, 34070,
|
||
34080, 34090, 34100, 34110, 34120, 34130, 34140, 34150,
|
||
34160, 34170, 34180, 34190, 34210, 34220, 34230, 34240,
|
||
34250, 34260, 34270, 34310, 34320, 34330, 34340, 34350,
|
||
34360, 34370, 34380, 34400, 34410, 34420, 34430, 34440,
|
||
34450, 34470, 34480, 34490, 34510, 34540, 34560, 34580,
|
||
34590, 34600, 34610, 34620, 34630, 34640, 34650, 34660,
|
||
34670, 34680, 34690, 34700, 34710, 34720, 34730, 34740,
|
||
34750, 34760, 34770, 34780, 34790, 34800, 34810, 34820,
|
||
34830, 34840, 34850, 34860, 34870, 34880, 34890, 34900,
|
||
34910, 34940, 34950, 34960, 34970, 34980
|
||
);
|
||
|
||
var modern1Hairs = Array(
|
||
36010, 36020, 36030, 36040, 36050, 36060, 36070, 36080,
|
||
36090, 36100, 36110, 36130, 36140, 36150, 36160, 36170,
|
||
36180, 36190, 36200, 36210, 36220, 36230, 36240, 36250,
|
||
36260, 36270, 36280, 36330, 36340, 36350, 36380, 36390,
|
||
36400, 36410, 36420, 36460, 36470, 36480, 36490, 36500,
|
||
36510, 36520, 36530, 36600, 36610, 37000, 37010, 37020,
|
||
37030, 37040, 37060, 37070, 37080, 37090, 37100, 37110,
|
||
37120, 37130, 37140, 37150, 37160, 37170, 37200, 37210,
|
||
37220, 37230, 37240, 37250, 37260, 37270, 37300, 37310,
|
||
37320, 37330, 37340, 37350, 37370, 37380, 37400, 37450,
|
||
37460, 37470, 37490, 37500, 37510, 37520, 37530, 37590,
|
||
37600, 37610, 37620, 37630, 37640, 37650, 37660, 37670,
|
||
37680, 37690, 37700, 37710, 37720, 37730, 37740, 37750,
|
||
37760, 37770, 37780, 37790, 37800, 37810, 37820, 37830,
|
||
37840, 37850, 37860, 37880, 37900, 37910, 37920, 37930,
|
||
37940, 37950, 37960, 37970, 37980, 37990
|
||
);
|
||
|
||
var modern2Hairs = Array(
|
||
38000, 38010, 38020, 38030, 38040, 38050, 38060, 38070,
|
||
38080, 38090, 38100, 38110, 38120, 38130, 38140, 38150,
|
||
38160, 38180, 38240, 38250, 38260, 38270, 38280, 38290,
|
||
38300, 38310, 38320, 38330, 38350, 38390, 38400, 38410,
|
||
38420, 38430, 38440, 38450, 38460, 38470, 38480, 38490,
|
||
38500, 38510, 38520, 38540, 38560, 38570, 38580, 38590,
|
||
38600, 38610, 38620, 38630, 38640, 38650, 38660, 38670,
|
||
38680, 38690, 38700, 38710, 38730, 38740, 38750, 38760,
|
||
38770, 38790, 38800, 38810, 38820, 38840, 38860, 38880,
|
||
38890, 38900, 38910, 38930, 38940, 39040, 39050, 39060,
|
||
39070, 39080, 39090, 39190, 39200, 39210, 39220, 39230,
|
||
39240, 39250, 39260
|
||
);
|
||
|
||
var modern3Hairs = Array(
|
||
40000, 40010, 40020, 40030, 40040, 40050, 40060, 40070,
|
||
40080, 40090, 40100, 40110, 40120, 40250, 40260, 40270,
|
||
40280, 40290, 40300, 40310, 40320, 40330, 40350, 40360,
|
||
40370, 40390, 40400, 40410, 40420, 40440, 40450, 40460,
|
||
40480, 40490, 40520, 40530, 40540, 40550, 40560, 41060,
|
||
41070, 41080, 41090, 41100, 41110, 41120, 41150, 41160,
|
||
41170, 41180, 41190, 41200, 41220, 41340, 41350, 41360,
|
||
41370, 41380, 41390, 41400, 41410, 41420, 41440, 41460,
|
||
41470, 41480, 41490, 41510, 41520, 41530, 41560, 41570,
|
||
41580, 41610, 41620, 41630, 41640, 41650, 41660, 41670,
|
||
41680, 41690, 41700, 41710, 42060, 42070, 42080, 42090,
|
||
42100, 42110, 42120
|
||
);
|
||
|
||
var hairCategories = [
|
||
classic1Hairs,
|
||
classic2Hairs,
|
||
royal1Hairs,
|
||
royal2Hairs,
|
||
royal3Hairs,
|
||
modern1Hairs,
|
||
modern2Hairs,
|
||
modern3Hairs
|
||
];
|
||
|
||
var categoryNames = [
|
||
"Classic I",
|
||
"Classic II",
|
||
"Royal I",
|
||
"Royal II",
|
||
"Royal III",
|
||
"Modern I",
|
||
"Modern II",
|
||
"Modern III"
|
||
];
|
||
|
||
/* ── HAIR COLOR ──────────────────────────────────────────────── */
|
||
var hairColors = Array();
|
||
|
||
// Returns the base (black) hair ID by zeroing the units digit.
|
||
// e.g. 37143 -> 37140, works for any hair ID range.
|
||
function getBaseHair() {
|
||
var hair = cm.getPlayer().getHair();
|
||
return Math.floor(hair / 10) * 10;
|
||
}
|
||
|
||
function buildHairColors() {
|
||
var base = getBaseHair();
|
||
hairColors = Array();
|
||
for (var i = 0; i < 8; i++) {
|
||
hairColors.push(base + i);
|
||
}
|
||
}
|
||
|
||
/* ── ENTRY POINT ─────────────────────────────────────────────── */
|
||
function start() {
|
||
status = -1;
|
||
action(1, 0, 0);
|
||
}
|
||
|
||
/* ── MAIN FLOW ───────────────────────────────────────────────── */
|
||
function action(mode, type, selection) {
|
||
|
||
if (mode < 1) {
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
|
||
status++;
|
||
|
||
/* ── STATUS 0: top-level menu ── */
|
||
if (status == 0) {
|
||
|
||
cm.sendSimple(
|
||
"Hello~ I'm Avery, Sweetgum's hair prince. " +
|
||
"What can I help you with today?\r\n\r\n" +
|
||
"#L0#New Hairstyle (#b" + hairPrice + " Mesos#k)#l\r\n" +
|
||
"#L1#Change Hair Color (#b" + hairColorPrice + " Mesos#k)#l"
|
||
);
|
||
|
||
/* ── STATUS 1: branch on chosen service ── */
|
||
} else if (status == 1) {
|
||
|
||
service = selection;
|
||
|
||
if (service == 0) {
|
||
// Hairstyle — show category menu
|
||
var text = "Select a hair category:\r\n\r\n";
|
||
for (var i = 0; i < categoryNames.length; i++) {
|
||
text += "#L" + i + "#" + categoryNames[i] + "#l\r\n";
|
||
}
|
||
cm.sendSimple(text);
|
||
|
||
} else if (service == 1) {
|
||
// Hair color — show the 8 color variants for the player's current hair
|
||
buildHairColors();
|
||
cm.sendStyle(
|
||
"Please choose the hair color you'd like~ (#b" + hairColorPrice + " Mesos#k)",
|
||
hairColors
|
||
);
|
||
}
|
||
|
||
/* ── STATUS 2 ── */
|
||
} else if (status == 2) {
|
||
|
||
if (service == 0) {
|
||
// Hairstyle — player picked a category, now show hair styles
|
||
selectedCategory = selection;
|
||
hairnew = Array();
|
||
var selectedArray = hairCategories[selectedCategory];
|
||
for (var i = 0; i < selectedArray.length; i++) {
|
||
hairnew.push(selectedArray[i]);
|
||
}
|
||
cm.sendStyle("Please choose the hairstyle you'd like~", hairnew);
|
||
|
||
} else if (service == 1) {
|
||
// Hair color — player picked a color, apply it
|
||
if (cm.getMeso() < hairColorPrice) {
|
||
cm.sendOk("You need " + hairColorPrice + " mesos to change your hair color.");
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
cm.gainMeso(-hairColorPrice);
|
||
cm.setHair(hairColors[selection]);
|
||
cm.sendOk("Enjoy your new hair color~");
|
||
cm.dispose();
|
||
}
|
||
|
||
/* ── STATUS 3: hairstyle only — player picked a style, apply it ── */
|
||
} else if (status == 3) {
|
||
|
||
if (cm.getMeso() < hairPrice) {
|
||
cm.sendOk("You need " + hairPrice + " mesos to receive a new hairstyle.");
|
||
cm.dispose();
|
||
return;
|
||
}
|
||
|
||
cm.gainMeso(-hairPrice);
|
||
cm.setHair(hairnew[selection]);
|
||
cm.sendOk("Enjoy your new and improved hairstyle! You will need to re-purchase your color after changing hairs~");
|
||
cm.dispose();
|
||
}
|
||
} |