From 3f175b590d284ef413be0be25c7f74392523414b Mon Sep 17 00:00:00 2001 From: wushin Date: Thu, 21 Apr 2016 15:37:05 -0500 Subject: Deadmere - Undead Town --- world/map/npc/026-2/werewolf.txt | 179 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 world/map/npc/026-2/werewolf.txt (limited to 'world/map/npc/026-2/werewolf.txt') diff --git a/world/map/npc/026-2/werewolf.txt b/world/map/npc/026-2/werewolf.txt new file mode 100644 index 00000000..79701dbb --- /dev/null +++ b/world/map/npc/026-2/werewolf.txt @@ -0,0 +1,179 @@ +// author: Jenalya + +026-2,30,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; +} -- cgit v1.2.3-60-g2f50