summaryrefslogtreecommitdiff
path: root/world/map/npc/056-2/mirak.txt
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/056-2/mirak.txt')
-rw-r--r--world/map/npc/056-2/mirak.txt150
1 files changed, 150 insertions, 0 deletions
diff --git a/world/map/npc/056-2/mirak.txt b/world/map/npc/056-2/mirak.txt
new file mode 100644
index 00000000..9522ebd4
--- /dev/null
+++ b/world/map/npc/056-2/mirak.txt
@@ -0,0 +1,150 @@
+056-2.gat,67,24,0|script|Mirak|372,{
+// Variables to set:
+// @dq_cost - The number of points this quest uses
+// @dq_money - The money reward for doing the quest
+// @dq_exp - Experince gained by doing the quest
+
+// Variables used inside:
+// Mirak_Quest - This variable contains the @annoy level and the storyline (@talk)
+// Mirak_Bantime - Time you cannot come back to the NPC when you upset him
+// Mirak_Questtime - Time you cannot come back once you finished the quest
+// Update Dailyquest Points
+ callfunc "DailyQuestPoints";
+
+// Bitmasks
+ set @Mirak_MASK, NIBBLE_0_MASK;
+ set @Mirak_SHIFT, NIBBLE_0_SHIFT;
+
+ set @talk, ((QUEST_Mirak & @Mirak_MASK) >> @Mirak_SHIFT);
+
+ set @Mirak_Annoy_MASK, NIBBLE_1_MASK;
+ set @Mirak_Annoy_SHIFT, NIBBLE_1_SHIFT;
+
+ set @annoy, ((QUEST_Mirak & @Mirak_Annoy_MASK) >> @Mirak_Annoy_SHIFT);
+
+// Bitmasks END
+
+ if (Mirak_Questtime > gettimetick(2))
+ goto L_TooSoon;
+ if (@annoy > 3)
+ goto L_Kill;
+ if (Mirak_Bantime > gettimetick(2))
+ goto L_Ban;
+ if (@talk < 3)
+ goto L_Talk;
+
+L_Ban:
+ mes "[Mirak]";
+ mes "\"How did you get back here?\"";
+ goto L_Kill;
+
+L_Talk:
+ set Mirak_Bantime, 0;
+ set Mirak_Questtime, 0;
+ if (@talk == 1)
+ goto L_Talk1;
+ if (@talk == 2)
+ goto L_Talk2;
+ mes "The old man reads a book and looks up when he sees you comming";
+ mes "He looks at you angrily";
+ next;
+ mes "[Mirak]";
+ mes "\"Hi my name is Mirak. You might have the impression that I am nice, but I am NOT! I want to be left alone to read at piece! I tried that at my mansion in Port City but it did not work. My damn brother, he always kept going on about Bat Wings...\"";
+ next;
+ mes "Suddenly his face gets red. He breathes slowly three times...";
+ next;
+ mes "He seems to be calm again.";
+ next;
+ mes "[Mirak]";
+ mes "\"Eh... Ah! That's why I bought this house in this goddamn woods. I hoped nobody would come by here. It seems I was wrong. I believe that you did not read the notes I left behind. Read them on your way out.\"";
+ mes "He looks down on his book and ignores you.";
+ set @talk, 1;
+ callsub S_Update_Mask;
+ close;
+
+L_Talk1:
+ mes "[Mirak]";
+ mes "\"What?! You again? Get going!\"";
+ set @talk, 2;
+ callsub S_Update_Mask;
+ close;
+
+L_Talk2:
+ mes "[Mirak]";
+ mes "\"What do you want?!\"";
+ menu
+ "Nothing", -,
+ "Money!", L_Quest;
+ mes "[Mirak]";
+ mes "\"Ahhhh! Get lost, or you'll regret it!\"";
+ set @annoy, @annoy+1;
+ callsub S_Update_Mask_Annoy;
+ close;
+
+L_Quest:
+
+ set @dq_cost, DailyQuestPoints;
+ set @dq_money, 20;
+ set @dq_exp, 20;
+ mes "[Mirak]";
+ mes "\"If you have some energy which I need left I can give you money for it but only if you will leave me alone!\"";
+ menu
+ "Okay.", L_Trade,
+ "Nah, I won't leave you alone.", L_Kill;
+ goto L_Exit;
+
+L_TooSoon:
+ mes "Mirak looks up sees you and gets angry";
+ mes "[Mirak]";
+ mes "\"I told you not to bother me again! Thats why I paid you!\"";
+ goto L_Kill;
+
+L_Kill:
+ misceffect sfx_magic_war, strcharinfo(0);
+ percentheal -100, 0;
+ set @annoy, 0;
+ callsub S_Update_Mask_Annoy;
+ set Mirak_Bantime, gettimetick(2) + 30; // Real: 86400;
+ set Mirak_Questtime, 0;
+ mes "The old man stands up and looks at you angier than ever. He mumbles something and your head explodes.";
+ next;
+ mes "[Mirak]";
+ mes "\"That's what you get for annoying me! I studied under the Mage of Tulimshar!";
+ mes "I feel better now.\"";
+ next;
+ mes "The old man sits back down and continues to read.";
+ close;
+
+L_Trade:
+ if (DailyQuestPoints == 0)
+ goto L_NoPoints;
+ set Zeny, Zeny + (@dq_money * @dq_cost);
+ getexp @dq_exp * @dq_cost, 0;
+ set DailyQuestPoints, DailyQuestPoints - @dq_cost;
+
+ mes "[" + @dq_money * @dq_cost + " money]";
+ mes "[" + @dq_exp * @dq_cost + " experience points]";
+ mes "\"Now leave or you'll regret it. Don't come back!\"";
+ set Mirak_Questtime, gettimetick(2) + 30; //Real: 86400;
+ set Mirak_Bantime, 0;
+ close;
+
+L_NoPoints:
+ mes "[Mirak]";
+ mes "\"Why do you bother me!? You have no energy left!\"";
+ goto L_Kill;
+
+// Bitmasks
+
+S_Update_Mask_Annoy:
+ set QUEST_Mirak,
+ (QUEST_Mirak & ~(@Mirak_Annoy_MASK))
+ | (@annoy << @Mirak_Annoy_SHIFT);
+ return;
+
+S_Update_Mask:
+ set QUEST_Mirak,
+ (QUEST_Mirak & ~(@Mirak_MASK))
+ | (@talk << @Mirak_SHIFT);
+ return;
+}