summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--npc/functions/daily.txt101
1 files changed, 101 insertions, 0 deletions
diff --git a/npc/functions/daily.txt b/npc/functions/daily.txt
new file mode 100644
index 000000000..59c35e244
--- /dev/null
+++ b/npc/functions/daily.txt
@@ -0,0 +1,101 @@
+// TMW2 Script.
+// Authors:
+// Jesusalva
+// Description:
+// Daily Login Reward
+
+function script daily_login_bonus_handler {
+ // Handle daily login bonus
+ // The Strange Coin output wasn't changed, but now it relies on streaks.
+ // Variables:
+ // #LOGIN_DAY
+ // Current day
+ // #LOGIN_TABLE
+ // Current month
+ // #LOGIN_STREAK
+ // Number of monthly connections
+ // #LOGIN_ALLTIME
+ // Number of times you claimed the top prize (27 days streak)
+
+ if (#LOGIN_DAY != .login_ref) {
+ // demure check: Are you on a start area?
+ getmapxy(.@m$,.@x,.@y,0);
+ if (.@m$ ~= "000")
+ return;
+
+ // Is it a new month?
+ if (#LOGIN_TABLE == gettime(6)) {
+ #LOGIN_STREAK=#LOGIN_STREAK+1;
+ } else {
+ #LOGIN_STREAK=1;
+ #LOGIN_TABLE=gettime(6);
+ }
+
+ // Update last day you've claimed a reward
+ #LOGIN_DAY = .login_ref;
+
+ // Handle rewards: Streaks first, daily later. Streak reward prevail over daily reward.
+ if (#LOGIN_STREAK > 27) {
+ getitem StrangeCoin, 2;
+ getitem CasinoCoins, 1;
+ dispbottom l("##2 @@ Days login bonus: ##B2x @@, 1x @@##b", #LOGIN_STREAK, getitemlink(StrangeCoin), getitemlink(CasinoCoins));
+ } else if (#LOGIN_STREAK == 27) {
+ #LOGIN_ALLTIME+=1;
+ // Your prize is based on season
+ switch (season()) {
+ case AUTUMN:
+ .@prize=ElixirOfLife; break;
+ case WINTER:
+ .@prize=SilverGift; break;
+ case SPRING:
+ .@prize=Toothbrush; break;
+ case SUMMER:
+ .@prize=RightEyePatch; break;
+ }
+ // Some special cases
+ if (#LOGIN_ALLTIME == 3)
+ .@prize=GoldenGift;
+ if (#LOGIN_ALLTIME == 8)
+ .@prize=PrismGift;
+
+ if (#LOGIN_ALLTIME == 12) {
+ dispbottom l("CONGRATULATIONS! For a year worth of logins, you're getting a pet!");
+ makepet Piou; // we must replace this before August 2019. (r18 probably)
+ }
+
+ getitem .@prize, 1;
+ dispbottom l("##2 27 Days login bonus: ##B1x @@##b", getitemlink(.@prize));
+ } else if (#LOGIN_STREAK == 21) {
+ getitem StrangeCoin, 7;
+ dispbottom l("##2 21 Days login bonus: ##B7x @@##b", getitemlink(StrangeCoin));
+ } else if (#LOGIN_STREAK == 14) {
+ getitem StrangeCoin, 5;
+ dispbottom l("##2 14 Days login bonus: ##B5x @@##b", getitemlink(StrangeCoin));
+ } else if (#LOGIN_STREAK == 7) {
+ getitem StrangeCoin, 2;
+ dispbottom l("##2 7 Days login bonus: ##B2x @@##b", getitemlink(StrangeCoin));
+ } else if (#LOGIN_STREAK == 3) {
+ getitem StrangeCoin, 1;
+ dispbottom l("##2 3 Days login bonus: ##B1x @@##b", getitemlink(StrangeCoin));
+ } else if (.login_ref % 3 == 0) {
+ .@value=max(5, rand(0, (#LOGIN_STREAK/4)));
+ .@value+=(BaseLevel**2);
+ .@value=(.@value/2)+#LOGIN_STREAK;
+ getexp .@value, 0;
+ dispbottom l("##2Daily login bonus: ##B@@ EXP##b", .@value);
+ } else if (.login_ref % 3 == 1) {
+ .@value=max(20, rand(0, (#LOGIN_STREAK*2)));
+ .@value+=(BaseLevel+JobLevel);
+ Zeny=Zeny+.@value;
+ dispbottom l("##2Daily login bonus: ##B@@ GP##b", .@value);
+ } else {
+ .@value=max(5, rand(0, (#LOGIN_STREAK/4)));
+ .@value+=(JobLevel**2);
+ .@value=(.@value/3)+#LOGIN_STREAK;
+ getexp 0, .@value;
+ dispbottom l("##2Daily login bonus: ##B@@ Job Exp.##b", .@value);
+ }
+ }
+ return;
+}
+