summaryrefslogtreecommitdiff
path: root/npc/081-1/extra.txt
blob: 65b49f281b2f50aebb4bc24890b93163a516fdb4 (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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
// TMW Script.
// Author:
//    Jesusalva
// Notes:
//    Christmas 2021 - Extra NPCs & Code Injection

081-1,82,68,0	script	Nut Cracker	NPC330,{
    @npcname$ = "Nut Cracker";
    Banker();
    close;

OnInit:
    .distance=5;
    end;
}

081-1,69,82,0	script	Ol' Reset	NPC329,{
    @npcname$ = "Ol' Reset";
    StatReset();
    close;

OnInit:
    .distance=5;
    end;
}

081-1,57,49,0	script	Soul Menhir#Aethyr	NPC346,{
    @map$ = "081-1";
    setarray @Xs, 54, 54, 54, 55, 55, 55, 56;
    setarray @Ys, 52, 53, 54, 52, 53, 54, 54;
    @x = 0;
    @y = 0;
    callfunc "SoulMenhir";
    @map$ = "";
    cleararray @Xs[0], 0, 7;
    cleararray @Ys[0], 0, 7;
    @x = 0;
    @y = 0;
    close;
OnInit:
    .distance=5;
    end;
}

081-1,60,91,0	script	TMW Evolved Guide	NPC356,{
    mesn;
    mes "\""+l("Hello, and welcome to The Mana World: Evolved.");
    mes l("This is the server which will eventually take over TMW Legacy.")+"\"";
    next;
    mesn;
    mesq l("A few things are different here, you can read [@@https://wiki.themanaworld.org/index.php/Legacy:TMW_Evolved|on the wiki@@] some of the major differences.");
    select
        l("Thanks."),
        l("Learn more");
    mes "";
    if (@menu == 1) { closeclientdialog; close; }
    mesn;
    mesq l("For starters, magic skills are on F5 tab and no longer can be cast from chat. Drag'n'Drop them to the shortcut bars to use. You can also level them up if you have the points.");
    next;
    mesn;
    mesq l("To use magic, first select the target, and use the skill to unleash the magical attack. The next attack will only come when you use the skill again; unfortunately, it is NOT automatic.");
    next;
    mesn;
    mesq l("If you have unspent status points, you can level them up to 100. Focus skills work sightly different than on TMW Legacy. YOU NEED TO REFOCUS them!");
    next;
    mesn;
    mesq l("Your weight limit is a bit larger, but if it reaches 90% you will no longer be able to attack, so be careful.");
    next;
    mesn;
    mesq l("When you die, you'll be taken to the Soul Menhir you touched last. There is a Soul Menhir nearby, I advise touching it as soon as possible.");
    next;
    mesn;
    mesq l("Experience acquired here will be carried over to TMW Legacy once the event ends, as well as the event rewards. You can exchange the %s with GM Santa, the GM Team will be publishing the rules in turning these in level ups or ultra rare hats shortly.", getitemlink(Carrot));
    next;
    mesn;
    mesq l("The \"#world\" chat tab is bridged to #themanaworld-dev on IRC and Discord, you can quickly get in touch with the whole community and report bugs using it.");
    next;
    mesn;
    mesq l("Also, you may wish to use \"@resync\" or \"@resyncall\" if the monsters appear to vanish. That's mostly all, thanks for playing The Mana World. Contact staff if you need further assistance!");
    close;

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

081-1,47,74,0	script	Focus Master	NPC328,{
    while (true) {
        @pool = getskilllv(SKILL_POOL);
        @mallard = getskilllv(SKILL_MALLARDS_EYE);
        @brawling = getskilllv(SKILL_BRAWLING);
        @speed = getskilllv(SKILL_SPEED);
        @poison = getskilllv(SKILL_RESIST_POISON);
        @astralsoul = getskilllv(SKILL_ASTRAL_SOUL);
        @raging = getskilllv(SKILL_RAGING);

        mesn;
        mes "Your focusing skill level is " + @pool + ".";
        mes "Your mallard's eye skill level is " + @mallard + ".";
        mes "Your brawling skill level is " + @brawling + ".";
        mes "Your speed skill level is " + @speed + ".";
        mes "Your resist poison skill level is " + @poison + ".";
        mes "Your astral soul skill level is " + @astralsoul + ".";
        mes "Your raging skill level is " + @raging + ".";
        next;
        mes "";
        mes l("Focus list:");
        mesc l("%s : %s", l("Mallard's Eye"),
              (isfocused(SKILL_MALLARDS_EYE) ? l("Yes") : l("No")));
        mesc l("%s : %s", l("Brawling"),
              (isfocused(SKILL_BRAWLING) ? l("Yes") : l("No")));
        mesc l("%s : %s", l("Speed"),
              (isfocused(SKILL_SPEED) ? l("Yes") : l("No")));
        mesc l("%s : %s", l("Resist Ailment"),
              (isfocused(SKILL_RESIST_POISON) ? l("Yes") : l("No")));
        mesc l("%s : %s", l("Astral Soul"),
              (isfocused(SKILL_ASTRAL_SOUL) ? l("Yes") : l("No")));
        mesc l("%s : %s", l("Raging"),
              (isfocused(SKILL_RAGING) ? l("Yes") : l("No")));
        .@t=getactivatedpoolskilllist();
        menuint
            l("Back"), 0,
            ("Toggle Focus - Mallards Eye"), SKILL_MALLARDS_EYE,
            ("Toggle Focus - Brawling"), SKILL_BRAWLING,
            ("Toggle Focus - Speed"), SKILL_SPEED,
            ("Toggle Focus - Resist Ailment"), SKILL_RESIST_POISON,
            ("Toggle Focus - Astral Soul"), SKILL_ASTRAL_SOUL,
            ("Toggle Focus - Raging"), SKILL_RAGING;
        mes "";

        if (@menuret) {
            if (FOCUSING & getpoolskillFID(@menuret)) {
                unpoolskill(@menuret);
                mesc "Focus removed", 1;
            } else {
                .@s = poolskill(@menuret);
                if (.@s)
                    mesc "Focus added", 2;
                else
                    mesc sprintf("Impossible to focus. You can only focus %d skills at a time.", .@t), 1;
            }
        }
        else {
            break;
        }
    }
    mes "";
    mesn;
    mesq l("Come back again!");
    close;

OnInit:
    .distance=5;
    end;
}


081-2,90,288,0	script	#X21ADMIN	NPC_NO_SPRITE,{
    if (instance_id() < 0) end;
    if (!is_gm() && !is_admin()) goto L_Auto;
    clear;
    do
    {
    mes "Dungeon config";
    mes "--------------------";
    mesf("Puzzle 01: %d", 'XMAS21CANDLE);
    mesf("Puzzle 02: %d", 'XMAS21TREE);
    mesf("Puzzle 03: %d", 'XMAS21AMBUSH);
    mes "";
    mesf("Puzzle 01 Gate: %d", checkcell(getmap(), 105, 212, cell_chkpass));
    mesf("Puzzle 02 Gate: %d", checkcell(getmap(), 127, 128, cell_chkpass));
    mesf("Puzzle 03 Gate: %d", checkcell(getmap(),  49,  72, cell_chkpass));
    mes "";
    mesf("Boss Chamber Lock: %d", 'LOCKD);
    mes "";
    select
        "Close",
        "Toggle Candle",
        "Toggle Tree",
        "Toggle Ambush",
        "Unlock Boss Chamber",
        "Renew Instance",
        "Refresh gates";
    mes "";
    switch (@menu) {
    case 2: 'XMAS21CANDLE = !'XMAS21CANDLE; logmes("X21CANDLE", LOGMES_ATCOMMAND); break;
    case 3: 'XMAS21TREE = !'XMAS21TREE; logmes("X21TREE", LOGMES_ATCOMMAND); break;
    case 4: 'XMAS21AMBUSH = !'XMAS21AMBUSH; logmes("X21AMBUSH", LOGMES_ATCOMMAND); break;
    case 5: 'LOCKD = false; logmes("X21LOCK", LOGMES_ATCOMMAND); break;
    case 6: instance_set_timeout(1800, 1800); break;
    case 7: closeclientdialog; goto L_Auto; break;
    }
    } while (@menu != 1);
    closeclientdialog;
    close;

L_Auto:
    /* Attempt to fix Candle state */
    if (!'XMAS21CANDLE) {
        if (checkcell(getmap(), 105, 212, cell_chkpass))
            setcells getmap(), 103, 211, 107, 212, 1, "X21L1@"+X21ID();
    } else {
        if (!checkcell(getmap(), 105, 212, cell_chkpass))
            delcells "X21L1@"+X21ID();
    }

    /* Attempt to fix Seeds state */
    if (!'XMAS21TREE) {
        if (checkcell(getmap(), 127, 128, cell_chkpass))
            setcells getmap(), 124, 127, 131, 128, 1, "X21L2@"+X21ID();
    } else {
        if (!checkcell(getmap(), 127, 128, cell_chkpass))
            delcells "X21L2@"+X21ID();
    }

    /* Attempt to fix Ambush state */
    if (!'XMAS21AMBUSH) {
        if (checkcell(getmap(), 49, 72, cell_chkpass))
            setcells getmap(),  47,  71,  51,  72, 1, "X21L3@"+X21ID();
    } else {
        if (!checkcell(getmap(), 49, 72, cell_chkpass))
            delcells "X21L3@"+X21ID();
    }
    end;

OnPort:
    if (XMAS2021 & 32) end;
    mes l("To port your event results to ##BMoubootaur Legends##b");
    mes l("Please fill below your ##Bchar name##b on ML.");
    next;
    input .@nick$;
    if (.@nick$ == "") { closeclientdialog; close; }
    clear;
    mes l("Port your event results to: %s", col(b(.@nick$), 3));
    mesc l("Is this correct?"), 1;
    if (askyesno() == ASK_NO) { closeclientdialog; close; }
    .@msg$=sprintf("[\"events@moubootaurlegends.org\", \"User %s has requested event result porting to Moubootaur Legends.\n\nDestination: %s\nAID: %d\nCID: %d\n\n-- The Mana World Team\", \"Christmas 2021 Event Results\"]", strcharinfo(0), .@nick$, getcharid(3), getcharid(0));
    api_send(501, .@msg$);
    XMAS2021 = XMAS2021 | 32;
    close;

OnInit:
    .distance=1;
    bindatcmd "mouboo", "#X21ADMIN::OnPort", 0, 100, 1;
    end;
}

/* I hate this, but bugs must die, incl. M+ ones */
081-2,108,214,0	script	Button#X21chA1	NPC_NO_SPRITE,{
    @inst = instance_id() + 1;
    if (!'XMAS21CANDLE) {
        dispbottom l("Northern Lights")+" : "+l("The strong shall yield the %s to enlighten the way, according to the established sequence.", b(l("powder")));
        end;
    }
    slide 108, 211;
    end;

OnInit:
    .distance=1;
    end;
}
081-2,109,211,0	script	Button#X21chA2	NPC_NO_SPRITE,{
    @inst = instance_id() + 1;
    if (!'XMAS21CANDLE) {
        dispbottom l("Northern Lights")+" : "+l("The strong shall yield the %s to enlighten the way, according to the established sequence.", b(l("powder")));
        end;
    }
    slide 107, 214;
    end;

OnInit:
    .distance=1;
    end;
}

081-2,132,130,0	script	Button#X21chB1	NPC_NO_SPRITE,{
    if (!'XMAS21TREE) {
        dispbottom l("In this year Christmas, kids shall play ball. Once the Christmas Tree is set, the festivities may proceed.");
        end;
    }
    slide 131, 126;
    end;

OnInit:
    .distance=1;
    end;
}
081-2,132,126,0	script	Button#X21chB2	NPC_NO_SPRITE,{
    if (!'XMAS21TREE) {
        dispbottom l("In this year Christmas, kids shall play ball. Once the Christmas Tree is set, the festivities may proceed.");
        end;
    }
    slide 131, 130;
    end;

OnInit:
    .distance=1;
    end;
}

081-2,46,73,0	script	Button#X21chC1	NPC_NO_SPRITE,{
    if (!'XMAS21AMBUSH) {
        dispbottom l("One room, Seventeen buttons, Three truths, and a lever to bring joy to the children.");
        end;
    }
    slide 47, 70;
    end;

OnInit:
    .distance=1;
    end;
}
081-2,46,70,0	script	Button#X21chC2	NPC_NO_SPRITE,{
    if (!'XMAS21AMBUSH) {
        dispbottom l("One room, Seventeen buttons, Three truths, and a lever to bring joy to the children.");
        end;
    }
    slide 47, 73;
    end;

OnInit:
    .distance=1;
    end;
}