diff options
Diffstat (limited to 'npc/026-2/werewolf.txt')
-rwxr-xr-x | npc/026-2/werewolf.txt | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/npc/026-2/werewolf.txt b/npc/026-2/werewolf.txt new file mode 100755 index 00000000..febc4149 --- /dev/null +++ b/npc/026-2/werewolf.txt @@ -0,0 +1,176 @@ + +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; +} |