diff options
-rw-r--r-- | npc/functions/daily.txt | 101 |
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; +} + |