// The daily quests
// Variables returned:
// @dq_return - Code of what happend
// 0 = Low level
// 1 = Ignored NPC
// 2 = Not enough points
// 3 = Not enough items
// 4 = Success
// Variables to set:
// @dq_level - Minumal level needed to use the quest
// @dq_cost - The number of points this quest uses
// @dq_count - The number of given item needed
// @dq_name$ - String name of the item as seen by server
// @dq_friendly_name$ - Straing name of the item as seen by user
// @dq_money - The money reward for doing the quest
// @dq_exp - Experince gained by doing the quest
// Optional:
// @dq_handle_return - When set to anything other then 0 the function will not print exiting text
// Variables used inside:
// DailyQuestPoints - The number of points the player currently has
// DailyQuestTime - Time since DailyQuestPoints was lasted renewed
// DailyQuestBonus - Additional points that get renewed daily in addition to player BaseLevel
// (DailyQuestBonus makes a good reward from non-daily quests)
function script DailyQuest {
if (gettimetick(2) - DailyQuestTime > 86400) goto L_More_Points;
L_Start:
if (BaseLevel < @dq_level) goto L_Low_Level;
if (DailyQuestPoints < @dq_cost) goto L_Not_Enough_Points;
mes "\"If you bring me " + @dq_count + " " + @dq_friendly_name$ + ", I will give you a reward.\"";
menu "I have what you want.", L_Trade,
"Ok, I'll get to work.", -,
"Nah, I'm not going to help you.", -;
set @dq_return, 1;
goto L_Exit;
L_Trade:
if (countitem(@dq_name$) < @dq_count) goto L_Not_Enough;
delitem @dq_name$, @dq_count;
set zeny, zeny + @dq_money;
getexp @dq_exp, 0;
set DailyQuestPoints, DailyQuestPoints - @dq_cost;
if (@dq_handle_return) goto L_Exit_Good;
mes "\"Thank you!\"";
mes "";
mes "[" + @dq_money + " money]";
mes "[" + @dq_exp + " experience points]";
L_Exit_Good:
set @dq_return, 4;
goto L_Exit;
L_Not_Enough:
if (!@dq_handle_return) mes "\"I said " + @dq_count + " " + @dq_friendly_name$ + "; you should learn to count.\"";
set @dq_return, 3;
goto L_Exit;
L_Low_Level:
if (!@dq_handle_return) mes "\"Hey, you should go kill some things to get stronger first.\"";
set @dq_return, 0;
goto L_Exit;
L_Not_Enough_Points:
if (!@dq_handle_return) mes "\"You look exhausted, maybe you should rest a bit.\"";
set @dq_return, 2;
goto L_Exit;
L_More_Points:
set DailyQuestPoints, BaseLevel + DailyQuestBonus;
set DailyQuestBonus, 0;
set DailyQuestTime, gettimetick(2);
goto L_Start;
L_Exit:
set @dq_handle_return, 0; // Incase they forget
return;
}