From e7ceef253528458c30abed263f5980835426a92f Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Thu, 11 Apr 2019 21:46:42 +0000 Subject: Wyara the witch/dark druid/Apothecary - status reset implemented. Plushroom potion? What's this? --- npc/008-2-7/wyara.txt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 3 deletions(-) (limited to 'npc') diff --git a/npc/008-2-7/wyara.txt b/npc/008-2-7/wyara.txt index a875544a..502a5409 100644 --- a/npc/008-2-7/wyara.txt +++ b/npc/008-2-7/wyara.txt @@ -3,16 +3,79 @@ // Micksha // Description: // Wyara the witch. -// THIS IS A PLACEHOLDER! +// TODO: Buy or make plushroom potions +// TODO: Should she ask for a money comission when resetting status? 008-2-7,27,28,0 script Wyara#008-2-7 NPC_DARK_DRUID,{ + function confirmStatusReset; + function doStatusReset; speech l("What? Is there someone?"), l("Please, leave me alone. I have to pixel potions."), - lg("I will sell some when you return a bit later."); - + lg("I will sell some when you return a bit later."), + l("Unless you are interested in a status reset?"); + next; + do + { + select + l("I'm fine, thanks."), + l("I actually could use a status reset!"); + switch (@menu) { + case 2: + @plush_count = lognbaselvl(1, 10); + @plush_count = @plush_count*12/10; + if (confirmStatusReset()) + doStatusReset(); + break; + } + } while (@menu != 1); + // Note: There is some dark magic here, because confirmStatusReset() overrides @menu. close; +function confirmStatusReset { + mesn; + mesq l("Let me just have a quick look at you. Hm... I will need @@ @@s to reset your stats.", @plush_count, getitemlink(Plushroom)); + next; + mesn; + mesq l("Also, status point reset can't be undone. Do you really want this?"); + next; + if (askyesno() == ASK_YES) + { + if (countitem(Plushroom) >= @plush_count) + return 1; + mesn; + mesq l("Alright, but... You only have @@ @@, and I need @@ to do the status reset for you!", countitem(Plushroom), getitemlink(Plushroom), @plush_count); + } + return 0; +} + +function doStatusReset { + delitem Plushroom, @plush_count; + + .@wasSP = StatusPoint; + resetstatus; + + // Everything was done before dialog in case of forced disconnection + speech S_FIRST_BLANK_LINE | S_LAST_NEXT, + l("Thank you."), + l("Now stand still... It should not take much time..."); + if (StatusPoint == .@wasSP) + { + speech + l("It seems that you have no status points to reset!"), + l("I'll return the plushroom to you, but please, do not waste my time."); + getitem Plushroom, @plush_count; + } + else + { + speech + l("Let's see... @@ of your status points have just been reset!", StatusPoint - .@wasSP), + l("Spend it wisely this time."), + lg("But you are welcome to reset your stats again if you bring me some more plushrooms!"); + } + return; +} + OnInit: .sex = G_FEMALE; .distance = 2; -- cgit v1.2.3-70-g09d2