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
327
328
329
330
331
332
333
334
335
336
337
|
// TMW-2 Script.
// Author:
// Saulc
// Jesusalva
// Notes:
// Tulim banker, and also handles PCLogin events: CheckClientVersion, and bank
// Take care of server updates, but instances are defined on their ships.
003-3,36,34,0 script Malindou NPC_LLOYD,{
Banker(.name$, "Tulimshar", 10000);
close;
OnInit:
.sex = G_MALE;
.distance = 4;
// Update handler (use `date +%s` for this)
// Current UPDATE value: Qui Jun 7 08:10:55 -03 2018
if ($UPDATE < 1528369855) {
$UPDATE=1528369855;
debugmes "Warning.";
debugmes "Warning.";
debugmes "Warning: This introduces a server update:";
debugmes "";
debugmes "* Please create the imported guild";
debugmes "";
}
// Current UPDATE value: Dom Jun 17 21:32:45 -03 2018
if ($UPDATE < 1529281965) {
$UPDATE=1529281965;
debugmes "";
debugmes "* Please set #BankP for bankers";
debugmes "* Automatically creatining minimal GP reserves for Hasan Autumn's Quest";
debugmes "";
$HASAN_GP=rand(3,12)+rand(3,12)+rand(3,12);
}
// Current UPDATE value: Dom Jun 30 22:44:46 -03 2018
if ($UPDATE < 1530409486) {
$UPDATE=1530409486;
debugmes "";
debugmes "* Clearing invalid (deleted) items";
debugmes "";
DelItemFromEveryPlayer(729);
}
// Current UPDATE value: Qui Jul 12 02:40:02 -03 2018
if ($UPDATE < 1531374002) {
$UPDATE=1531374002;
debugmes "";
debugmes "* WARNING! WARNING! WARNING!";
debugmes "* ITEM ID VIOLATION DETECTED!";
debugmes "";
debugmes "* ALL POLISHED EMERALDS BECOME POLISHED AMETHYSTS, AND VICE-VERSA!";
debugmes "* This should not have an effect ingame.";
debugmes "";
}
// Current UPDATE value: Qui Ago 2 13:58:17 -03 2018
if ($UPDATE < 1533229097) {
$UPDATE=1533229097;
debugmes "";
debugmes "* ERASING all victories with Fafi Dragon";
debugmes "";
query_sql("UPDATE `quest` SET `count1` = '1' WHERE `quest`.`quest_id`="+LoFQuest_Fairy+" AND `count1` = '2'");
query_sql("UPDATE `quest` SET `count1` = '2' WHERE `quest`.`quest_id`="+LoFQuest_Fairy+" AND `count1` = '3'");
DelItemFromEveryPlayer(SkullMask);
}
// Current UPDATE value: Qua Ago 8 11:04:10 -03 2018
if ($UPDATE < 1533737050) {
$UPDATE=1533737050;
debugmes "";
debugmes "* REMOVING now rare items.";
debugmes "";
DelItemFromEveryPlayer(SilverMirror);
}
// Current UPDATE value: Seg Ago 27 20:20:21 -03 2018
if ($UPDATE < 1535412021) {
$UPDATE=1535412021;
debugmes "";
debugmes "* SETUP mana stone default values.";
debugmes "";
$MANA_BINT=30;
$MANA_BLVL=40;
$MANA_JLVL=10;
}
// Current UPDATE value: Qui Set 06 13:50:37 -03 2018
if ($UPDATE < 1536252637) {
$UPDATE=1536252637;
debugmes "";
debugmes "* Clearing invalid (deleted) items";
debugmes "* Initial Vault Values";
debugmes "";
DelItemFromEveryPlayer(802);
DelItemFromEveryPlayer(557);
$VAULT_01738039=rand(5,25);
}
// Current UPDATE value: Qui Set 13 14:17:50 -03 2018
if ($UPDATE < 1536859070) {
$UPDATE=1536859070;
debugmes "";
debugmes "* Aisen already have a completed node at PETMEMO.";
debugmes "* This was handled automatically, no special care is required.";
debugmes "";
}
// Current UPDATE value: Dom Set 16 22:21:05 -03 2018
if ($UPDATE < 1537147265) {
$UPDATE=1537147265;
debugmes "";
debugmes "* My Money quest state modified";
debugmes "* Foxhound Famine quest state modified";
debugmes "* Life Delight quest state modified"; // “A True Chef” is the LoF version of this quest
debugmes "";
query_sql("UPDATE `quest` SET `count1` = '1' WHERE `quest`.`quest_id`="+ShipQuests_ArpanMoney+" AND `count1` = '2'");
query_sql("UPDATE `quest` SET `count2` = `count1` WHERE `quest`.`quest_id`="+HalinarzoQuest_Foxhound+" AND `count1` >= '6'");
query_sql("UPDATE `quest` SET `count1` = '6' WHERE `quest`.`quest_id`="+HalinarzoQuest_Foxhound+" AND `count1` > '6'");
query_sql("UPDATE `quest` SET `count2` = `count1` WHERE `quest`.`quest_id`="+HalinarzoQuest_LifeDelight);
query_sql("UPDATE `quest` SET `count1` = '1' WHERE `quest`.`quest_id`="+HalinarzoQuest_LifeDelight+" AND `count1` > '1'");
}
// Current UPDATE value: Seg Set 17 16:02:27 -03 2018
if ($UPDATE < 1537210947) {
$UPDATE=1537210947;
debugmes "";
debugmes "* Referral Hack System";
debugmes "";
setarray $REFERRAL_IDS, 0;
}
// Current UPDATE value: Ter Out 16 17:17:20 -03 2018
// This is a hack because I'm too lazy to be bothered with standard SQL Upgrade system
if ($UPDATE < 1539721040) {
query_sql("CREATE TABLE IF NOT EXISTS `discord` (`account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',`discord_id` VARCHAR(255) NOT NULL DEFAULT '',`discord_name` VARCHAR(255) NOT NULL DEFAULT '',`verified` ENUM('0', '1') NOT NULL DEFAULT '0') ENGINE=MyISAM");
$UPDATE=1539721040;
$NIVALIS_LIBDATE=1539721040;
debugmes "";
debugmes "* SQL Upgrade (no effect on new installations)";
debugmes "* Nivalis Liberation Day event skipped";
debugmes "";
}
// Current UPDATE value: Dom Nov 18 17:40:30 -02 2018
// Update players position
if ($UPDATE < 1542570030) {
query_sql("UPDATE `char` SET `last_x` = '35' WHERE `char`.`last_map`='005-1'");
query_sql("UPDATE `char` SET `last_y` = '102' WHERE `char`.`last_map`='005-1'");
query_sql("UPDATE `char` SET `save_x` = '35' WHERE `char`.`save_map`='005-1'");
query_sql("UPDATE `char` SET `save_y` = '102' WHERE `char`.`save_map`='005-1'");
$UPDATE=1542570030;
debugmes "";
debugmes "* Update Candor players position";
debugmes "";
}
// Current UPDATE value: Sab Dez 15 21:45:15 -02 2018
// Upgrade every Wooden Sword in a Bug Slayer
if ($UPDATE < 1544917515) {
ReplaceItemFromEveryPlayer(WoodenSword, BugSlayer);
$UPDATE=1544917515;
debugmes "";
debugmes "* Replaced Wooden Swords with Bug Slayer";
debugmes "";
}
// Current UPDATE value: Sab Dez 17 13:52:54 -02 2018
// Fix a critical bug because Nard's ship doors logic was changed. Upgrade premium weapons in rare weapons
if ($UPDATE < 1545061974) {
//query_sql("UPDATE `quest` SET `count1` = '3' WHERE `quest`.`quest_id`='0' AND `quest`.`count1` = '2' AND `quest`.`char_id` IN (SELECT `quest`.`char_id` WHERE `quest`.`quest_id` = '12' AND `quest`.`count1`>='1')");
ReplaceItemFromEveryPlayer(MiereCleaver, LEGACY_MiereCleaver);
ReplaceItemFromEveryPlayer(Broadsword, LEGACY_Broadsword);
$UPDATE=1545061974;
debugmes "";
debugmes "* Replaced Miere Cleaver and Broad Sword with a special version specific for old players";
debugmes "* Fix critical bug with Nard (not needed on Main Server)";
debugmes "";
}
// Current UPDATE value: Qua Dez 26 21:45:10 -02 2018
// Update item id
if ($UPDATE < 1545867910) {
ReplaceItemFromEveryPlayer(6000, 9990);
ReplaceItemFromEveryPlayer(6001, 9991);
ReplaceItemFromEveryPlayer(6004, 9994);
ReplaceItemFromEveryPlayer(6005, 9995);
ReplaceItemFromEveryPlayer(9990, 6001);
ReplaceItemFromEveryPlayer(9991, 6000);
ReplaceItemFromEveryPlayer(9994, 6005);
ReplaceItemFromEveryPlayer(9995, 6004);
$UPDATE=1545867910;
debugmes "";
debugmes "* Update Bows IDs";
debugmes "";
}
// Current UPDATE value: Seg Dez 31 11:45:35 -02 2018
// Update players position (002-x). Update Peter Quest. Update Main quest.
if ($UPDATE < 1546263935) {
query_sql("UPDATE `char` SET `last_x` = '53' WHERE `char`.`last_map`='002-1'");
query_sql("UPDATE `char` SET `last_y` = '38' WHERE `char`.`last_map`='002-1'");
query_sql("UPDATE `char` SET `last_x` = '53' WHERE `char`.`last_map`='002-3'");
query_sql("UPDATE `char` SET `last_y` = '38' WHERE `char`.`last_map`='002-3'");
query_sql("UPDATE `char` SET `last_x` = '53' WHERE `char`.`last_map`='002-4'");
query_sql("UPDATE `char` SET `last_y` = '38' WHERE `char`.`last_map`='002-4'");
query_sql("UPDATE `quest` SET `count1` = '2' WHERE `quest`.`quest_id`="+ShipQuests_Peter+" AND `count1` >= '3'");
query_sql("UPDATE `quest` SET `count1` = '1' WHERE `quest`.`quest_id`="+General_Narrator+" AND `count1` >= '2'");
$UPDATE=1546263935;
debugmes "";
debugmes "* Update players position (Nard's Ship)";
debugmes "* Update Peter Quest";
debugmes "";
}
// Current UPDATE value: Ter Jan 8 11:14:04 -02 2019
// Update arrow IDs
if ($UPDATE < 1546953244) {
ReplaceItemFromEveryPlayer(CursedArrow, 9990);
ReplaceItemFromEveryPlayer(IronArrow, 9991);
ReplaceItemFromEveryPlayer(9990, IronArrow);
ReplaceItemFromEveryPlayer(9991, CursedArrow);
// Maybe we should make Tolchi Arrow greater than Training Arrow?
// PlatinumQuiver - DragonStar - MichelSoul
// Terranite Quiver was broken in two, they'll keep the weaker version
ReplaceItemFromEveryPlayer(1174, 9991);
ReplaceItemFromEveryPlayer(1175, 9992);
ReplaceItemFromEveryPlayer(1176, 9993);
ReplaceItemFromEveryPlayer(9991, 1175);
ReplaceItemFromEveryPlayer(9992, 1176);
ReplaceItemFromEveryPlayer(9993, 1177);
$UPDATE=1546953244;
debugmes "";
debugmes "* Update Arrows IDs";
debugmes "* Update Quiver IDs";
debugmes "";
}
// Current UPDATE value: Ter Jan 15 02:07:40 -02 2019
// Reset all thief/merc ranks back to 1.
// If
if ($UPDATE < 1547525260) {
// Already rank 2? Give enough exp to get rank 2 easily.
query_sql("UPDATE `char_reg_num_db` SET `value` = '30' WHERE `char_reg_num_db`.`key`='THIEF_EXP' AND `char_reg_num_db`.`char_id` IN (SELECT `char_reg_num_db`.`char_id` WHERE `char_reg_num_db`.`key` = 'THIEF_RANK' AND `char_reg_num_db`.`value`>='2')");
// Didn't wanted to rank up? Reset exp to 30!
query_sql("UPDATE `char_reg_num_db` SET `value` = '30' WHERE `char_reg_num_db`.`key`='THIEF_EXP' AND `char_reg_num_db`.`value` >= '32' AND `char_reg_num_db`.`char_id` IN (SELECT `char_reg_num_db`.`char_id` WHERE `char_reg_num_db`.`key` = 'THIEF_RANK' AND `char_reg_num_db`.`value`<='1')");
// Already rank 2? Return to rank 1.
query_sql("UPDATE `char_reg_num_db` SET `value` = '1' WHERE `char_reg_num_db`.`key`='THIEF_RANK' AND `char_reg_num_db`.`value` >= '2'");
// The same thing, now for merchants
// Already rank 2? Give enough exp to get rank 2 easily.
query_sql("UPDATE `char_reg_num_db` SET `value` = '30' WHERE `char_reg_num_db`.`key`='MERC_EXP' AND `char_reg_num_db`.`char_id` IN (SELECT `char_reg_num_db`.`char_id` WHERE `char_reg_num_db`.`key` = 'MERC_RANK' AND `char_reg_num_db`.`value`>='2')");
// Didn't wanted to rank up? Reset exp to 30!
query_sql("UPDATE `char_reg_num_db` SET `value` = '30' WHERE `char_reg_num_db`.`key`='MERC_EXP' AND `char_reg_num_db`.`value` >= '32' AND `char_reg_num_db`.`char_id` IN (SELECT `char_reg_num_db`.`char_id` WHERE `char_reg_num_db`.`key` = 'MERC_RANK' AND `char_reg_num_db`.`value`<='1')");
// Already rank 2? Return to rank 1.
query_sql("UPDATE `char_reg_num_db` SET `value` = '1' WHERE `char_reg_num_db`.`key`='MERC_RANK' AND `char_reg_num_db`.`value` >= '2'");
$UPDATE=1547525260;
debugmes "";
debugmes "* Merc/Thief ranks reset to 1";
debugmes "Improving past rank 2 helps on minigame";
debugmes "";
}
// Current UPDATE value: Qui Fev 28 19:42:12 -03 2019
// Late fix for Nard Ship Bug
if ($UPDATE < 1551393732) {
query_sql("UPDATE `quest` SET `count1` = '3' WHERE `quest`.`quest_id`="+ShipQuests_Julia+" AND `count1` <= '2'");
$UPDATE=1551393732;
debugmes "";
debugmes "* Late fix for Nard Ship Bug";
debugmes "";
}
// Current UPDATE value: Qui Mar 7 23:15:54 -03 2019
// Map Update
if ($UPDATE < 1552011354) {
query_sql("UPDATE `char` SET `last_x` = '22' WHERE `char`.`last_map`='014-3'");
query_sql("UPDATE `char` SET `last_y` = '22' WHERE `char`.`last_map`='014-3'");
query_sql("UPDATE `char` SET `last_map` = '000-1' WHERE `char`.`last_map`='014-3'");
query_sql("UPDATE `char` SET `last_x` = '22' WHERE `char`.`last_map`='003-1'");
query_sql("UPDATE `char` SET `last_y` = '22' WHERE `char`.`last_map`='003-1'");
query_sql("UPDATE `char` SET `last_map` = '000-1' WHERE `char`.`last_map`='003-1'");
$UPDATE=1552011354;
debugmes "";
debugmes "* Map Updates";
debugmes "";
}
// This mensures Contributors Credits, and changes only during updates.
// All names in lower case. standard: 100 points. Non-TMW2 contributors
// should be disregarded if they're not involved with the project.
// You may get more points for complexity, difficulty, usability, etc.
// You may get less points if you don't do it yourself, eg. a bug report.
// Relevance of the contribution is also to be taken in account.
// See 003-2/lua.txt for rewards
$@CONTRIBUTORS = htnew;
htput($@CONTRIBUTORS, "jesusalva", 15000);
htput($@CONTRIBUTORS, "saulc", 12500);
htput($@CONTRIBUTORS, "lawncable", 1800);
htput($@CONTRIBUTORS, "polaczka", 700);
htput($@CONTRIBUTORS, "crazyfefe", 671);
htput($@CONTRIBUTORS, "4144", 550);
htput($@CONTRIBUTORS, "mishana", 500);
htput($@CONTRIBUTORS, "soren", 450);
htput($@CONTRIBUTORS, "rakinorf", 400);
htput($@CONTRIBUTORS, "pookie", 360);
htput($@CONTRIBUTORS, "xtreem", 340);
htput($@CONTRIBUTORS, "acsvln", 260);
htput($@CONTRIBUTORS, "ayruss", 210);
htput($@CONTRIBUTORS, "dustman", 175);
htput($@CONTRIBUTORS, "arthur", 110);
htput($@CONTRIBUTORS, "ichigoblack",100);
htput($@CONTRIBUTORS, "gnulinux", 90);
htput($@CONTRIBUTORS, "skydragon", 75);
htput($@CONTRIBUTORS, "xanthem", 46);
htput($@CONTRIBUTORS, "liangtai", 36);
htput($@CONTRIBUTORS, "msawis", 30);
htput($@CONTRIBUTORS, "xanthem", 28);
htput($@CONTRIBUTORS, "dragonstar", 26);
htput($@CONTRIBUTORS, "demure", 22);
htput($@CONTRIBUTORS, "aisen", 8);
htput($@CONTRIBUTORS, "john h", 2);
htput($@CONTRIBUTORS, "krists", 2);
htput($@CONTRIBUTORS, "filhote", 1);
//htput($@CONTRIBUTORS, "", 1);
end;
OnPCLoginEvent:
checkclientversion;
if (#MerchantBank) {
BankVault += max(0, #MerchantBank);
#MerchantBank = 0;
}
end;
}
|