// TMW2/LOF Script. // Author: // Jesusalva // Description: // Well connected to Terranite Cave. This is the water Nivalis townsfolk uses. 019-1,110,101,0 script Well#Nivalis NPC_NO_SPRITE,{ // Begin here .@q=getq(NivalisQuest_Well); mesn l("The Self-Serving Ice Well!"); mesc l("Hello, my name is Mahid, and this well belongs to me!"); mesc l("You are allowed to fill your bottles, but BE SURE TO PAY!"); mesc l("Otherwise, ##BYOU'LL DIE.##b Have a nice day!"); next; if (.@q == 1) { mesn l("???"); mesq l("Hey, is somebody over there?"); mes ""; } menu l("Fill Water Bottles"), L_Bottle, rif(.@q == 2, l("Jump inside!")), L_Reckless, rif(.@q == 1, l("Steal bucket!")), L_Bucket, rif(.@q != 1, l("Throw something inside!")), L_Throw, l("Leave."), -; close; // Jump to Terranite Cave (requires 55 vitality minimum) L_Reckless: closedialog; warp "015-6", 363, 109; dispbottom l("Ouch! That was kinda reckless!"); percentheal -150+readparam2(bVit), 0; close; // Easter Egg L_Bucket: mes ""; percentheal -rand(10,20), 0; mesn strcharinfo(0); mesq l("Ouch, the bucket BITE me!"); close; // Main Quest L_Throw: mes "##B" + l("Drag and drop an item from your inventory.") + "##b"; .@id = requestitem(); // If ID is invalid, there's not enough items, it is bound = Cannot bury if (.@id < 1) { mesc l("You give up."); close; } if (countitem(.@id) < 1 || checkbound(.@id) || !getiteminfo(.@id, ITEMINFO_MAXCHANCE)) { if (checkbound(.@id)) mesc l("You cannot drop this item!"); else if (!getiteminfo(.@id, ITEMINFO_MAXCHANCE)) mesc l("This item is too precious, you cannot part with it!"); else mesc l("You give up."); close; } // Delete item and spawn it at Terranite Cave (an Angry Yellow Slime might steal it) delitem .@id, 1; makeitem .@id, 1, "015-6", any(362,363), any(110, 112, 114); // Now we check if quest must start if (!.@q) goto L_Quest; // If not, report if it is safe to jump if (readparam2(bVit) < 55) mesc l("The item impact suggests you don't have enough vitality to jump inside."), 1; else if (readparam2(bVit) < 75) mesc l("The item impact suggests jumping inside will leave you badly wounded."); else mesc l("The item impact suggests jumping inside should be safe if you have enough life."); close; // Quest Node L_Quest: mesn l("???"); if (getiteminfo(.@id, ITEMINFO_WEIGHT) > 1000) mesq l("Ouch! That's heavy!"); else if (getiteminfo(.@id, ITEMINFO_SELLPRICE) < 10) mesq l("What cheap crap is this? It's not worth even 10 GP."); else if (getiteminfo(.@id, ITEMINFO_TYPE) == IT_HEALING) mesq l("Mhm, this looks healthy."); else if (getiteminfo(.@id, ITEMINFO_TYPE) == IT_AMMO) mesq l("Ammo? I prefer power gloves! That is useless for me!"); else mesq l("Who is throwing stuff at me?!"); next; select l("Who are you?"), l("How did you get down there?"), l("Do you need help?"), menuaction(l("Leave.")); mes ""; mesn; switch (@menu) { case 1: mesq l("I'll talk about who I am after leaving the well."); break; case 2: mesq l("I don't remember. I guess somebody threw me here!"); break; case 3: mesq l("I certainly can't get out on my own."); break; default: mesq l("..Anyone there?"); close; break; } next; do { select l("I'll call someone to aid you."), l("Is it too deep?"), l("Couldn't you climb the rope?"), menuaction(l("Leave.")); mes ""; mesn; switch (@menu) { case 1: mesq l("Please do, my friend."); setq NivalisQuest_Well, 1; break; case 2: mesq l("It's over a hundred meters in depth. There is some land here, but I'm afraid of Terranite."); break; case 3: mesq l("I'm not crazy, the bucket is vicious and the rope won't withstand my weight."); break; default: mesq l("..Anyone there?"); close; break; } } while (@menu != 1); close; // Fill a water bottle L_Bottle: mes ""; mesc l("Cost: @@ gp per bottle.", .price); input .@count; if (!.@count) close; .@gp = .@count * .price; if (Zeny < .@gp) { mesc l("Not enough money."); close; } if (countitem(EmptyBottle) < .@count) { mesc l("Not enough bottles."); close; } inventoryplace IcedBottle, .@count, BottleOfWoodlandWater, .@count; delitem EmptyBottle, .@count; // Calculate how many iced bottles you'll get .@iced=0; for (.@i=0; .@i < .@count; .@i++) { if (rand2(500) < 33) .@iced++; } // Apply the results and have a happy day! Zeny-=.@gp; if (.@iced) getitem IcedBottle, .@iced; getitem BottleOfWoodlandWater, .@count-.@iced; close; OnInit: .sex = G_OTHER; .distance = 3; .price=60; end; }