// 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) debugmes "DLBH"; if (#LOGIN_DAY != gettime(5)) { // demure check: Are you on a start area? getmapxy(.@m$,.@x,.@y,0); if (.@m$ ~= "000") return; debugmes "[DLBH] Mapcheck ok"; // 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 = gettime(5); debugmes "[DLBH] month checks ok"; // 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_STREAK % 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_STREAK % 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); } } debugmes "[DLBH] Finished: "+#LOGIN_DAY+" ok"; return; }