summaryrefslogblamecommitdiff
path: root/world/map/npc/027-2/werewolf.txt
blob: 1ecb403ca2ce32fb577130fb2ff05e4efdac9a73 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12

                  
                                  
 







                                                                                      
                      







                                                                     
                              
                     





                                                                                                                           
                 

        


                                                                                 





                                                             








                                                        
                           

        







                                                       
                 

        



                                                                                         
                 

             

                                                     
                 

        










                                                                                    
                              
 
                                              
       
                      
                        



                                      
                            



                                                     

                      

                                      


                          

          
                              

                       
                                    



                      


                                                     


                         
 
      

                             
                                                

                                  

           
                                                   
                 

       



                                                   
                 

      
                              





                                  


                                                   


                         

        










                                
          

              



                                                      
 
// author: Jenalya

027-2,118,23,0|script|Wolfgang|305
{
    set @Graveyard_Inn_MASK, NIBBLE_5_MASK;
    set @Graveyard_Inn_SHIFT, NIBBLE_5_SHIFT;

    set @state, ((QUEST_Graveyard_Inn & @Graveyard_Inn_MASK) >> @Graveyard_Inn_SHIFT);

    set @ANIMALBONES_AMOUNT, 30;
    set @ANIMALBONES_EXP, 40000;
    set @money, 1000;
    set @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?\"";
    set @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.\"";
    set @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;

//The game mechanics is copied from casino.txt
L_Game:
    if (Zeny < @money)
        goto L_No_Money;
    mes "[Wolfgang]";
    mes "\"Very nice. Let's start.\"";
    mes "He shuffles the cards.";
    next;
    set Zeny, Zeny - @money;
    set @croupier, rand(0, 4);
    set @croupier, @croupier + 17;
    set @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:
    set @tempace, rand(2, 11);
    if (@tempace == 11)
        goto L_Ace;
    set @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.\"";
    set 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:
    set @player, @player + 11;
    if (@player > 21)
        set @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:
    set @Graveyard_Inn_MASK, 0;
    set @Graveyard_Inn_SHIFT, 0;
    set @state, 0;
    set @ANIMALBONES_AMOUNT, 0;
    set @ANIMALBONES_EXP, 0;
    set @money, 0;
    set @minLevel, 0;

    set @croupier, 0;
    set @player, 0;
    set @tempace, 0;
    close;

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