From 7f0ae90d5d3561c93e11aaacb08ed1c631739d23 Mon Sep 17 00:00:00 2001 From: Chuck Miller Date: Sat, 21 Aug 2010 00:13:12 -0400 Subject: Add the foundation for the daily quest system --- npc/functions/dailyquest.txt | 88 ++++++++++++++++++++++++++++++++++++++++++++ npc/scripts.conf | 1 + 2 files changed, 89 insertions(+) create mode 100644 npc/functions/dailyquest.txt (limited to 'npc') diff --git a/npc/functions/dailyquest.txt b/npc/functions/dailyquest.txt new file mode 100644 index 00000000..e62c604f --- /dev/null +++ b/npc/functions/dailyquest.txt @@ -0,0 +1,88 @@ +// 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 them for you", L_Trade, + "Ok, Ill get them", -, + "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$ + ", 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\""; + set @dq_return, 0; + goto L_Exit; + +L_Not_Enough_Points: + if (!@dq_handle_return) mes "\"You look exhausted, maybe you should rest some.\""; + set @dq_return, 2; + goto L_Exit; + +L_More_Points: + set DailyQuestPoints, BaseLevel + DailyQuestBonus; + set DailyQuestTime, gettimetick(2); + goto L_Start; + +L_Exit: + set @dq_handle_return, 0; // Incase they forget + return; +} diff --git a/npc/scripts.conf b/npc/scripts.conf index ca45c7fe..acda50a6 100644 --- a/npc/scripts.conf +++ b/npc/scripts.conf @@ -4,6 +4,7 @@ npc: npc/functions/banker.txt npc: npc/functions/barber.txt npc: npc/functions/clear_vars.txt +npc: npc/functions/dailyquest.txt npc: npc/functions/ferry.txt npc: npc/functions/game_rules.txt npc: npc/functions/inn.txt -- cgit v1.2.3-60-g2f50