summaryrefslogtreecommitdiff
path: root/npc/functions/referral.txt
blob: 824a415b3b03a15ecf9eeb2baed861371558d962 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// The Mana World scripts.
// Author:
//	Moubootaur Legends Team
//	Jesusalva
//  gumi
// Description:
//	Referral System - rewards
//	Note: Does not support multi-levelup

function	script	ReferralSendLvReward	{
    .@refVault = bitwise_get(getvaultvar(REFERRAL_PROG), 0x00FFFFFF, 0); // the unique identifier of the referrer (Vault/account ID) [24-bit integer]
    .@status   = bitwise_get(getvaultvar(REFERRAL_PROG), 0x7F000000, 24); // the last reward obtained [8-bit integer]

    if (.@refVault < 1) {
        // the player has not been referred
        return;
    }

    .@refChar = "playerCache"::vault2char(.@refVault);

    if (.@refChar < 1) {
        // the referrer no longer exists: unassign it
        setvaultvar(REFERRAL_PROG, false);
        return;
    }

    setarray(.@rewardTiers[0], 25, 50, 75, 100);
    .@tier = array_find(.@rewardTiers[0], BaseLevel);

    if (.@tier < 0 || .@status > .@tier) {
        // not a reward tier, or already claimed
        return;
    }

    rodex_sendmail(.@refChar, "TMW Team",
        sprintf("Referred player reached Lv %i!", BaseLevel),
        sprintf("%s just reached level %i!\n"
        "As they get stronger, more rewards will be sent to you!", strcharinfo(PC_NAME), BaseLevel),
        0, Acorn, 1);

    bitwise_set(getvaultvar(REFERRAL_PROG), 0x7F000000, 24, .@tier);
    return;
}