summaryrefslogblamecommitdiff
path: root/npc/001-1/ishi.txt
blob: 95d2a4ad1c16848c87d5045138992239fe00a79e (plain) (tree)






































































































































































































































                                                                                                                                                                                                                                                                                                                                                                                                                    
// Author: 
// Crazyfefe
// Caution if you revove items from @Items$ that add void in the array, not sure how to fix that but i don't thing that matter.
// note : the rare item system suck. not sure how to fix it.

001-1,88,116,0	script	ishi	NPC_PLAYER,{

    if (getq(MPQUEST) == 0)
    {
        speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
        l("[Ishi the Rewards Master]"),
        l("\"Hey, it seems like you didn't register as a quest participant yet! You can sign up with Aidan.\"");
        close;
    }


    if (Mobpt < BaseLevel ** 2)
    {
        speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
        l("[Ishi the Rewards Master]"),
        l("\"Welcome! I see you have " + Mobpt + " Monster Points. But isn't enought for get items\"");
        close;
    }

    setarray @Items$, "Bread", "Croconut","Plushroom","RedApple","Beer","Candy","Orange","ChocolateBar","BugLeg","CoinBag","PinkieAntenna","Coal","SnakeSkin","CottonCloth","GrassSeeds","HardSpike","CobaltHerb","GambogeHerb","MauveHerb","IronOre","MaggotSlime","RawLog","ScorpionStinger","SilkCocoon","TreasureKey","FluffyFur","EmptyBottle","RustyKnife","TolchiArrow","Arrow","IronArrow","BlueCottonDye";
    .Item1$ = "BrimedHat";
    .Item2$ = "IronIngot";
    .Item3$ = "BronzeGift"; // should be a event.

    speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
        l("[Ishi the Rewards Master]"),
        l("\"Welcome! I see you have " + Mobpt + " Monster Points. Would you like to exchange some of those for items?\"");
    next;

    do
    {
        select
            rif(Mobpt >= BaseLevel ** 2,l("1")),
            rif(Mobpt >= (BaseLevel ** 2)*2,l("2")),
            rif(Mobpt >= (BaseLevel ** 2)*3,l("3")),
            rif(Mobpt >= (BaseLevel ** 2)*4,l("4")),
            rif(Mobpt >= (BaseLevel ** 2)*5,l("5")),
            rif(Mobpt >= (BaseLevel ** 2)*6,l("6")),
            rif(Mobpt >= (BaseLevel ** 2)*7,l("7")),
            rif(Mobpt >= (BaseLevel ** 2)*8,l("8")),
            rif(Mobpt >= (BaseLevel ** 2)*9,l("9")),
            rif(Mobpt >= (BaseLevel ** 2)*10,l("10")),
            rif(Mobpt >= (BaseLevel ** 2)*11,l("Gimme as many as I deserve!")),
            l("Sorry, I have to go now.");

        switch (@menu)
        {
            case 1 :
                @var = 1;
                goto L_Items;
                break;
            case 2 :
                @var = 2;
                goto L_Items;
                break;
            case 3 :
                @var = 3;
                goto L_Items;
                break;
            case 4 :
                @var = 4;
                goto L_Items;
                break;
            case 5 :
                @var = 5;
                goto L_Items;
                break;
            case 6 :
                @var = 6;
                goto L_Items;
                break;
            case 7 :
                @var = 7;
                goto L_Items;
                break;
            case 8 :
                @var = 8;
                goto L_Items;
                break;
            case 9 : 
                @var = 9;
                goto L_Items;
                break;
            case 10 :
                @var = 10;
                goto L_Items;
                break;
            case 11 :
                goto L_Give_all;
                break;
            default :
                goto L_Close;
                break;
        }
    } while (@menu != 12);

    closedialog;
    goodbye;
    close;

L_Close:
    @var =0;
    @reward ="";
    close;

L_LuckyReward1:
    mesq l("Wow !");
    next;
    mesq l("I don't believe.");
    next;
    mesq l("you get lucky and got a @@", getitemlink(.Item1$));
    next;
    mesq l("Come back later for more items i' m so suprised");

    set Mobpt, Mobpt - BaseLevel ** 2;
    getitem .Item1$,1;
    close;

L_LuckyReward2:
    mesq l("Wow !");
    next;
    mesq l("I don't believe.");
    next;
    mesq l("you get lucky and got a @@", getitemlink(.Item2$));
    next;
    mesq l("Come back later for more items i' m so suprised");
    set Mobpt, Mobpt - BaseLevel ** 2;
    getitem .Item2$,1;
    close;

L_LuckyReward3:
    mesq l("Wow !");
    next;
    mesq l("I don't believe.");
    next;
    mesq l("you get lucky and got a @@", getitemlink(.Item3$));
    next;
    mesq l("Come back later for more items i' m so suprised");
    set Mobpt, Mobpt - BaseLevel ** 2;
    getitem .Item3$,1;
    close;

L_Items:
    for (.@i = 0; .@i < @var; .@i ++)
    {
        getinventorylist;
        .@weight = checkweight(@Items$,1);
        if (.@weight == 0)
            goto L_NoPlaceWeight;
        if (@inventorylist_count == 100)
            goto L_NoPlace;
        .@lucky = rand(10000); // 0 - 99999
        if (.@lucky >= 0 && .@lucky <= 5000)
            goto L_LuckyReward1;
        if (.@lucky >= 1 && .@lucky <= 4)
            goto L_LuckyReward2;
        if (.@lucky >= 5 && .@lucky <= 10)
            goto L_LuckyReward3;
        set .@reward$, @Items$[rand(getarraysize(@Items$))];
        mesq l("You received one @@ !", getitemlink(.@reward$));
        set Mobpt, Mobpt - BaseLevel ** 2;
        getitem .@reward$,1;
    }
    close;

L_Continue:
    mesq l("You still have @@ Monster Points ! Do you want more items ?", Mobpt);
    do
        {
        select
            l("Yes"),
            l("No");

        switch (@menu)
        {
            case 1:
                goto L_Give_all;
                break;
            case 2:
                goto L_Close;
                break;
        }
        } while (@menu != 2);

L_NoPlace :
    mesq l("You seem to run out of place, you should go to the storage.");
    close;

L_NoPlaceWeight :
    mesq l("You can't carry more items, you should go to the storage.");
    close;

L_Give_all:
    @var = Mobpt / BaseLevel ** 2;
    if (@var > 50) // limite for avoid lag server
        @var = 50;
    for (.@i = 0; .@i < @var; .@i ++)
    {
        getinventorylist;
        .@weight = checkweight(@Items$,1);
        if (.@weight == 0)
            goto L_NoPlaceWeight;
        if (@inventorylist_count == 100)
            goto L_NoPlace;
        .@lucky = rand(10000); // 0 - 99999
        if (.@lucky == 0)
            goto L_LuckyReward1;
        if (.@lucky >= 1 && .@lucky <= 4)
            goto L_LuckyReward2;
        if (.@lucky >= 5 && .@lucky <= 10)
            goto L_LuckyReward3;
        set .@reward$, @Items$[rand(getarraysize(@Items$))];
        mesq l("You received one @@ !", getitemlink(.@reward$));
        set Mobpt, Mobpt - BaseLevel ** 2;
        getitem .@reward$,1;
    }
    if (Mobpt / BaseLevel ** 2 > 0)
        goto L_Continue;
    close;

OnInit:
    .sex = G_MALE;
    .distance = 3;
    end;
}