From cf18ce071c79ae37e14ea38943e0b1d88da70a7b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Fri, 9 Apr 2021 13:33:57 -0300 Subject: Override --- npc/functions/dailyquest.txt | 164 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100755 npc/functions/dailyquest.txt (limited to 'npc/functions/dailyquest.txt') diff --git a/npc/functions/dailyquest.txt b/npc/functions/dailyquest.txt new file mode 100755 index 00000000..6f39e59d --- /dev/null +++ b/npc/functions/dailyquest.txt @@ -0,0 +1,164 @@ + + + + + + +function script DailyQuestPointsFunc { + @dq_earliest = gettimetick(2) - 86400; + if (DailyQuestTime < @dq_earliest) + DailyQuestTime = @dq_earliest; + + // how many whole daily quest points the player has earned + // we increment DailyQuestTime by the number of seconds in that many increments + @dq_increments = (gettimetick(2) - DailyQuestTime)*BaseLevel / 86400; + DailyQuestTime = DailyQuestTime + @dq_increments*86400/BaseLevel; + + // player can't regenerate any quest points, but might have a bonus + if (DailyQuestPoints >= BaseLevel) + goto L_Bonus; + + // normal recharging case - increment, but don't let it recharge more than a day's worth + DailyQuestPoints = DailyQuestPoints + @dq_increments; + if (DailyQuestPoints > BaseLevel) + DailyQuestPoints = BaseLevel; + // fallthrough to bonus, which *is* allowed to push DailyQuestPoints above BaseLevel + goto L_Bonus; + +L_Bonus: + DailyQuestPoints = DailyQuestPoints + DailyQuestBonus; + DailyQuestBonus = 0; + + return; +} + +function script DailyQuest { + callfunc "DailyQuestPointsFunc"; + + 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, + "Take all you need.", L_All, + "Ok, I'll get to work.", L_Next, + "Nah, I'm not going to help you.", L_Next; + +L_Next: + @dq_return = 1; + goto L_Exit; + +L_Trade: + if (countitem(@dq_name$) < @dq_count) + goto L_Not_Enough; + delitem @dq_name$, @dq_count; + + Zeny = Zeny + @dq_money; + getexp @dq_exp, 0; + + DailyQuestPoints = DailyQuestPoints - @dq_cost; + + if (@dq_handle_return) + goto L_Exit_Good; + + mes "\"Thank you!\""; + callsub S_SayPhrase; + mes ""; + mes "[" + @dq_money + " money]"; + mes "[" + @dq_exp + " experience points]"; + goto L_Exit_Good; + +L_All: + if (countitem(@dq_name$) < @dq_count) + goto L_Not_Enough; + + @item_multiple = (countitem(@dq_name$) / @dq_count); + @dp_multiple = (DailyQuestPoints / @dq_cost); + + if (@dp_multiple > @item_multiple) + @multipler = @item_multiple; + if (@item_multiple >= @dp_multiple) + @multipler = @dp_multiple; + + DailyQuestPoints = DailyQuestPoints - (@dq_cost * @multipler); + + delitem @dq_name$, (@dq_count * @multipler); + + Zeny = Zeny + (@dq_money * @multipler); + getexp (@dq_exp * @multipler), 0; + + if (@dq_handle_return) + goto L_Exit_Good; + + mes "\"Thank you!\""; + callsub S_SayPhrase; + mes ""; + mes "[" + (@dq_money * @multipler) + " money]"; + mes "[" + (@dq_exp * @multipler) + " experience points]"; + goto L_Exit_Good; + +L_Exit_Good: + @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.\""; + @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.\""; + @dq_return = 0; + goto L_Exit; + +L_Not_Enough_Points: + mes "\"You look exhausted, maybe you should rest a bit.\""; + @dq_return = 2; + goto L_Exit; + +L_Exit: + set @dq_handle_return, 0; // Incase they forget + return; + +S_SayPhrase: + if (@dq_handle_return) + goto L_Return; + if (DailyQuestPoints < @dq_cost) + goto L_Exhausted; + if (DailyQuestPoints > BaseLevel) + goto L_Over; + if (DailyQuestPoints > (BaseLevel*9)/10) + goto L_P90; + if (DailyQuestPoints > (BaseLevel*7)/10) + goto L_P70; + if (DailyQuestPoints > (BaseLevel*5)/10) + goto L_P50; + goto L_Low; + +L_Over: + mes "\"Woah, you're bursting with power.\""; + return; +L_P90: + mes "\"You're in a very good shape.\""; + return; +L_P70: + mes "\"You don't seem very exhausted by my tasks.\""; + return; +L_P50: + mes "\"Aren't you getting weary yet?\""; + return; +L_Low: + mes "\"You look a little tired.\""; + return; +L_Exhausted: + mes "\"You look exhausted, maybe you should rest a bit.\""; + return; + +L_Return: + return; +} -- cgit v1.2.3-60-g2f50