summaryrefslogtreecommitdiff
path: root/npc/002-3/elmo.txt
blob: f0f9b5d44dbf1c8c631e6ba87a569f32685470fc (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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
// TMW2 Script.
// Authors:
//    Jesusalva
// Description:
//    Elmo's second dialog. He is Nard's deputy and second-in-command.
//    Elmo was created in Evol by Qwerty Dragon and Reid
// TODO: allows smart noobs (<15) get EXP Bonus (20%)

002-3,32,24,0	script	Elmo	NPC_ELMO,{
    function ExpBoost;
    showavatar NPC_ELMO;  // this is handled by avatars.xml

    // Core functions
    if (BaseLevel < 15)
        ExpBoost();

    if (getq(ShipQuests_Julia) < 3) goto L_NotYet;
    if (getq(CandorQuest_Sailors) == 2) goto L_Party;
    if (LOCATION$ == "Candor" && rand(1,7) != 5) goto L_Candor;

    // TODO: NPC looking at task schedule and stuff
    mesn;
    if (rand(1,2) == 1)
        mesq l("Ah, @@ seems to be behind the @@ schedule again...", any("Juliet", "Billy Bons", "Chef Gado", "Dan", "Devis", "Peter"), any(l("cleaning"), l("stocking")));
    else
        mesq l("Uhm, @@ seems to have finished their scheduled tasks again... If they were so diligent in cleaning and stocking, though...", any("Nard", "Elmo", "Juliet", "Chef Gado", "Dan", "Peter"));

    close;

L_NotYet:
    mesn;
    mes l("I'm not the Captain, Nard is.");
    mes l("You should talk to him instead.");
    close;

L_Candor:
    mesn;
    if (getq(General_Narrator) < 1) mes l("\"Hey, have you already got the money necessary for the travel?");
    if (getq(General_Narrator) < 1) mes l("If you haven't, maybe there are a few things you can do besides selling items.\"");
    if (getq(General_Narrator) >= 1) mesq l("Maybe there are things in Candor which still require your attention? I overheard some of them.");
    next;

    mes "";

    // Valon Quest
    .@q=getq(CandorQuest_Trainer);
    if (.@q < 1) {
        mesc l("##BFirst and foremost, you should talk to Trainer, inside the big house.##b"), 1;
        mes l("Besides being able to train you, he is a walking encyclopedia - Ask him anything you are unsure about!");
        next;
        mes l("To find him, just leave the ship and turn left. You should also touch the Soul Menhir when you leave this ship.");
        mes l("The Soul Menhir will attach your soul, so when you die, you'll appear where you last touched it.");
        close;
    } else if (.@q < 12) {
        mes l("- Inside the big house is someone who can train you. All experience is handy!");
    }

    // Barrel Quest
    .@q=getq(CandorQuest_Barrel);
    if (.@q < 4)
        mes l("- I think you can help the storehouse for some quick cash.");

    // Kids Quest
    .@q=getq(CandorQuest_HAS);
    if (.@q < 4)
        mes l("- You can always play with kids. Not very profitable, though.");

    // Sailors Quest
    .@q=getq(CandorQuest_Sailors);
    if (.@q < 3)
        mes l("- Some of our crew are missing. They're probably wasting their time at beach.");

    // Vincent Quest
    .@q=getq(CandorQuest_Vincent);
    if (.@q < 2)
        mes l("- I overheard rumors about a festival. Maybe someone needs help with their figurine?");

    // Tolchi Quest
    .@q=getq(CandorQuest_Tolchi);
    if (.@q < 2)
        mes l("- The weapon master, Tolchi, could use your help. But she will most likely force you to visit Tulimshar in the end.");

    // Maya Quest
    .@q=getq(CandorQuest_Maya);
    if (.@q < 4)
        mes l("- There is a woman walking on the island, called Maya. Once she realises you're willing to help, she'll start paying well.");

    // Rosen Quest
    .@q=getq(CandorQuest_Rosen);
    if (.@q < 3)
        mes l("- The weapon seller, Rosen, wanted to help new players to improve their equipment.");

    // Nylo Quest
    .@q=getq(CandorQuest_Marggo);
    if (.@q < 1)
        mes l("- The farmer Nylo, who loves beer and money, seems to be having troubles with his crops.");

    // Ship Quests
    .@q1=getq(ShipQuests_Dan);
    .@q2=getq(ShipQuests_ChefGado);
    .@q3=getq(ShipQuests_Peter);
    if (.@q1 < 3 || .@q2 < 2 || .@q3 < 7)
        mes l("- Some sailors within this ship may need your help: Chef Gado, Dan, Peter... help them all and collect rewards!");

    // Report in an abstract way to the player how good they are at getting travel
    // discounts, and how much work is left to do. Some points are easy/required to get (eg. Dan, Peter, HAS, etc.)
    next;
    closeclientdialog;
    .@n=nard_reputation();
    if (.@n >= 15)
            npctalk3 l("Nard is truly amazed at you. I am impressed, too.");
    else if (.@n >= 13)
            npctalk3 l("Nard is amazed at you.");
    else if (.@n >= 11)
            npctalk3 l("Nard is very impressed, you're really a hard worker. Congrats!");
    else if (.@n >= 9)
            npctalk3 l("Nard is impressed, you're a hard worker.");
    else if (.@n >= 7)
            npctalk3 l("Nard noticed your hard work.");
    else if (.@n >= 5)
            npctalk3 l("Nard likes people who work hard. Work harder!");
    else if (.@n >= 3)
            npctalk3 l("You really should do some tasks to impress our captain.");
    else
            npctalk3 l("Nard doesn't like people who gets money without working for it.");

    end;

L_Party:
    mesn;
    mesq l("What? A party?");
    next;
    setq CandorQuest_Sailors, 3;
    getexp 25, 0;
    Zeny = (Zeny + 1000);
    mesq l("Alright, I'll show up later. Thanks for calling me. Here's 1000 GP for your efforts."); // With this, the final cost is 50 GP
    close;

function ExpBoost {
    mesn;
    mesq l("Hey there, @@! I see you are still a noob!", strcharinfo(0));
    next;
    mesn;
    mesq l("Well, I'll give you a hour of EXP RATE UP! How cool is that? Enjoy!");
    mesc l("This boost can be used until level 15."), 9;
    next;
    // Get the average level of top players to calculate EXP Boost
    // Level 100 ("max") = 25% EXP BOOST (max)
    // Current (2019-04-27) top is 80/80/75, meaning a 19% EXP Boost.
    // New rules which give 2x exp boost
    // Current (2019-08-31) top is 85/84/83, meaning a 42% EXP/DROP Boost.
    .@AVG_LEVEL=($@hoblvl_value[0]+$@hoblvl_value[1]+$@hoblvl_value[2])/3;
    .@BONUS=min(50, .@AVG_LEVEL/2);
    sc_end SC_CASH_PLUSEXP;
    sc_end SC_CASH_RECEIVEITEM;
    sc_start SC_CASH_PLUSEXP, 7200000, .@BONUS;
    sc_start SC_CASH_RECEIVEITEM, 7200000, .@BONUS;
    specialeffect FX_SPECIAL, SELF, getcharid(3);
    mesc l("EXP Gain raised in @@% for one hour!", .@BONUS), 2;
    return;
}

OnInit:
    .sex = G_MALE;
    .distance = 5;
    end;
}