summaryrefslogtreecommitdiff
path: root/npc/027-2/werewolf.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/027-2/werewolf.txt')
-rw-r--r--npc/027-2/werewolf.txt158
1 files changed, 158 insertions, 0 deletions
diff --git a/npc/027-2/werewolf.txt b/npc/027-2/werewolf.txt
new file mode 100644
index 00000000..87d93173
--- /dev/null
+++ b/npc/027-2/werewolf.txt
@@ -0,0 +1,158 @@
+027-2.gat,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;
+
+ 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 < 80) 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;
+ 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.",-;
+ 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;
+ 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.\"";
+ close;
+
+L_Not_Enough:
+ mes "[Wolfgang]";
+ mes "\"Are you trying to kid me? I can count.\"";
+ 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.",-;
+ 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);
+ close;
+
+L_No_Money:
+ mes "\"You need at least " + @money + " GP.\"";
+ close;
+
+L_Lost:
+ mes "[Wolfgang]";
+ mes "\"Fine! I won!";
+ mes "You got " + @player + " with your cards.";
+ mes "I had " + @croupier + ".\"";
+ 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;
+ close;
+
+L_Close:
+ close;
+
+S_Update_Mask:
+ set QUEST_Graveyard_Inn,
+ (QUEST_Graveyard_Inn & ~(@Graveyard_Inn_MASK))
+ | (@state << @Graveyard_Inn_SHIFT);
+ return;
+}