summaryrefslogblamecommitdiff
path: root/npc/020-2-34/donutello.txt
blob: 8ff494d87f5a3de5b9619c14043b290ab90cdb47 (plain) (tree)


































































































































































                                                                                                                                                                                                                  


                  
// The Mana World scripts.
// Author:
//    Jesusalva
// Description:
//    Donutello is the Donut Apprentice

020-2-34,33,48,0	script	Donutello	NPC_CHEF_LEGACY,{
    function foodQuestline;

    // Instance behavior
    if (instance_id() > 0) {
        npctalk3 l("Time remaining: %s" , FuzzyTime(@tinner));
        end;
    }

    mesn;
    mesq l("Why are you here? Only staff and VIP are supposed to go down here.");

    .@q=getq(General_Cooking);
    if (.@q > 11)
        foodQuestline();

    close;

function foodQuestline {
    .@q=getq(General_Cooking);
    .@q2=getq2(General_Cooking);
    mes "";
    select
        rif(.@q == 12, l("Can you teach me how to cook sweets?")),
        rif(.@q == 13, l("Rattos killed. So, my recipe...")),
        l("What is the area, anyway?"),
        l("Erm, wrong door, sorry.");
    mes "";
    switch (@menu) {
    case 1:
        mesn;
        mesq l("What? But the recipes are the pride of Tulimshar Inn, and-- Oohhhh.... Maybe...");
        next;
        mesn;
        mesq l("Hey, I can teach the %s recipe. However...", getitemlink(Donut));
        next;
        select
            l("Oh no - I'm not your personal delivery guy! Bye bye!"),
            l("Here we go again...");
        mes "";
        if (@menu == 1)
            break;
        mesn;
        mesq l("I am scared of the rattos! And Riskim says that we cannot have rattos here, so he also wants me to kill them!! %%i");
        next;
        mesn strcharinfo(0);
        select
            l("Sounds cliché, but okay, I'll help."),
            l("They're just rattos?");
        mes "";
        mesn;
        mesq l("Oh, but they aren't only fast - they're more vicious than common rattos, from all the sugar they eat. And if you take too long killing them, Riskim will hear and - things will turn out badly!");
        next;
        mesc l("Accept quest?"), 1;
        mesc l("Time limit: %s", l("2 minutes"));
        .@mapn$="Tinn@"+getcharid(0);
        if (askyesno() == ASK_NO)
            break;

        if (instanceowner(@tinnst) != getcharid(3)) {
            @tinnst = instance_create("T.INN "+getcharid(0), getcharid(3), IOT_CHAR);
	        instance_attachmap("020-2-34", @tinnst, false, .@mapn$);
		    instance_set_timeout(120, 120, @tinnst);
		    instance_init(@tinnst);
        } else {
		    instance_set_timeout(120, 120, @tinnst);
        }
        @tinner = gettimetick(2) + 120;
        killmonsterall(.@mapn$);
        for (.@i = 0; .@i < 4; .@i++) {
            .@mob=areamonster(.@mapn$, 32, 50, 52, 57, strmobinfo(1, Ratto), Ratto, 1, "Donutello::OnRattoKill");
            // Make them vicious
            .@bhp= getunitdata(.@mob, UDT_MAXHP);
            .@bat1=getunitdata(.@mob, UDT_ATKMIN);
            .@bat2=getunitdata(.@mob, UDT_ATKMAX);
            .@bhit=getunitdata(.@mob, UDT_HIT);
            setunitdata(.@mob, UDT_MAXHP,    .@bhp*22/10);
            setunitdata(.@mob, UDT_HP,       .@bhp*22/10);
            setunitdata(.@mob, UDT_ATKMIN,   .@bat1*27/10);
            setunitdata(.@mob, UDT_ATKMAX,   .@bat2*27/10);
            setunitdata(.@mob, UDT_HIT,      .@bhit*20);
        }
        warp .@mapn$, 37, 50;
        dispbottom l("Time remaining: %s", FuzzyTime(@tinner));
        closeclientdialog;
        close;
        break;
    case 2:
        mesn;
        mesq l("Phew, thanks %s. These rattos were going to be the ruin of me!", strcharinfo(0));
        next;
        mesn;
        mesq l("However, you must bring me %d %s, %d %s and %d %s. Because the ingredients are you!",
        6, getitemlink(AcornFlour),
        2, getitemlink(MoubooMilk),
        2, getitemlink(ChocolateBar));
        next;
        mesn;
        mesq l("Erm, Acorn Flour is made of mashed up acorns. %d Acorns make one flour. So, I'll accept the acorns instead of the flour as you helped me a lot.", 3);
        next;
        mesc l("Deliver the ingredients?"), 1;
        mesf("- %d %s", 18, getitemlink(Acorn));
        mesf("- %d %s", 2, getitemlink(MoubooMilk));
        mesf("- %d %s", 2, getitemlink(ChocolateBar));
        mes "";
        if (askyesno() == ASK_NO)
            break;
        if (countitem(ChocolateBar) < 2 ||
            countitem(MoubooMilk) < 2 ||
            countitem(Acorn) < 18)
            break;
        inventoryplace Donut, 1;
        delitem Acorn, 18;
        delitem MoubooMilk, 2;
        delitem ChocolateBar, 2;
        setq1 General_Cooking, 14;
        RECIPES[CraftDonut]=true;
        getitem Donut, 1;
        mesn;
        mesq l("Great, thanks! If you need more flour you can ask Riskim. He also buys flour for a good price.");
        next;
        mesn;
        mesq l("First divide the ingredients on two halves. Take the first half, mix them, bring the oven, and blablablablah....");
        next;
        mesn;
        mesq l("And after a while, you have %s! I made two with the ingredients you gave me, one for you and one for me. This is my thankyou for helping me out on the storeroom. Enjoy!", getitemlink(Donut));
        break;
    case 3:
        mesn;
        mesq l("Up there is the Casino. Erm, it is totally legal, I swear.");
        next;
        mesn;
        mesq l("Here is the storeroom, and... Hey! I don't need to answer you questions!!");
        break;
    }
    return;

OnRattoKill:
    if (!playerattached()) end;
    // FIXME - Make sure this is an instanced map
    //if (instance_id() < 1) end;

    if (mobcount(getmap(), "Donutello::OnRattoKill") <= 0) {
        dispbottom l("I'm done with this.");
        getmapxy(.@m$, .@x, .@y, 0);
        setq1 General_Cooking, 13;
        sleep2(1000); // Give you some time to loot
        warp "020-2-34", .@x, .@y;
        sleep2(500); // Give M+ some time to re-render everything
        npctalk3 l("Thanks %s... I feel much safer now!", strcharinfo(0));
    } else {
        dispbottom l("Rattos remaining: %d", mobcount(getmap(), "Donutello::OnRattoKill"));
    }
    end;
}

OnInit:
    .distance = 4;
    end;
}