summaryrefslogblamecommitdiff
path: root/npc/functions/daily.txt
blob: 59c35e2442603e20bfa588ce3b58281bc4ca1773 (plain) (tree)




































































































                                                                                                                                           
// 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;
}