summaryrefslogblamecommitdiff
path: root/npc/026-2/werewolf.txt
blob: febc414980c8b79c0e82dd3672ade7e3ff63aa8b (plain) (tree)















































































































































































                                                                                                                           
026-2,30,23,0	script	Wolfgang	NPC305,{
    @Graveyard_Inn_MASK = NIBBLE_5_MASK;
    @Graveyard_Inn_SHIFT = NIBBLE_5_SHIFT;

    @state = ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);

    @ANIMALBONES_AMOUNT = 30;
    @ANIMALBONES_EXP = 40000;
    @money = 1000;
    @minLevel = 80;

    if (@state > 1) goto L_Happy;
    if (@state == 1) goto L_Bones;

    mes "[Wolfgang]";
    mes "\"What a nice place here, isn't it?\"";
    next;
    mes "\"Just the stuff they call 'food' in here is awful, bah.\"";
    if (BaseLevel < @minLevel)
        goto L_close;
    next;
    mes "\"I like bones from big animals, the best would be with some raw flesh on it. But just the bones are fine too.\"";
    next;
    mes "\"Can you bring me " + @ANIMALBONES_AMOUNT + " of them?\"";
    @state = 1;
    callsub S_Update_Mask;
    goto L_close;

L_Bones:
    mes "[Wolfgang]";
    mes "\"Do you have " + @ANIMALBONES_AMOUNT + " bones of an animal for me?\"";
    next;
    if ((countitem("Bone") > 0)
        && (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT))
            menu
                "Yes, here they are.",L_Bring,
                "What about this normal bone?",L_Human,
                "Not yet.",L_close;
    if (countitem("Bone") > 0)
        menu
            "What about this normal bone?",L_Human,
            "Not yet.",L_close;
    if (countitem("AnimalBones") >= @ANIMALBONES_AMOUNT)
        menu
            "Yes, here they are.",L_Bring,
            "Not yet.",L_close;
    menu
        "Not yet.",L_close;

L_Bring:
    if (countitem("AnimalBones") < @ANIMALBONES_AMOUNT)
        goto L_Not_Enough;
    delitem "AnimalBones", @ANIMALBONES_AMOUNT;
    getexp @ANIMALBONES_EXP, 0;
    mes "[Wolfgang]";
    mes "\"Ah! Wonderful! Thank you.\"";
    @state = 2;
    callsub S_Update_Mask;
    goto L_close;

L_Human:
    mes "[Wolfgang]";
    mes "\"What?! That's a humans bone! I don't eat humans. That brings only trouble.\"";
    next;
    mes "\"Besides, from that I heard, they taste bad.\"";
    goto L_close;

L_Not_Enough:
    mes "[Wolfgang]";
    mes "\"Are you trying to kid me? I can count.\"";
    goto L_close;

L_Happy:
    mes "You see the werewolf happily crunching the bones you brought him.";
    mes "[Wolfgang]";
    mes "\"Delicious. Thanks again.\"";
    next;
    mes "\"By the way... would you be interested in a little round of blackjack?\"";
    mes "He pulls a deck of cards out of his pocket.";
    next;
    mes "[Wolfgang]";
    mes "\"You will need " + @money + " GP.\"";
    menu
        "Sure, why not?",L_Game,
        "No, thanks.",L_close;

L_Game:
    if (Zeny < @money)
        goto L_No_Money;
    mes "[Wolfgang]";
    mes "\"Very nice. Let's start.\"";
    mes "He shuffles the cards.";
    next;
    Zeny = Zeny - @money;
    @croupier = rand(0, 4);
    @croupier = @croupier + 17;
    @player = rand(4, 21);
    mes "\"You got " + @player + " with your cards.";
    if (@player == 21)
        goto L_End;
    mes "Do you want another card?\"";
    next;
    menu
        "Yes.", L_Another,
        "No.", L_End;

L_Another:
    @tempace = rand(2, 11);
    if (@tempace == 11)
        goto L_Ace;
    @player = @player + @tempace;
    if (@player > 21)
        goto L_Lost;
    if (@player == 21)
        goto L_End;
    mes "\"You got " + @player + " with your cards.";
    mes "Do you want another card?\"";
    next;
    menu
        "Yes", L_Another,
        "No", L_End;

L_End:
    if (@player <= @croupier)
        goto L_Lost;
    mes "\"You won! Hrm, here is your money.\"";
    Zeny = Zeny + (3 * @money);
    goto L_close;

L_No_Money:
    mes "\"You need at least " + @money + " GP.\"";
    goto L_close;

L_Lost:
    mes "[Wolfgang]";
    mes "\"Fine! I won!";
    mes "You got " + @player + " with your cards.";
    mes "I had " + @croupier + ".\"";
    goto L_close;

L_Ace:
    @player = @player + 11;
    if (@player > 21)
        @player = @player - 10;
    if (@player > 21)
        goto L_Lost;
    if (@player == 21)
        goto L_End;
    mes "You got " + @player + " with your cards.";
    mes "Do you want another card?";
    next;
    menu
        "Yes", L_Another,
        "No", L_End;

L_close:
    @Graveyard_Inn_MASK = 0;
    @Graveyard_Inn_SHIFT = 0;
    @state = 0;
    @ANIMALBONES_AMOUNT = 0;
    @ANIMALBONES_EXP = 0;
    @money = 0;
    @minLevel = 0;

    @croupier = 0;
    @player = 0;
    @tempace = 0;
    close;

S_Update_Mask:
    set QUEST_Graveyard_Inn,
        (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
            | (@state << @Graveyard_Inn_SHIFT);
    return;
}