summaryrefslogblamecommitdiff
path: root/npc/015-3/pooh.txt
blob: fc14040353350bc17644e5f7493e2d1182ef39a8 (plain) (tree)
1
2
3
4
5
6
7
8
9

                
                           

               

                                                                    

                                          



                              

                                                                                       
                                                                               






                                                                                                                      
                                                                                                       



                                                                                                                                                  
                                                  
         
                   
                











































                                                                                                                                                                           

          








































































































                                                                                                                                                             
                                                          































                                                                                                                                                                                                        




                   
// TMW2 scripts.
// Author:
//    Diogo RBG from TMW-BR
//    Jesusalva
// Description:
//    This is a very cute bear, it'll definitely earn your sympathy.
//    Pooh (original) has became Public Domain in January 2022.

015-3,127,181,0	script	Pooh	NPC_POOH,{
    function poohNear;
    function poohFood;
    function poohSmell;
    inventoryplace BearHat, 1;
    .@q = getq(HurnscaldQuest_TeddyBear);
    mesc l("OMG so cute! This must be the cutest bear you ever seen your whole life.");
    // Minimum level not met (does it even make sense? It is within Pirate Map)
    if (BaseLevel < 39)
        close;
    mesc l("It seems to be concentrated on its small pot... So concentrated, it doesn't even realizes you're there.");
    mesc l("This is so amusing, you decide to stare for a while longer.");
    next;
    // Quest already finished
    if (.@q >= 3) {
        mesc l("It then looks at you with a pleasant smile, you definitely earned a new cute friend!");
        close;
    }
    mesc l("And then you notice the small teddy is opening and closing the lid of this pot repeated times, as if it were looking for something.");
    mesc l("You ask yourself: What is the teddy looking for? How can I help him?");
    compareandsetq HurnscaldQuest_TeddyBear, 0, 1;
    next;
    .@cont = false;
    // Main menu
    do
    {
        mesn strcharinfo(0);
        select
            l("Sing a song to brighten its mood."),
            l("Pet his wonderfully fluffy pelt."),
            l("Approach it softly."),
            l("Offer food to it."),
            l("Leave the poor thing in peace.");
        mes "";
        switch (@menu) {
        case 1:
            mesc l("You sing a pretty song to the teddy, and this makes it very happy.");
            mesc l("You know this, because their big round eyes were shining.");
            next;
            mesc l("However, this only distracts him for a short while. Soon after, he returns to his small ritual with the pot.");
            next;
            mesc l("Poor teddy, not even a pretty music can comfort him for long. What can we do now?");
            next;
            break;
        case 2:
            mesc l("With a big smile, you stretch your hand in the teddy's direction; But the little one gets scared with the movement and starts to move away from you.");
            next;
            mesc l("You give up after seeing its reaction, and try your best to resist the temptation of hugging this fluffy ball. Maybe we have another idea?");
            next;
            break;
        case 3:
            poohNear();
            next;
            break;
        case 4:
            poohFood();
            .@cont = true;
            break;
        case 5:
            mesc l("You leave the teddy alone with its pot.");
            .@cont = true;
            break;
        default:
            mesc "FIXME", 1;
            next;
            break;
        }
    } while (!.@cont);
    close;

function poohNear {
    mesc l("You take off your bag and put it on the floor, as you lower yourself and try to slowly get close to it.");
    next;
    mesc l("But the teddy, noticing your movement, starts getting farther from you. It doesn't seems scared, but it doesn't allows you to approach either.");
    next;
    if (countitem(Honey) || countitem(BeeStinger)) {
        poohSmell();
        return;
    }
    mesc l("Insisting will do us no good, maybe we should try to gain its trust first?");
    return;
}

function poohFood {
    mesc l("Maybe the teddy is hungry? What could we offer to it?");
    .@honey = false;
    do
    {
        mes "";
        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, etc;
        if (.@id < 1) return;
        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 == DeathPotion || .@id == NymphPoison) {
                mesc l("...Are you crazy?");
            } else if (.@id == MagicApple || .@id == MysteriousFruit) {
                mesc l("This is too precious to offer, I think.");
            } else if (getiteminfo(.@id, ITEMINFO_TYPE) != IT_HEALING) {
                mesc l("I'm not sure if that's edible. For teddies, at least.");
            } else {
                mesc l("You give up.");
                mesc l("Maybe it is not hungry, after all.");
                return;
            }
            next;
            continue;
        }

        // Bad healing items
        if (.@id == Beer ||
            .@id == RedPlushWine ||
            .@id == DwarvenSake ||
            .@id == CrazyRum ||
            .@id == WhiskeyAle) {
            mesc l("Offering alcohol to a teddy seems like a ugly thing to do. We should think on something else.");
            next;
            continue;
        } else if (.@id == ElixirOfLife) {
            mesc l("...I don't think the teddy is sick, so there's no point giving it an Elixir.");
            next;
            continue;
        } else if (.@id == BottleOfSewerWater) {
            mesc l("...I refuse to comment on this ridiculous idea.");
            next;
            continue;
        } else if (.@id == Honey) {
            .@honey = true;
            break;
        }

        mesc l("Really give your %s to the teddy?", getitemlink(.@id)), 1;
        mesc l("The item will be lost forever.");
        if (askyesno() == ASK_YES) {
            mes "";
            mesc l("The teddy stares at it but does not approach. Maybe it is not hungry, or it doesn't want the food you offered.");
            // Item is NOT deleted because it did not approach
            next;
        }
    } while (!.@honey);
    // You're offering HONEY! But we must check if you CAN do this
    if (getq(HurnscaldQuest_TeddyBear) < 2) {
        percentheal -2, 0;
        SC_Bonus(15, SC_POISON, 1);
        getmapxy(.@m$, .@x, .@y, 0);
        .@u = monster(.@m$, .@x, .@y, strmobinfo(1, Bee), Bee, 1);
        unitattack(.@u, getcharid(3));
        closeclientdialog;
        dispbottom l("Suddenly, a bee appears and attacks you out of NOWHERE!");
        end; // TERM
    }
    // You can, so we go ahead.
    mesc l("Our plushy friend knows what is really sweet on this life. It likes honey a great deal, and by the way it looks you, it probably wants more.");
    next;
    mesc l("It is... SO CUTE! You won't refuse honey to a teddy, will you?");
    mesc l("How much honey will you give it? (You have: %d)", countitem(Honey)), 3;
    input .@honey, 0, countitem(Honey);
    if (.@honey < 1) return;
    delitem Honey, .@honey;
    setq2 HurnscaldQuest_TeddyBear, getq2(HurnscaldQuest_TeddyBear) + .@honey;
    getexp 0, .@honey * 14;
    mesc l("The teddy quickly takes the honey and fills the pot. It is really hungry!");
    if (getq2(HurnscaldQuest_TeddyBear) >= 27) {
        mesc l("...And at long last, the teddy's pot is full of honey.");
        mesc l("It seems happy, but it quickly goes to a dark honey after finishing.");
        next;
        mesc l("When it returns, it is holding a cute %s. Understanding it is a gift, you take it.", getitemlink(BearHat));
        mesc l("Doesn't it feel good to help?");
        getitem BearHat, 1;
        setq HurnscaldQuest_TeddyBear, 3;
        // Half of needed exp, but treasure map may require more level
        getexp 15750, 9200; // Job Exp: Lv 28 as reference
    }
    return;
}

function poohSmell {
    mesc l("But the teddy unexpectedly starts moving towards your bag, possibly attracted by some smell. You give up on approaching it, and starts watching it.");
    next;
    if (@stingpooh) {
        mesc l("However, it stops abruptly and quickly moves away from it.");
        mesc l("I guess it still remembers the sting on the snout. Ouch!");
        return;
    }
    mesc l("Without any ceremony or further ado, the teddy starts poking on your things.");
    next;
    if (countitem(BeeStinger)) {
        mesc l("However, it comes back crying! Poor teddy, it got attracted by a sweet smell but it found a %s instead!", getitemlink(BeeStinger));
        delitem BeeStinger, 1;
        @stingpooh = true;
        next;
        mesc l("Unsatisfied, it goes away from you and your bag. Such a shame, we almost had got its trust.");
        return;
    }
    mesc l("After turning it upside down, it finds something which makes it really happy: %s! And there's nothing a teddy likes more than honey.", getitemlink(Honey));
    next;
    mesc l("The teddy picks it and goes running to somewhere it can eat in peace. Now we know how we can please our little friend - with %s! How we didn't think on that before?!", getitemlink(Honey));
    delitem Honey, 1;
    compareandsetq HurnscaldQuest_TeddyBear, 1, 2;
    setq2 HurnscaldQuest_TeddyBear, getq2(HurnscaldQuest_TeddyBear) + 1;
    getexp 0, 14;
    return;
}

OnInit:
    .sex = G_OTHER;
    .distance = 4;
    end;
}