// TMW2/LoF scripts.
// Authors:
// TMW-LoF Team
// Jesusalva
// Description:
// Part from a bigger, very important quest for learning about the MOUBOOTAUR.
// Interacts with Sagratha (for uncursing).
//
// Quest Structure:
// HurnscaldQuest_InjuriedMouboo - STATUS - HPBAR
// Quest Status:
// 0 - First Met
// 1 - Examined (HP Bar stored on field 2)
// 2 - Healed (Curse not solved - ready for Sagratha Quest)
// 3 - Curse removed (Sagratha's Arc)
// 9 - KILLED YOUR MOUBOO. YOU EVIL MONSTER.
014-2,144,80,0 script Mouboo#0142injuried NPC_INJURIED_MOUBOO,{
.@q=getq(HurnscaldQuest_InjuriedMouboo);
if (.@q < 2) goto L_Begin;
if (.@q == 2) goto L_Healed;
if (.@q == 3) goto L_Uncursed;
if (.@q == 9) goto L_Killed;
goodbye;
end;
// Main Quest
L_Begin:
.@q=getq(HurnscaldQuest_InjuriedMouboo);
.@q2=getq2(HurnscaldQuest_InjuriedMouboo);
mesn l("Injured Mouboo");
mesq l("Booo....");
mesc l("The Mouboo seems to be lying in pain.");
next;
select
rif(.@q == 1, l("Attempt to heal the Mouboo")),
rif(.@q == 1, l("Attempt to kill the Mouboo")),
l("Examine the Mouboo"),
l("Leave the Mouboo alone");
mes "";
switch (@menu) {
case 3:
mesc l("The Mouboo is lying down on the grass.");
mesc l("There doesn't seem to be any physical wound.");
mesc l("A closer inspection suggests this mouboo has been... CURSED.");
if (.@q == 0)
setq HurnscaldQuest_InjuriedMouboo, 1, 100;
next;
goto L_Begin;
case 1:
mes "##B" + l("Drag and drop a healing item from your inventory.") + "##b";
.@id = requestitem();
// If ID is invalid, there's not enough items, it is bound = Cannot bury
if (.@id < 1) close;
if (.@id < 1 || countitem(.@id) < 1 || checkbound(.@id) || getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING) {
if (checkbound(.@id))
mesc l("You cannot part with this item!");
else if (.@id == MoubooFigurine)
mesc l("Haha, this wooden figurine won't do the job, sorry.");
else if (.@id == PlushMouboo)
mesc l("This seems like a good idea at first, but actually, it isn't.");
else if (.@id == MoubooPendant)
mesc l("Wise choice! But can you really part with it? Better think on something else!");
else if (.@id == MoubooHat || .@id == AlphaMoubooHat)
mesc l("...I don't think giving it this hat will really help...");
else if (.@id == DeathPotion || .@id == NymphPoison)
mesc l("...Are you crazy?");
else if (getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING)
mesc l("This is not a healing item.");
else
mesc l("You give up.");
close;
}
// Bad healing items
if (.@id == MoubooSteak) {
mesc l("Uhm, this seems like a bad idea.");
close;
} else if (.@id == DeathPenalty) {
mesc l("Uhm, that's an... @@. Do you... want to grow a tree on the mouboo or something? Can't you think on something else?", getitemlink(DeathPenalty));
close;
} else if (.@id == BottleOfSewerWater) {
mesc l("Uhm... I thought you were trying to heal the mouboo. Why are you giving it poisonous stuff?!");
close;
} else if (.@id == Coffee) {
mesc l("Uhm, I better heal it first before trying to do anything about the curse.");
close;
}
mesc l("Really give your @@ to the Mouboo?", getitemlink(.@id)), 1;
mesc l("The item will be lost forever.");
next;
if (askyesno() == ASK_YES) {
delitem .@id, 1;
itemeffect(.@id); // As a bonus, you'll be healed too, because I need to retrieve @max value
// You need about 9.000 HP-worth healing items, and you can't use Mouboo Steak
@val1*=rand2(3,5); // Average delay (FIXME: Is @val1 available?)
@val1=max(10, @val1); // Hack
if (.@id == ElixirOfLife)
setq2 HurnscaldQuest_InjuriedMouboo, 9999;
else
setq2 HurnscaldQuest_InjuriedMouboo, .@q2+((@val1)/10);
// Get rid of temporary variables, if it haven't happened yet
@min = 0;
@max = 0;
@val1 = 0;
.@q2=getq2(HurnscaldQuest_InjuriedMouboo);
if (.@q2 > 1000) {
mesc l("This will be remembered."), 6;
setq HurnscaldQuest_InjuriedMouboo, 2;
getexp 800, 0;
close;
}
// Progress Report
if (.@q2 > 900) {
mesc l("The mouboo seems to want to thank you, but is still too weak. Let's finish this healing.");
}
else if (.@q2 > 700) {
mesc l("The mouboo looks a bit more healthy. A little more should do.");
}
else if (.@q2 > 400) {
mesc l("The mouboo looks a bit less sickly. But this is not enough.");
}
else if (.@q2 > 100) {
mesc l("The mouboo still looks terrible, but you can see a small difference.");
}
else {
// Mouboo begins at 100 HP, so this should never happen
mesc l("Barely any difference, maybe I should use better healing items on it.");
}
}
break;
case 2:
.@id = getequipid(EQI_HAND_R);
// If ID is invalid, there's not enough items, it is bound = Cannot bury
if (.@id < 1) {
mesc l("You are not using a weapon for a merciful last blow.");
close;
}
mesc l("Really attack the Mouboo with a(n) @@?", getitemlink(.@id)), 1;
mesc l("There will be consequences.");
next;
if (askyesno() == ASK_YES) {
.@atk=getiteminfo(.@id, ITEMINFO_ATK);
mesn l("Injured Mouboo");
if (.@q2 < 20)
mesq l("Re-ref... Reflect.");
else
mesq l("Ma... Magical Re... Re-ref... Reflection.");
setq2 HurnscaldQuest_InjuriedMouboo, .@q2-(.@atk/5);
.@q2=getq2(HurnscaldQuest_InjuriedMouboo);
if (.@q2 <= 0) {
mes l("The... Mou... Boo... Taur...");
mes l("Is... Dan... Ger... Ous...");
mes l("...Help... Me...");
setq HurnscaldQuest_InjuriedMouboo, 9;
getexp 800, 0;
next;
mesc l("This will be remembered."), 6;
heal -.@atk, -(.@atk/10);
close;
}
heal -.@atk, -(.@atk/10);
next;
}
break;
default:
close;
}
mes "";
goto L_Begin;
// Sagratha Arc
L_Healed:
.@q=getq(HurnscaldQuest_InjuriedMouboo);
.@q2=getq2(HurnscaldQuest_InjuriedMouboo);
mesn l("Injuried Mouboo");
mesq l("Zzzzzz....");
mesc l("The mouboo is sleeping soundly. The curse is still there.");
if (countitem(Coffee)) {
next;
mesc l("Give a @@ to the Mouboo?", getitemlink(Coffee));
next;
if (askyesno() == ASK_YES) {
mesn l("Injured Mouboo");
mesc l("*screams*");
mes "";
mesc l("The Mouboo doesn't want to drink the Coffee. Try to force it to drink anyway?");
next;
if (askyesno() == ASK_YES) {
delitem Coffee, 1;
mesc l("There's no change in the condition of the poor Mouboo.");
next;
mesc l("Maybe the Hurnscald alchemist, Wyara, could explain why.");
} else {
mesc l("Coffee is good, why does the Mouboo refuse to drink it?");
mesc l("Maybe someone in Hurnscald can help me.");
}
}
}
close;
// Final Results
L_Uncursed:
mesn;
mesq l("Hello, @@. Thanks for helping me.", strcharinfo(0));
next;
mesn;
mesq l("Don't challenge the Moubootaur. You saw what happened to me.");
close;
L_Killed:
mesc l("Did this Mouboo just blink? No, I made sure it was truly dead. Must have been my imagination.");
close;
OnInit:
.sex=G_OTHER;
.distance=2;
end;
}