summaryrefslogtreecommitdiff
path: root/npc/functions/skills.txt
blob: d32b9248fd22274822290b0d76cf8122e8b5b858 (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// The Mana World scripts.
// Author:
//    The Mana World Team
// Description:
//    Controls script-based skills (which are rare);

function	script	SkillInvoked	{
    // Record to database that you used the skill
    skillInvoke[@skillId] = skillInvoke[@skillId] + 1;
    array_push(@skillMMOId, @skillId);
    array_push(@skillMMOLv, @skillLv);

    // Switch though skills for additional effects
    switch (@skillId) {
    default:
        // PS. I hate scripts.conf load order
        callfunc("GetManaExp", @skillId, 1);
        break;
    }

    // Switch through skills for experience gains
    // TODO: Element Level does nothing, no buffs and no cost reduction
    // ...Yet
    switch (@skillId) {
    case NV_FIRSTAID:
    case AL_HEAL:
    case AB_HIGHNESSHEAL:
    case ALL_FULL_THROTTLE:
    case TF_DETOXIFY:
        EXP_MS += 1;
        if (EXP_MS > NEXT_Ms()) {
            EXP_MS -=NEXT_Ms();
            LVL_MS +=1;
        }
        break;
    case AL_HOLYLIGHT:
    case MG_SOULSTRIKE:
    case MG_NAPALMBEAT:
        if (EXP_MH > NEXT_Mh()) {
            EXP_MH -=NEXT_Mh();
            LVL_MH +=1;
        }
        EXP_MH += 1;
        break;
    case SA_FROSTWEAPON:
    case MG_FROSTDIVER:
    case WZ_FROSTNOVA:
        EXP_MW += 1;
        if (EXP_MW > NEXT_Mw()) {
            EXP_MW -=NEXT_Mw();
            LVL_MW +=1;
        }
        break;
    case SA_FLAMELAUNCHER:
    case MG_FIREBOLT:
    case MG_FIREBALL:
    case SO_FIREWALK:
        EXP_MF += 1;
        if (EXP_MF > NEXT_Mf()) {
            EXP_MF -=NEXT_Mf();
            LVL_MF +=1;
        }
        break;
    case SA_SEISMICWEAPON:
    case MG_LIGHTNINGBOLT:
    case MG_FIREWALL:
    case SN_WINDWALK:
        EXP_MN += 1;
        if (EXP_MN > NEXT_Mn()) {
            EXP_MN -=NEXT_Mn();
            LVL_MN +=1;
        }
        break;
    case KN_AUTOCOUNTER:
    case SN_SHARPSHOOTING:
    case ASC_METEORASSAULT:
    case AC_SHOWER:
    case AC_CHARGEARROW:
    case SM_BASH:
    case MC_MAMMONITE:
    case GC_DARKILLUSION:
        EXP_MC += 1;
        if (EXP_MC > NEXT_Mc()) {
            EXP_MC -=NEXT_Mc();
            LVL_MC +=1;
        }
        break;
    }
    return;
}