summaryrefslogtreecommitdiff
path: root/npc/003-0-1/professor.txt
blob: c361c31848e87a478b66870c3b97083d292c7670 (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// TMW2 Script
// Author:
//  Jesusalva
// Description:
//  Professor - allows you to gain EXP for idling (Speech skill)

003-0-1,35,29,0	script	Professor	NPC_PLAYER,{
    mesn;
    mesq l("I've mastered the art of speech and communication.");
    next;
    mesn;
    mesq l("Sit on the rug in front of me and learn wisdom! Maybe you'll learn something this way.");
    if (AFKING)
    mesc l("Thus far, you've heard about %d hours and %d minutes of wisdom.", AFKING/1200, AFKING%1200/60*3);
    if (!TUTORIAL) close;
    next;
    mes ".:: AFK EXP AREA ::.";
    mesc l("By sitting in the rug in front of the professor (the one with benches)");
    mesc l("and \"listening\" to his speech, you'll get EXP!");
    mes "";
    mesc l("If you get too much exp this way, a skill will level up and you'll get even more!");
    mesc l("But remember: %s", b(l("You cannot sit idle for too long gaining EXP!")));
    mesc l("After about 30 minutes AFK, you won't get EXP anymore.");
    mesc l("But don't worry, because as they say: The more you learn, the better you get at learning!");
    mes "";
    mesc l("In overall, you'll get more experience by fighting monsters.");
    mesc l("But if you only want to sit down and chat, this area is ideal for you!");
    close;

OnInit:
    .@npcId = getnpcid(.name$);
    setunitdata(.@npcId, UDT_HEADTOP, GraduationCap);
    setunitdata(.@npcId, UDT_HEADMIDDLE, GraduationRobe);
    setunitdata(.@npcId, UDT_HEADBOTTOM, DeepBlackBoots);
    setunitdata(.@npcId, UDT_WEAPON, CottonGloves);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 4);

    .sex=G_MALE;
    .distance=5;
    initnpctimer;
    end;

OnTimer3100:
    areatimer2("003-0-1", 29, 34, 41, 38, 10, .name$+"::OnSpeeching");
    initnpctimer;
    end;

OnSpeeching:
    if (!playerattached()) end;
    if (ispcdead()) end;
    deltimer(.name$+"::OnSpeeching"); // safeguard
    // Max AFK time is determined as 30 minutes + 1 second every 10 minutes AFKed
    // Capped at 2 hours (you've AFK'ed 37 days and 12 hours - 900 hours)
    .@maxafk=min(7200, 1800+(AFKING/600));
    // If you have been IDLE for at least 2 seconds you'll get the EXP.
    // Note you don't need to sit, only be idle.
    if (is_between(2, .@maxafk, checkidle())) {
        .@sk=getskilllv(TMW2_SPEECH);
        .@bxp=min(1+.@sk, 12);
        .@jxp=min(1+(.@sk/3), 6);

        getexp .@bxp, .@jxp;

        // (Extra) Experience for Homunculus
        if (gethominfo(0))
            gethomunexp(1);

        // Research happens roughly every five minutes, based on Study skill
        if (getskilllv(TMW2_STUDY)) {
            if (AFKING % 100 == 0)
                MAGIC_RP+=getskilllv(TMW2_STUDY);
        }

        // If you are learning TMW2_READANCIENTLANGUAGES
        if (ANCIENTLANGUAGEBOUNCER) {
            ANCIENTLANGUAGEBOUNCER-=1;
            if (ANCIENTLANGUAGEBOUNCER == 1) {
                ANCIENTLANGUAGEBOUNCER=0;
                skill TMW2_ANCIENTLANGUAGES, 1, 0;
                dispbottom l("It was a boring lesson, but you have mastered Mananese.");
            }
        }

        // You're being annoying, now
        // 1 hour, 1200 exp, enough from level 1 to level 10
        AFKING+=1;
        switch (AFKING) {
        case 28800:
            // 24 hours, 28,800 exp
            .@x=1;
        case 201600:
            // +1 week, +403,200 exp
            .@x=(AFKING >= 201600 ? 2 : .@x);
        case 864000:
            // +1 month, +2,592,000 exp
            .@x=(AFKING >= 864000 ? 3 : .@x);
        case 2592000:
            // +3 months, +10,368,000 exp
            .@x=(AFKING >= 2592000 ? 4 : .@x);
            // Note: In the needed time (~4 months) you should be over 90 if you
            // were fighting instead...
            skill(TMW2_SPEECH, .@x, 0);
            AFKING+=1;
            npctalk3 l("%s, you're a good student. You will have a bright future if you keep studying.", strcharinfo(0));
            dispbottom l("Learning from seeing (aka. AFK-ing) skill LEVEL UP!!");
            break;
        }
        // There are no further upgrades to TMW2_SPEECH skill
        // You'll need to get the AFK Set if you want to level from 4 to 10.

    }
    deltimer(.name$+"::OnSpeeching"); // safeguard
    end;
}