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;
}