summaryrefslogtreecommitdiff
path: root/world/map/npc/026-2/werewolf.txt
diff options
context:
space:
mode:
authorwushin <pasekei@gmail.com>2016-04-21 15:37:05 -0500
committerwushin <pasekei@gmail.com>2016-04-23 18:53:23 -0500
commit3f175b590d284ef413be0be25c7f74392523414b (patch)
tree2af26d2602696e6623c75dd54bd28a32e0767c0b /world/map/npc/026-2/werewolf.txt
parentcab5e80475f0fa1370b8587c519bb6b6b7c6190a (diff)
downloadserverdata-3f175b590d284ef413be0be25c7f74392523414b.tar.gz
serverdata-3f175b590d284ef413be0be25c7f74392523414b.tar.bz2
serverdata-3f175b590d284ef413be0be25c7f74392523414b.tar.xz
serverdata-3f175b590d284ef413be0be25c7f74392523414b.zip
Deadmere - Undead Town
Diffstat (limited to 'world/map/npc/026-2/werewolf.txt')
-rw-r--r--world/map/npc/026-2/werewolf.txt179
1 files changed, 179 insertions, 0 deletions
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;
+}