summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/groups.conf2
-rw-r--r--conf/map/battle/limits.conf1
-rw-r--r--conf/map/maps.conf3
-rw-r--r--conf/map/script.conf10
-rw-r--r--conf/map/storage.conf5
-rw-r--r--db/constants.conf16
-rw-r--r--db/craft_db.conf81
-rw-r--r--db/job_db2.txt2
-rw-r--r--db/map_index.txt823
-rw-r--r--db/re/item_db.conf344
-rw-r--r--db/re/job_db.conf59
-rw-r--r--db/re/map_zone_db.conf89
-rw-r--r--db/re/mob_db.conf279
-rw-r--r--db/re/skill_tree.conf5
-rw-r--r--db/sc_config.conf6
-rw-r--r--langs/lang_de.old3
-rw-r--r--langs/lang_de.txt283
-rw-r--r--langs/lang_en.old3
-rw-r--r--langs/lang_en.txt283
-rw-r--r--langs/lang_es.txt281
-rw-r--r--langs/lang_fr.txt281
-rw-r--r--langs/lang_pt_BR.old3
-rw-r--r--langs/lang_pt_BR.txt283
-rw-r--r--langs/lang_ru.txt281
-rw-r--r--maps/re/001-15.mcachebin0 -> 389 bytes
-rw-r--r--maps/re/001-16.mcachebin0 -> 2349 bytes
-rw-r--r--maps/re/018-1.mcachebin365 -> 407 bytes
-rw-r--r--maps/re/024-1.mcachebin1183 -> 1183 bytes
-rw-r--r--maps/re/026-2.mcachebin493 -> 510 bytes
-rw-r--r--maps/re/026-6.mcachebin533 -> 548 bytes
-rw-r--r--maps/re/026-8.mcachebin0 -> 1475 bytes
-rw-r--r--npc/000-1/exit.txt6
-rw-r--r--npc/001-1/bgmaster.txt80
-rw-r--r--npc/001-1/eventmaster.txt9
-rw-r--r--npc/001-11/Soren.txt3
-rw-r--r--npc/001-15/_import.txt4
-rw-r--r--npc/001-15/_mobs.txt4
-rw-r--r--npc/001-15/ctrl.c960
-rw-r--r--npc/001-16/_import.txt4
-rw-r--r--npc/001-16/_mobs.txt9
-rw-r--r--npc/001-16/obelisk.c92
-rw-r--r--npc/003-0-1/professor.txt8
-rw-r--r--npc/003-0-1/statues.txt32
-rw-r--r--npc/003-11/alfred.txt20
-rw-r--r--npc/003-6/tamiloc.txt6
-rw-r--r--npc/004-2/mirio.txt2
-rw-r--r--npc/005-2/_mobs.txt2
-rw-r--r--npc/005-2/saxsochest.txt8
-rw-r--r--npc/006-4-1/_mobs.txt2
-rw-r--r--npc/006-5/groata.txt8
-rw-r--r--npc/006-7/ctrl.txt2
-rw-r--r--npc/009-2/_import.txt1
-rw-r--r--npc/009-2/books.txt160
-rw-r--r--npc/009-2/librarian.txt1
-rw-r--r--npc/014-5-1/objects.txt3
-rw-r--r--npc/014-5/events.txt8
-rw-r--r--npc/017-3/loratay.txt4
-rw-r--r--npc/018-2-1/dustman.txt2
-rw-r--r--npc/018-2-2/main.txt10
-rw-r--r--npc/019-4-1/ofelia.txt3
-rw-r--r--npc/020-7-1/sage.txt8
-rw-r--r--npc/024-1/john.txt20
-rw-r--r--npc/024-11/politics.txt7
-rw-r--r--npc/025-1/phoenix.txt14
-rw-r--r--npc/025-1/rum.txt1
-rw-r--r--npc/026-6/_mobs.txt2
-rw-r--r--npc/026-6/_warps.txt22
-rw-r--r--npc/026-6/ctrl.c53
-rw-r--r--npc/026-7/boss.txt6
-rw-r--r--npc/026-8/_import.txt5
-rw-r--r--npc/026-8/_mobs.txt11
-rw-r--r--npc/026-8/_warps.txt (renamed from npc/soren-2/_warps.txt)4
-rw-r--r--npc/026-8/ctrl.c64
-rw-r--r--npc/031-3/cook.txt10
-rw-r--r--npc/034-4/exit.txt3
-rw-r--r--npc/034-4/storage.txt2
-rw-r--r--npc/042-11/boss.txt4
-rw-r--r--npc/042-3/jail.txt17
-rw-r--r--npc/_import.txt3
-rw-r--r--npc/commands/event.txt3
-rw-r--r--npc/commands/kami.txt13
-rw-r--r--npc/commands/rate-management.txt6
-rw-r--r--npc/config/location.txt10
-rw-r--r--npc/config/magic.txt9
-rw-r--r--npc/config/traps.txt4
-rw-r--r--npc/craft/alchemy.txt12
-rw-r--r--npc/craft/cooking.txt7
-rw-r--r--npc/craft/price.txt9
-rw-r--r--npc/craft/recipes.txt14
-rw-r--r--npc/craft/smith.txt7
-rw-r--r--npc/dev/test.txt51
-rw-r--r--npc/functions/aurora.txt4
-rw-r--r--npc/functions/clientversion.txt12
-rw-r--r--npc/functions/dungeon.txt113
-rw-r--r--npc/functions/event.txt12
-rw-r--r--npc/functions/hub.txt145
-rw-r--r--npc/functions/math.txt32
-rw-r--r--npc/functions/maze.txt10
-rw-r--r--npc/functions/mobpoint.txt2
-rw-r--r--npc/functions/mobspecial.txt30
-rw-r--r--npc/functions/treasure.txt9
-rw-r--r--npc/functions/util.txt32
-rw-r--r--npc/guilds/logs.txt14
-rw-r--r--npc/items/books.txt109
-rw-r--r--npc/items/grenade.txt2
-rw-r--r--npc/items/inc_sc_bonus.txt20
-rw-r--r--npc/items/legacy_heal.txt6
-rw-r--r--npc/items/rand_mp_heal.txt6
-rw-r--r--npc/items/rand_sc_heal.txt6
-rw-r--r--npc/items/shovel.txt3
-rw-r--r--npc/items/teleporter.txt6
-rw-r--r--npc/scripts.conf1
-rw-r--r--npc/soren-2/_import.txt1
-rw-r--r--npc/soren-2/main.txt16
114 files changed, 5243 insertions, 628 deletions
diff --git a/conf/groups.conf b/conf/groups.conf
index 6d722632d..2af0e1fce 100644
--- a/conf/groups.conf
+++ b/conf/groups.conf
@@ -115,6 +115,7 @@ groups: (
mobinfo: true
iteminfo: true
whodrops: true
+ mapinfo: true
}
log_commands: false
permissions: {
@@ -159,7 +160,6 @@ groups: (
whomap: true
whomap2: true
whomap3: true
- mapinfo: true
gat: true
mobsearch: true
idsearch: true
diff --git a/conf/map/battle/limits.conf b/conf/map/battle/limits.conf
index d61e4ea2c..bce04a451 100644
--- a/conf/map/battle/limits.conf
+++ b/conf/map/battle/limits.conf
@@ -25,6 +25,7 @@
//= along with this program. If not, see <http://www.gnu.org/licenses/>.
//=========================================================================
// Battle (Limits) Configuration File
+// Most of them are redefined in plugin/status.c so edit both!
//=========================================================================
// basic attack limits
diff --git a/conf/map/maps.conf b/conf/map/maps.conf
index c519766e8..cda185bc9 100644
--- a/conf/map/maps.conf
+++ b/conf/map/maps.conf
@@ -19,6 +19,8 @@ map_list: (
"001-13-6",
"001-13",
"001-14",
+ "001-15",
+ "001-16",
"001-2",
"001-3-1",
"001-3",
@@ -294,6 +296,7 @@ map_list: (
"026-3",
"026-6",
"026-7",
+ "026-8",
"027-0",
"027-1",
"027-2",
diff --git a/conf/map/script.conf b/conf/map/script.conf
index 802ce2538..76beb33ce 100644
--- a/conf/map/script.conf
+++ b/conf/map/script.conf
@@ -59,6 +59,16 @@ script_configuration: {
// Defaults to INT_MAX.
//input_max_value: 2147483647
input_max_value: 10000000
+
+ // Specifies whether functions not explicitly marked with a "private" or
+ // "public" keyword should be treated as "private" by default.
+ // Default: true
+ functions_private_by_default: true
+
+ // Specifies whether public functions can be invoked as NPC events. This
+ // allows, for example, to use a `public function OnDeath { ... }` instead
+ // of a `OnDeath:` label for mob death events.
+ functions_as_events: false
}
import: "conf/import/script.conf"
diff --git a/conf/map/storage.conf b/conf/map/storage.conf
index 82d3144bc..ae36ebde8 100644
--- a/conf/map/storage.conf
+++ b/conf/map/storage.conf
@@ -69,4 +69,9 @@ storage_conf: (
Name: "Deluxe Storage"
Capacity: 500
},
+{
+ Id: 6
+ Name: "Temporary Storage"
+ Capacity: 180
+},
)
diff --git a/db/constants.conf b/db/constants.conf
index ec4061a0e..abece060f 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -151,6 +151,7 @@ constants_db: {
mf_pairship_endable: 58
mf_nostorage: 59
mf_nogstorage: 60
+ mf_nopet: 61
comment__: "Cell Properties"
cell_walkable: 0
@@ -1632,6 +1633,7 @@ constants_db: {
Ukar: 7
Redy: 8
Savior: 9
+ Skelli: 20
comment__: "directions"
DOWN: 0
@@ -1894,6 +1896,8 @@ constants_db: {
NPC_SASHA: 282
NPC_BLANC: 283
NPC_STOVE: 284
+ NPC_TIKI: 285
+ NPC_ML_CIRCLE: 286
// TMW-BR Non Animated NPCs
NPC_SHOPPAKEP: 301
@@ -2165,6 +2169,7 @@ constants_db: {
TP_LILIT: 256
TP_CANDOR: 512
TP_ARTIS: 1024
+ TP_HEART: 2048
comment__: "Grand Collector Quest enum"
COLLECT_CHESTPLATE: 1
@@ -2371,6 +2376,17 @@ constants_db: {
MERCQ_SCOUT: 3
MERCQ_NONE: 9
+ comment__: "Final Showdown Constants"
+ ML_MAPMODE_PVP: 1
+ ML_MAPMODE_DOT: 2
+ ML_MAPMODE_NOHEAL: 3
+ ML_MAPMODE_NOMANA: 4
+ ML_MAPMODE_NOBOOST: 5
+ ML_MAPMODE_NOMAGIC: 6
+ ML_MAPMODE_NOCHAT: 7
+ ML_MAPMODE_PAY2KILL: 8
+ ML_MAPMODE_NOPETS: 9
+
comment__: "Mirror Lake Server Identifiers"
WORLD_ID: 2
MLP_CR: 1
diff --git a/db/craft_db.conf b/db/craft_db.conf
index 438bd858c..3f870f683 100644
--- a/db/craft_db.conf
+++ b/db/craft_db.conf
@@ -4691,4 +4691,85 @@ craft_db: (
Priority: 10
},
/****************************************************************************/
+
+// Alchemy System Additional (ID 251~300, Flag 8)
+//////////////////////////////////////////////////////////////////////////////
+{
+ Id: 251
+ Name: "CraftStrPotionA"
+ Flag: 8
+ SourceItems:
+ (
+ {
+ RubyPowder: 1
+ HerbalTea: 1
+ },
+ )
+ CreateItems:
+ (
+ {
+ StrPotionA: 3
+ },
+ {
+ StrPotionA: 2
+ },
+ {
+ StrPotionA: 2
+ },
+ )
+ Priority: 10
+},
+/****************************************************************************/
+{
+ Id: 252
+ Name: "CraftStrPotionB"
+ Flag: 8
+ SourceItems:
+ (
+ {
+ Ruby: 1
+ HerbalTea: 2
+ },
+ )
+ CreateItems:
+ (
+ {
+ StrPotionB: 3
+ },
+ {
+ StrPotionB: 2
+ },
+ {
+ StrPotionB: 2
+ },
+ )
+ Priority: 10
+},
+/****************************************************************************/
+{
+ Id: 253
+ Name: "CraftStrPotionC"
+ Flag: 8
+ SourceItems:
+ (
+ {
+ PolishedRuby: 1
+ HerbalTea: 3
+ },
+ )
+ CreateItems:
+ (
+ {
+ StrPotionC: 3
+ },
+ {
+ StrPotionC: 2
+ },
+ {
+ StrPotionC: 2
+ },
+ )
+ Priority: 10
+},
+/****************************************************************************/
)
diff --git a/db/job_db2.txt b/db/job_db2.txt
index e1980cca9..56ee8bca5 100644
--- a/db/job_db2.txt
+++ b/db/job_db2.txt
@@ -34,6 +34,8 @@
8,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,3,0,0,6,5,4,2,3,0,1,4,0,0,6,5,0,2,3,0,1,4,0
// Savior (max level = 150)
9,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6,1,2,3,4,5,6,0,1,2,3,4,5,6,0,1,2,3,4,5,6
+// Skelli (no bonuses)
+30,0,0,0,0,0,0,0,0,0,0
// Particles
// 1 = STR increased by 1 at this job level
diff --git a/db/map_index.txt b/db/map_index.txt
index a918dbf1c..32e7a4cd0 100644
--- a/db/map_index.txt
+++ b/db/map_index.txt
@@ -16,413 +16,416 @@
001-13-6 16
001-13 17
001-14 18
-001-2 19
-001-3-1 20
-001-3 21
-001-4 22
-001-5 23
-001-6 24
-001-7 25
-001-8 26
-001-9 27
-002-1 28
-002-2 29
-002-3 30
-002-4 31
-002-5 32
-003-0-1 33
-003-0-2 34
-003-0-3 35
-003-0 36
-003-1-1 37
-003-1-2 38
-003-1-3 39
-003-1 40
-003-10 41
-003-11 42
-003-13 43
-003-2-1 44
-003-2 45
-003-3 46
-003-4-1 47
-003-4 48
-003-5 49
-003-6 50
-003-7 51
-003-8 52
-003-9-1 53
-003-9 54
-004-1 55
-004-2-1 56
-004-2-10 57
-004-2-11 58
-004-2-12 59
-004-2-2 60
-004-2-3 61
-004-2-4 62
-004-2-5 63
-004-2-6 64
-004-2-7 65
-004-2-8 66
-004-2-9 67
-004-2 68
-004-3-1 69
-004-3-2 70
-004-3-3 71
-004-3-4 72
-004-3-5 73
-004-3-6 74
-004-3 75
-005-1-1 76
-005-1 77
-005-2-1 78
-005-2 79
-005-3 80
-005-4 81
-005-5 82
-005-6 83
-005-7 84
-006-0 85
-006-1 86
-006-10 87
-006-2-1 88
-006-2-2 89
-006-2-3 90
-006-2-4 91
-006-2-5 92
-006-2-6 93
-006-2 94
-006-3 95
-006-4-1 96
-006-4 97
-006-5 98
-006-6 99
-006-7 100
-006-8 101
-006-9 102
-007-1-1 103
-007-1-2 104
-007-1 105
-007-2 106
-008-0 107
-008-1 108
-008-2 109
-009-1 110
-009-2 111
-009-3 112
-009-4 113
-009-5 114
-009-6 115
-009-7 116
-009-8 117
-010-1-1 118
-010-1-10 119
-010-1-11 120
-010-1-12 121
-010-1-2 122
-010-1-3 123
-010-1-4 124
-010-1-5 125
-010-1-6 126
-010-1-7 127
-010-1-8 128
-010-1-9 129
-010-1 130
-010-2-10 131
-010-2-11 132
-010-2-12 133
-010-2-13 134
-010-2-14 135
-010-2-15 136
-010-2-16 137
-010-2-2 138
-010-2-3 139
-010-2-4 140
-010-2-5 141
-010-2-6 142
-010-2-7 143
-010-2-8 144
-010-2-9 145
-010-2 146
-010-3 147
-010-4-1 148
-010-4-2 149
-011-1 150
-011-2 151
-011-3 152
-011-4 153
-012-1 154
-012-2 155
-012-3 156
-012-4 157
-012-5 158
-012-6 159
-012-7 160
-012-8 161
-013-1 162
-014-1 163
-014-2-1 164
-014-2-2 165
-014-2 166
-014-3 167
-014-4 168
-014-5-1 169
-014-5 170
-015-1 171
-015-2 172
-015-3-1 173
-015-3-2 174
-015-3-3 175
-015-3 176
-015-4 177
-015-5 178
-015-6 179
-015-7 180
-015-8-1 181
-015-8 182
-016-1 183
-016-6 184
-016-7 185
-016-8 186
-017-0 187
-017-1 188
-017-10 189
-017-2-1 190
-017-2-2 191
-017-2 192
-017-3 193
-017-4 194
-017-5 195
-017-6 196
-017-7 197
-017-8 198
-018-1-1 199
-018-1 200
-018-2-1 201
-018-2-2 202
-018-2-3 203
-018-2-4 204
-018-2-5 205
-018-2-6 206
-018-2-7 207
-018-2-8 208
-018-2 209
-018-3 210
-018-4-1 211
-018-4-2 212
-018-4 213
-018-5-0 214
-018-5-1 215
-018-5-2 216
-018-5-3 217
-018-5-4 218
-018-5-5 219
-018-5-6 220
-018-5-boss 221
-018-5 222
-018-6-0 223
-018-6-1 224
-018-6-2 225
-018-6-3 226
-018-7-1 227
-018-7 228
-018-8 229
-019-1-1 230
-019-1 231
-019-2 232
-019-3 233
-019-4-1 234
-019-4 235
-019-5-1 236
-019-5-2 237
-019-5-3 238
-019-5 239
-019-6 240
-020-1 241
-020-2 242
-020-3 243
-020-4 244
-020-5 245
-020-6 246
-020-7-1 247
-020-7-2 248
-020-7 249
-020-8 250
-021-0 251
-021-1 252
-021-2 253
-021-3 254
-021-4 255
-022-1 256
-023-1 257
-023-2 258
-023-3-1 259
-023-3-2 260
-023-3 261
-023-4 262
-024-1 263
-024-10 264
-024-11 265
-024-12 266
-024-13 267
-024-14 268
-024-15 269
-024-16 270
-024-2 271
-024-3 272
-024-4 273
-024-5 274
-024-6 275
-024-7 276
-024-8 277
-024-9 278
-025-1 279
-025-2-1 280
-025-2-2 281
-025-2-3 282
-025-2-4 283
-025-2 284
-025-3 285
-025-4-1 286
-025-4 287
-026-0 288
-026-1 289
-026-2 290
-026-3 291
-026-6 292
-026-7 293
-027-0 294
-027-1 295
-027-2 296
-027-3 297
-027-4 298
-027-5 299
-027-6 300
-027-7 301
-029-0 302
-029-1 303
-029-2 304
-029-3 305
-029-4 306
-029-5 307
-029-6 308
-029-7 309
-029-8 310
-029-9 311
-030-01 312
-030-02 313
-030-03 314
-030-04 315
-030-05 316
-030-06 317
-030-07 318
-030-08 319
-030-09 320
-030-10 321
-030-11 322
-030-12 323
-030-13 324
-030-14 325
-030-15 326
-030-16 327
-030-17 328
-030-18 329
-030-19 330
-030-20 331
-030-21 332
-030-22 333
-030-23 334
-030-24 335
-030-25 336
-030-26 337
-030-27 338
-030-28 339
-030-29 340
-030-30 341
-030-31 342
-030-32 343
-030-33 344
-030-34 345
-030-35 346
-030-36 347
-030-37 348
-030-38 349
-030-39 350
-030-40 351
-030-41 352
-030-42 353
-030-43 354
-030-44 355
-030-45 356
-030-46 357
-030-47 358
-030-48 359
-030-49 360
-030-50 361
-030-51 362
-030-52 363
-030-53 364
-030-54 365
-030-55 366
-030-56 367
-030-57 368
-030-58 369
-030-59 370
-030-60 371
-030-61 372
-030-62 373
-030-63 374
-030-64 375
-030-65 376
-030-66 377
-030-67 378
-030-68 379
-030-69 380
-030-70 381
-030-71 382
-030-72 383
-030-73 384
-030-74 385
-030-75 386
-031-0 387
-031-1 388
-031-2 389
-031-3 390
-031-4 391
-031-5 392
-031-6 393
-031-7 394
-031-8 395
-031-9 396
-032-1 397
-032-2 398
-032-3 399
-032-4 400
-032-5 401
-033-1 402
-033-2 403
-033-3 404
-033-4 405
-033-5 406
-034-1 407
-034-2 408
-034-3 409
-034-4 410
-042-0 411
-042-1 412
-042-10 413
-042-11 414
-042-2 415
-042-3 416
-042-4 417
-042-5 418
-042-6 419
-042-7 420
-042-8 421
-042-9 422
-boss 423
-botcheck 424
-guilds 425
-sec_pri 426
-soren-2 427
-soren 428
+001-15 19
+001-16 20
+001-2 21
+001-3-1 22
+001-3 23
+001-4 24
+001-5 25
+001-6 26
+001-7 27
+001-8 28
+001-9 29
+002-1 30
+002-2 31
+002-3 32
+002-4 33
+002-5 34
+003-0-1 35
+003-0-2 36
+003-0-3 37
+003-0 38
+003-1-1 39
+003-1-2 40
+003-1-3 41
+003-1 42
+003-10 43
+003-11 44
+003-13 45
+003-2-1 46
+003-2 47
+003-3 48
+003-4-1 49
+003-4 50
+003-5 51
+003-6 52
+003-7 53
+003-8 54
+003-9-1 55
+003-9 56
+004-1 57
+004-2-1 58
+004-2-10 59
+004-2-11 60
+004-2-12 61
+004-2-2 62
+004-2-3 63
+004-2-4 64
+004-2-5 65
+004-2-6 66
+004-2-7 67
+004-2-8 68
+004-2-9 69
+004-2 70
+004-3-1 71
+004-3-2 72
+004-3-3 73
+004-3-4 74
+004-3-5 75
+004-3-6 76
+004-3 77
+005-1-1 78
+005-1 79
+005-2-1 80
+005-2 81
+005-3 82
+005-4 83
+005-5 84
+005-6 85
+005-7 86
+006-0 87
+006-1 88
+006-10 89
+006-2-1 90
+006-2-2 91
+006-2-3 92
+006-2-4 93
+006-2-5 94
+006-2-6 95
+006-2 96
+006-3 97
+006-4-1 98
+006-4 99
+006-5 100
+006-6 101
+006-7 102
+006-8 103
+006-9 104
+007-1-1 105
+007-1-2 106
+007-1 107
+007-2 108
+008-0 109
+008-1 110
+008-2 111
+009-1 112
+009-2 113
+009-3 114
+009-4 115
+009-5 116
+009-6 117
+009-7 118
+009-8 119
+010-1-1 120
+010-1-10 121
+010-1-11 122
+010-1-12 123
+010-1-2 124
+010-1-3 125
+010-1-4 126
+010-1-5 127
+010-1-6 128
+010-1-7 129
+010-1-8 130
+010-1-9 131
+010-1 132
+010-2-10 133
+010-2-11 134
+010-2-12 135
+010-2-13 136
+010-2-14 137
+010-2-15 138
+010-2-16 139
+010-2-2 140
+010-2-3 141
+010-2-4 142
+010-2-5 143
+010-2-6 144
+010-2-7 145
+010-2-8 146
+010-2-9 147
+010-2 148
+010-3 149
+010-4-1 150
+010-4-2 151
+011-1 152
+011-2 153
+011-3 154
+011-4 155
+012-1 156
+012-2 157
+012-3 158
+012-4 159
+012-5 160
+012-6 161
+012-7 162
+012-8 163
+013-1 164
+014-1 165
+014-2-1 166
+014-2-2 167
+014-2 168
+014-3 169
+014-4 170
+014-5-1 171
+014-5 172
+015-1 173
+015-2 174
+015-3-1 175
+015-3-2 176
+015-3-3 177
+015-3 178
+015-4 179
+015-5 180
+015-6 181
+015-7 182
+015-8-1 183
+015-8 184
+016-1 185
+016-6 186
+016-7 187
+016-8 188
+017-0 189
+017-1 190
+017-10 191
+017-2-1 192
+017-2-2 193
+017-2 194
+017-3 195
+017-4 196
+017-5 197
+017-6 198
+017-7 199
+017-8 200
+018-1-1 201
+018-1 202
+018-2-1 203
+018-2-2 204
+018-2-3 205
+018-2-4 206
+018-2-5 207
+018-2-6 208
+018-2-7 209
+018-2-8 210
+018-2 211
+018-3 212
+018-4-1 213
+018-4-2 214
+018-4 215
+018-5-0 216
+018-5-1 217
+018-5-2 218
+018-5-3 219
+018-5-4 220
+018-5-5 221
+018-5-6 222
+018-5-boss 223
+018-5 224
+018-6-0 225
+018-6-1 226
+018-6-2 227
+018-6-3 228
+018-7-1 229
+018-7 230
+018-8 231
+019-1-1 232
+019-1 233
+019-2 234
+019-3 235
+019-4-1 236
+019-4 237
+019-5-1 238
+019-5-2 239
+019-5-3 240
+019-5 241
+019-6 242
+020-1 243
+020-2 244
+020-3 245
+020-4 246
+020-5 247
+020-6 248
+020-7-1 249
+020-7-2 250
+020-7 251
+020-8 252
+021-0 253
+021-1 254
+021-2 255
+021-3 256
+021-4 257
+022-1 258
+023-1 259
+023-2 260
+023-3-1 261
+023-3-2 262
+023-3 263
+023-4 264
+024-1 265
+024-10 266
+024-11 267
+024-12 268
+024-13 269
+024-14 270
+024-15 271
+024-16 272
+024-2 273
+024-3 274
+024-4 275
+024-5 276
+024-6 277
+024-7 278
+024-8 279
+024-9 280
+025-1 281
+025-2-1 282
+025-2-2 283
+025-2-3 284
+025-2-4 285
+025-2 286
+025-3 287
+025-4-1 288
+025-4 289
+026-0 290
+026-1 291
+026-2 292
+026-3 293
+026-6 294
+026-7 295
+026-8 296
+027-0 297
+027-1 298
+027-2 299
+027-3 300
+027-4 301
+027-5 302
+027-6 303
+027-7 304
+029-0 305
+029-1 306
+029-2 307
+029-3 308
+029-4 309
+029-5 310
+029-6 311
+029-7 312
+029-8 313
+029-9 314
+030-01 315
+030-02 316
+030-03 317
+030-04 318
+030-05 319
+030-06 320
+030-07 321
+030-08 322
+030-09 323
+030-10 324
+030-11 325
+030-12 326
+030-13 327
+030-14 328
+030-15 329
+030-16 330
+030-17 331
+030-18 332
+030-19 333
+030-20 334
+030-21 335
+030-22 336
+030-23 337
+030-24 338
+030-25 339
+030-26 340
+030-27 341
+030-28 342
+030-29 343
+030-30 344
+030-31 345
+030-32 346
+030-33 347
+030-34 348
+030-35 349
+030-36 350
+030-37 351
+030-38 352
+030-39 353
+030-40 354
+030-41 355
+030-42 356
+030-43 357
+030-44 358
+030-45 359
+030-46 360
+030-47 361
+030-48 362
+030-49 363
+030-50 364
+030-51 365
+030-52 366
+030-53 367
+030-54 368
+030-55 369
+030-56 370
+030-57 371
+030-58 372
+030-59 373
+030-60 374
+030-61 375
+030-62 376
+030-63 377
+030-64 378
+030-65 379
+030-66 380
+030-67 381
+030-68 382
+030-69 383
+030-70 384
+030-71 385
+030-72 386
+030-73 387
+030-74 388
+030-75 389
+031-0 390
+031-1 391
+031-2 392
+031-3 393
+031-4 394
+031-5 395
+031-6 396
+031-7 397
+031-8 398
+031-9 399
+032-1 400
+032-2 401
+032-3 402
+032-4 403
+032-5 404
+033-1 405
+033-2 406
+033-3 407
+033-4 408
+033-5 409
+034-1 410
+034-2 411
+034-3 412
+034-4 413
+042-0 414
+042-1 415
+042-10 416
+042-11 417
+042-2 418
+042-3 419
+042-4 420
+042-5 421
+042-6 422
+042-7 423
+042-8 424
+042-9 425
+boss 426
+botcheck 427
+guilds 428
+sec_pri 429
+soren-2 430
+soren 431
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 5c241e495..c0662747e 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -305,6 +305,8 @@ item_db: (
if (rand(10000) < 1000)
sc_start SC_POISON, 7000, 0;
callfunc("ItHeal2", 1, 2);
+ // Gives you 3 extra minutes of cooldown
+ @leechio=max(gettimetick(2), @leechio)+180;
">
},
{
@@ -610,6 +612,7 @@ item_db: (
sc_end SC_FROSTMISTY;
sc_end SC_VENOMBLEED;
sc_end SC_QUAGMIRE;
+ sc_end SC_MOVESLOW_POTION;
sc_end SC_FROSTMISTY;
sc_end SC_HALT_REGENERATION;
sc_end SC_BOTTER_SYNDROME;
@@ -620,6 +623,9 @@ item_db: (
@sickio=max(gettimetick(2), @sickio)+30;
@purifio=max(gettimetick(2), @purifio)+30;
@bleedio=max(gettimetick(2), @bleedio)+30;
+ @frostio=max(gettimetick(2), @frostio)+30;
+ @leechio=max(gettimetick(2), @leechio)+30;
+ @windyio=max(gettimetick(2), @windyio)+30;
">
},
{
@@ -1584,7 +1590,7 @@ item_db: (
noauction: true
}
Script: <"
- setarray .@r, StrangeCoin, StrangeCoin, StrangeCoin, StrangeCoin, StrangeCoin, SnakeEgg, StrengthPotion, HastePotion, Wurtzite, DwarvemSake, SaxsoKey, SilverOre, CelestiaTea, CursedAmmoBox, SilverRing;
+ setarray .@r, StrangeCoin, StrangeCoin, StrangeCoin, StrangeCoin, StrangeCoin, SnakeEgg, StrengthPotion, HastePotion, Wurtzite, DwarvenSake, SaxsoKey, SilverOre, CelestiaTea, CursedAmmoBox, SilverRing;
.@n=rand(getarraysize(.@r));
if (.@n > 4)
@@ -1874,6 +1880,7 @@ item_db: (
sc_start SC_POISON, 9000, 0, 3200;
callfunc("ItHeal", 3, 18, 40);
getitem EmptyBottle, 1;
+ @leechio=0;
">
},
{
@@ -2104,6 +2111,8 @@ item_db: (
if (rand(10000) < 6000)
sc_start callfunc("any", SC_POISON, SC_SILENCE, SC_POISON, SC_CONFUSE, SC_POISON, SC_POISON), rand(10000, 30000), 0;
itemheal 0, rand(10,200);
+ // Gives you 2 extra minutes of cooldown
+ @leechio=max(gettimetick(2), @leechio)+120;
">
},
{
@@ -2897,7 +2906,60 @@ item_db: (
doevent "inc_sc_bonus::OnUse";
">
},
-// Id 663~665 reserved Str+ potions
+{
+ Id: 663
+ AegisName: "StrPotionA"
+ Name: "Str Potion"
+ Type: "IT_USABLE"
+ Buy: 1000
+ Sell: 0
+ Weight: 20
+ Refine: false
+ Delay: 500
+ Script: <"
+ @min = 5;
+ @max = 10;
+ @delay = 120;
+ @type = SC_STR_SCROLL;
+ doevent "inc_sc_bonus::OnUse";
+ ">
+},
+{
+ Id: 664
+ AegisName: "StrPotionB"
+ Name: "Str+ Potion"
+ Type: "IT_USABLE"
+ Buy: 10000
+ Sell: 0
+ Weight: 20
+ Refine: false
+ Delay: 500
+ Script: <"
+ @min = 10;
+ @max = 20;
+ @delay = 105;
+ @type = SC_STR_SCROLL;
+ doevent "inc_sc_bonus::OnUse";
+ ">
+},
+{
+ Id: 665
+ AegisName: "StrPotionC"
+ Name: "Str++ Potion"
+ Type: "IT_USABLE"
+ Buy: 100000
+ Sell: 0
+ Weight: 20
+ Refine: false
+ Delay: 500
+ Script: <"
+ @min = 20;
+ @max = 30;
+ @delay = 90;
+ @type = SC_STR_SCROLL;
+ doevent "inc_sc_bonus::OnUse";
+ ">
+},
// Id 666 reserved (change sex candy)
{
Id: 667
@@ -3161,6 +3223,8 @@ item_db: (
sc_end SC_CURSE;
sc_end SC_BLIND;
percentheal 1, 10;
+ // Gives you 4 extra minutes of cooldown
+ @frostio=max(gettimetick(2), @frostio)+240;
">
},
{
@@ -5287,6 +5351,166 @@ item_db: (
Weight: 60
Refine: false
},
+{
+ Id: 891
+ AegisName: "MKeyWater"
+ Name: "Magical Key of Water"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 892
+ AegisName: "MKeyEarth"
+ Name: "Magical Key of Earth"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 893
+ AegisName: "MKeyFire"
+ Name: "Magical Key of Fire"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 894
+ AegisName: "MKeyWind"
+ Name: "Magical Key of Wind"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 895
+ AegisName: "MKeySacred"
+ Name: "Magical Key of Sacred"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 896
+ AegisName: "MKeyMana"
+ Name: "Magical Key of Mana"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 897
+ AegisName: "MKeyDeath"
+ Name: "Magical Key of Death"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
+{
+ Id: 898
+ AegisName: "MKeyEvil"
+ Name: "Magical Key of Evil"
+ Type: "IT_ETC"
+ Buy: 0
+ Sell: 0
+ Weight: 210
+ Refine: false
+ Trade: {
+ notrade: false
+ nodrop: false
+ nocart: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+},
// <!-- ID 900~910 Reserved -->
{
Id: 911
@@ -8189,6 +8413,31 @@ item_db: (
Loc: "EQP_GARMENT"
EquipLv: 24
Refine: false
+ Slots: 1
+ AllowCards: {
+ id5000: 1
+ id5001: 1
+ id5002: 1
+ id5003: 1
+ id5004: 1
+ id5005: 1
+ id5006: 1
+ id5007: 1
+ id5008: 1
+ id5009: 1
+ id5010: 1
+ id5011: 1
+ id5012: 1
+ id5013: 1
+ id5014: 1
+ id5015: 1
+ id5016: 1
+ id5017: 1
+ id5018: 1
+ id5019: 1
+ id5020: 1
+ id5021: 1
+ }
Script: <"
bonus bMatk,12;
bonus bMaxSP,10;
@@ -11523,6 +11772,9 @@ item_db: (
id5020: 1
id5021: 1
}
+ Script: <"
+ bonus bMaxSP,50;
+ ">
},
{
Id: 3028
@@ -11695,6 +11947,45 @@ item_db: (
id5021: 1
}
},
+{
+ Id: 3036
+ AegisName: "MoubootaurHead"
+ Name: "Moubootaur Head"
+ Type: "IT_ARMOR"
+ Buy: 16000
+ Sell: 3000
+ Weight: 80
+ Def: 5
+ Loc: "EQP_HEAD_TOP"
+ EquipLv: 150
+ Refine: false
+ Trade: {
+ notrade: true
+ nodrop: true
+ nocart: true
+ noselltonpc: true
+ nostorage: false
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ bonus bMaxHP, 2500;
+ bonus bDef2, 18+REBIRTH;
+ bonus bMdef, 3*REBIRTH;
+ if ($@GM_OVERRIDE) {
+ bonus bAllStats, 127;
+ bonus bMaxHP, 50000;
+ bonus bMaxSP, 10000;
+ bonus bAtk, 1000;
+ bonus bMatk, 1000;
+ bonus bHit, 1000;
+ bonus bFleeRate, 100;
+ bonus bAddMaxWeight, 10000;
+ bonus2 bHPRegenRate, 5000, 200;
+ }
+ ">
+},
// Neck Armor
{
@@ -14097,7 +14388,7 @@ item_db: (
bonus bMaxHP,-200;
bonus bAtk,(BaseLevel-60)*3;
bonus bCritical, min(5, BaseLevel/24);
- bonus2 bHPLossRate,2,800;
+ bonus bHPDrainValue, -4;
bonus bHitRate, -10;
bonus bMdefRate, -60;
bonus bMdef2Rate, -60;
@@ -14169,7 +14460,7 @@ item_db: (
bonus bDex, -(BaseLevel/10);
bonus bDef, -(BaseLevel*8/10);
bonus bCritical, min(20, BaseLevel/7); // Canon: /6
- bonus2 bHPLossRate,1,800;
+ bonus bHPDrainValue, -2;
bonus bFleeRate, -5;
bonus bMdefRate, -60;
bonus bMdef2Rate, -60;
@@ -14404,8 +14695,8 @@ item_db: (
bonus2 bResEff, Eff_Burning, 40;
bonus2 bResEff, Eff_Deepsleep, 40;
- // Equipment use is free after level 255 or during tests
- if (BaseLevel < 255 && !$@GM_OVERRIDE) {
+ // Equipment use is free after level 200 or during tests
+ if ((REBIRTH < 5 || BaseLevel < 200) && !$@GM_OVERRIDE) {
bonus bNoRegen,1;
bonus2 bSPLossRate,(255-BaseLevel)/30,(1000-(BaseLevel*2));
bonus2 bHPLossRate,(255-BaseLevel)/40,(1000-(BaseLevel*2));
@@ -16905,6 +17196,7 @@ item_db: (
bonus bCriticalRate,40;
bonus bAtk,(BaseLevel-70)*2;
bonus2 bAddEff,Eff_Stun,120;
+ bonus bHPGainValue, 100;
skill TMW2_OVERLOAD, min(10, getrefine());
">
},
@@ -19554,7 +19846,7 @@ item_db: (
noauction: true
}
Script: <"
- setarray .@r, MercBoxC, CrazyRum, Manapple, Dragonfruit, JasmineTea, TreasureMap, MysteriousBottle, Lockpicks, ArcmageBoxset, TreasureKey, CoinBag, WurtziteOre, ChocolateCake; // ~8.33% each
+ setarray .@r, MercBoxC, CrazyRum, Manapple, Dragonfruit, JasmineTea, TreasureMap, MysteriousBottle, Lockpicks, ArcmageBoxset, TreasureKey, CoinBag, Wurtzite, ChocolateCake; // ~8.33% each
.@n=rand(getarraysize(.@r));
getitem .@r[.@n], 1;
">
@@ -20298,6 +20590,44 @@ item_db: (
getitem 4005, 1;
">
},
+{
+ Id: 8068
+ AegisName: "LimePotion"
+ Name: "Moubootaur's Ointment"
+ Type: "IT_USABLE"
+ Buy: 30000
+ Sell: 100
+ Weight: 8
+ KeepAfterUse: false
+ Script: <"
+ MOUBOOTAUR_OINTMENT+=1;
+ ">
+},
+{
+ Id: 8069
+ AegisName: "EvilWarpCrystal"
+ Name: "Evil Warp Crystal"
+ Type: "IT_USABLE"
+ Buy: 0
+ Sell: 0
+ Weight: 40
+ Delay: 500
+ Trade: {
+ notrade: true
+ nodrop: true
+ nocart: true
+ noselltonpc: true
+ nostorage: false
+ nogstorage: true
+ nomail: true
+ noauction: true
+ }
+ Script: <"
+ @dest$="Endgame";
+ @itemid=8069;
+ doevent "Warp Crystal::OnUse";
+ ">
+},
)
diff --git a/db/re/job_db.conf b/db/re/job_db.conf
index 69529b3a0..bbefec971 100644
--- a/db/re/job_db.conf
+++ b/db/re/job_db.conf
@@ -362,3 +362,62 @@ Savior: {
InheritSP: ( "Human" );
}
+Skelli: {
+ BaseExpGroup: "EvolClasses"
+ JobExpGroup: "EvolClasses"
+ MoveSpeed: 160
+ Weight: 500
+ BaseASPD: {
+ Fist: 60
+ Dagger: 75
+ Sword: 77
+ Axe: 72
+ Mace: 72
+ Whip: 82
+ TwoHandMace: 95
+ TwoHandSpear: 89
+ Rod: 112
+ TwoHandRod: 112
+ Bow: 110
+ Knuckle: 40
+ Katar: 70
+ Revolver: 110
+ Rifle: 120
+ Shotgun: 100
+ GatlingGun: 56
+ }
+ HPTable:[ 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, // 1 - 10
+ 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, // 11 - 20
+ 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, // 21 - 30
+ 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, // 31 - 40
+ 500, 510, 520, 530, 540, 550, 560, 570, 580, 590, // 41 - 50
+ 600, 610, 620, 630, 640, 650, 660, 670, 680, 690, // 51 - 60
+ 700, 710, 720, 730, 740, 750, 760, 770, 780, 790, // 61 - 70
+ 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, // 71 - 80
+ 900, 910, 920, 930, 940, 950, 960, 970, 980, 990, // 81 - 90
+ 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, // 91 - 100
+ 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, // 101 - 110
+ 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, // 111 - 120
+ 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, // 121 - 130
+ 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, // 131 - 140
+ 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, // 141 - 150
+ 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069] // 151 - 160
+ SPTable:[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, // 1 - 10
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, // 11 - 20
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, // 21 - 30
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, // 31 - 40
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, // 41 - 50
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, // 51 - 60
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, // 61 - 70
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, // 71 - 80
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, // 81 - 90
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, // 91 - 100
+ 100, 101, 101, 102, 102, 103, 103, 104, 104, 105, // 101 - 110
+ 105, 106, 106, 107, 107, 108, 108, 109, 109, 110, // 111 - 120
+ 110, 111, 111, 112, 112, 113, 113, 114, 114, 115, // 121 - 130
+ 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, // 131 - 140
+ 120, 121, 121, 122, 122, 123, 123, 124, 124, 125, // 141 - 150
+ 125, 126, 126, 127, 127, 128, 128, 129, 129, 130] // 151 - 160
+}
+
+
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index f1e9a3c90..f4cbc86f6 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -158,6 +158,7 @@ zones: (
FrostiaWarpCrystal: true
LilitWarpCrystal: true
ArtisWarpCrystal: true
+ EvilWarpCrystal: true
ReturnPotion: true
}
@@ -561,6 +562,7 @@ zones: (
FrostiaWarpCrystal: true
LilitWarpCrystal: true
ArtisWarpCrystal: true
+ EvilWarpCrystal: true
ReturnPotion: true
RentCart: true
DeathPotion: true
@@ -650,6 +652,7 @@ zones: (
FrostiaWarpCrystal: true
LilitWarpCrystal: true
ArtisWarpCrystal: true
+ EvilWarpCrystal: true
ReturnPotion: true
DeathPotion: true
}
@@ -699,6 +702,92 @@ zones: (
}
},
{
+ /* FinalMMO Zone is not the place for GMs to mess with - Final Showdown */
+ name: "FinalMMO"
+
+ disabled_skills: {
+ AL_WARP: "ALL"
+ AL_TELEPORT: "ALL"
+ WE_CALLPARTNER: "ALL"
+ WE_CALLPARENT: "ALL"
+ WE_CALLBABY: "ALL"
+ SC_DIMENSIONDOOR: "ALL"
+ GD_EMERGENCYCALL: "ALL"
+ }
+
+ disabled_items: {
+ TimeFlask: true
+ CandorWarpCrystal: true
+ TulimWarpCrystal: true
+ HalinWarpCrystal: true
+ HurnsWarpCrystal: true
+ LoFWarpCrystal: true
+ NivalWarpCrystal: true
+ FrostiaWarpCrystal: true
+ LilitWarpCrystal: true
+ ArtisWarpCrystal: true
+ EvilWarpCrystal: true
+ ReturnPotion: true
+ // Should we disable mounts?
+ }
+
+ mapflags: (
+ "nowarpto",
+ "bexp 50",
+ "nosave 001-16,90,45",
+// "resave 001-16,90,45",
+ "partylock",
+ "guildlock",
+ "monster_noteleport",
+ "pvp_nocalcrank",
+ "pvp_noguild",
+ "pvp_noparty",
+ "nojobexp",
+ "invincible_time_inc 2000",
+ "short_damage_rate 85",
+ "nomemo",
+// "battleground",
+// "nomobloot",
+ )
+
+ /* "command:min-group-lv-to-override" e.g. "heal: 70" */
+ disabled_commands: {
+ recall: 100
+ recallall: 100
+ monster: 100
+ item: 100
+ summon: 100
+ killer: 100
+ killable: 100
+ pvpon: 100
+ pvpoff: 100
+ clone: 100
+ slaveclone: 100
+ evilclone: 100
+ monstersmall: 100
+ monsterbig: 100
+ save: 100
+ killmonster: 100
+ killmonster2: 100
+ raisemap: 100
+ doommap: 100
+ kill: 100
+ nuke: 100
+ //alive: 100
+ setbattleflag: 100
+ cvcon: 100
+ cvcoff: 100
+ addwarp: 100
+ mapflag: 100
+ gvgon: 100
+ gvgoff: 100
+ skillon: 100
+ skilloff: 100
+ }
+ skill_damage_cap: {
+ }
+},
+{
name: "Towns"
mapflags: (
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index 2d55e1061..5cfdc445b 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -589,6 +589,7 @@ mob_db: (
// 1013 is free
// mob ids which is free: 1013 (pikpik)
// is free: 1057, 1059 (small/big mineral bif)
+// is free: 1453 Bobone 1454 ???
{
Id: 1014
SpriteName: "EntAbomination"
@@ -6211,6 +6212,15 @@ mob_db: (
AttackMotion: 672
DamageMotion: 480
// Effect when die: Poison plus stun (lock by thorn) this chest may drop thorn items too :b
+ Drops: {
+ ThornArrow: 6000
+ HardSpike: 4500
+ ThornAmmoBox: 3000
+ DwarvenSake: 1500
+ AncientBlueprint: 75
+ NymphPoison: 25
+ SacredImmortalityPotion: 1
+ }
},
{
Id: 1148
@@ -12896,6 +12906,275 @@ mob_db: (
TortugaShellFragment: 3
}
},
+// 1453 RESERVED (not free): Bobone
+{
+ Id: 1454
+ SpriteName: "TopUnderling"
+ Name: "Top Underling"
+ Lv: 200
+ Hp: 180000
+ Exp: 64000
+ JExp: 500
+ AttackRange: 2
+ Attack: [7500, 8600]
+ Def: 442
+ Mdef: 74
+ Race: 8
+ Element: (8, 2)
+ Stats: {
+ Str: 200
+ Agi: 200
+ Vit: 200
+ Int: 200
+ Dex: 200
+ Luk: 200
+ }
+ Mode: {
+ Boss: true
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 280
+ AttackDelay: 1200
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 9
+ ChaseRange: 12
+ Drops: {
+ LimePotion: 2350
+ LimePotion: 1620
+ LimePotion: 940
+ GoldenBossGift: 800
+ SilverBossGift: 400
+ BronzeBossGift: 200
+ }
+},
+{
+ Id: 1455
+ SpriteName: "GunnerUnderling"
+ Name: "Gunner Underling"
+ Lv: 200
+ Hp: 96000
+ Exp: 36000
+ JExp: 300
+ AttackRange: 7
+ Attack: [3500, 4600]
+ Def: 422
+ Mdef: 64
+ Race: 8
+ Element: (8, 1)
+ Stats: {
+ Str: 121
+ Agi: 150
+ Vit: 121
+ Int: 121
+ Dex: 175
+ Luk: 121
+ }
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 300
+ AttackDelay: 2000
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 11
+ ChaseRange: 14
+ Drops: {
+ LimePotion: 350
+ LimePotion: 120
+ BronzeBossGift: 3
+ SilverBossGift: 1
+ }
+},
+{
+ Id: 1456
+ SpriteName: "HalberdUnderling"
+ Name: "Halberd Underling"
+ Lv: 200
+ Hp: 96000
+ Exp: 36000
+ JExp: 300
+ AttackRange: 3
+ Attack: [2700, 3600]
+ Def: 442
+ Mdef: 64
+ Race: 8
+ Element: (8, 1)
+ Stats: {
+ Str: 121
+ Agi: 150
+ Vit: 121
+ Int: 121
+ Dex: 150
+ Luk: 121
+ }
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 300
+ AttackDelay: 1200
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 7
+ ChaseRange: 11
+ Drops: {
+ LimePotion: 350
+ LimePotion: 120
+ BronzeBossGift: 3
+ SilverBossGift: 1
+ }
+},
+{
+ Id: 1457
+ SpriteName: "WizardUnderling"
+ Name: "Wizard Underling"
+ Lv: 200
+ Hp: 96000
+ Exp: 36000
+ JExp: 300
+ AttackRange: 12
+ Attack: [2000, 2600]
+ Def: 362
+ Mdef: 84
+ Race: 8
+ Element: (8, 1)
+ Stats: {
+ Str: 121
+ Agi: 150
+ Vit: 121
+ Int: 121
+ Dex: 150
+ Luk: 121
+ }
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 320
+ AttackDelay: 1100
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 13
+ ChaseRange: 15
+ Drops: {
+ LimePotion: 350
+ LimePotion: 120
+ BronzeBossGift: 3
+ SilverBossGift: 1
+ }
+},
+{
+ Id: 1458
+ SpriteName: "BansheeUnderling"
+ Name: "Banshee Underling"
+ Lv: 200
+ Hp: 96000
+ Exp: 36000
+ JExp: 300
+ AttackRange: 8
+ Attack: [2400, 2900]
+ Def: 422
+ Mdef: 64
+ Race: 8
+ Element: (8, 1)
+ Stats: {
+ Str: 121
+ Agi: 150
+ Vit: 121
+ Int: 121
+ Dex: 150
+ Luk: 121
+ }
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 200
+ AttackDelay: 1000
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 9
+ ChaseRange: 13
+ Drops: {
+ LimePotion: 350
+ LimePotion: 120
+ BronzeBossGift: 3
+ SilverBossGift: 1
+ }
+},
+{
+ Id: 1459
+ SpriteName: "FlyingUnderling"
+ Name: "Flying Underling"
+ Lv: 200
+ Hp: 96000
+ Exp: 36000
+ JExp: 300
+ AttackRange: 1
+ Attack: [2700, 3600]
+ WalkMask: "WALK_AIR"
+ Def: 422
+ Mdef: 64
+ Race: 8
+ Element: (8, 1)
+ Stats: {
+ Str: 121
+ Agi: 150
+ Vit: 121
+ Int: 121
+ Dex: 150
+ Luk: 121
+ }
+ Mode: {
+ CanMove: true
+ Aggressive: true
+ ChangeChase: true
+ ChangeTargetChase: true
+ ChangeTargetMelee: true
+ CanAttack: true
+ CastSensorChase: true
+ }
+ MoveSpeed: 240
+ AttackDelay: 1200
+ AttackMotion: 672
+ DamageMotion: 200
+ ViewRange: 13
+ ChaseRange: 16
+ Drops: {
+ LimePotion: 350
+ LimePotion: 120
+ BronzeBossGift: 3
+ SilverBossGift: 1
+ }
+},
// System
{
Id: 1490
diff --git a/db/re/skill_tree.conf b/db/re/skill_tree.conf
index 9ede69acc..1fd8741b7 100644
--- a/db/re/skill_tree.conf
+++ b/db/re/skill_tree.conf
@@ -286,3 +286,8 @@ Redy: {
Savior: {
inherit: ( "Human" );
}
+
+Skelli: {
+ inherit: ( "Human" );
+}
+
diff --git a/db/sc_config.conf b/db/sc_config.conf
index 3a2aa3ff6..648d83b83 100644
--- a/db/sc_config.conf
+++ b/db/sc_config.conf
@@ -803,6 +803,7 @@ SC_MOVESLOW_POTION: {
NoSave: true
NoClearanceReset: true
Buff: true
+ NoBoss: true
}
}
SC_DOUBLECASTING: {
@@ -1827,11 +1828,8 @@ SC_SPL_MATK: {
}
SC_STR_SCROLL: {
Flags: {
- NoDeathReset: true
- NoDispelReset: true
- NoClearanceReset: true
Buff: true
- Debuff: true
+ NoMadoReset: true
}
}
SC_INT_SCROLL: {
diff --git a/langs/lang_de.old b/langs/lang_de.old
index 28cd3d1ad..0a7a91517 100644
--- a/langs/lang_de.old
+++ b/langs/lang_de.old
@@ -613,6 +613,9 @@ Debug - Level ändern
Debug - Change stats
Debug - Statuspunkte verändern
+Definitely not suspcious at all.
+Auf jeden Fall nicht verdächtig überhaupt.
+
Deliver it to Zitoni on my name. He'll trust it. The relation between me and Zitoni... goes way back.
Geben Sie es zu Zitoni auf meinen Namen. Er wird ihm vertrauen. Die Beziehung zwischen mir und Zitoni ... geht weit zurück.
diff --git a/langs/lang_de.txt b/langs/lang_de.txt
index fdc90d5f5..c6eadcedf 100644
--- a/langs/lang_de.txt
+++ b/langs/lang_de.txt
@@ -3440,6 +3440,9 @@ Eine zusätzliche Jagdinsel wird am Valentinstag herausgebracht.
Additionally, for the optimal experience, ensure your party has at least the following members and items:
Ausserdem, für die optimale Erfahrung, achte darauf, dass mindestens die folgenden Mitglieder und Gegenstände dabei sind:
+Additionally, there is a fish-like creature with wings that can grow as
+
+
Additionaly, all your movement will be restricted until either you're warped or log out.
Darüber hinaus werden alle Deine Bewegung eingeschränkt werden, entweder bis zum Warp oder Logout.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
+
Antlers
Geweih
@@ -5732,6 +5741,9 @@ Banido da Academia
Banshee Bow
Banshee Bow
+Banshee Underling
+
+
Banu
@@ -6860,6 +6872,12 @@ Aber mein Fall erfordert längere Behandlung. Ich muss ins Krankenhaus eingelief
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+
+
+But now, the princess is no longer alone. She has someone she loves as her
+
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
Aber jetzt sind wir schon recht alt. Ich erinnere mich an die Zeit, als ich in deinem Alter war. Meine Generation nicht tun dumme Dinge wie Ihr!
@@ -10358,8 +10376,8 @@ Derrotá-los é completamente opcional. Eles costumam dar mais experiência do q
Defeating it will advance the round. How far can you survive?
Besiegen es wird die Runde aufzusteigen. Wie weit kann man überleben?
-Definitely not suspcious at all.
-Auf jeden Fall nicht verdächtig überhaupt.
+Definitely not suspicious at all.
+
Delicious Cookie
Leckerer Keks
@@ -11138,6 +11156,9 @@ Möchtest du helfen? Ich verspreche Ihnen keinen Lohn, so dass Sie es von Ihrem
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
Wollen Sie einen Söldner mieten? Oder vielleicht eine Karte bekommen, damit Sie sie später aufrufen kann? Ich kann sogar machen sie stärker, wenn Sie es wünschen.
+Do you want to leave?
+
+
Do you want to make %s?
@@ -12386,6 +12407,9 @@ Schlechter Pilz
Evil Scythe
Das böse Scythe
+Evil Warp Crystal
+
+
Evil Wisp
Wisp Maligno
@@ -12809,6 +12833,9 @@ Flush
Fly away!
+Flying Underling
+
+
Following these lines are some other writings on this paper.
Nach diesen Zeilen findet dich noch etwas anderes Geschreibsel auf dem Zettel.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
Guinevere é a esposa do rei. Se você falar com ela, o Rei vai ficar chateada e vai enviar soldados para você.
+Gunner Underling
+
+
Gwendolyn
Gwendolyn
@@ -14384,6 +14414,9 @@ Penteados.
Halberd
Hellebarde
+Halberd Underling
+
+
Half Croconut
Halbe Krokosnuss
@@ -14933,6 +14966,9 @@ Hallo! Ich bin @@, und ich kümmere mich um Tulimshar Schmiede. Ich mache in der
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
Hallo! Ich bin Cassia, Botschafter. Während des Monster War Ausbruch wurde Halinarzo fast vollständig zerstört.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
No entanto, também é possível que eles estão lá já. Tenha cuidado para emboscadas!
+However, once the mines depleted, the town was mostly abandoned.
+
+
However, our mages have recently sensed something dark stirring.
No entanto, nossos magos sentiram recentemente algo sombrio se movendo.
@@ -16613,6 +16652,9 @@ Ich höre auch Fischer gerne in der Nacht zu fischen. Sie sagen, dass der Haken
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
+
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ Ich werde nicht weiter scheitern, ich glaube, meine neue Formel ist perfekt! Hie
I shall report to Kenton. I now entrust this quest in your hands!
Ich werde Kenton melden. Ich jetzt diese Quest in Ihren Händen anvertrauen!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
+
I should be prepared before walking on this.
Ich sollte vor dem Gehen auf diese vorbereitet.
@@ -20087,6 +20132,9 @@ Zu Ehren von Woody, den Gewinner von Ostern 2019.
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
In memoriam. Diese können die nie zur Ruhe kommt zurück in ihren afterlifes.
@@ -20120,6 +20168,9 @@ Em algumas masmorras etc., pode haver um monstro muito, muito mais forte do que
In the
Im
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
+
In the end, elves would have quite the age to rivalize with human wizards.
Am Ende hätten Elfen das ganz Alter mit menschlichen Assistenten rivalize.
@@ -20255,6 +20306,9 @@ Innen ist es, scheint einige magischen Reagenzien, Pulver und andere Sachen zu s
Inside it, there'll be a Transcendence Gate.
Innen ist es, es werde ein Transcendence Tor sein.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
Innerhalb dieses Haus ist mein Bruder Alan. Er weiß, wie Wald-Bögen von erlesener Qualität zu machen.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
Isso é... Espere... Uau. Você... Matou o escorpião assassino.
+Is the capital and where the High Council seat is at.
+
+
Is there a reward?
Gibt es eine Belohnung?
@@ -20600,6 +20657,9 @@ Es ist die nicht seltenen Zutaten, die ich mit wirklich brauche Hilfe!
It is the place where it all began... And I'm not talking about the Mana War.
Es ist der Ort, wo alles begann ... Und ich spreche nicht über den Mana-Krieg.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
+
It is time to send %s to your beloved ones!
É hora de enviar %s para seus entes queridos!
@@ -21539,6 +21599,9 @@ Land Of Fire Dorf (@@ m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
Land Of Fire ist ein Ort, so warm ... Obwohl diese Werkstatt zu einem besseren Ort zu brechen Zeit und Raum während der Weihnachtszeit ist.
+Land of Fire Village
+
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Mágicos, Guerreiros e Arqueiros
Magic.
Magie.
+Magical Key of Death
+
+
+Magical Key of Earth
+
+
+Magical Key of Evil
+
+
+Magical Key of Fire
+
+
+Magical Key of Mana
+
+
+Magical Key of Sacred
+
+
+Magical Key of Water
+
+
+Magical Key of Wind
+
+
Magical MVP Card
Cartão MVP mágico
@@ -24836,6 +24923,9 @@ Mouboos, komm mir zu Hilfe und schützt mich!
Moubootaur (Sealed)
Moubootauro (selado)
+Moubootaur Head
+
+
Moubootaur Legends Anniversary
Moubootaur Legends aniversário
@@ -24848,9 +24938,15 @@ Moubootaur Legends präsentiert...
Moubootaur Maze
Labirinto do Moubootauro
+Moubootaur Top Underling
+
+
Moubootaur's Domain
Domínio do Moubootauro
+Moubootaur's Ointment
+
+
Moubootaur, please spare me...
Moubootauro, por favor me poupe...
@@ -25082,6 +25178,9 @@ NEIN
NO!
NÃO!
+NOT
+
+
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Nicht dafür! Für den verletzten mooboo aushelfen, natürlich.
Not in the mood to chat.
Ich bin nicht in der Stimmung, mich zu unterhalten.
+Not much is known about the town due to strict access policies.
+
+
Not my problem.
Nicht mein Problem.
@@ -26795,6 +26897,9 @@ Am zweiten Gedanken, kann er wirklich ein Bad verwenden.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
Na sexta-feira, dia 14, um campo de caça adicional será aberto. Fale com o Soul Stone lá:>
+On the other side of the island, Nayta met Zolrac, the captain of the
+
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
Auf den Ruinen können Sie kostenlos Beute ... Und auf der neuen Stadt finden, können Sie die stabilste Stoff, aus dem alle finden.
@@ -26813,6 +26918,9 @@ Uma vez quebrado, eles vão perder o vínculo com o selo mágico.
Once he resumes working confidently, we can go over this important subject.
Sobald er wieder vertrauensvoll arbeiten, können wir dieses wichtige Thema gehen.
+Once in a while, it's always nice to look up at the sky. If you want to
+
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
Einmal in der BOSS-Höhle, erhalten Sie ein 5 Minuten Zeitlimit den Chef mit Ihrer Partei zu töten.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
+Once you enter there, %s.
+
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
Oops, gibt es niemand bekannt als @@ auf dieses Spiel.
+Op Build
+
+
Open Beta 2019
Open Beta 2019
@@ -30992,6 +31106,9 @@ Einige Kugeln haben Elemental Eigenschaften, durch die Art und Weise. Nun, was w
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
Einige Elemente werden nur in Nivalis hergestellt. Schließlich ist es schwer, in einer Wüste richtig mit Eis zu arbeiten!
+Some notes were added to the book.
+
+
Some of finest elven craftmanship can be found there, like bows, for example.
Einige der besten elfischen craftmanship sind dort zu finden, wie Bögen, zum Beispiel.
@@ -31328,6 +31445,9 @@ Es tut uns Leid, dass Arena ist bereits geschlossen.
Sorry, that is not the cake I love.
Sorry, das ist nicht der Kuchen I Liebe.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
+
Sorry, this password was already used on another arena.
Sorry, das Passwort wurde bereits auf einer anderen Arena verwendet.
@@ -31793,6 +31913,9 @@ Such a precious gem is not something you would give away for free, unless you ar
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
+Such people are excellent singers, some claim that they can cure diseases
+
+
Sudden Attack
Ataque repentino
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
Das Grundgesetz
+The Book of Towns
+
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
Die Höhle von Trials und den Soren Dorf ... Es gibt nur eine Sache verlassen.
@@ -33086,6 +33212,9 @@ The Council is not in session, it has dispersed since Andrei Sakar went to an ex
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
O Conselho de Anciãos alistou os patos da nossa ilha em uma milícia. Além disso, os mestres do lado dos patos viram digno disponibilizar %d Patos iniciantes para nos ajudar.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ Das La Johanne haben immer interessante Hinweise.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
Das Land Of Fire Dorf war das Ergebnis aus dem Zusammenbruch von zwei Welten. Es ist ein riesiges Dorf.
+The Legend of Aeros
+
+
+The Lost Cities
+
+
The Loyalists
die Loyalisten
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
+
The Monster King is on the move!
Das Monster King ist in Bewegung!
@@ -33311,6 +33449,9 @@ Die Mouboo scheint Schmerzen zu liegen.
The Moubootaur
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
+
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
+
The item impact suggests jumping inside should be safe if you have enough life.
Der Artikel Auswirkungen schlägt Springen innerhalb sicher sein sollten, wenn Sie genug Leben haben.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
Theremin ist auch als die verlorene Stadt bekannt. Es wurde einmal Mine Erzen und den Export in all gegründet.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
+
These are being crafted by Alan.
Diese werden von Alan gefertigt.
@@ -34865,6 +35012,9 @@ Sie leben unterhalb dieser Stadt. Kannst du das für mich tun?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+
+
They must be hiding in some cave... It's a shame!
Sie müssen Versteck in einiger Höhle sein ... Es ist eine Schande!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
Dies ist eine Seele Menhir, scheint aber magischer als die anderen.
+This is a Windy map, walk speed and agility may be reduced.
+
+
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ Este homem é o lendário KING ARTHUR!
This map contains poisonous gas and may cause diseases.
+This map is extremely cold, and may cause frostbites.
+
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ Um zu beweisen, mir Ihre Ergebnisse, mich bringen @@ @@ @@ @@ und @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Saison Suche
Top Hat
Zylinderhut
+Top Underling
+
+
Topaz
Topas
@@ -39221,6 +39386,9 @@ Wizard Allgemein
Wizard Moccasins
Wizard Mokassins
+Wizard Underling
+
+
Wizardry
Magia
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
Você se sentir revigorado!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
+
You find @@ inside!
Sie finden @@ nach innen!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
Sie haben das Jesusaves Grimorium Quest abgeschlossen!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
Zambacutou Schweres Schwert
+Zarech, were benazed by the stars to have their swords granted with the
+
+
Zarkor
Zarkor
@@ -42857,6 +43034,9 @@ irgendein
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+
+
arrow keys
Pfeiltasten
@@ -42866,9 +43046,15 @@ dente de arthur
assigning 5 points each to str, agi, dex and luck
Zuweisung von jeweils 5 Punkten für Str, Agi, Dex und Glück
+at the center of all this beauty stands the temple. It is adorned with
+
+
bandits
+battles and be cured of illnesses.
+
+
begin Doppelganger Challenge
beginnen Doppelgänger Herausforderung
@@ -42911,6 +43097,9 @@ candor
cleaning
Reinigung
+coexist on one side of the island, on its other side lies chaos and
+
+
cold, bleak and isolated cell
@@ -42941,6 +43130,9 @@ pensamento profundo
desert mines one day.
Wüste Minen einen Tag.
+destruction. He did not want to lose his future wife and created a
+
+
dexterity
Geschicklichkeit
@@ -42968,6 +43160,9 @@ dude#1
ear
orelha
+ease!
+
+
east
Osten
@@ -42989,9 +43184,15 @@ dezoito
eleven
onze
+elite army on the island. The love between them caused Eldrun to deploy
+
+
embryo
+enabling space travel for people from their current location.
+
+
england
Inglaterra
@@ -43022,6 +43223,9 @@ Feuerarme
five
cinco
+floating island has the characteristic of not staying still in just one
+
+
focused on lower level players, and to cherish those whom work hard everyday.
focado em jogadores de nível inferior, e a valorizar aqueles que trabalham duro todos os dias.
@@ -43031,6 +43235,9 @@ für Abenteurer
for listening his class
für das Zuhören seiner Klasse
+fortress where its inhabitants were subjects to the same magic, allowing
+
+
four
vier
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
harte Arbeit, wurde Dimonds Cove gebaut.
+have an endless army with just his right hand and wield a great sword with
+
+
heart of gold
coração de ouro
@@ -43076,6 +43286,9 @@ hey, hey, are you a hero, are you a hero?#0
hey, hey, are you a hero, are you a hero?#1
+his endless army to attack him. However, Zolrac and his group, called
+
+
house finances
Haus Finanzen
@@ -43085,18 +43298,27 @@ humm ... Sorry, ich habe vergessen, was Sie brauchen!
humm... You don't have everything I've asked for!
humm ... Sie haben nicht alles, was ich gefragt habe!
+husband and lives forever with her people in the floating island of Aeros!
+
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
wenn der Vorschlag nicht für Sie geeignet ist, schließen Sie einfach das Handelsfenster den Austausch von Gegenständen und Geld zu stornieren. Aber wenn beide drücken Sie die Taste ‚Negotiation Nehmen‘, dann wird die Vermarktung fertig sein.
in March 2nd 2018.
em 02 de março de 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
+
international worker day
Dia do trabalhador internacional
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
+island and cried to the stars, which transported her to an island above
+
+
item dependant bonuses
bônus dependentes de itens
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
König
+large as three men!
+
+
left
links
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
Linie @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
+
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ mein Name ist karim Sie mir helfen können ?.
need help to send gifts to everyone! Compete for scoreboards,
precisam de ajuda para enviar presentes para todos! Compete pela placares,
+never been seen before. Its citizens go there to receive forces for their
+
+
next
@@ -43289,6 +43520,9 @@ pal#1
pan galactic gargle blaster
pan garbage blaster galáctico
+parents' orders. She escaped to the highest mountain on the fortress
+
+
passion
Leidenschaft
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
Platz in der Welt. Er sagte Dimond, dass er sie machen würde
+place. Because of its lower layer, which contains a huge sphere that lifts
+
+
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+
+
+powerful magic that allowed him to fly. He followed her and found a
+
+
powerful shot
strammer Schuss
+precious stones and constructed in the purest form of marble that has
+
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+
+
quest completed.#0
Quest angeschlossen.#0
@@ -43355,6 +43604,9 @@ Stichprobe
season it
+see the floating island named Aeros as well, you can do so too. The large
+
+
sent to the email you used to register on Moubootaur Legends.
enviado para o e-mail usado no seu registro em Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
klein, rot, rund und glänzend.
+snakes live. However, these are stronger than usual, and some have wings.
+
+
some equipments
@@ -43490,9 +43745,15 @@ o melhor suas chances de obter as melhores cartas.
the card will determine your gift - the more cards you spin,
o cartão vai determinar o seu presente - os mais cartões de você girar,
+the clouds!
+
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
das Ereignis wird nicht gestartet und Hurnscald NICHT befreit werden.
+the island above the ground. On the surface, we have the city, with
+
+
the north exit
@@ -43505,6 +43766,9 @@ die npc wählen Rock.
the npc choose scissors.
die npc wählen Schere.
+them to gain strength without dying! However, the magic granted them wings
+
+
thirteen
treze
@@ -43556,6 +43820,9 @@ Stadt Finanzen
town overview
Stadt Überblick
+training to prove their loyalty to the princess, and the war continues!
+
+
triple
@@ -43619,9 +43886,15 @@ Kette zurück
weak shot
schwacher Schuss
+well-made streets and grand houses. Their gardens are rich in plants that
+
+
west
Westen
+where its scientists have built portals that allow matter transport, thus
+
+
which creeps over Kamelot! During this event, the ancient
que se arrasta ao longo do Kamelot! Durante este evento, a antiga
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
mit Freunden
+with their voice as well. Science is also very advanced, reaching a point
+
+
wowbagger
wowbagger
@@ -43661,6 +43937,9 @@ du gewinnst
you win @@
du gewinnst @@
+you'll not be able to leave until you're either dead or victorious
+
+
zealite
diff --git a/langs/lang_en.old b/langs/lang_en.old
index 99b63eec2..6dd421740 100644
--- a/langs/lang_en.old
+++ b/langs/lang_en.old
@@ -1315,6 +1315,9 @@ Debug#BlueSage
Decrease ranged damage taken for a few minutes, in exchange of agi and move speed. Req. Shield.
Decrease ranged damage taken for a few minutes, in exchange of agi and move speed. Req. Shield.
+Definitely not suspcious at all.
+Definitely not suspcious at all.
+
Definitive item break? Too dangerous! I don't want it!!
Definitive item break? Too dangerous! I don't want it!!
diff --git a/langs/lang_en.txt b/langs/lang_en.txt
index 63a38499c..7d9c68bbe 100644
--- a/langs/lang_en.txt
+++ b/langs/lang_en.txt
@@ -3440,6 +3440,9 @@ Additional Hunting Island will be released on Valentine Day!
Additionally, for the optimal experience, ensure your party has at least the following members and items:
Additionally, for the optimal experience, ensure your party has at least the following members and items:
+Additionally, there is a fish-like creature with wings that can grow as
+Additionally, there is a fish-like creature with wings that can grow as
+
Additionaly, all your movement will be restricted until either you're warped or log out.
Additionaly, all your movement will be restricted until either you're warped or log out.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
Antlers
Antlers
@@ -5732,6 +5741,9 @@ Banned from Academy
Banshee Bow
Banshee Bow
+Banshee Underling
+Banshee Underling
+
Banu
Banu
@@ -6860,6 +6872,12 @@ But my case requires extended treatment. I need to be hospitalized. I'm afraid i
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+But not everything is flowers. In the same way that beauty and harmony
+
+But now, the princess is no longer alone. She has someone she loves as her
+But now, the princess is no longer alone. She has someone she loves as her
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
@@ -10358,8 +10376,8 @@ Defeating is entirely optional. They usually give more experience than the avera
Defeating it will advance the round. How far can you survive?
Defeating it will advance the round. How far can you survive?
-Definitely not suspcious at all.
-Definitely not suspcious at all.
+Definitely not suspicious at all.
+Definitely not suspicious at all.
Delicious Cookie
Delicious Cookie
@@ -11138,6 +11156,9 @@ Do you want to help? I promise you no reward, so you will do it of your own will
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
+Do you want to leave?
+Do you want to leave?
+
Do you want to make %s?
Do you want to make %s?
@@ -12386,6 +12407,9 @@ Evil Mushroom
Evil Scythe
Evil Scythe
+Evil Warp Crystal
+Evil Warp Crystal
+
Evil Wisp
Evil Wisp
@@ -12809,6 +12833,9 @@ Flush
Fly away!
Fly away!
+Flying Underling
+Flying Underling
+
Following these lines are some other writings on this paper.
Following these lines are some other writings on this paper.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
+Gunner Underling
+Gunner Underling
+
Gwendolyn
Gwendolyn
@@ -14384,6 +14414,9 @@ Hairstyles.
Halberd
Halberd
+Halberd Underling
+Halberd Underling
+
Half Croconut
Half Croconut
@@ -14933,6 +14966,9 @@ Hello! I am @@, and I take care of Tulimshar forge. I usually make ingots from v
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
However, it's also possible they're there already. Be careful for ambushes!
+However, once the mines depleted, the town was mostly abandoned.
+However, once the mines depleted, the town was mostly abandoned.
+
However, our mages have recently sensed something dark stirring.
However, our mages have recently sensed something dark stirring.
@@ -16613,6 +16652,9 @@ I also hear fisherman likes to fish at night. They say the catch is bigger, if y
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
I also see you have a level @@ magic skill!"
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ I shall not fail any further, I think my new formula is perfect! Here's the EXP,
I shall report to Kenton. I now entrust this quest in your hands!
I shall report to Kenton. I now entrust this quest in your hands!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
I should be prepared before walking on this.
I should be prepared before walking on this.
@@ -20087,6 +20132,9 @@ In honor of Woody, winner of Easter 2019.
In honor of everyone whom participated on it!
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
In memoriam. May those whom shall never come back find rest in their afterlifes.
@@ -20120,6 +20168,9 @@ In some dungeons etc., there might be a monster much, much stronger than all oth
In the
In the
+In the dark caverns and forests, creatures like limeflies, maggots, and
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
In the end, elves would have quite the age to rivalize with human wizards.
In the end, elves would have quite the age to rivalize with human wizards.
@@ -20255,6 +20306,9 @@ Inside it, seems to be several magic reagents, powders, and other stuff.
Inside it, there'll be a Transcendence Gate.
Inside it, there'll be a Transcendence Gate.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
Is that... Wait... Wow. You... Killed the murderer scorpion.
+Is the capital and where the High Council seat is at.
+Is the capital and where the High Council seat is at.
+
Is there a reward?
Is there a reward?
@@ -20600,6 +20657,9 @@ It is the non-rare ingredients I actually need help with!
It is the place where it all began... And I'm not talking about the Mana War.
It is the place where it all began... And I'm not talking about the Mana War.
+It is the second largest city in the world, and the capital of the Aurora continent.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
It is time to send %s to your beloved ones!
It is time to send %s to your beloved ones!
@@ -21539,6 +21599,9 @@ Land Of Fire Village (@@m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
+Land of Fire Village
+Land of Fire Village
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Magic, Warriors and Archers
Magic.
Magic.
+Magical Key of Death
+Magical Key of Death
+
+Magical Key of Earth
+Magical Key of Earth
+
+Magical Key of Evil
+Magical Key of Evil
+
+Magical Key of Fire
+Magical Key of Fire
+
+Magical Key of Mana
+Magical Key of Mana
+
+Magical Key of Sacred
+Magical Key of Sacred
+
+Magical Key of Water
+Magical Key of Water
+
+Magical Key of Wind
+Magical Key of Wind
+
Magical MVP Card
Magical MVP Card
@@ -24836,6 +24923,9 @@ Mouboos, come to my aid and protect me!
Moubootaur (Sealed)
Moubootaur (Sealed)
+Moubootaur Head
+Moubootaur Head
+
Moubootaur Legends Anniversary
Moubootaur Legends Anniversary
@@ -24848,9 +24938,15 @@ Moubootaur Legends presents...
Moubootaur Maze
Moubootaur Maze
+Moubootaur Top Underling
+Moubootaur Top Underling
+
Moubootaur's Domain
Moubootaur's Domain
+Moubootaur's Ointment
+Moubootaur's Ointment
+
Moubootaur, please spare me...
Moubootaur, please spare me...
@@ -25082,6 +25178,9 @@ NO
NO!
NO!
+NOT
+NOT
+
NOT CLASSY ENOUGH!
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Not for that! For helping out the injuried mouboo, of course.
Not in the mood to chat.
Not in the mood to chat.
+Not much is known about the town due to strict access policies.
+Not much is known about the town due to strict access policies.
+
Not my problem.
Not my problem.
@@ -26795,6 +26897,9 @@ On second thought, he really could use a bath.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
+On the other side of the island, Nayta met Zolrac, the captain of the
+On the other side of the island, Nayta met Zolrac, the captain of the
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
@@ -26813,6 +26918,9 @@ Once broken, they'll lose the link to the magical seal.
Once he resumes working confidently, we can go over this important subject.
Once he resumes working confidently, we can go over this important subject.
+Once in a while, it's always nice to look up at the sky. If you want to
+Once in a while, it's always nice to look up at the sky. If you want to
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
+Once you enter there, %s.
+Once you enter there, %s.
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
Oops, there is nobody known as @@ on this game.
+Op Build
+Op Build
+
Open Beta 2019
Open Beta 2019
@@ -30992,6 +31106,9 @@ Some bullets have Elemental Properties, by the way. Now, what will it be?
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
+Some notes were added to the book.
+Some notes were added to the book.
+
Some of finest elven craftmanship can be found there, like bows, for example.
Some of finest elven craftmanship can be found there, like bows, for example.
@@ -31328,6 +31445,9 @@ Sorry, that arena is already closed.
Sorry, that is not the cake I love.
Sorry, that is not the cake I love.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
Sorry, this password was already used on another arena.
Sorry, this password was already used on another arena.
@@ -31793,6 +31913,9 @@ Such a precious gem is not something you would give away for free, unless you ar
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
+Such people are excellent singers, some claim that they can cure diseases
+Such people are excellent singers, some claim that they can cure diseases
+
Sudden Attack
Sudden Attack
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
The Book of Laws
+The Book of Towns
+The Book of Towns
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
The Cave Of Trials, and the Soren's Village... There's only one thing left.
@@ -33086,6 +33212,9 @@ The Council is not in session, it has dispersed since Andrei Sakar went to an ex
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
+The Crystal doesn't react. You most likely cannot use this item yet.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ The La Johanne always have interesting notes.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
+The Legend of Aeros
+The Legend of Aeros
+
+The Lost Cities
+The Lost Cities
+
The Loyalists
The Loyalists
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
The Monster King is on the move!
The Monster King is on the move!
@@ -33311,6 +33449,9 @@ The Mouboo seems to be lying in pain.
The Moubootaur
The Moubootaur
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
The Moubootaur is evil. Defeat him and protect the world. Now...
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
The item impact suggests jumping inside should be safe if you have enough life.
The item impact suggests jumping inside should be safe if you have enough life.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
These are being crafted by Alan.
These are being crafted by Alan.
@@ -34865,6 +35012,9 @@ They live below this town. Can you do this for me?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+They might no longer exist in our world.
+
They must be hiding in some cave... It's a shame!
They must be hiding in some cave... It's a shame!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
This is a Soul Menhir, but seems more magical than the others.
+This is a Windy map, walk speed and agility may be reduced.
+This is a Windy map, walk speed and agility may be reduced.
+
This is a debug NPC. If you don't know what you're doing, refuse.
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ This man is THE LEGENDARY KING ARTHUR!
This map contains poisonous gas and may cause diseases.
This map contains poisonous gas and may cause diseases.
+This map is extremely cold, and may cause frostbites.
+This map is extremely cold, and may cause frostbites.
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ To prove me your results, bring me @@ @@, @@ @@ and @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Seasonal Quest
Top Hat
Top Hat
+Top Underling
+Top Underling
+
Topaz
Topaz
@@ -39221,6 +39386,9 @@ Wizard General
Wizard Moccasins
Wizard Moccasins
+Wizard Underling
+Wizard Underling
+
Wizardry
Wizardry
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
You feel refreshed!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
You find @@ inside!
You find @@ inside!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
You have completed the Jesusaves Grimorium Quest!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
Zambacutou Heavy Sword
+Zarech, were benazed by the stars to have their swords granted with the
+Zarech, were benazed by the stars to have their swords granted with the
+
Zarkor
Zarkor
@@ -42857,6 +43034,9 @@ any
any Heroes Hold Dungeon
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+are well taken care of but also dangerous. The waters are crystalline, and
+
arrow keys
arrow keys
@@ -42866,9 +43046,15 @@ arthur dent
assigning 5 points each to str, agi, dex and luck
assigning 5 points each to str, agi, dex and luck
+at the center of all this beauty stands the temple. It is adorned with
+at the center of all this beauty stands the temple. It is adorned with
+
bandits
bandits
+battles and be cured of illnesses.
+battles and be cured of illnesses.
+
begin Doppelganger Challenge
begin Doppelganger Challenge
@@ -42911,6 +43097,9 @@ candor
cleaning
cleaning
+coexist on one side of the island, on its other side lies chaos and
+coexist on one side of the island, on its other side lies chaos and
+
cold, bleak and isolated cell
cold, bleak and isolated cell
@@ -42941,6 +43130,9 @@ deep thought
desert mines one day.
desert mines one day.
+destruction. He did not want to lose his future wife and created a
+destruction. He did not want to lose his future wife and created a
+
dexterity
dexterity
@@ -42968,6 +43160,9 @@ dude
ear
ear
+ease!
+ease!
+
east
east
@@ -42989,9 +43184,15 @@ eighteen
eleven
eleven
+elite army on the island. The love between them caused Eldrun to deploy
+elite army on the island. The love between them caused Eldrun to deploy
+
embryo
embryo
+enabling space travel for people from their current location.
+enabling space travel for people from their current location.
+
england
england
@@ -43022,6 +43223,9 @@ firearms
five
five
+floating island has the characteristic of not staying still in just one
+floating island has the characteristic of not staying still in just one
+
focused on lower level players, and to cherish those whom work hard everyday.
focused on lower level players, and to cherish those whom work hard everyday.
@@ -43031,6 +43235,9 @@ for adventurers
for listening his class
for listening his class
+fortress where its inhabitants were subjects to the same magic, allowing
+fortress where its inhabitants were subjects to the same magic, allowing
+
four
four
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
hard work, Dimonds Cove was built.
+have an endless army with just his right hand and wield a great sword with
+have an endless army with just his right hand and wield a great sword with
+
heart of gold
heart of gold
@@ -43076,6 +43286,9 @@ hey, hey, are you a hero, are you a hero?
hey, hey, are you a hero, are you a hero?#1
hey, hey, are you a hero, are you a hero?
+his endless army to attack him. However, Zolrac and his group, called
+his endless army to attack him. However, Zolrac and his group, called
+
house finances
house finances
@@ -43085,18 +43298,27 @@ humm... Sorry, I forgot what you need!
humm... You don't have everything I've asked for!
humm... You don't have everything I've asked for!
+husband and lives forever with her people in the floating island of Aeros!
+husband and lives forever with her people in the floating island of Aeros!
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
in March 2nd 2018.
in March 2nd 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
international worker day
international worker day
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
+island and cried to the stars, which transported her to an island above
+island and cried to the stars, which transported her to an island above
+
item dependant bonuses
item dependant bonuses
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
king
+large as three men!
+large as three men!
+
left
left
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
line @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
lock-picking a vault or similar
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ my name is karim can you help me?.
need help to send gifts to everyone! Compete for scoreboards,
need help to send gifts to everyone! Compete for scoreboards,
+never been seen before. Its citizens go there to receive forces for their
+never been seen before. Its citizens go there to receive forces for their
+
next
next
@@ -43289,6 +43520,9 @@ pal
pan galactic gargle blaster
pan galactic gargle blaster
+parents' orders. She escaped to the highest mountain on the fortress
+parents' orders. She escaped to the highest mountain on the fortress
+
passion
passion
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
place in the world. He told Dimond that he would make her
+place. Because of its lower layer, which contains a huge sphere that lifts
+place. Because of its lower layer, which contains a huge sphere that lifts
+
planting a tree
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+power of light! They live at the highest mountain, subjected to extreme
+
+powerful magic that allowed him to fly. He followed her and found a
+powerful magic that allowed him to fly. He followed her and found a
+
powerful shot
powerful shot
+precious stones and constructed in the purest form of marble that has
+precious stones and constructed in the purest form of marble that has
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+prince known as Eldrun. She did not love him and didn't want to obey her
+
quest completed.#0
quest completed.
@@ -43355,6 +43604,9 @@ sample
season it
season it
+see the floating island named Aeros as well, you can do so too. The large
+see the floating island named Aeros as well, you can do so too. The large
+
sent to the email you used to register on Moubootaur Legends.
sent to the email you used to register on Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
small, red, round and shiny.
+snakes live. However, these are stronger than usual, and some have wings.
+snakes live. However, these are stronger than usual, and some have wings.
+
some equipments
some equipments
@@ -43490,9 +43745,15 @@ the better your chances to get the best cards.
the card will determine your gift - the more cards you spin,
the card will determine your gift - the more cards you spin,
+the clouds!
+the clouds!
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
the event won't start and HURNSCALD WON'T BE LIBERATED.
+the island above the ground. On the surface, we have the city, with
+the island above the ground. On the surface, we have the city, with
+
the north exit
the north exit
@@ -43505,6 +43766,9 @@ the npc choose rock.
the npc choose scissors.
the npc choose scissors.
+them to gain strength without dying! However, the magic granted them wings
+them to gain strength without dying! However, the magic granted them wings
+
thirteen
thirteen
@@ -43556,6 +43820,9 @@ town finances
town overview
town overview
+training to prove their loyalty to the princess, and the war continues!
+training to prove their loyalty to the princess, and the war continues!
+
triple
triple
@@ -43619,9 +43886,15 @@ warp back
weak shot
weak shot
+well-made streets and grand houses. Their gardens are rich in plants that
+well-made streets and grand houses. Their gardens are rich in plants that
+
west
west
+where its scientists have built portals that allow matter transport, thus
+where its scientists have built portals that allow matter transport, thus
+
which creeps over Kamelot! During this event, the ancient
which creeps over Kamelot! During this event, the ancient
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
with friends
+with their voice as well. Science is also very advanced, reaching a point
+with their voice as well. Science is also very advanced, reaching a point
+
wowbagger
wowbagger
@@ -43661,6 +43937,9 @@ you win
you win @@
you win @@
+you'll not be able to leave until you're either dead or victorious
+you'll not be able to leave until you're either dead or victorious
+
zealite
zealite
diff --git a/langs/lang_es.txt b/langs/lang_es.txt
index fa911f6bb..c7335df41 100644
--- a/langs/lang_es.txt
+++ b/langs/lang_es.txt
@@ -3440,6 +3440,9 @@ Additional Hunting Island will be released on Valentine Day!
Additionally, for the optimal experience, ensure your party has at least the following members and items:
+Additionally, there is a fish-like creature with wings that can grow as
+
+
Additionaly, all your movement will be restricted until either you're warped or log out.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
+
Antlers
Cornamenta
@@ -5732,6 +5741,9 @@ Banned from Academy
Banshee Bow
Arco de Banshee
+Banshee Underling
+
+
Banu
@@ -6860,6 +6872,12 @@ But my case requires extended treatment. I need to be hospitalized. I'm afraid i
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+
+
+But now, the princess is no longer alone. She has someone she loves as her
+
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
@@ -10358,7 +10376,7 @@ Derrotar es completamente opcional. Suelen dar más experiencia que la media, pe
Defeating it will advance the round. How far can you survive?
Derrotarlo avanzará de ronda. ¿Hasta dónde podrás sobrevivir?
-Definitely not suspcious at all.
+Definitely not suspicious at all.
Delicious Cookie
@@ -11138,6 +11156,9 @@ Do you want to help? I promise you no reward, so you will do it of your own will
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
+Do you want to leave?
+
+
Do you want to make %s?
@@ -12386,6 +12407,9 @@ Evil Mushroom
Evil Scythe
+Evil Warp Crystal
+
+
Evil Wisp
@@ -12809,6 +12833,9 @@ Flush
Fly away!
+Flying Underling
+
+
Following these lines are some other writings on this paper.
Ulterior a estas líneas están otros escritos en este papel.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
+Gunner Underling
+
+
Gwendolyn
@@ -14384,6 +14414,9 @@ Peinados.
Halberd
Alabarda
+Halberd Underling
+
+
Half Croconut
Medio Croconut
@@ -14933,6 +14966,9 @@ Hello! I am @@, and I take care of Tulimshar forge. I usually make ingots from v
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
Sin embargo, también es posible que ya estén ahí. ¡Cuidado con las emboscadas!
+However, once the mines depleted, the town was mostly abandoned.
+
+
However, our mages have recently sensed something dark stirring.
Sin embargo, nuestros magos han sentido recientemente que algo oscuro se está moviendo.
@@ -16613,6 +16652,9 @@ También he oído que a los pescadores les gusta pescar de noche. Dicen que la p
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
+
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ I shall not fail any further, I think my new formula is perfect! Here's the EXP,
I shall report to Kenton. I now entrust this quest in your hands!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
+
I should be prepared before walking on this.
@@ -20087,6 +20132,9 @@ In honor of Woody, winner of Easter 2019.
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
@@ -20120,6 +20168,9 @@ En algunas mazmorras, etc., puede haber un monstruo mucho, mucho más fuerte que
In the
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
+
In the end, elves would have quite the age to rivalize with human wizards.
Al final, los elfos tendrían bastante edad para rivalizar con los magos humanos.
@@ -20255,6 +20306,9 @@ Inside it, seems to be several magic reagents, powders, and other stuff.
Inside it, there'll be a Transcendence Gate.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
Es eso... Espera... Vaya. Tú... mataste al escorpión asesino.
+Is the capital and where the High Council seat is at.
+
+
Is there a reward?
¿Hay alguna recompensa?
@@ -20600,6 +20657,9 @@ It is the non-rare ingredients I actually need help with!
It is the place where it all began... And I'm not talking about the Mana War.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
+
It is time to send %s to your beloved ones!
@@ -21539,6 +21599,9 @@ Land Of Fire Village (@@m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
+Land of Fire Village
+
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Magia, Guerreros y Arqueros
Magic.
Magia.
+Magical Key of Death
+
+
+Magical Key of Earth
+
+
+Magical Key of Evil
+
+
+Magical Key of Fire
+
+
+Magical Key of Mana
+
+
+Magical Key of Sacred
+
+
+Magical Key of Water
+
+
+Magical Key of Wind
+
+
Magical MVP Card
Tarjeta MVP mágica
@@ -24836,6 +24923,9 @@ Mouboos, come to my aid and protect me!
Moubootaur (Sealed)
+Moubootaur Head
+
+
Moubootaur Legends Anniversary
@@ -24848,9 +24938,15 @@ Moubootaur Legends presenta...
Moubootaur Maze
+Moubootaur Top Underling
+
+
Moubootaur's Domain
+Moubootaur's Ointment
+
+
Moubootaur, please spare me...
@@ -25082,6 +25178,9 @@ NO
NO!
+NOT
+
+
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Not for that! For helping out the injuried mouboo, of course.
Not in the mood to chat.
No estoy de humor para charlar.
+Not much is known about the town due to strict access policies.
+
+
Not my problem.
@@ -26795,6 +26897,9 @@ On second thought, he really could use a bath.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
+On the other side of the island, Nayta met Zolrac, the captain of the
+
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
@@ -26813,6 +26918,9 @@ Once broken, they'll lose the link to the magical seal.
Once he resumes working confidently, we can go over this important subject.
+Once in a while, it's always nice to look up at the sky. If you want to
+
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
+Once you enter there, %s.
+
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
Una vez que tenga el colorante apropiado para el artículo, ##barrastre el colorante##b al material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
Ups, no hay nadie conocido como @@ en este juego.
+Op Build
+
+
Open Beta 2019
@@ -30992,6 +31106,9 @@ Some bullets have Elemental Properties, by the way. Now, what will it be?
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
+Some notes were added to the book.
+
+
Some of finest elven craftmanship can be found there, like bows, for example.
@@ -31328,6 +31445,9 @@ Lo sentimos, esa arena ya está cerrada.
Sorry, that is not the cake I love.
Lo siento, ese no es el pastel que amo.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
+
Sorry, this password was already used on another arena.
Lo sentimos, esta contraseña ya fue utilizada en otra arena.
@@ -31793,6 +31913,9 @@ Una gema tan preciosa no es algo que regalarías, a menos que estés realmente i
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
+Such people are excellent singers, some claim that they can cure diseases
+
+
Sudden Attack
Ataque repentino
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
El libro de las reglas
+The Book of Towns
+
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
@@ -33086,6 +33212,9 @@ El Consejo no se encuentra reunido, está disperso desde que Andrei Sakar fue a
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ Los de La Johanne siempre tienen notas interesantes.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
+The Legend of Aeros
+
+
+The Lost Cities
+
+
The Loyalists
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
+
The Monster King is on the move!
@@ -33311,6 +33449,9 @@ The Mouboo seems to be lying in pain.
The Moubootaur
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
+
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
+
The item impact suggests jumping inside should be safe if you have enough life.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
+
These are being crafted by Alan.
@@ -34865,6 +35012,9 @@ They live below this town. Can you do this for me?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+
+
They must be hiding in some cave... It's a shame!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
+This is a Windy map, walk speed and agility may be reduced.
+
+
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ This man is THE LEGENDARY KING ARTHUR!
This map contains poisonous gas and may cause diseases.
+This map is extremely cold, and may cause frostbites.
+
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ To prove me your results, bring me @@ @@, @@ @@ and @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
Para demostrarme tu confiabilidad, tráeme 1 o 1 %s%s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Seasonal Quest
Top Hat
Sombrero de copa
+Top Underling
+
+
Topaz
Topaz
@@ -39221,6 +39386,9 @@ Wizard General
Wizard Moccasins
+Wizard Underling
+
+
Wizardry
Wizardry
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
Te sientes renovado!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
+
You find @@ inside!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
Espada pesada Zambacutou
+Zarech, were benazed by the stars to have their swords granted with the
+
+
Zarkor
Zarkor
@@ -42857,6 +43034,9 @@ cualquier
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+
+
arrow keys
teclas de flechas
@@ -42866,9 +43046,15 @@ arthur dent
assigning 5 points each to str, agi, dex and luck
asignando 5 puntos a cada uno a fuerza, agilidad, destreza y suerte
+at the center of all this beauty stands the temple. It is adorned with
+
+
bandits
+battles and be cured of illnesses.
+
+
begin Doppelganger Challenge
comenzar el desafío Doppelganger
@@ -42911,6 +43097,9 @@ candor
cleaning
Purificando
+coexist on one side of the island, on its other side lies chaos and
+
+
cold, bleak and isolated cell
celda fría, sombría y aislada
@@ -42941,6 +43130,9 @@ deep thought
desert mines one day.
+destruction. He did not want to lose his future wife and created a
+
+
dexterity
destreza
@@ -42968,6 +43160,9 @@ dude#1
ear
+ease!
+
+
east
@@ -42989,9 +43184,15 @@ eighteen
eleven
+elite army on the island. The love between them caused Eldrun to deploy
+
+
embryo
+enabling space travel for people from their current location.
+
+
england
@@ -43022,6 +43223,9 @@ firearms
five
cinco
+floating island has the characteristic of not staying still in just one
+
+
focused on lower level players, and to cherish those whom work hard everyday.
@@ -43031,6 +43235,9 @@ Para los aventureros
for listening his class
por escuchar su clase
+fortress where its inhabitants were subjects to the same magic, allowing
+
+
four
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
+have an endless army with just his right hand and wield a great sword with
+
+
heart of gold
@@ -43076,6 +43286,9 @@ hey, hey, are you a hero, are you a hero?#0
hey, hey, are you a hero, are you a hero?#1
+his endless army to attack him. However, Zolrac and his group, called
+
+
house finances
@@ -43085,18 +43298,27 @@ humm... Sorry, I forgot what you need!
humm... You don't have everything I've asked for!
+husband and lives forever with her people in the floating island of Aeros!
+
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
Si la propuesta no te conviene, simplemente cierre la ventana de intercambio para cancelar el intercambio de artículos y dinero. Pero si ambos presionan el botón "Aceptar intercambio", entonces el intercambio habrá sido completado.
in March 2nd 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
+
international worker day
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
es tu objetivo. ¡Engendran versiones más pequeñas de sí mismos! Mata a @@ de ellos y haz que la playa sea segura para los turistas.
+island and cried to the stars, which transported her to an island above
+
+
item dependant bonuses
bonos dependientes del objeto
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
+large as three men!
+
+
left
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
+
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ my name is karim can you help me?.
need help to send gifts to everyone! Compete for scoreboards,
+never been seen before. Its citizens go there to receive forces for their
+
+
next
@@ -43289,6 +43520,9 @@ pal#1
pan galactic gargle blaster
+parents' orders. She escaped to the highest mountain on the fortress
+
+
passion
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
+place. Because of its lower layer, which contains a huge sphere that lifts
+
+
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+
+
+powerful magic that allowed him to fly. He followed her and found a
+
+
powerful shot
+precious stones and constructed in the purest form of marble that has
+
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+
+
quest completed.#0
@@ -43355,6 +43604,9 @@ sample
season it
+see the floating island named Aeros as well, you can do so too. The large
+
+
sent to the email you used to register on Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
+snakes live. However, these are stronger than usual, and some have wings.
+
+
some equipments
@@ -43490,9 +43745,15 @@ the better your chances to get the best cards.
the card will determine your gift - the more cards you spin,
+the clouds!
+
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
+the island above the ground. On the surface, we have the city, with
+
+
the north exit
@@ -43505,6 +43766,9 @@ the npc choose rock.
the npc choose scissors.
+them to gain strength without dying! However, the magic granted them wings
+
+
thirteen
@@ -43556,6 +43820,9 @@ town finances
town overview
+training to prove their loyalty to the princess, and the war continues!
+
+
triple
@@ -43619,9 +43886,15 @@ Teletransportarse devuelta
weak shot
+well-made streets and grand houses. Their gardens are rich in plants that
+
+
west
Oeste
+where its scientists have built portals that allow matter transport, thus
+
+
which creeps over Kamelot! During this event, the ancient
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
Con amigos
+with their voice as well. Science is also very advanced, reaching a point
+
+
wowbagger
@@ -43661,6 +43937,9 @@ you win
you win @@
+you'll not be able to leave until you're either dead or victorious
+
+
zealite
diff --git a/langs/lang_fr.txt b/langs/lang_fr.txt
index 87095a372..bcf44037f 100644
--- a/langs/lang_fr.txt
+++ b/langs/lang_fr.txt
@@ -3440,6 +3440,9 @@ Additional Hunting Island will be released on Valentine Day!
Additionally, for the optimal experience, ensure your party has at least the following members and items:
+Additionally, there is a fish-like creature with wings that can grow as
+
+
Additionaly, all your movement will be restricted until either you're warped or log out.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
+
Antlers
Antlers
@@ -5732,6 +5741,9 @@ Banned from Academy
Banshee Bow
Banshee Bow
+Banshee Underling
+
+
Banu
@@ -6860,6 +6872,12 @@ But my case requires extended treatment. I need to be hospitalized. I'm afraid i
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+
+
+But now, the princess is no longer alone. She has someone she loves as her
+
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
@@ -10358,7 +10376,7 @@ Defeating is entirely optional. They usually give more experience than the avera
Defeating it will advance the round. How far can you survive?
-Definitely not suspcious at all.
+Definitely not suspicious at all.
Delicious Cookie
@@ -11138,6 +11156,9 @@ Do you want to help? I promise you no reward, so you will do it of your own will
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
+Do you want to leave?
+
+
Do you want to make %s?
@@ -12386,6 +12407,9 @@ Evil Mushroom
Evil Scythe
Evil Scythe
+Evil Warp Crystal
+
+
Evil Wisp
@@ -12809,6 +12833,9 @@ Flush
Fly away!
+Flying Underling
+
+
Following these lines are some other writings on this paper.
À la suite de ces lignes se trouvent d'autres écritures sur ce papier.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
+Gunner Underling
+
+
Gwendolyn
@@ -14384,6 +14414,9 @@ Hairstyles.
Halberd
Halberd
+Halberd Underling
+
+
Half Croconut
Demi Noix de Croco
@@ -14933,6 +14966,9 @@ Hello! I am @@, and I take care of Tulimshar forge. I usually make ingots from v
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
+However, once the mines depleted, the town was mostly abandoned.
+
+
However, our mages have recently sensed something dark stirring.
@@ -16613,6 +16652,9 @@ I also hear fisherman likes to fish at night. They say the catch is bigger, if y
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
+
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ I shall not fail any further, I think my new formula is perfect! Here's the EXP,
I shall report to Kenton. I now entrust this quest in your hands!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
+
I should be prepared before walking on this.
@@ -20087,6 +20132,9 @@ In honor of Woody, winner of Easter 2019.
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
@@ -20120,6 +20168,9 @@ In some dungeons etc., there might be a monster much, much stronger than all oth
In the
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
+
In the end, elves would have quite the age to rivalize with human wizards.
@@ -20255,6 +20306,9 @@ Inside it, seems to be several magic reagents, powders, and other stuff.
Inside it, there'll be a Transcendence Gate.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
+Is the capital and where the High Council seat is at.
+
+
Is there a reward?
Y-a-t'il une récompense ?
@@ -20600,6 +20657,9 @@ It is the non-rare ingredients I actually need help with!
It is the place where it all began... And I'm not talking about the Mana War.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
+
It is time to send %s to your beloved ones!
@@ -21539,6 +21599,9 @@ Land Of Fire Village (@@m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
+Land of Fire Village
+
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Magic, Warriors and Archers
Magic.
Magic.
+Magical Key of Death
+
+
+Magical Key of Earth
+
+
+Magical Key of Evil
+
+
+Magical Key of Fire
+
+
+Magical Key of Mana
+
+
+Magical Key of Sacred
+
+
+Magical Key of Water
+
+
+Magical Key of Wind
+
+
Magical MVP Card
@@ -24836,6 +24923,9 @@ Mouboos, come to my aid and protect me!
Moubootaur (Sealed)
+Moubootaur Head
+
+
Moubootaur Legends Anniversary
@@ -24848,9 +24938,15 @@ Moubootaur Legends presents...
Moubootaur Maze
+Moubootaur Top Underling
+
+
Moubootaur's Domain
+Moubootaur's Ointment
+
+
Moubootaur, please spare me...
@@ -25082,6 +25178,9 @@ NO
NO!
+NOT
+
+
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Not for that! For helping out the injuried mouboo, of course.
Not in the mood to chat.
Je ne suis pas dans l'humeur de parler.
+Not much is known about the town due to strict access policies.
+
+
Not my problem.
@@ -26795,6 +26897,9 @@ On second thought, he really could use a bath.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
+On the other side of the island, Nayta met Zolrac, the captain of the
+
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
@@ -26813,6 +26918,9 @@ Once broken, they'll lose the link to the magical seal.
Once he resumes working confidently, we can go over this important subject.
+Once in a while, it's always nice to look up at the sky. If you want to
+
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
+Once you enter there, %s.
+
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
+Op Build
+
+
Open Beta 2019
@@ -30992,6 +31106,9 @@ Some bullets have Elemental Properties, by the way. Now, what will it be?
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
+Some notes were added to the book.
+
+
Some of finest elven craftmanship can be found there, like bows, for example.
@@ -31328,6 +31445,9 @@ Sorry, that arena is already closed.
Sorry, that is not the cake I love.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
+
Sorry, this password was already used on another arena.
@@ -31793,6 +31913,9 @@ Such a precious gem is not something you would give away for free, unless you ar
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
+Such people are excellent singers, some claim that they can cure diseases
+
+
Sudden Attack
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
Le Livre des Lois
+The Book of Towns
+
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
@@ -33086,6 +33212,9 @@ The Council is not in session, it has dispersed since Andrei Sakar went to an ex
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ The La Johanne always have interesting notes.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
+The Legend of Aeros
+
+
+The Lost Cities
+
+
The Loyalists
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
+
The Monster King is on the move!
@@ -33311,6 +33449,9 @@ The Mouboo seems to be lying in pain.
The Moubootaur
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
+
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
+
The item impact suggests jumping inside should be safe if you have enough life.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
+
These are being crafted by Alan.
@@ -34865,6 +35012,9 @@ They live below this town. Can you do this for me?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+
+
They must be hiding in some cave... It's a shame!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
+This is a Windy map, walk speed and agility may be reduced.
+
+
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ This man is THE LEGENDARY KING ARTHUR!
This map contains poisonous gas and may cause diseases.
+This map is extremely cold, and may cause frostbites.
+
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ To prove me your results, bring me @@ @@, @@ @@ and @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Seasonal Quest
Top Hat
Top Hat
+Top Underling
+
+
Topaz
Topaz
@@ -39221,6 +39386,9 @@ Wizard General
Wizard Moccasins
+Wizard Underling
+
+
Wizardry
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
+
You find @@ inside!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
+Zarech, were benazed by the stars to have their swords granted with the
+
+
Zarkor
@@ -42857,6 +43034,9 @@ any
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+
+
arrow keys
Touches directionnelles
@@ -42866,9 +43046,15 @@ arthur dent
assigning 5 points each to str, agi, dex and luck
+at the center of all this beauty stands the temple. It is adorned with
+
+
bandits
+battles and be cured of illnesses.
+
+
begin Doppelganger Challenge
@@ -42911,6 +43097,9 @@ candor
cleaning
+coexist on one side of the island, on its other side lies chaos and
+
+
cold, bleak and isolated cell
@@ -42941,6 +43130,9 @@ deep thought
desert mines one day.
+destruction. He did not want to lose his future wife and created a
+
+
dexterity
@@ -42968,6 +43160,9 @@ dude#1
ear
+ease!
+
+
east
@@ -42989,9 +43184,15 @@ eighteen
eleven
+elite army on the island. The love between them caused Eldrun to deploy
+
+
embryo
+enabling space travel for people from their current location.
+
+
england
@@ -43022,6 +43223,9 @@ firearms
five
+floating island has the characteristic of not staying still in just one
+
+
focused on lower level players, and to cherish those whom work hard everyday.
@@ -43031,6 +43235,9 @@ for adventurers
for listening his class
+fortress where its inhabitants were subjects to the same magic, allowing
+
+
four
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
+have an endless army with just his right hand and wield a great sword with
+
+
heart of gold
@@ -43076,6 +43286,9 @@ hey, hey, are you a hero, are you a hero?#0
hey, hey, are you a hero, are you a hero?#1
+his endless army to attack him. However, Zolrac and his group, called
+
+
house finances
@@ -43085,18 +43298,27 @@ humm... Sorry, I forgot what you need!
humm... You don't have everything I've asked for!
+husband and lives forever with her people in the floating island of Aeros!
+
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
in March 2nd 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
+
international worker day
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
+island and cried to the stars, which transported her to an island above
+
+
item dependant bonuses
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
+large as three men!
+
+
left
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
+
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ Mon nom est Karim je peu t'aider ?
need help to send gifts to everyone! Compete for scoreboards,
+never been seen before. Its citizens go there to receive forces for their
+
+
next
@@ -43289,6 +43520,9 @@ pal#1
pan galactic gargle blaster
+parents' orders. She escaped to the highest mountain on the fortress
+
+
passion
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
+place. Because of its lower layer, which contains a huge sphere that lifts
+
+
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+
+
+powerful magic that allowed him to fly. He followed her and found a
+
+
powerful shot
+precious stones and constructed in the purest form of marble that has
+
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+
+
quest completed.#0
quest completed.#0
@@ -43355,6 +43604,9 @@ sample
season it
+see the floating island named Aeros as well, you can do so too. The large
+
+
sent to the email you used to register on Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
+snakes live. However, these are stronger than usual, and some have wings.
+
+
some equipments
@@ -43490,9 +43745,15 @@ the better your chances to get the best cards.
the card will determine your gift - the more cards you spin,
+the clouds!
+
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
+the island above the ground. On the surface, we have the city, with
+
+
the north exit
@@ -43505,6 +43766,9 @@ Le PNJ a choisi la pierre
the npc choose scissors.
Le PNJ a choisi les ciseaux
+them to gain strength without dying! However, the magic granted them wings
+
+
thirteen
@@ -43556,6 +43820,9 @@ town finances
town overview
+training to prove their loyalty to the princess, and the war continues!
+
+
triple
@@ -43619,9 +43886,15 @@ warp back
weak shot
+well-made streets and grand houses. Their gardens are rich in plants that
+
+
west
+where its scientists have built portals that allow matter transport, thus
+
+
which creeps over Kamelot! During this event, the ancient
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
+with their voice as well. Science is also very advanced, reaching a point
+
+
wowbagger
@@ -43661,6 +43937,9 @@ tu as gagné
you win @@
Tu as gagné @@
+you'll not be able to leave until you're either dead or victorious
+
+
zealite
diff --git a/langs/lang_pt_BR.old b/langs/lang_pt_BR.old
index 96ff4401d..46db00fd2 100644
--- a/langs/lang_pt_BR.old
+++ b/langs/lang_pt_BR.old
@@ -1015,6 +1015,9 @@ Depurar - Alterar estatísticas
Decrease ranged damage taken for a few minutes, in exchange of agi and move speed. Req. Shield.
Diminui o dano recebido por alguns minutos, em troca de agi e velocidade de movimento. Req. Escudo.
+Definitely not suspcious at all.
+Definitivamente não é suspeito em tudo.
+
Definitive item break? Too dangerous! I don't want it!!
Quebra de item definitiva? Perigoso demais! Eu não quero isso !!
diff --git a/langs/lang_pt_BR.txt b/langs/lang_pt_BR.txt
index bc1c96514..f767a4719 100644
--- a/langs/lang_pt_BR.txt
+++ b/langs/lang_pt_BR.txt
@@ -3440,6 +3440,9 @@ Caça adicional Ilha será lançado no Dia dos Namorados!
Additionally, for the optimal experience, ensure your party has at least the following members and items:
Além disso, para a experiência ideal, garantir que o seu partido tem pelo menos os seguintes membros e itens:
+Additionally, there is a fish-like creature with wings that can grow as
+
+
Additionaly, all your movement will be restricted until either you're warped or log out.
Além disso, todo o seu movimento será restrito até que você esteja deformado ou desconecte-se.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
+
Antlers
Chifres
@@ -5732,6 +5741,9 @@ Banido da Academia
Banshee Bow
Arco Banshee
+Banshee Underling
+
+
Banu
@@ -6860,6 +6872,12 @@ Mas meu caso requer tratamento prolongado. Eu preciso ser hospitalizado. Eu tenh
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+
+
+But now, the princess is no longer alone. She has someone she loves as her
+
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
Mas agora somos bastante velhos. Eu me lembro da época em que eu tinha a sua idade. Minha geração não faz coisas estúpidas como a sua!
@@ -10358,8 +10376,8 @@ Derrotá-los é completamente opcional. Eles costumam dar mais experiência do q
Defeating it will advance the round. How far can you survive?
Derrotar isso avançará a rodada. Quão longe você pode sobreviver?
-Definitely not suspcious at all.
-Definitivamente não é suspeito em tudo.
+Definitely not suspicious at all.
+
Delicious Cookie
Biscoito Delicioso
@@ -11138,6 +11156,9 @@ Você quer ajudar? Eu prometo a você nenhuma recompensa, então você fará iss
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
Você quer contratar um mercenário? Ou, talvez, obter um cartão para que você possa chamá-los mais tarde? Eu posso até torná-los mais forte, se desejar.
+Do you want to leave?
+
+
Do you want to make %s?
@@ -12386,6 +12407,9 @@ Cogumelo Maligno
Evil Scythe
Foice Mau
+Evil Warp Crystal
+
+
Evil Wisp
Wisp Maligno
@@ -12809,6 +12833,9 @@ Flush
Fly away!
+Flying Underling
+
+
Following these lines are some other writings on this paper.
Seguindo estas linhas, há alguns outros escritos neste artigo.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
Guinevere é a esposa do rei. Se você falar com ela, o Rei vai ficar chateada e vai enviar soldados para você.
+Gunner Underling
+
+
Gwendolyn
Gwendolyn
@@ -14384,6 +14414,9 @@ Penteados.
Halberd
Alabarda
+Halberd Underling
+
+
Half Croconut
Croconozes partido.
@@ -14933,6 +14966,9 @@ Olá! Eu sou @@, e eu cuido da forja de Tulimshar. Eu costumo fazer lingotes de
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
Olá! Eu sou a Cassia, embaixadora. Durante o surto da Guerra dos Monstros, Halinarzo foi quase totalmente destruído.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
No entanto, também é possível que eles já estejam lá. Tenha cuidado com emboscadas!
+However, once the mines depleted, the town was mostly abandoned.
+
+
However, our mages have recently sensed something dark stirring.
No entanto, nossos magos sentiram recentemente algo sombrio se movendo.
@@ -16613,6 +16652,9 @@ Eu também ouço que pescadores gostam de pescar à noite. Eles dizem que a pesc
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
+
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ Não fracassarei mais, pois eu tenho convicção de que a minha nova fórmula é
I shall report to Kenton. I now entrust this quest in your hands!
I deve apresentar ao Kenton. Agora eu confio esta missão em suas mãos!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
+
I should be prepared before walking on this.
I deve ser preparado antes de caminhar sobre este assunto.
@@ -20087,6 +20132,9 @@ Em homenagem a Woody, vencedor da Páscoa de 2019.
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
Em memória. Que aqueles a quem nunca voltar encontrar descanso em suas afterlifes.
@@ -20120,6 +20168,9 @@ Em algumas masmorras etc., pode haver um monstro muito, muito mais forte do que
In the
No
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
+
In the end, elves would have quite the age to rivalize with human wizards.
No final, os elfos teriam uma idade bem avançada para rivalizar com os magos humanos.
@@ -20255,6 +20306,9 @@ Dentro dele, parece haver vários reagentes mágicos, pós e outras coisas.
Inside it, there'll be a Transcendence Gate.
Dentro dela, haverá um Portão da Transcendência.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
Dentro desta casa é meu irmão Alan. Ele sabe como fazer arcos de floresta de excelente qualidade.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
Isso é... Espere... Uau. Você... Matou o escorpião assassino.
+Is the capital and where the High Council seat is at.
+
+
Is there a reward?
Há uma recompensa?
@@ -20600,6 +20657,9 @@ São os ingredientes não raros que eu realmente preciso de ajuda!
It is the place where it all began... And I'm not talking about the Mana War.
É o lugar onde tudo começou ... E eu não estou falando sobre a Guerra de Mana.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
+
It is time to send %s to your beloved ones!
É hora de enviar %s para seus entes queridos!
@@ -21539,6 +21599,9 @@ Aldeia Terra do Fogo (@@ m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
Terra do fogo é um lugar tão quente ... Embora esta oficina é um lugar melhor para quebrar o tempo e espaço durante o Natal.
+Land of Fire Village
+
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Mágicos, Guerreiros e Arqueiros
Magic.
Magia.
+Magical Key of Death
+
+
+Magical Key of Earth
+
+
+Magical Key of Evil
+
+
+Magical Key of Fire
+
+
+Magical Key of Mana
+
+
+Magical Key of Sacred
+
+
+Magical Key of Water
+
+
+Magical Key of Wind
+
+
Magical MVP Card
Cartão MVP mágico
@@ -24836,6 +24923,9 @@ Mouboos, vem em meu socorro e me protege!
Moubootaur (Sealed)
Moubootauro (selado)
+Moubootaur Head
+
+
Moubootaur Legends Anniversary
Moubootaur Legends aniversário
@@ -24848,9 +24938,15 @@ Lendas do Moubootauro apresenta ...
Moubootaur Maze
Labirinto do Moubootauro
+Moubootaur Top Underling
+
+
Moubootaur's Domain
Domínio do Moubootauro
+Moubootaur's Ointment
+
+
Moubootaur, please spare me...
Moubootauro, por favor me poupe...
@@ -25082,6 +25178,9 @@ NÃO
NO!
NÃO!
+NOT
+
+
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Não para isso! Por ajudar o mooboo ferido, claro.
Not in the mood to chat.
Não está com vontade de conversar.
+Not much is known about the town due to strict access policies.
+
+
Not my problem.
Não é problema meu.
@@ -26795,6 +26897,9 @@ Pensando bem, ele realmente poderia usar um banho.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
Na sexta-feira, dia 14, um campo de caça adicional será aberto. Fale com o Soul Stone lá:>
+On the other side of the island, Nayta met Zolrac, the captain of the
+
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
Nas ruínas você pode encontrar saques grátis ... E na cidade nova, você pode encontrar o material mais resistente de todos.
@@ -26813,6 +26918,9 @@ Uma vez quebrado, eles vão perder o vínculo com o selo mágico.
Once he resumes working confidently, we can go over this important subject.
Uma vez que ele recomeça a trabalhar com confiança, podemos passar por cima deste importante assunto.
+Once in a while, it's always nice to look up at the sky. If you want to
+
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
Uma vez dentro da Caverna BOSS, você tem um tempo limite de cinco minutos para matar o chefe com seu grupo.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
+Once you enter there, %s.
+
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
Depois de ter o corante apropriado para o item, ##Barraste o corante##b para o material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
Oops, não há ninguém conhecido como @@ neste jogo.
+Op Build
+
+
Open Beta 2019
Open Beta 2019
@@ -30992,6 +31106,9 @@ Algumas balas têm propriedades elementares, a propósito. Agora, o que vai ser?
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
Alguns itens são produzidos apenas na Nivalis. Afinal, é difícil trabalhar corretamente com gelo em um deserto!
+Some notes were added to the book.
+
+
Some of finest elven craftmanship can be found there, like bows, for example.
Alguns dos melhores artesanatos élficos podem ser encontrados lá, como laços, por exemplo.
@@ -31328,6 +31445,9 @@ Desculpe, essa arena já está fechada.
Sorry, that is not the cake I love.
Desculpe, esse não é o bolo que eu amo.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
+
Sorry, this password was already used on another arena.
Desculpe, esta senha já foi usada em outra arena.
@@ -31793,6 +31913,9 @@ Uma joia tão preciosa não é algo que você daria de graça, a menos que estej
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
+Such people are excellent singers, some claim that they can cure diseases
+
+
Sudden Attack
Ataque Repentino
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
O Livro das Regras
+The Book of Towns
+
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
A Caverna das Provações e a Vila de Soren ... Só resta uma coisa.
@@ -33086,6 +33212,9 @@ O Conselho não está em sessão, ele se dispersou desde que Andrei Sakar foi a
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
O Conselho de Anciãos alistou os patos da nossa ilha em uma milícia. Além disso, os mestres do lado dos patos viram digno disponibilizar %d Patos iniciantes para nos ajudar.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ O La Johanne sempre tem notas interessantes.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
O Land Of Fire Village foi o resultado do colapso de dois mundos. É uma aldeia enorme.
+The Legend of Aeros
+
+
+The Lost Cities
+
+
The Loyalists
Os legalistas
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
+
The Monster King is on the move!
O Rei Monstro está em movimento!
@@ -33311,6 +33449,9 @@ O Mouboo parece estar sofrendo.
The Moubootaur
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
+
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
+
The item impact suggests jumping inside should be safe if you have enough life.
O impacto artigo sugere saltar dentro deve ser seguro se você tem vida suficiente.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
Theremin também é conhecida como a cidade perdida. Foi fundada uma vez para minérios e exportar para todos.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
+
These are being crafted by Alan.
Estes estão sendo criados por Alan.
@@ -34865,6 +35012,9 @@ Eles vivem abaixo desta cidade. Você pode fazer isso por mim?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+
+
They must be hiding in some cave... It's a shame!
Eles devem estar escondido em alguma caverna ... É uma vergonha!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
Este é um Menhir da Alma, mas parece mais mágico que os outros.
+This is a Windy map, walk speed and agility may be reduced.
+
+
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ Este homem é o lendário KING ARTHUR!
This map contains poisonous gas and may cause diseases.
+This map is extremely cold, and may cause frostbites.
+
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ Para provar seus resultados, traga-me @@ @@, @@ @@ e @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
Para provar que você é confiável, traga-me 1 %s ou 1 %s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Seasonal Quest
Top Hat
Cartola
+Top Underling
+
+
Topaz
Topázio
@@ -39221,6 +39386,9 @@ Assistente geral
Wizard Moccasins
Mocassins Mágicos
+Wizard Underling
+
+
Wizardry
Magia
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
Você se sente revigorado(a)!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
+
You find @@ inside!
Você encontra @@ dentro!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
Você concluiu a JesUSAves Grimorium quest!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
Zambacutou pesada espada
+Zarech, were benazed by the stars to have their swords granted with the
+
+
Zarkor
Zarkor
@@ -42857,6 +43034,9 @@ qualquer
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+
+
arrow keys
teclas direcionais
@@ -42866,9 +43046,15 @@ dente de arthur
assigning 5 points each to str, agi, dex and luck
atribuindo 5 pontos para força, agilidade, destreza e sorte
+at the center of all this beauty stands the temple. It is adorned with
+
+
bandits
+battles and be cured of illnesses.
+
+
begin Doppelganger Challenge
começar Desafio do Impostor
@@ -42911,6 +43097,9 @@ candor
cleaning
limpeza
+coexist on one side of the island, on its other side lies chaos and
+
+
cold, bleak and isolated cell
cela fria, sombria e isolada
@@ -42941,6 +43130,9 @@ pensamento profundo
desert mines one day.
minas do deserto um dia.
+destruction. He did not want to lose his future wife and created a
+
+
dexterity
destreza
@@ -42968,6 +43160,9 @@ dude#1
ear
orelha
+ease!
+
+
east
leste
@@ -42989,9 +43184,15 @@ dezoito
eleven
onze
+elite army on the island. The love between them caused Eldrun to deploy
+
+
embryo
+enabling space travel for people from their current location.
+
+
england
Inglaterra
@@ -43022,6 +43223,9 @@ armas de fogo
five
cinco
+floating island has the characteristic of not staying still in just one
+
+
focused on lower level players, and to cherish those whom work hard everyday.
focado em jogadores de nível inferior, e a valorizar aqueles que trabalham duro todos os dias.
@@ -43031,6 +43235,9 @@ para aventureiros(as)
for listening his class
por ouvir sua aula
+fortress where its inhabitants were subjects to the same magic, allowing
+
+
four
quatro
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
trabalho duro, Dimonds Cove foi construído.
+have an endless army with just his right hand and wield a great sword with
+
+
heart of gold
coração de ouro
@@ -43076,6 +43286,9 @@ hey, hey, você é uma heroína, você é uma heroína?
hey, hey, are you a hero, are you a hero?#1
hey, hey, você é um heroí, você é um heroí?
+his endless army to attack him. However, Zolrac and his group, called
+
+
house finances
Finanças da casa
@@ -43085,18 +43298,27 @@ Humm ... Desculpe, eu esqueci o que você precisa!
humm... You don't have everything I've asked for!
Humm ... Você não tem tudo que eu pedi!
+husband and lives forever with her people in the floating island of Aeros!
+
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
Se a proposta não for conveniente para você, basta fechar a janela de negociação para cancelar a troca de itens e dinheiro. Mas, se ambos pressionarem o botão "Aceitar Negociação", a troca será concluída.
in March 2nd 2018.
em 02 de março de 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
+
international worker day
Dia do trabalhador internacional
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
é seu alvo. Eles geram versões menores de si mesmos! Mate @@ deles e torne a praia segura para os turistas.
+island and cried to the stars, which transported her to an island above
+
+
item dependant bonuses
bônus dependentes de itens
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
rei
+large as three men!
+
+
left
esquerda
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
linha @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
+
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ meu nome é karim, você pode me ajudar?
need help to send gifts to everyone! Compete for scoreboards,
precisam de ajuda para enviar presentes para todos! Compete pela placares,
+never been seen before. Its citizens go there to receive forces for their
+
+
next
@@ -43289,6 +43520,9 @@ cara
pan galactic gargle blaster
pan garbage blaster galáctico
+parents' orders. She escaped to the highest mountain on the fortress
+
+
passion
paixão
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
lugar no mundo. Ele disse a Dimond que ele a faria
+place. Because of its lower layer, which contains a huge sphere that lifts
+
+
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+
+
+powerful magic that allowed him to fly. He followed her and found a
+
+
powerful shot
tiro poderoso
+precious stones and constructed in the purest form of marble that has
+
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+
+
quest completed.#0
@@ -43355,6 +43604,9 @@ amostra
season it
+see the floating island named Aeros as well, you can do so too. The large
+
+
sent to the email you used to register on Moubootaur Legends.
enviado para o e-mail usado no seu registro em Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
pequeno, vermelho, redondo e brilhante.
+snakes live. However, these are stronger than usual, and some have wings.
+
+
some equipments
@@ -43490,9 +43745,15 @@ o melhor suas chances de obter as melhores cartas.
the card will determine your gift - the more cards you spin,
o cartão vai determinar o seu presente - os mais cartões de você girar,
+the clouds!
+
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
o evento não será iniciado e HURNSCALD NÃO SERÁ LIBERADO.
+the island above the ground. On the surface, we have the city, with
+
+
the north exit
@@ -43505,6 +43766,9 @@ o npc escolhe rock.
the npc choose scissors.
o npc escolhe uma tesoura.
+them to gain strength without dying! However, the magic granted them wings
+
+
thirteen
treze
@@ -43556,6 +43820,9 @@ finanças da cidade
town overview
visão geral da cidade
+training to prove their loyalty to the princess, and the war continues!
+
+
triple
@@ -43619,9 +43886,15 @@ teleportar de volta
weak shot
tiro fraco
+well-made streets and grand houses. Their gardens are rich in plants that
+
+
west
oeste
+where its scientists have built portals that allow matter transport, thus
+
+
which creeps over Kamelot! During this event, the ancient
que se arrasta ao longo do Kamelot! Durante este evento, a antiga
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
com amigos
+with their voice as well. Science is also very advanced, reaching a point
+
+
wowbagger
wowbagger
@@ -43661,6 +43937,9 @@ você ganha
you win @@
você ganha @@
+you'll not be able to leave until you're either dead or victorious
+
+
zealite
diff --git a/langs/lang_ru.txt b/langs/lang_ru.txt
index 5ad1ce2c8..cefdba08b 100644
--- a/langs/lang_ru.txt
+++ b/langs/lang_ru.txt
@@ -3440,6 +3440,9 @@ Additional Hunting Island will be released on Valentine Day!
Additionally, for the optimal experience, ensure your party has at least the following members and items:
Кроме того, для получения оптимального опыта убедитесь, что в вашей пати есть как минимум следующие члены и предметы:
+Additionally, there is a fish-like creature with wings that can grow as
+
+
Additionaly, all your movement will be restricted until either you're warped or log out.
@@ -4613,6 +4616,9 @@ And it's so loyal to you... Maybe you should consider requesting the evolution f
And it's so loyal to you... You probably could evolve it.
+And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.
+
+
And not a rat? Not really... No, wait, I did. Multiple times, something relatively big, which came in as if they were liquid.
@@ -4844,6 +4850,9 @@ Anselmo seems to like he doubt your intentions, but he doesn't says anything els
Anselmo sighs and weaves, clearly not interested in getting help.
+Answer the riddle below.\nThree great sages were active before the Great Fire broke out. After the incident, only one of them remained active. What's his name? Lower case only.
+
+
Antlers
Рога
@@ -5732,6 +5741,9 @@ Banned from Academy
Banshee Bow
+Banshee Underling
+
+
Banu
Бану
@@ -6860,6 +6872,12 @@ But my case requires extended treatment. I need to be hospitalized. I'm afraid i
But my father, Prsm, always told me to check multiple times with the victim. I guess in your case it would be...
+But not everything is flowers. In the same way that beauty and harmony
+
+
+But now, the princess is no longer alone. She has someone she loves as her
+
+
But now, we are quite old. I remember the time when I was your age. My generation doesn't do stupid things like yours!
Но сейчас мы уже совсем взрослые. Я помню время, когда я был в вашем возрасте. Моё поколение не делает таких глупостей, как ваше!
@@ -10358,7 +10376,7 @@ Defeating is entirely optional. They usually give more experience than the avera
Defeating it will advance the round. How far can you survive?
Победив его, вы перейдёте в следующий раунд. Как далеко вы сможете зайти?
-Definitely not suspcious at all.
+Definitely not suspicious at all.
Delicious Cookie
@@ -11138,6 +11156,9 @@ Do you want to help? I promise you no reward, so you will do it of your own will
Do you want to hire a mercenary? Or perhaps get a card so you can invoke them later? I can even make them stronger if you wish.
Вы хотите нанять наёмника? Или, может быть, получить карту, чтобы вы могли вызвать их позже? Я могу даже сделать их сильнее, если хотите.
+Do you want to leave?
+
+
Do you want to make %s?
Вы хотите сделать %s?
@@ -12386,6 +12407,9 @@ Evil Mushroom
Evil Scythe
Злая Коса
+Evil Warp Crystal
+
+
Evil Wisp
Злой Висп
@@ -12809,6 +12833,9 @@ Flush
Fly away!
+Flying Underling
+
+
Following these lines are some other writings on this paper.
За этими строками следуют некоторые другие записи на этой бумаге.
@@ -14288,6 +14315,9 @@ Guinevere
Guinevere is the King's Wife. If you talk to her, the King will be upset and will send soldiers to you.
+Gunner Underling
+
+
Gwendolyn
Гвендолин
@@ -14384,6 +14414,9 @@ Hairstyles.
Halberd
Алебарда
+Halberd Underling
+
+
Half Croconut
Половина крокореха
@@ -14933,6 +14966,9 @@ Hello! I am @@, and I take care of Tulimshar forge. I usually make ingots from v
Hello! I am Alfred, and I offer paperwork jobs. No one likes to do them, because they consist in ##Bnot doing anything for hours straight##b. Heck, most people even snooze while filling them!
+Hello! I am Cassia and you are qualified to enter in the cave behind me. Do you want to?
+
+
Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.
Здравствуйте! Я Кассия, Посол. Во время начала Войны Монстров Халинарзо был почти полностью уничтожен.
@@ -16400,6 +16436,9 @@ However, it was mentioned that there is a small tunnel with a closed passage to
However, it's also possible they're there already. Be careful for ambushes!
Однако возможно, что они уже там. Будьте готовы к засадам!
+However, once the mines depleted, the town was mostly abandoned.
+
+
However, our mages have recently sensed something dark stirring.
@@ -16613,6 +16652,9 @@ I also hear fisherman likes to fish at night. They say the catch is bigger, if y
I also heard they would use a special kind of crystal to mark important passages, but to be honest, I've never seen it. I don't think I would notice even if I walked over it, haha!
+I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.
+
+
I also see you have a level @@ magic skill!"
@@ -18116,6 +18158,9 @@ I shall not fail any further, I think my new formula is perfect! Here's the EXP,
I shall report to Kenton. I now entrust this quest in your hands!
Я доложу Кентону. Теперь я передаю это задание вам!
+I should ask Wyara what's happening; This passage gives off eerily vibes.
+
+
I should be prepared before walking on this.
Я должен подготовиться, прежде чем идти на это.
@@ -20087,6 +20132,9 @@ In honor of Woody, winner of Easter 2019.
In honor of everyone whom participated on it!
+In its history, there is a princess named Nayta Ambhar, from the Ambhar
+
+
In memoriam. May those whom shall never come back find rest in their afterlifes.
На память. Пусть те, кто никогда не вернётся, обретут покой в своей загробной жизни.
@@ -20120,6 +20168,9 @@ In some dungeons etc., there might be a monster much, much stronger than all oth
In the
+In the dark caverns and forests, creatures like limeflies, maggots, and
+
+
In the end, elves would have quite the age to rivalize with human wizards.
В итоге у эльфов будет достаточно времени, чтобы соперничать с магами людей.
@@ -20255,6 +20306,9 @@ Inside it, seems to be several magic reagents, powders, and other stuff.
Inside it, there'll be a Transcendence Gate.
Внутри него будут Врата Трансцендентности.
+Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.
+
+
Inside this house is my brother Alan. He knows how to make Forest Bows of exquisite quality.
В этом доме живёт мой брат Алан. Он знает, как делать Лесные Луки изысканного качества.
@@ -20456,6 +20510,9 @@ Is that someone's luggage?
Is that... Wait... Wow. You... Killed the murderer scorpion.
Это... Подождите... Вау. Вы... Убили скорпиона-убийцу.
+Is the capital and where the High Council seat is at.
+
+
Is there a reward?
А награда будет?
@@ -20600,6 +20657,9 @@ It is the non-rare ingredients I actually need help with!
It is the place where it all began... And I'm not talking about the Mana War.
Это место, где всё началось... И я говорю не о Войне Маны.
+It is the second largest city in the world, and the capital of the Aurora continent.
+
+
It is time to send %s to your beloved ones!
@@ -21539,6 +21599,9 @@ Land Of Fire Village (@@m)
Land Of Fire is a place so warm... Although this workshop is a better place to break time and space during Christmas.
Огненные Земли - это такое тёплое место... Хотя эта мастерская - лучшее место для разрыва времени и пространства во время Рождества.
+Land of Fire Village
+
+
Land of Fire never had a problem with slimes before... And Jak1, the infamous slime researcher, was banned centuries ago with his sister to the Oranye Isles.
@@ -22541,6 +22604,30 @@ Magic, Warriors and Archers
Magic.
Магия.
+Magical Key of Death
+
+
+Magical Key of Earth
+
+
+Magical Key of Evil
+
+
+Magical Key of Fire
+
+
+Magical Key of Mana
+
+
+Magical Key of Sacred
+
+
+Magical Key of Water
+
+
+Magical Key of Wind
+
+
Magical MVP Card
@@ -24836,6 +24923,9 @@ Mouboos, come to my aid and protect me!
Moubootaur (Sealed)
Мубутавр (Запечатан)
+Moubootaur Head
+
+
Moubootaur Legends Anniversary
@@ -24848,9 +24938,15 @@ Moubootaur Legends presents...
Moubootaur Maze
Лабиринт Мубутавра
+Moubootaur Top Underling
+
+
Moubootaur's Domain
+Moubootaur's Ointment
+
+
Moubootaur, please spare me...
Мубутавр, пожалуйста, пощади меня...
@@ -25082,6 +25178,9 @@ NO
NO!
+NOT
+
+
NOT CLASSY ENOUGH!
@@ -25787,6 +25886,9 @@ Not for that! For helping out the injuried mouboo, of course.
Not in the mood to chat.
Нет настроения болтать.
+Not much is known about the town due to strict access policies.
+
+
Not my problem.
Это не мои проблемы.
@@ -26795,6 +26897,9 @@ On second thought, he really could use a bath.
On the friday, the 14th, an additional hunting field will be open. Talk to Soul Stone to go there :>
+On the other side of the island, Nayta met Zolrac, the captain of the
+
+
On the ruins you may find free loot... And on the new town, you may find the sturdiest stuff of all.
В руинах вы можете найти халявный лут... А в новом городе вы можете найти самые прочные вещи из всех.
@@ -26813,6 +26918,9 @@ Once broken, they'll lose the link to the magical seal.
Once he resumes working confidently, we can go over this important subject.
Как только он снова сможет спокойно работать, мы сможем перейти к этой важной теме.
+Once in a while, it's always nice to look up at the sky. If you want to
+
+
Once inside the BOSS Cave, you get a five minutes time limit to slay the boss with your party.
@@ -26861,6 +26969,9 @@ Once you do so, be you good or be you evil, challenge the Moubootaur and engrave
Once you done so, come back and report the new passcode... Then I'll disclose to you the real mission.
Как только вы это сделаете, вернитесь и сообщите новый пароль... Тогда я открою вам настоящее задание.
+Once you enter there, %s.
+
+
Once you have the appropriate colorant for the item, ##bdrag the colorant##b to the material.
@@ -27026,6 +27137,9 @@ Oops! You destroyed your %s.
Oops, there is nobody known as @@ on this game.
Упс, в этой игре нет никого, известного как @@.
+Op Build
+
+
Open Beta 2019
@@ -30992,6 +31106,9 @@ Some bullets have Elemental Properties, by the way. Now, what will it be?
Some items are only produced in Nivalis. After all, it is hard to work properly with ice in a desert!
Некоторые предметы производятся только в Нивалисе. В конце концов, в пустыне трудно нормально работать со льдом!
+Some notes were added to the book.
+
+
Some of finest elven craftmanship can be found there, like bows, for example.
@@ -31328,6 +31445,9 @@ Sorry, that arena is already closed.
Sorry, that is not the cake I love.
Извините, это не тот торт, который я люблю.
+Sorry, that's incorrect. If you do not know the answer, you're likely not the intended audience for this NPC.
+
+
Sorry, this password was already used on another arena.
Извините, этот пароль уже использовался на другой арене.
@@ -31793,6 +31913,9 @@ Such a precious gem is not something you would give away for free, unless you ar
Such convoys had been made since the Civil War, after all, many feared the Red Queen and moving to the sea was a sure way to stay out of her reach. None had ever heard again of them...
Такие конвои ходили ещё со времён Гражданской войны, ведь многие боялись Красной Королевы, а переезд к морю был верным способом остаться вне её досягаемости. Никто никогда больше не слышал о них...
+Such people are excellent singers, some claim that they can cure diseases
+
+
Sudden Attack
@@ -33074,6 +33197,9 @@ The Blue Sage will want to know this, I'll write him a letter.
The Book of Laws
Книга Законов
+The Book of Towns
+
+
The Cave Of Trials, and the Soren's Village... There's only one thing left.
@@ -33086,6 +33212,9 @@ The Council is not in session, it has dispersed since Andrei Sakar went to an ex
The Council of Elders has enlisted ducks of our island into a militia. In addition, the masters of the Duck Side have seen fit to spare %d Duck initiates to assist us.
+The Crystal doesn't react. You most likely cannot use this item yet.
+
+
The Deluxe Storage is available only to our best customers, and how lucky you! YOU are eligible!
@@ -33173,6 +33302,12 @@ The La Johanne always have interesting notes.
The Land Of Fire Village was the result from the collapse of two worlds. It is a huge village.
Деревня Огненных Земель возникла в результате распада двух миров. Это огромная деревня.
+The Legend of Aeros
+
+
+The Lost Cities
+
+
The Loyalists
Лоялисты
@@ -33272,6 +33407,9 @@ The Monster King Showdown
The Monster King has managed to take hold of Nivalis and Hurnscald; Travel to Frostia and Halinarzo has also been made difficult.
Королю Монстров удалось завладеть Нивалисом и Хёрнскальдом; путешествие во Фростию и Халинарзо также было затруднено.
+The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.
+
+
The Monster King is on the move!
@@ -33311,6 +33449,9 @@ The Mouboo seems to be lying in pain.
The Moubootaur
Мубутавр
+The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.
+
+
The Moubootaur is evil. Defeat him and protect the world. Now...
@@ -33770,6 +33911,9 @@ The inspector looks at you with a pale face.
The inspector might have cleaned the scene when he removed to body... You should talk to him.
+The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.
+
+
The item impact suggests jumping inside should be safe if you have enough life.
@@ -34733,6 +34877,9 @@ Therefore... Are you perhaps interested in some... illicit goods? %%p
Thermin is also known as the lost city. It was once founded to mine ores, and export to everyone.
Термин также известен как затерянный город. Когда-то он был основан для добычи руды и экспорта для всех желающих.
+Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.
+
+
These are being crafted by Alan.
Алан занимается их изготовлением.
@@ -34865,6 +35012,9 @@ They live below this town. Can you do this for me?
They might have sealed the direct path, but there's a tunnel in a cave which you can go in now that you have the magic key to open it.
+They might no longer exist in our world.
+
+
They must be hiding in some cave... It's a shame!
Они, наверное, прячутся в какой-нибудь пещере... Жаль!
@@ -35159,6 +35309,9 @@ This is a Cursed Lands map, you'll lose mana over time and may also incurr in de
This is a Soul Menhir, but seems more magical than the others.
Это Менгир Души, но кажется более магическим, чем другие.
+This is a Windy map, walk speed and agility may be reduced.
+
+
This is a debug NPC. If you don't know what you're doing, refuse.
@@ -35381,6 +35534,12 @@ This man is THE LEGENDARY KING ARTHUR!
This map contains poisonous gas and may cause diseases.
Эта карта содержит ядовитый газ и может вызвать различные недуги.
+This map is extremely cold, and may cause frostbites.
+
+
+This map is infested by Parasites, your HP will be periodically leeched to enemies!
+
+
This means ##BAll items were lost##b, and you need to collect EVERYTHING, again, to get the hat.
@@ -35939,6 +36098,9 @@ To prove me your results, bring me @@ @@, @@ @@ and @@ @@.
To prove me your trustworthyness, bring me 1 %s or 1 %s.
+To prove you are aware of the consequences, answer the riddle below.\nThree great sages were active before the Great Fire broke out. One of them however was no longer active long before the incident. What's his name? Lower case only.
+
+
To reach this place... You just need to follow the path after the waterfall. Come back to me after that.
Чтобы добраться до этого места... Вам просто нужно идти по тропинке после водопада. После этого возвращайтесь ко мне.
@@ -36107,6 +36269,9 @@ Top 5 - Golbarez Seasonal Quest
Top Hat
Цилиндр
+Top Underling
+
+
Topaz
Топаз
@@ -39221,6 +39386,9 @@ Wizard General
Wizard Moccasins
+Wizard Underling
+
+
Wizardry
Чародейство
@@ -40961,6 +41129,9 @@ You failed to reply to the captcha in time and were arrested for AFK Botting. Yo
You feel refreshed!
+You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.
+
+
You find @@ inside!
Внутри вы находите @@!
@@ -41138,6 +41309,9 @@ You have collected @@/@@ Mob Points.
You have completed the Jesusaves Grimorium Quest!
+You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.
+
+
You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.
@@ -42590,6 +42764,9 @@ Zack
Zambacutou Heavy Sword
+Zarech, were benazed by the stars to have their swords granted with the
+
+
Zarkor
Заркор
@@ -42857,6 +43034,9 @@ any
any Heroes Hold Dungeon
+are well taken care of but also dangerous. The waters are crystalline, and
+
+
arrow keys
клавиш со стрелками
@@ -42866,9 +43046,15 @@ arthur dent
assigning 5 points each to str, agi, dex and luck
+at the center of all this beauty stands the temple. It is adorned with
+
+
bandits
+battles and be cured of illnesses.
+
+
begin Doppelganger Challenge
@@ -42911,6 +43097,9 @@ candor
cleaning
уборки
+coexist on one side of the island, on its other side lies chaos and
+
+
cold, bleak and isolated cell
@@ -42941,6 +43130,9 @@ deep thought
desert mines one day.
пустынных шахт.
+destruction. He did not want to lose his future wife and created a
+
+
dexterity
@@ -42968,6 +43160,9 @@ dude#1
ear
+ease!
+
+
east
восток
@@ -42989,9 +43184,15 @@ eighteen
eleven
одиннадцать
+elite army on the island. The love between them caused Eldrun to deploy
+
+
embryo
+enabling space travel for people from their current location.
+
+
england
@@ -43022,6 +43223,9 @@ firearms
five
пять
+floating island has the characteristic of not staying still in just one
+
+
focused on lower level players, and to cherish those whom work hard everyday.
@@ -43031,6 +43235,9 @@ for adventurers
for listening his class
+fortress where its inhabitants were subjects to the same magic, allowing
+
+
four
четыре
@@ -43055,6 +43262,9 @@ great fire
hard work, Dimonds Cove was built.
и упорной работы, был построен Даймоднс Коув.
+have an endless army with just his right hand and wield a great sword with
+
+
heart of gold
@@ -43076,6 +43286,9 @@ hey, hey, are you a hero, are you a hero?#0
hey, hey, are you a hero, are you a hero?#1
Эй, эй, вы герой, вы герой?
+his endless army to attack him. However, Zolrac and his group, called
+
+
house finances
внутренние финансы
@@ -43085,18 +43298,27 @@ humm... Sorry, I forgot what you need!
humm... You don't have everything I've asked for!
+husband and lives forever with her people in the floating island of Aeros!
+
+
if the proposal is not convenient for you, just close the trading window to cancel the exchange of items and money. But if both press the 'Accept Negotiation' button, then the marketing will be finished.
Если предложение вас не устраивает, просто закройте окно торговли, чтобы отменить обмен предметами и деньгами. Но если оба нажмут кнопку "Принять переговоры", то сделка будет завершена.
in March 2nd 2018.
+instead of their left arm! Thus, Eldrun became very happy, as he could now
+
+
international worker day
is your target. They spawn smaller versions of themselves! Kill @@ of them and make the beach safe for tourists.
является вашей целью. Они порождают уменьшенные копии самих себя! Убейте @@ из них и сделайте пляж безопасным для туристов.
+island and cried to the stars, which transported her to an island above
+
+
item dependant bonuses
бонусы, зависящие от предмета
@@ -43121,6 +43343,9 @@ killing a roaming boss
king
+large as three men!
+
+
left
@@ -43145,6 +43370,9 @@ lightbringer
line @@:
+lineage, at 15 years old, who was destined to arrange a marriage with the
+
+
lock-picking a vault or similar
@@ -43217,6 +43445,9 @@ my name is karim can you help me?.
need help to send gifts to everyone! Compete for scoreboards,
+never been seen before. Its citizens go there to receive forces for their
+
+
next
@@ -43289,6 +43520,9 @@ pal#1
pan galactic gargle blaster
+parents' orders. She escaped to the highest mountain on the fortress
+
+
passion
@@ -43304,12 +43538,27 @@ permanent ban
place in the world. He told Dimond that he would make her
место в мире. Он сказал Даймонд, что построит её
+place. Because of its lower layer, which contains a huge sphere that lifts
+
+
planting a tree
+power of light! They live at the highest mountain, subjected to extreme
+
+
+powerful magic that allowed him to fly. He followed her and found a
+
+
powerful shot
+precious stones and constructed in the purest form of marble that has
+
+
+prince known as Eldrun. She did not love him and didn't want to obey her
+
+
quest completed.#0
@@ -43355,6 +43604,9 @@ sample
season it
+see the floating island named Aeros as well, you can do so too. The large
+
+
sent to the email you used to register on Moubootaur Legends.
отправлен на электронную почту, которую вы использовали для регистрации в Moubootaur Legends.
@@ -43391,6 +43643,9 @@ small
small, red, round and shiny.
+snakes live. However, these are stronger than usual, and some have wings.
+
+
some equipments
@@ -43490,9 +43745,15 @@ the better your chances to get the best cards.
the card will determine your gift - the more cards you spin,
+the clouds!
+
+
the event won't start and HURNSCALD WON'T BE LIBERATED.
+the island above the ground. On the surface, we have the city, with
+
+
the north exit
@@ -43505,6 +43766,9 @@ the npc choose rock.
the npc choose scissors.
+them to gain strength without dying! However, the magic granted them wings
+
+
thirteen
@@ -43556,6 +43820,9 @@ town finances
town overview
ситуацию в городе
+training to prove their loyalty to the princess, and the war continues!
+
+
triple
@@ -43619,9 +43886,15 @@ warp back
weak shot
+well-made streets and grand houses. Their gardens are rich in plants that
+
+
west
западной
+where its scientists have built portals that allow matter transport, thus
+
+
which creeps over Kamelot! During this event, the ancient
которая расползается по Камелоту! Во время этого события древнее
@@ -43631,6 +43904,9 @@ will not expire on death
with friends
с друзьями
+with their voice as well. Science is also very advanced, reaching a point
+
+
wowbagger
@@ -43661,6 +43937,9 @@ you win
you win @@
+you'll not be able to leave until you're either dead or victorious
+
+
zealite
diff --git a/maps/re/001-15.mcache b/maps/re/001-15.mcache
new file mode 100644
index 000000000..9032dc493
--- /dev/null
+++ b/maps/re/001-15.mcache
Binary files differ
diff --git a/maps/re/001-16.mcache b/maps/re/001-16.mcache
new file mode 100644
index 000000000..b565032fb
--- /dev/null
+++ b/maps/re/001-16.mcache
Binary files differ
diff --git a/maps/re/018-1.mcache b/maps/re/018-1.mcache
index 5fd249b7c..8a657d907 100644
--- a/maps/re/018-1.mcache
+++ b/maps/re/018-1.mcache
Binary files differ
diff --git a/maps/re/024-1.mcache b/maps/re/024-1.mcache
index aa35d66fc..cd41e8bc1 100644
--- a/maps/re/024-1.mcache
+++ b/maps/re/024-1.mcache
Binary files differ
diff --git a/maps/re/026-2.mcache b/maps/re/026-2.mcache
index 589618c9d..e8429bd76 100644
--- a/maps/re/026-2.mcache
+++ b/maps/re/026-2.mcache
Binary files differ
diff --git a/maps/re/026-6.mcache b/maps/re/026-6.mcache
index b86006ff2..5731abc1e 100644
--- a/maps/re/026-6.mcache
+++ b/maps/re/026-6.mcache
Binary files differ
diff --git a/maps/re/026-8.mcache b/maps/re/026-8.mcache
new file mode 100644
index 000000000..6ac0fa5b2
--- /dev/null
+++ b/maps/re/026-8.mcache
Binary files differ
diff --git a/npc/000-1/exit.txt b/npc/000-1/exit.txt
index aed9a8c92..84d2ff323 100644
--- a/npc/000-1/exit.txt
+++ b/npc/000-1/exit.txt
@@ -14,6 +14,12 @@ OnTalkNearby:
end;
}
+ // If your soul is lost, Soul Menhir logic is invalid
+ if (Class == Skelli) {
+ warp "001-16", 90, 45;
+ end;
+ }
+
// Switch LOCATION$ and warp to nearest town's Soul Menhir
.@lx=array_find($@LOCMASTER_LOC$, LOCATION$);
if (.@lx >= 0) {
diff --git a/npc/001-1/bgmaster.txt b/npc/001-1/bgmaster.txt
index cd4af38c8..b9c8d63c3 100644
--- a/npc/001-1/bgmaster.txt
+++ b/npc/001-1/bgmaster.txt
@@ -7,22 +7,76 @@
001-1,96,37,0 script Cassia NPC_FEMALE,{
mesn;
+ if (Class == Skelli) goto L_Busy;
+ if ($GAME_STORYLINE >= 5 && getq(General_Narrator) >= 23) goto L_Moubootaur;
if (is_gm()) goto L_Control;
if ($@BGMaster1) goto L_Busy;
-
-L_Intro:
- mesq l("Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.");
+ goto L_Intro;
+
+// 001-15 Battlegrounds Functions
+L_Moubootaur:
+ mesq l("Hello! I am Cassia and you are qualified to enter in the cave behind me. Are you interested?");
+ if (askyesnosafe() == ASK_NO) { closeclientdialog; end; }
+ setpcblock(PCBLOCK_HARD, true);
+ mesc l("STORY MODE ENABLED. Monsters won't attack you, so you can read without worries."), 1;
next;
- mesq l("To train their soldiers, they frequently face Frostia in duels. Adventurers are welcome to join their drills.");
+ mesn;
+ mesq l("Inside this cave are actual ruins from Aeros civilization, which the Moubootaur has upturned to fuel his plans. Our intelligence reports the Moubootaur is inside it.");
next;
- mesq l("To join a drill, right click on one of the lieutenants and join their Battle Stations. The drill can last up to 10 minutes.");
+ mesn;
+ mesc l("Once you enter there, %s.", b(l("you'll not be able to leave until you're either dead or victorious"))), 1;
next;
- mesq l("The sides accept only one adventurer. You'll also lose access to General Chat upon joining, and will have to use #world.");
+ mesn;
+ mesq l("And maybe not even death can stop you! You're entering directly in the Mana Plane section of the World's Heart - the Soul Menhir will %s work inside.", b(l("NOT")));
next;
- mesq l("Be sure to have a friend before joining, or you may have to logout in order to be able to move again!");
- close;
+ mesn;
+ mesq l("I have absolutely no idea on what to expect inside, so you should come prepared! Make sure you have a party with you, because you might be stuck there %s if you fail.", b(l("FOREVER"))); // You _can_ leave, but it's somewhat difficult
+ next;
+
+ // Superior Safeguard
+ if (!is_staff()) goto L_TODO;
+
+ // Ask if the player is sure they want to go to the showdown
+ mesc l("With all that said, are you sure you want to enter?!"), 1;
+ if (askyesnosafe() == ASK_NO) goto L_Close;
+
+ warp "001-15", any(52,53), 58;
+ // Start main timer
+ if (!$@ML_SHOWDOWN)
+ donpcevent "#Moubootaur::OnIntroCutscene";
+ // TODO: bg_join?
+ // TODO: "#Moubootaur"::PermanentDebuffs()
+ goto L_Close;
+L_TODO:
+ // Lore goes here...
+ // Endtrail
+ mes "";
+ mesc l("@@ You need to wait further releases to continue this quest!", b(l("WARNING:"))), 1;
+ next;
+ goto L_Close;
+
+// This label closes the dialogue after unblocking the player
L_Close:
+ setpcblock(PCBLOCK_HARD, false);
+ closeclientdialog;
+ close;
+
+// 001-2 Battlegrounds Function
+L_Intro:
+ mesq l("Hello! I am Cassia, Ambassator. During the Monster War outbreak, Halinarzo was almost entirely destroyed.");
+ next;
+ mesq l("To train their soldiers, they frequently face Frostia in duels. Adventurers are welcome to join their drills.");
+ next;
+ if (.sparring) {
+ mesq l("To join a drill, right click on one of the lieutenants and join their Battle Stations. The drill can last up to 10 minutes.");
+ next;
+ mesq l("The sides accept only one adventurer. You'll also lose access to General Chat upon joining, and will have to use #world.");
+ next;
+ mesq l("Be sure to have a friend before joining, or you may have to logout in order to be able to move again!");
+ } else {
+ mesq l("I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.");
+ }
close;
L_Busy:
@@ -31,6 +85,10 @@ L_Busy:
} else {
mesq l("People are challenging now.");
}
+ if ($GAME_STORYLINE >= 5) {
+ dnext;
+ mesq l("I also prevent adventurers which did not obtain Commander Povo's approval from entering the cave behind me.");
+ }
close;
L_Control:
@@ -56,6 +114,7 @@ L_On:
enablenpc "Lt. Gerry";
mapannounce "001-1", l("Frostia and Halinarzo are now on a spar!"), bc_map;
mes "Event enabled.";
+ .sparring = true;
close;
L_Off:
@@ -64,6 +123,7 @@ L_Off:
disablenpc "Lt. Randy";
disablenpc "Lt. Gerry";
mes "Event disabled.";
+ .sparring = false;
close;
OnPcQuit:
@@ -118,6 +178,7 @@ L_Cancel:
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
+ .sparring = false;
end;
OnVictor1:
@@ -132,6 +193,7 @@ OnVictor1:
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
+ .sparring = false;
end;
OnVictor2:
@@ -146,6 +208,7 @@ OnVictor2:
bg_destroy($@FK_Team1);
bg_destroy($@FK_Team2);
$@BGMaster1=2;
+ .sparring = false;
end;
OnInit:
@@ -160,6 +223,7 @@ OnInit:
.sex = G_FEMALE;
.distance = 7;
+ .sparring = false;
/*
// This script is TODO
if (!debug) {
diff --git a/npc/001-1/eventmaster.txt b/npc/001-1/eventmaster.txt
index a040470d6..d855c0ff2 100644
--- a/npc/001-1/eventmaster.txt
+++ b/npc/001-1/eventmaster.txt
@@ -757,7 +757,7 @@ OnAutoSched:
DiamondBif, BigDiamondBif, AmethystBif, BigAmethystBif,
SapphireBif, BigSapphireBif, SmallMagicBif, MagicBif, BigMagicBif,
SmallMagicBif, SmallMagicBif, SmallMagicBif, SmallMagicBif,
- CloverPatch, EvilScythe);
+ ($EVENT$ == "Patrick" ? StPatricksClover : CloverPatch), EvilScythe);
spawner(strmobinfo(1, .@m), .@m, .@r);
.@t += .@r;
// Additional complement after Monster King is dead, with the remainder
@@ -768,6 +768,13 @@ OnAutoSched:
.@t += .@r;
}
}
+ // Spawn 1 Monster Sergeant/Lieutenant/etc. for every 2 players online
+ if ($GAME_STORYLINE >= 5) {
+ for (.@i=0; .@i <= (getusers(1)/2); .@i++) {
+ .@m = any(MonsterSergeant, MonsterLieutenant, MonsterCaptain, MonsterColonel, MonsterGeneral);
+ spawner(strmobinfo(1, .@m), .@m, 1);
+ }
+ }
freeloop(false);
// Open gate if full
if ($@AEROS_SPWN == 2 && .WALL) {
diff --git a/npc/001-11/Soren.txt b/npc/001-11/Soren.txt
index 8c47ae8e4..3da77e3b5 100644
--- a/npc/001-11/Soren.txt
+++ b/npc/001-11/Soren.txt
@@ -152,6 +152,7 @@ OnInit:
sellitem SmokeGrenade;
sellitem LousyMoccasins;
sellitem LeatherQuiver, 3500;
+ sellitem StrPotionA, 1000;
sellitem AgiPotionA, 1000;
sellitem VitPotionA, 1000;
sellitem IntPotionA, 1000;
@@ -162,7 +163,7 @@ OnInit:
sellitem CandorWarpCrystal, 100;
//sellitem MagicApple;
//sellitem FishingRod;
- //sellitem WurtziteOre;
+ //sellitem Wurtzite;
// TODO: LottoBox - Random hat to distinguish players
sellitem DoggyDog;
*/
diff --git a/npc/001-15/_import.txt b/npc/001-15/_import.txt
new file mode 100644
index 000000000..8e0f742e7
--- /dev/null
+++ b/npc/001-15/_import.txt
@@ -0,0 +1,4 @@
+// Map 001-15: Moubootaur Showdown
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-15/_mobs.txt",
+"npc/001-15/ctrl.c",
diff --git a/npc/001-15/_mobs.txt b/npc/001-15/_mobs.txt
new file mode 100644
index 000000000..e369cf266
--- /dev/null
+++ b/npc/001-15/_mobs.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-15: Moubootaur Showdown mobs
+001-15,50,39,30,19 monster Vampire Bat 1063,12,300000,30000
+001-15,85,39,3,19 monster House Maggot 1084,6,30000,30000
diff --git a/npc/001-15/ctrl.c b/npc/001-15/ctrl.c
new file mode 100644
index 000000000..928a53bdc
--- /dev/null
+++ b/npc/001-15/ctrl.c
@@ -0,0 +1,960 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Moubootaur Legends :: Final Showdown
+//
+001-15 mapflag zone FinalMMO
+// Do we need a battlegrounds MF?
+
+001-15,0,0,0 script #Moubootaur NPC_HIDDEN,{
+ end;
+
+public function DeathHandler;
+public function ReviveHandler;
+
+function _boostMe {
+ .@mg = getarg(0);
+ .@bat=getunitdata(.@mg, UDT_ATKMAX);
+ .@bai=getunitdata(.@mg, UDT_ATKMIN);
+ .@bdf=getunitdata(.@mg, UDT_DEF);
+ .@bcr=getunitdata(.@mg, UDT_CRIT);
+ .@bag=getunitdata(.@mg, UDT_AGI);
+ .@bf = getarg(1, $@ML_SHOWDOWN) + 3;
+ .@s=.@bf+rand2(5);
+ .@bat = .@bat * (.@bf / 2);
+ .@bcr = .@bcr * (.@bf / 2);
+ setunitdata(.@mg, UDT_ATKMAX, .@bat+(.@s*5));
+ setunitdata(.@mg, UDT_DEF, .@bdf+(.@s*4));
+ setunitdata(.@mg, UDT_CRIT, .@bcr+(.@s*3));
+ setunitdata(.@mg, UDT_ATKMIN, .@bai+(.@s*2));
+ setunitdata(.@mg, UDT_AGI, .@bag+(.@s*1));
+ return;
+}
+
+// Maybe this should be a function
+public function MapMode {
+ // Define the planned new map mode
+ .@new_mode = rand2(10);
+
+ // Revert the old map mode
+ switch (.mapMode) {
+ case ML_MAPMODE_PVP:
+ pvpoff("001-15"); break;
+ case ML_MAPMODE_NOCHAT:
+ removemapflag("001-15",mf_nocommand);
+ removemapflag("001-15",mf_nochat);
+ break;
+ case ML_MAPMODE_NOPETS:
+ removemapflag("001-15",mf_nopet);
+ break;
+ default:
+ break;
+ }
+
+ // Set the new map mode
+ switch (.@new_mode) {
+ case ML_MAPMODE_PVP:
+ pvpon("001-15"); break;
+ case ML_MAPMODE_NOCHAT:
+ setmapflag("001-15",mf_nocommand,true);
+ setmapflag("001-15",mf_nochat,true);
+ break;
+ case ML_MAPMODE_NOPETS:
+ setmapflag("001-15",mf_nopet,true);
+ break;
+ default:
+ break;
+ }
+
+ // Save the new map mode
+ .mapMode = .@new_mode;
+
+ // TODO: update/set map mask (visual information)
+ return;
+}
+
+OnDoT:
+ if (ispcdead()) DeathHandler(true);
+ percentheal -1, 0;
+ end;
+
+// The functions which the Generals call when they die
+OnBlue:
+ if (!playerattached()) {
+ .@x=72; .@y=41;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyWater, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnBrown:
+ if (!playerattached()) {
+ .@x=25; .@y=55;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyEarth, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnRed:
+ if (!playerattached()) {
+ .@x=74; .@y=55;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyFire, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnGreen:
+ if (!playerattached()) {
+ .@x=42; .@y=36;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyWind, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnWhite:
+ if (!playerattached()) {
+ .@x=25; .@y=25;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeySacred, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnGolden:
+ if (!playerattached()) {
+ .@x=40; .@y=50;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyMana, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnPurple:
+ if (!playerattached()) {
+ .@x=70; .@y=30;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyDeath, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+OnBlack:
+ if (!playerattached()) {
+ .@x=25; .@y=40;
+ } else {
+ getmapxy(.@m$, .@x, .@y, 0);
+ }
+ makeitem(MKeyEvil, 1, "001-15", .@x+any(-1,0,1), .@y+any(-1,0,1));
+ .@m=monster("001-15", .@x-3, .@y-3, .@x+3, .@y+3, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m, 3);
+ end;
+
+
+
+
+
+// Setup first stage
+OnFirstStage:
+ // Eliminate all existing keys
+ DelItemFromEveryPlayer(MKeyWater);
+ DelItemFromEveryPlayer(MKeyEarth);
+ DelItemFromEveryPlayer(MKeyFire);
+ DelItemFromEveryPlayer(MKeyWind);
+ DelItemFromEveryPlayer(MKeySacred);
+ DelItemFromEveryPlayer(MKeyMana);
+ DelItemFromEveryPlayer(MKeyDeath);
+ DelItemFromEveryPlayer(MKeyEvil);
+
+ // Spawn the map-wide reinforcements, 20 units for 8 generals
+ areamonster("001-15", 20, 20, 80, 59, strmobinfo(1, FlyingUnderling), FlyingUnderling, 20);
+
+ // Spawn all Generals and their personal guard
+ areamonster("001-15", 62, 37, 76, 45, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 62, 37, 76, 45, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 62, 37, 76, 45, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 62, 37, 76, 45, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 72, 41, "Guardian of Water", TopUnderling, 1, "#Moubootaur::OnBlue");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 20, 50, 32, 59, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 20, 50, 32, 59, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 20, 50, 32, 59, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 20, 50, 32, 59, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 25, 55, "Guardian of Earth", TopUnderling, 1, "#Moubootaur::OnEarth");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 68, 51, 80, 59, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 68, 51, 80, 59, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 68, 51, 80, 59, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 68, 51, 80, 59, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 74, 55, "Guardian of Fire", TopUnderling, 1, "#Moubootaur::OnRed");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 35, 23, 47, 40, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 35, 23, 47, 40, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 35, 23, 47, 40, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 35, 23, 47, 40, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 42, 36, "Guardian of Wind", TopUnderling, 1, "#Moubootaur::OnGreen");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 20, 20, 32, 30, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 20, 20, 32, 30, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 20, 20, 32, 30, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 20, 20, 32, 30, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 25, 25, "Guardian of Sacred", TopUnderling, 1, "#Moubootaur::OnWhite");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 33, 43, 46, 56, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 33, 43, 46, 56, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 33, 43, 46, 56, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 33, 43, 46, 56, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 40, 50, "Guardian of Mana", TopUnderling, 1, "#Moubootaur::OnGolden");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 64, 24, 77, 33, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 64, 24, 77, 33, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 64, 24, 77, 33, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 64, 24, 77, 33, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 70, 30, "Guardian of Death", TopUnderling, 1, "#Moubootaur::OnPurple");
+ _boostMe(.@gen, 6);
+
+ areamonster("001-15", 21, 33, 30, 47, strmobinfo(1, GunnerUnderling), GunnerUnderling, 2);
+ areamonster("001-15", 21, 33, 30, 47, strmobinfo(1, HalberdUnderling), HalberdUnderling, 2);
+ areamonster("001-15", 21, 33, 30, 47, strmobinfo(1, WizardUnderling), WizardUnderling, 2);
+ areamonster("001-15", 21, 33, 30, 47, strmobinfo(1, BansheeUnderling), BansheeUnderling, 2);
+ .@gen = monster("001-15", 25, 40, "Guardian of Evil", TopUnderling, 1, "#Moubootaur::OnBlack");
+ _boostMe(.@gen, 6);
+
+ end;
+
+
+
+
+
+
+
+
+
+// **MOUBOOTAUR HEARTBEAT**
+OnTimer25000:
+OnTimer20000:
+OnTimer15000:
+ consolewarn("Warning, fail-safe mechanism triggered to Moubootaur (Awakened).");
+OnTimer10000:
+ .mana += any(1,2,3,5); // Recover mana
+
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_DOT) {
+ maptimer2("001-15", 10, "#Moubootaur::OnDoT");
+ }
+
+ // TODO: Defeat Conditions
+ // TODO: Work in Progress
+
+
+ // Maybe we need to advance the turn
+ .tbet += 1;
+ if (!(.tbet % 9)) {
+ // Reset turn cycle (90s) and advance turn counter
+ .tbet=0;
+ .turn+=1;
+
+ // Change map mode
+ if ($@ML_SHOWDOWN >= 3)
+ MapMode();
+
+ // Spawn the air corps
+ if ($@ML_SHOWDOWN >= 2) {
+ for (.@i=0; .@i<5; .@i++) {
+ .@m=areamonster("001-15", 49, 30, 60, 42, strmobinfo(1, FlyingUnderling), FlyingUnderling, 1);
+ _boostMe(.@m); // Will boost according to showdown state
+ }
+ }
+ // TODO: Tally Battlegrounds results
+ }
+
+ initnpctimer;
+ end;
+
+
+
+
+
+
+
+
+
+
+
+// Scope: MLDIE_
+// DeathHandler( end = false , dead = true )
+public function DeathHandler {
+ // First death, handle it!
+ debugmes "Change Class from %d to %d", Class, Skelli;
+ if (Class != Skelli) {
+ MLDIE_Class = Class;
+ jobchange Skelli;
+ }
+ // Save your equipment selection for a quick equip() after unstoring
+ // (Handled by ReviveHandler)
+ for ( .@i=EQI_HEAD_TOP ; .@i<=EQI_SHADOW_ACC_L ; .@i++ ) {
+ array_push( MLDIE_Eqp, getequipid(.@i) );
+ }
+
+ // All your items go away to Special Storage
+ charcommand("@storeall 6");
+ // All your money goes away to Special Storage
+ MLDIE_Zeny += Zeny;
+ Zeny = 0;
+
+ // Permanent Debuff is handled by hub functions
+
+ // TODO: Death NPC which recovers all your items
+ // (Do we have bindings for unstoring? We might need a new C-level function)
+ //
+ // (Also, we need to check if Death NPC already exists)
+ // (And this check must be independent on your Class)
+ // (DeathNPC should call ReviveHandler if Class is Skelli or ...?)
+ // (Also, we're failing to revive you here D:)
+
+ // TODO: Check if DeathNpc already exists
+ // TODO: If not and getmap is 001-15, create it
+ // TODO: Else, create it close to a random player in map
+ // TODO: If that fails, create in entrance
+ // TODO: We need a way to distinguish undead players from normal players?
+ // (Will we use Benjamin sprite? What npc_duplicate gives us to track?)
+ // NPC_GUARD_DEAD, NPC_INJURIED_GIRL, or can we make it dynamic?
+
+ // Eliminate any key you may have and revive the trupe
+ // No state check is necessary; the keys should not be duplicated
+ if (countitem(MKeyWater)) {
+ delitem MKeyWater, 1;
+ .@gen = monster("001-15", 72, 41, "Guardian of Water", TopUnderling, 1, "#Moubootaur::OnBlue");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyEarth)) {
+ delitem MKeyEarth, 1;
+ .@gen = monster("001-15", 25, 55, "Guardian of Earth", TopUnderling, 1, "#Moubootaur::OnEarth");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyFire)) {
+ delitem MKeyFire, 1;
+ .@gen = monster("001-15", 74, 55, "Guardian of Fire", TopUnderling, 1, "#Moubootaur::OnRed");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyWind)) {
+ delitem MKeyWind, 1;
+ .@gen = monster("001-15", 42, 36, "Guardian of Wind", TopUnderling, 1, "#Moubootaur::OnGreen");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeySacred)) {
+ delitem MKeySacred, 1;
+ .@gen = monster("001-15", 25, 25, "Guardian of Sacred", TopUnderling, 1, "#Moubootaur::OnWhite");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyMana)) {
+ delitem MKeyMana, 1;
+ .@gen = monster("001-15", 40, 50, "Guardian of Mana", TopUnderling, 1, "#Moubootaur::OnGolden");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyDeath)) {
+ delitem MKeyDeath, 1;
+ .@gen = monster("001-15", 70, 30, "Guardian of Death", TopUnderling, 1, "#Moubootaur::OnPurple");
+ _boostMe(.@gen, 12);
+ }
+ if (countitem(MKeyEvil)) {
+ delitem MKeyEvil, 1;
+ .@gen = monster("001-15", 25, 40, "Guardian of Evil", TopUnderling, 1, "#Moubootaur::OnBlack");
+ _boostMe(.@gen, 12);
+ }
+
+ // Warp you to the respawn area if set (and revives you)
+ if (getarg(1, true)) {
+ debugmes "Now reviving ML victim...";
+ atcommand("@alive");
+ warp "001-15", rand2(84, 87), rand2(21, 26);
+ }
+
+ // Prevent you from being slaughtered right after
+ // By granting you **4** seconds of invincibility!
+ // TODO: Check if this works correctly
+ sc_start SC_INVINCIBLE, rand(4000,4900), 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_NOICON;
+
+ debugmes "We have now completed the Death Handler";
+
+ // We were instructed to terminate the interaction
+ if (getarg(0, false))
+ end;
+ // Otherwise, return the control to caller
+ return;
+}
+
+
+
+
+
+
+
+
+// Undo everything DeathHandler did, and takes same arguments
+public function ReviveHandler {
+ // TODO: "#Moubootaur"::PermanentDebuffs() if getmap() == 001-15
+ // Restore your Class
+ jobchange MLDIE_Class;
+ Zeny += MLDIE_Zeny;
+ // Reset these variables
+ MLDIE_Class = 0;
+ MLDIE_Zeny = 0;
+
+ // TODO: !! Unstash all your items !!
+ unstoreall(6);
+ /* This code does not work
+ sc_start SC_INVINCIBLE, 99999, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_NOICON;
+ openstorage(6, STORAGE_ACCESS_GET);
+ sc_end SC_INVINCIBLE;
+ sc_start SC_INVINCIBLEOFF, 1, 1;
+ */
+
+ // Re-equip your items
+ // Do not call equip() if < 1, it can be negative after all
+ for (.@i=0 ; .@i < getarraysize(MLDIE_Eqp) ; .@i++) {
+ if (MLDIE_Eqp[.@i] > 1)
+ equip(MLDIE_Eqp[.@i]);
+ }
+ deletearray MLDIE_Eqp;
+
+ // TODO: Eliminate DeathNPC if it exists
+
+ // We were instructed to terminate the interaction
+ if (getarg(0, false))
+ end;
+ // Otherwise, return the control to caller
+ return;
+}
+
+// Begin Introduction Cutscene (Event Start!!)
+OnIntroCutscene:
+ // Reset Showdown Status (Clear Previous Attempts)
+ stopnpctimer;
+ $@ML_SHOWDOWN=1;
+ .turn = 0;
+ .tbet = 0;
+ .ML = 0;
+ disablenpc "#ML_EastWarp";
+ disablenpc "#MLWA+";
+
+ // Create Andrei Sakar
+ .HERO=monster("001-15", 55, 47, "Andrei Sakar", ManaGhost, 1);
+ immortal(.HERO);
+ sc_start SC_STUN, 99990, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .HERO;
+
+ // This is the prologue cutscene. It's kinda long so everyone has time to arrive.
+ sleep(1000);
+ unittalk(.HERO, "Oooohhhh. Someone actually came!");
+ sleep(5000);
+ unittalk(.HERO, "Maybe I should wait a while to see if more people show up!");
+ sleep(5000);
+ unittalk(.HERO, "Sorry, I haven't existed properly for a while.");
+ sleep(5000);
+ unittalk(.HERO, "But this is the Mana Plane section of the World Heart, so it matters not.");
+ sleep(10000);
+ unittalk(.HERO, "Anyway, my name is Andrei, and I used to be a legendary hero of this world.");
+ sleep(8000);
+ unittalk(.HERO, "Then, during a campaign to the Fortress, I noticed the lack of aid from Artis region.");
+ sleep(8000);
+ unittalk(.HERO, "While investigating Artis, Isbamuth minions killed me as a sacrifice to revive the Moubootaur.");
+ sleep(9000);
+ unittalk(.HERO, "I'm not entirely sure why. Mr. Saves should have prevented Talpans from allying with the Moubootaur and monsters from allying with Elli, but I assume exceptions were made. Likely a bug!");
+ sleep(14000);
+ unittalk(.HERO, "Anyway, this means I'm unable to use the Soul Menhir and became a lost soul. Same will happen to all of you, shall you die here!");
+ sleep(8000);
+ unittalk(.HERO, "But if you find your corpse back, or one of the Obelisks of Power, you might be able to return.");
+ sleep(7000);
+ // Official justification in case your body (Death NPC) is not available.
+ unittalk(.HERO, "Even if your body is consumed like mine was, the Obelisk of Power can still bring you back. However...");
+ sleep(7500);
+ unittalk(.HERO, "Elli still has jurisdiction over Talpans. She probably vetoed my return, because I couldn't revive! Hahahah.");
+ sleep(7500);
+ /* TODO: Apply Elli's curse to all players */
+ unittalk(.HERO, "Anyway! The Moubootaur is in the area ahead plotting something, but you'll need to find a way to enable the warp I'm standing on first.");
+ sleep(10000);
+ unittalk(.HERO, "I'll enable the warp to the west so you can explore! Good luck, adventurers!");
+ sleep(2000);
+ enablenpc "#MLWA+";
+
+ // And now that everything is ready and done, start the timer and set turn 1
+ .turn = 1;
+ initnpctimer;
+ sc_end SC_STUN, .HERO;
+ goto OnFirstStage;
+
+OnInit:
+ .warpsOnline = true;
+ .mapMode = 0;
+
+ .ML=0;
+ .HERO=0;
+ .maxhp = 1000000; // 1,000,000 HP (used by scripts)
+ .mana = 0; // More mana = more likely to cast skills
+
+ .memohp = 999; // Memorand HP, controls spawns
+ .start_time = gettimetick(2); // Controls Death Touch
+ .tbet = 0; // Internal counter for turn system
+ .turn = 0; // Actual turn counter
+
+ .dmhp1 = 750000; // The "default" max HP
+ .dmhp2 = 250000; // The "extra" max HP
+
+ // Platforms Cardinal Sequence is
+ // Central, Clock, Wind, Fire, Plague, Cold, Blood, Disease, Curse
+ // XXX: Moubootaur goes from [1] to [8]
+ setarray $@MLFX, 52, 44, 43, 78, 64, 31, 22, 27, 74, 44, 43, 78, 64, 31, 22, 27, 74;
+ setarray $@MLFY, 49, 55, 24, 56, 44, 20, 51, 34, 31, 55, 24, 56, 44, 20, 51, 34, 31;
+ end;
+}
+
+
+
+001-15,55,47,0 script #ML_NorthWarp NPC_ML_CIRCLE,0,0,{
+ end;
+OnTouch:
+ if ($@ML_SHOWDOWN < 2) goto L_InitCheck;
+ slide 54, 29;
+
+ // Kill any stray timer too in the Central Platform
+ // It's overkill and not really necessary, BUT better safe than sorry
+ deltimer("#DungeonCore::OnClocked");
+ deltimer("#DungeonCore::OnWindy");
+ deltimer("#DungeonCore::OnHeat");
+ deltimer("#DungeonCore::OnLeech");
+ deltimer("#DungeonCore::OnFrost");
+ deltimer("#DungeonCore::OnBleed");
+ deltimer("#DungeonCore::OnSick");
+ deltimer("#DungeonCore::OnCurse");
+ end;
+
+L_InitCheck:
+ // First way to trigger: All keys in a single player inventory
+ if (countitem(MKeyWater) == 1 &&
+ countitem(MKeyEarth) == 1 &&
+ countitem(MKeyDeath) == 1 &&
+ countitem(MKeyFire) == 1 &&
+ countitem(MKeyWind) == 1 &&
+ countitem(MKeyMana) == 1 &&
+ countitem(MKeyEvil) == 1 &&
+ countitem(MKeySacred) == 1) goto L_InitDel;
+ // Second (prefered) way to trigger: All keys in the magic circle
+ .@i=0;
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyWater, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyEarth, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyDeath, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyFire, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyWind, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyMana, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyEvil, false));
+ .@i+=min(1,getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeySacred,false));
+ if (.@i == 8) goto L_InitOk;
+ dispbottom l("This circle doesn't work right now. Maybe there's a clue on what is needed?");
+ end;
+
+L_InitDel:
+ delitem MKeySacred, 1;
+ delitem MKeyWater, 1;
+ delitem MKeyEarth, 1;
+ delitem MKeyDeath, 1;
+ delitem MKeyFire, 1;
+ delitem MKeyWind, 1;
+ delitem MKeyEvil, 1;
+ delitem MKeyMana, 1;
+ // FALLTHROUGH
+L_InitOk:
+ $@ML_SHOWDOWN=2;
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyWater, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyEarth, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyDeath, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyFire, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyWind, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyMana, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeyEvil, true);
+ getareadropitem("001-15", .x-3, .y-3, .x+3, .y+3, MKeySacred,true);
+ // Send the hero to the warp circle
+ .@hero = getvariableofnpc(.HERO, "#Moubootaur");
+ unitwalk(.@hero, 55, 47);
+ // Mark the activation
+ sleep2(50);
+ specialeffect(312, AREA, .name$);
+ // Enable the warp and NPC dialogue
+ sleep2(300);
+ enablenpc "#ML_EastWarp";
+ unittalk(getvariableofnpc(.HERO, "#Moubootaur"), "Good job! Chop chop!");
+ // Warp NPC and activator to the platform
+ sleep2(250);
+ unitwarp(.@hero, "001-15", 55, 29);
+ sc_start SC_STUN, 86400000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@hero;
+ // TODO: Begin 2nd Stage Cutscene
+ goto OnTouch;
+ end;
+OnInit:
+ end;
+}
+
+
+
+001-15,54,28,0 script #ML_NorthExit NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ if ($@ML_SHOWDOWN < 2) end;
+ slide 55, 48;
+ end;
+L_InitCheck:
+ end;
+OnInit:
+ end;
+}
+
+
+
+001-15,60,53,0 script #ML_EastWarp NPC_SUMMONING_CIRC,0,0,{
+ end;
+OnTouch:
+ // Verify if this portal is active (it should, however, be disabled!)
+ if (!getvariableofnpc(.turn, "#Moubootaur"))
+ end;
+ if ($@ML_SHOWDOWN < 2) goto L_Inactive;
+
+ // Assuming nothing is wrong, then do the warp
+ slide 85, 57;
+ end;
+
+// Report the error to the user & console
+L_Inactive:
+ dispbottom l("There's nothing of interest in this direction... for now.");
+ consolewarn("ML Showdown: Eastern Portal was visible while disabled.");
+ end;
+OnInit:
+ end;
+}
+
+
+// You can always leave the battleground area, there's no restriction whatsoever
+001-15,85,58,0 script #ML_EastExit NPC_SUMMONING_CIRC,0,0,{
+ end;
+OnTouch:
+ slide 60, 54;
+ end;
+OnInit:
+ end;
+}
+
+
+
+/* Miller system (otherwise, you can't reach the switches & platforms) */
+001-15,51,49,0 script #MLWA+ NPC_FANCY_CIRCLE,0,0,{
+ end;
+OnTouch:
+ // TODO: Verify if portalling is active in the Showdown
+ // Probably via a public function in #Moubootaur
+ if (false) {
+ dispbottom l("Oh no! The Moubootaur has disabled this portal!");
+ end;
+ }
+ if (!$@ML_SHOWDOWN)
+ end;
+ if (!getvariableofnpc(.turn, "#Moubootaur"))
+ end;
+
+ // Dungeon Climate System (stop effect, start next)
+ // TODO: Disable previous Climate System timer, before @state is changed
+ switch (miller_rand(@state, getcharid(0), 9)) {
+ case 1:
+ deltimer("#DungeonCore::OnClocked"); break;
+ case 2:
+ deltimer("#DungeonCore::OnWindy"); break;
+ case 3:
+ deltimer("#DungeonCore::OnHeat"); break;
+ case 4:
+ deltimer("#DungeonCore::OnLeech"); break;
+ case 5:
+ deltimer("#DungeonCore::OnFrost"); break;
+ case 6:
+ deltimer("#DungeonCore::OnBleed"); break;
+ case 7:
+ deltimer("#DungeonCore::OnSick"); break;
+ case 8:
+ deltimer("#DungeonCore::OnCurse"); break;
+ default:
+ // Case 0 has no special effects whatsoever
+ break;
+ }
+
+ // All portals are the same, anyway
+ if (compare(strnpcinfo(2), "+"))
+ @state += 3;
+ else
+ @state -= 2;
+ .@index = miller_rand(@state, getcharid(0), 9);
+ slide $@MLFX[.@index], $@MLFY[.@index];
+
+ // Dungeon Climate System (start effect, stop previous)
+ switch (.@index) {
+ case 1:
+ addtimer(10, "#DungeonCore::OnClocked"); break;
+ case 2:
+ addtimer(10, "#DungeonCore::OnWindy"); break;
+ case 3:
+ addtimer(10, "#DungeonCore::OnHeat"); break;
+ case 4:
+ addtimer(10, "#DungeonCore::OnLeech"); break;
+ case 5:
+ addtimer(10, "#DungeonCore::OnFrost"); break;
+ case 6:
+ addtimer(10, "#DungeonCore::OnBleed"); break;
+ case 7:
+ addtimer(10, "#DungeonCore::OnSick"); break;
+ case 8:
+ addtimer(10, "#DungeonCore::OnCurse"); break;
+ default:
+ // Case 0 has no special effects whatsoever
+ break;
+ }
+ end;
+}
+//001-15,28,136,0 duplicate(#MLWA+) #MLWA- NPC_FANCY_CIRCLE,0,0
+// Clock, Wind, Fire, Plague, Cold, Blood, Disease, Curse
+// B, C, D, E, F, G, H, I
+001-15,34,44,0 duplicate(#MLWA+) #MLWB+ NPC_NO_SPRITE,0,0
+001-15,45,55,0 duplicate(#MLWA+) #MLWB- NPC_NO_SPRITE,0,0
+001-15,36,38,0 duplicate(#MLWA+) #MLWC+ NPC_FANCY_CIRCLE,0,0
+001-15,44,24,0 duplicate(#MLWA+) #MLWC- NPC_FANCY_CIRCLE,0,0
+001-15,69,53,0 duplicate(#MLWA+) #MLWD+ NPC_FANCY_CIRCLE,0,0
+001-15,78,55,0 duplicate(#MLWA+) #MLWD- NPC_FANCY_CIRCLE,0,0
+001-15,75,38,0 duplicate(#MLWA+) #MLWE+ NPC_FANCY_CIRCLE,0,0
+001-15,63,44,0 duplicate(#MLWA+) #MLWE- NPC_FANCY_CIRCLE,0,0
+001-15,21,24,0 duplicate(#MLWA+) #MLWF+ NPC_FANCY_CIRCLE,0,0
+001-15,31,22,0 duplicate(#MLWA+) #MLWF- NPC_FANCY_CIRCLE,0,0
+001-15,31,59,0 duplicate(#MLWA+) #MLWG+ NPC_FANCY_CIRCLE,0,0
+001-15,21,51,0 duplicate(#MLWA+) #MLWG- NPC_FANCY_CIRCLE,0,0
+001-15,22,43,0 duplicate(#MLWA+) #MLWH+ NPC_FANCY_CIRCLE,0,0
+001-15,28,34,0 duplicate(#MLWA+) #MLWH- NPC_FANCY_CIRCLE,0,0
+001-15,65,26,0 duplicate(#MLWA+) #MLWI+ NPC_FANCY_CIRCLE,0,0
+001-15,75,31,0 duplicate(#MLWA+) #MLWI- NPC_FANCY_CIRCLE,0,0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// Main Room Traps, only against players
+001-15,0,0,0 script #ML_Trap01 NPC_TRAP_ONLINE,0,0,{
+ end;
+
+OnTouch:
+OnTouchNPC:
+ WorldHeartTrap();
+ sleep(500); // Wait 500ms for animation
+ setnpcdisplay .name$, NPC_TRAP_ONLINE;
+ // Move the trap away after it disarms (up to 30 attempts)
+
+OnInit:
+ .@e=0;
+ do {
+ if (.@e >= 30)
+ break;
+ .@x = rand2(48, 60);
+ .@y = rand2(30, 44);
+ .@e+=1;
+ } while (!checknpccell("001-15", .@x, .@y, cell_chkpass));
+ movenpc .name$, .@x, .@y;
+ end;
+}
+
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap02 NPC_TRAP_ONLINE,0,0
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap03 NPC_TRAP_ONLINE,0,0
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap04 NPC_TRAP_ONLINE,0,0
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap05 NPC_TRAP_ONLINE,0,0
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap06 NPC_TRAP_ONLINE,0,0
+001-15,0,0,0 duplicate(#ML_Trap01) #ML_Trap07 NPC_TRAP_ONLINE,0,0
+
+
+
+
+
+// Convenience Shop NPC
+// TODO: enablenpc; and disablenpc; depending on state? Move to (58,50)?
+001-15,50,47,0 script Tiki NPC_TIKI,{
+ mesn;
+ mes l("Hey hey, my name is Micksha, and I'm Arthur's grandfather!");
+ mes l("I retired to my own laboratory and sell strange drinks on the side!");
+ mes l("The Mirror Lake here is twisty, so I can do things to you... for a price!");
+ next;
+ // Pricing
+ .@price = 15;
+ if (!MOUBOOTAUR_WINNER) .@price += 150;
+ if (!EPISODE_WINNER) .@price += 150;
+ if (islegendary()) .@price += 65;
+ mesc l("Special Price for You! %s GP!", fnum(.@price)), 1;
+ // Friendly Advise, "free" of charge
+ if (any(true, false))
+ mesc l("* \"Make sure to be well stocked and stashed for the fights! Preparation is the utmost for victory!\" - The Micksha");
+ else
+ mesc l("* \"Prepare, go and destroy! Don't tell your parents I've said that!\" - The Micksha");
+
+ // Require the money NOW
+ if (Zeny >= .@price)
+ Zeny -= .@price;
+ else if (BankVault >= .@price)
+ BankVault -= .@price;
+ else
+ close;
+
+ // Main Menu
+ select
+ l("I don't need anything!"),
+ l("Withdraw Money"),
+ rif($@ML_SHOWDOWN < 2, l("Open Storage")),
+ l("Nursery services"),
+ l("Acquire goods");
+ switch (@menu) {
+ case 2:
+ Banking();
+ break;
+ case 3:
+ Banker("Micksha", "Impregnable Fortress", 999999);
+ break;
+ case 4:
+ Nurse("Micksha", 10, 6);
+ break;
+ case 5:
+ closeclientdialog;
+ openshop(.name$);
+ break;
+ default:
+ Zeny += .@price;
+ break;
+ }
+ close;
+
+// x2( Item , Multiplier=2x )
+function x2 {
+ return getiteminfo(getarg(0), ITEMINFO_BUYPRICE) * getarg(1, 2);
+}
+
+OnInit:
+ .sex = G_MALE;
+ .distance = 3;
+ sellitem InsuranceContract, x2(InsuranceContract, 1);
+ sellitem ChamomileTea, x2(ChamomileTea, 4); // Mana F
+ sellitem YerbaMate, x2(YerbaMate, 1); // Mana S
+ sellitem LemonCake, x2(LemonCake, 3); // Homun F
+ sellitem WhiteCake, x2(WhiteCake, 5); // Homun A
+ sellitem PiberriesInfusion, x2(PiberriesInfusion, 3);
+ sellitem FatesPotion, x2(FatesPotion, 3);
+ sellitem ClothoLiquor, x2(ClothoLiquor, 3);
+ sellitem LachesisBrew, x2(LachesisBrew, 3);
+ sellitem AtroposMixture, x2(AtroposMixture, 3);
+ sellitem TrainingAmmoBox, x2(TrainingAmmoBox); // Arrow E
+ sellitem IronAmmoBox, x2(IronAmmoBox); // Arrow C
+ sellitem BigBulletSack, x2(BigBulletSack, 1); // Bullets MAX
+ sellitem StatusResetPotion, 4999;
+ sellitem MercBoxA, 9999;
+ sellitem BottleOfSewerWater, 9999;
+ sellitem BlueberryCake, 9999;
+ sellitem SmokeGrenade, 9999;
+ sellitem ScentGrenade, 9999;
+ sellitem HerbalTea, 9999;
+ sellitem EmptyBox, 9999;
+ sellitem Coffee, 9999;
+ sellitem IcedBottle, 9999;
+ sellitem PurificationPotion, 9999;
+ sellitem ScrollSCave, 9999;
+ sellitem CommonCarp, 9999;
+ sellitem FishingRod, 9999;
+ sellitem TreasureKey, 9999;
+ sellitem SaxsoKey, 9999;
+ sellitem Flour, 9999;
+ sellitem StrangeCoin, 9999;
+ sellitem GuildCoin, 9999;
+ sellitem HeroCoin, 9999;
+ sellitem Lifestone, 9999;
+ sellitem Quill, 9999;
+ sellitem EverburnPowder, 9999;
+ sellitem EarthPowder, 9999;
+ sellitem WoodenLog, 9999;
+ sellitem MinerKnife, 9999;
+ sellitem ShortBow, 9999;
+ sellitem Lockpicks, 9999;
+ sellitem IronShovel, 9999;
+ sellitem EmptyBottle, 12999;
+ sellitem ArcmageBoxset, 14999;
+ sellitem LeatherQuiver, 19999;
+ sellitem HomunResetPotion, 19999;
+ sellitem DeathPotion, 19999;
+ sellitem NymphPoison, 19999;
+ sellitem BrokenWarpCrystal, 19999;
+ sellitem SacredImmortalityPotion, 29999;
+ sellitem GoldenApple, 49999;
+ sellitem ElixirOfLife, 99999;
+ sellitem MagicApple, 199999;
+ sellitem LegendaryTortuga, 1499999;
+ sellitem PiouEgg, 3499999;
+ sellitem Skypiercer, 9999999;
+ sellitem BlackyCatFix, INT_MAX/2;
+ end;
+}
+
+function script ML_MobKill {
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_PAY2KILL) {
+ // Not a target of the map-wide effect
+ if (getmap() != "001-15")
+ return;
+ // Price is 10 GP per monster level (~3000 gp for Tortuga)
+ .@price = strmobinfo(3,killedrid) * 10;
+ .@price += rand2(JobLevel);
+ .@debit = 0;
+ // Pay the money or set .@debit
+ if (Zeny >= .@price)
+ Zeny -= .@price;
+ else
+ .@debit = .@price - Zeny;
+ // For each unpaid GP, you lose 1% HP
+ if (.@debit) {
+ Zeny = 0;
+ percentheal -(.@debit), -(.@debit);
+ }
+ }
+ return;
+}
+
+
diff --git a/npc/001-16/_import.txt b/npc/001-16/_import.txt
new file mode 100644
index 000000000..6edab71ba
--- /dev/null
+++ b/npc/001-16/_import.txt
@@ -0,0 +1,4 @@
+// Map 001-16: Existential Limbo
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-16/_mobs.txt",
+"npc/001-16/obelisk.c",
diff --git a/npc/001-16/_mobs.txt b/npc/001-16/_mobs.txt
new file mode 100644
index 000000000..2cebe5e0e
--- /dev/null
+++ b/npc/001-16/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-16: Existential Limbo mobs
+001-16,169,154,120,135 monster Cave Maggot 1027,77,35000,300000
+001-16,136,148,115,129 monster Black Scorpion 1074,36,35000,300000
+001-16,145,164,125,129 monster Magic Goblin 1052,23,35000,300000
+001-16,169,147,125,129 monster Black Cat 1192,23,35000,300000
+001-16,165,229,141,80 monster Maverick 1452,12,35000,300000
+001-16,202,69,94,58 monster Maverick 1452,12,35000,300000
+001-16,158,172,141,120 monster Shadow Tortuga 1429,4,35000,300000
diff --git a/npc/001-16/obelisk.c b/npc/001-16/obelisk.c
new file mode 100644
index 000000000..afcdef451
--- /dev/null
+++ b/npc/001-16/obelisk.c
@@ -0,0 +1,92 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Moubootaur Legends :: Final Showdown - Post Mortem Realm
+
+001-16 mapflag zone FinalMMO
+
+// This Obelisk will warp you back to the Showdown. Are you sure? 89 48
+001-16,89,48,0 script Obelisk#MLDL1 NPC_FINAL_POINT,{
+ mesn;
+ mesc l("Lost soul who wanders the mazes of life and death, the path lies herein ahead, but only those of stout heart may return.");
+ mesc l("This is the challenge which Mr. Saves has determined upon all those whom die outside the Mana Source's Jurisdiction.");
+ .@ans = ASK_NO;
+ if ($@ML_SHOWDOWN) {
+ next;
+ mesc l("Do you wish to return to the Moubootaur Showdown as an undead?"), 1;
+ next;
+ .@ans = askyesno();
+ }
+ closeclientdialog;
+ if (.@ans == ASK_YES)
+ "#Moubootaur"::DeathHandler(true);
+ close;
+
+OnInit:
+ .distance=2;
+ end;
+}
+
+// This Obelisk will warp you to a random town. Are you sure? 215 162
+001-16,215,162,0 script Obelisk#MLDL2 NPC_FINAL_POINT,{
+ mesc l("This Obelisk will warp you to a random town. Are you sure?"), 1;
+ .@ans = askyesno();
+ closeclientdialog;
+ if (.@ans == ASK_YES) {
+ .@dest = any(TP_FROST, TP_HALIN, TP_LOF, TP_FORT, TP_LILIT, TP_CANDOR, TP_ARTIS); // TP_BOSSR? TP_NIVAL?
+ .@i = array_find($@LOCMASTER_TP, .@dest);
+ warp $@LOCMASTER_MAP$[.@i], $@LOCMASTER_X[.@i], $@LOCMASTER_Y[.@i];
+ EnterTown($@LOCMASTER_LOC$[.@i], true);
+ "#Moubootaur"::ReviveHandler(true);
+ }
+ close;
+
+OnInit:
+ .distance=2;
+ end;
+}
+
+// This Obelist will warp you to the Optional Dungeon. Are you sure? 286 287
+// if you can't, then the Obelisk does not react
+001-16,286,287,0 script Obelisk#MLDL3 NPC_FINAL_POINT,{
+ if (!MK_WINNER) {
+ npctalk3 l("The Obelisk doesn't react. You likely haven't fulfilled the requisites to use it.");
+ end;
+ }
+ mesc l("This Obelisk will warp you to the Optional Dungeon. Are you sure?"), 1;
+ .@ans = askyesno();
+ closeclientdialog;
+ if (.@ans == ASK_YES) {
+ .@dest = TP_HEART;
+ .@i = array_find($@LOCMASTER_TP, .@dest);
+ warp $@LOCMASTER_MAP$[.@i], $@LOCMASTER_X[.@i], $@LOCMASTER_Y[.@i];
+ EnterTown($@LOCMASTER_LOC$[.@i], true);
+ "#Moubootaur"::ReviveHandler(true);
+ }
+ close;
+
+OnInit:
+ .distance=2;
+ end;
+}
+
+// This Obelisk will return you to your savepoint and heal you fully. Are you sure?
+// 108 216
+001-16,108,216,0 script Obelisk#MLDL4 NPC_FINAL_POINT,{
+ mesc l("This Obelisk will return you to your savepoint and heal you fully. Are you sure?"), 1;
+ .@ans = askyesno();
+ closeclientdialog;
+ if (.@ans == ASK_YES) {
+ teleporthome();
+ "#Moubootaur"::ReviveHandler(false);
+ percentheal 100, 100;
+ SC_Bonus(180, SC_KAIZEL, 1); // Revives with 1% HP if you die
+ }
+ end;
+
+OnInit:
+ .distance=2;
+ end;
+}
+
diff --git a/npc/003-0-1/professor.txt b/npc/003-0-1/professor.txt
index c361c3184..ca9bd5b1b 100644
--- a/npc/003-0-1/professor.txt
+++ b/npc/003-0-1/professor.txt
@@ -53,6 +53,8 @@ OnSpeeching:
// 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));
+ // You gain an additional second per day your acc existed, no caps, pro alts.
+ .@maxafk += ((gettimetick(2) - #REG_DATE) / 86400);
// 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())) {
@@ -60,6 +62,12 @@ OnSpeeching:
.@bxp=min(1+.@sk, 12);
.@jxp=min(1+(.@sk/3), 6);
+ // If you have reborn, then you get slightly more EXP
+ .@bxp += min(REBIRTH, 5);
+
+ // Adjust the experience to take bonuses in account
+ .@bxp = .@bxp * "@exprate"::expRecalc() / 100;
+
getexp .@bxp, .@jxp;
// (Extra) Experience for Homunculus
diff --git a/npc/003-0-1/statues.txt b/npc/003-0-1/statues.txt
index e127e2cd4..feae4f603 100644
--- a/npc/003-0-1/statues.txt
+++ b/npc/003-0-1/statues.txt
@@ -125,3 +125,35 @@ OnInit:
end;
}
+003-0-1,68,24,0 script #Statue2022 NPC_STATUE_R176,{
+
+ mes l("After the Great Fire, the annual scoreboards were no longer inscribed in stone.");
+ mes l("However, the events kept happening:");
+ mes "";
+ mesc l("TMW2 Project Anniversary: January 13");
+ mes l("Valentine's Day: February 13 - 16");
+ mes l("TMW2 Day: March 1 - 7");
+ mesc l("TMW2 Server Anniversary: March 2");
+ mes l("St. Patrick Day: March 15 - 19");
+ mesc l("Spring starts on March 20"), 3;
+ mes l("Easter: April 17 - 24");
+ mes l("Worker Day: April 27 - May 3");
+ mesc l("Summer starts on June 21"), 3;
+ mesc l("Jesusalva's Anniversary: June 21");
+ mesc l("International Chocolate Day: July 7");
+ mesc l("Gambling Day: August 1 and 10");
+ mesc l("Free Software Day: September 9");
+ mesc l("Autumn starts on September 22"), 3;
+ mesc l("International Coffee Day: October 1");
+ if ($GAME_STORYLINE < 5)
+ mes l("Thanksgiving: November 1 - 29");
+ mes l("Christmas: December 19 - January 2");
+ mesc l("Winter starts on December 21"), 3;
+ close;
+
+OnInit:
+ .sex = G_OTHER;
+ .distance = 4;
+ end;
+}
+
diff --git a/npc/003-11/alfred.txt b/npc/003-11/alfred.txt
index 157043cd3..5205af59b 100644
--- a/npc/003-11/alfred.txt
+++ b/npc/003-11/alfred.txt
@@ -25,7 +25,7 @@
mesn;
mesq l("Do you want to work? The current wage is %s GP/hour, and if you leave the building, I'll assume you've stopped working and will emit payment.", fnum(_calc_wage()));
mesc l("There is no payment for fraction of hours worked."), 1;
- mesc l("If you logout without leaving the map first, fees will be deducted from your payment."), 1;
+ //mesc l("If you logout without leaving the map first, fees will be deducted from your payment."), 1;
if (askyesno() == ASK_YES) {
dispbottom l("You've started to fill paperwork.");
tutmes l("As long that you do not leave the map, your char will keep generating money. Do note you cannot work more than %d hours straight.", .maxHours);
@@ -38,12 +38,16 @@ OnBleep:
// Check if you changed the map
if (getmap() != "003-11") {
// Check how many hours you've worked
- .@current = gettimeparam(GETTIME_MINUTE);
+ .@current = max(0, gettimeparam(GETTIME_MINUTE) - @alfred_st);
// Pay you for every 60 minutes
- .@pay = min(.maxHours, (.@current - @alfred_st) / 60) * _calc_wage();
+ .@pay = min(.maxHours, .@current / 60) * _calc_wage();
+ // Pay fraction of hour if you spent over 4 hours here
+ // But ONLY if you leave manually, logout won't pay you fractions.
+ // There's a deflator of 50% over the fraction, however
+ if ((.@current / 60) >= 4 && (.@current / 60) < .maxHours)
+ .@pay += ((.@current % 60) * _calc_wage()) / 120;
// Fraction of hour code pending .maxHours enforcement
// i.e. preventing you from working more than .maxHours per day
- //.@pay += ((.@current - @alfred_st) % 60) * _calc_wage() / 60;
Zeny += .@pay;
// Terminate the work
@alfred_st = 0;
@@ -60,12 +64,14 @@ L_Working:
.@current = gettimeparam(GETTIME_MINUTE) - @alfred_st;
if (.@current / 60 >= .maxHours)
npctalk3 l("You have worked the limit of %d hours and will not be paid for overtime.", .maxHours);
+ else if (.@current / 60 >= 4)
+ npctalk3 l("You have currently worked %d hour(s) and %d minute(s). Fraction of hour may be paid in half. The limit is %d hours.", .@current / 60, .@current % 60, .maxHours);
else
npctalk3 l("You have currently worked %d hour(s) and %d minute(s). Fraction of hour won't be paid.", .@current / 60, .@current % 60);
end;
// Calculate your hourly wage
-function _calc_wage {
+public function _calc_wage {
.@wage = 0;
/* Player Story (8 arcs) */
// Fortress Arc Complete
@@ -93,6 +99,10 @@ function _calc_wage {
if (getq(General_Narrator) >= 1)
.@wage += 850;
+ // Hardcore Deflation
+ if ($HARDCORE)
+ .@wage /= 2;
+
// Game Storyline Inflation Bonus
if ($GAME_STORYLINE >= 3)
.@wage += ($GAME_STORYLINE-2) * 200;
diff --git a/npc/003-6/tamiloc.txt b/npc/003-6/tamiloc.txt
index cb2e11f1c..6c08fa2df 100644
--- a/npc/003-6/tamiloc.txt
+++ b/npc/003-6/tamiloc.txt
@@ -85,7 +85,8 @@ OnSaviorCall:
select
l("Nooo! I want my MP back!"),
rif(is_gm() || REBIRTH >= 5, l("I want to change my Race!")),
- l("I want to change my hair color.");
+ l("I want to change my hair color."),
+ rif(FINAL_WINNER && REBIRTH >= 5, l("Please kill me and make me a lame undead!"));
mes "";
switch (@menu) {
case 2:
@@ -94,6 +95,9 @@ OnSaviorCall:
case 3:
Sp -= 200; BarberChangeColor();
break;
+ case 4:
+ Sp -= 200; jobchange Skelli;
+ break;
}
close;
diff --git a/npc/004-2/mirio.txt b/npc/004-2/mirio.txt
index 4c149eb4f..1c0bff14c 100644
--- a/npc/004-2/mirio.txt
+++ b/npc/004-2/mirio.txt
@@ -173,7 +173,7 @@ function running {
.@g = 320 - (.@q * 20);
if (.@t > .@g) {
mesn;
- mesq l("You took more than %s to do this, that is lame! Better luck next time.", FuzzyTime(.@g));
+ mesq l("You took more than %s to do this, that is lame! Better luck next time.", FuzzyTime(gettimetick(2)+.@g));
// Consolation Prize
if (.@t < 450) {
next;
diff --git a/npc/005-2/_mobs.txt b/npc/005-2/_mobs.txt
index 436e0f193..5ce34f3e6 100644
--- a/npc/005-2/_mobs.txt
+++ b/npc/005-2/_mobs.txt
@@ -1,3 +1,3 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 005-2: Saxso's House mobs
-005-2,43,40,0,0 monster Saxso Ghost 1076,1,36000,300000
+005-2,43,40,0,0 monster Saxso Ghost 1076,1,36000,300000,Saxso Chest::OnGuarantee
diff --git a/npc/005-2/saxsochest.txt b/npc/005-2/saxsochest.txt
index 473269a04..c4932347a 100644
--- a/npc/005-2/saxsochest.txt
+++ b/npc/005-2/saxsochest.txt
@@ -82,5 +82,13 @@ OnInit:
.sex = G_MALE;
.distance = 3;
end;
+
+OnGuarantee:
+ fix_mobkill(SaxsoGhost);
+ if (REBIRTH || BaseLevel > 20) end;
+ if (getq(CandorQuest_Chest) || countitem(SaxsoKey)) end;
+ if (getq(General_Banker) && any(true, false)) end;
+ getitembound SaxsoKey, 1, 1;
+ end;
}
diff --git a/npc/006-4-1/_mobs.txt b/npc/006-4-1/_mobs.txt
index 19b2627bd..f4ea8021b 100644
--- a/npc/006-4-1/_mobs.txt
+++ b/npc/006-4-1/_mobs.txt
@@ -3,5 +3,5 @@
006-4-1,55,103,19,9 monster Mana Ghost 1068,6,75000,250000
006-4-1,55,46,31,11 monster Green Slime Mother 1236,5,75000,25000
006-4-1,56,101,28,9 monster Yellow Slime Mother 1239,4,75000,25000
-006-4-1,54,151,14,10 monster Red Slime Mother 1240,3,75000,25000
+006-4-1,54,155,14,5 monster Red Slime Mother 1240,3,75000,25000
006-4-1,56,44,31,9 monster Green Skull Slime 1405,1,75000,25000
diff --git a/npc/006-5/groata.txt b/npc/006-5/groata.txt
index f57856240..8f58d68b8 100644
--- a/npc/006-5/groata.txt
+++ b/npc/006-5/groata.txt
@@ -192,6 +192,7 @@ function script GroataGrotto {
array_push(.@mb, Junglefowl);
array_push(.@mb, Tengu);
array_push(.@mb, Moubi);
+ array_push(.@mb, MalignChest);
}
if (.@lv > 130) {
array_push(.@mb, SuperiorShroom);
@@ -206,6 +207,7 @@ function script GroataGrotto {
array_push(.@mb, WaterElement);
array_push(.@mb, EarthElement);
array_push(.@mb, WindElement);
+ array_push(.@mb, ThornChest);
}
if (.@lv > 150) {
array_push(.@mb, SacredWisp);
@@ -213,8 +215,10 @@ function script GroataGrotto {
array_push(.@mb, PanthomWisp);
array_push(.@mb, EpiphanyWisp);
}
- if (.@lv > 175)
+ if (.@lv > 175) {
array_push(.@mb, Tortuga);
+ array_push(.@mb, WildxChest);
+ }
/* Spawn them and make hostile */
freeloop(true);
@@ -458,7 +462,7 @@ OnInit:
disablenpc "#006-5_49_54";
}
if (!getq(CandorQuest_Groata)) {
- getitem any(WurtziteOre, DarkCrystal, CandorWarpCrystal), 1;
+ getitem any(Wurtzite, DarkCrystal, CandorWarpCrystal), 1;
setq CandorQuest_Groata, 1;
}
$@GROTTO += 5;
diff --git a/npc/006-7/ctrl.txt b/npc/006-7/ctrl.txt
index d82f11bf7..5bc441814 100644
--- a/npc/006-7/ctrl.txt
+++ b/npc/006-7/ctrl.txt
@@ -205,7 +205,7 @@ OnTimer5000:
.@dsb = .@mtk * .@SPW / 100;
sleep(1000);
squareharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Holy, .BOSS);
- harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy, .BOSS);
break;
// (3/6) Random Target (~60s)
case 2:
diff --git a/npc/009-2/_import.txt b/npc/009-2/_import.txt
index 2d0238fa2..8260fd9c3 100644
--- a/npc/009-2/_import.txt
+++ b/npc/009-2/_import.txt
@@ -1,6 +1,7 @@
// Map 009-2: Halinarzo Library & Bar
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/009-2/_warps.txt",
+"npc/009-2/books.txt",
"npc/009-2/librarian.txt",
"npc/009-2/politics.txt",
"npc/009-2/ryan.txt",
diff --git a/npc/009-2/books.txt b/npc/009-2/books.txt
new file mode 100644
index 000000000..4a6957f8b
--- /dev/null
+++ b/npc/009-2/books.txt
@@ -0,0 +1,160 @@
+// TMW2 scripts.
+// Authors:
+// Jesusalva
+// Description:
+// History Books
+
+009-2,61,61,0 script #BookA NPC_FINAL_POINT,{
+ .@book_name$ = l("Fluffy Animals who Love Their Owners");
+ if (openbookshelf(.@book_name$))
+ PetcaringBook();
+ closeclientdialog;
+ close;
+OnInit:
+ .bookname$ = "Fluffy Animals who Love Their Owners";
+ .distance=2;
+ end;
+}
+
+
+009-2,60,64,0 script #BookB NPC_FINAL_POINT,{
+ .@book_name$ = l(getitemname(FishingGuideVolI));
+ if (openbookshelf(.@book_name$))
+ FishingBook();
+ closeclientdialog;
+ close;
+OnInit:
+ .bookname$ = getitemname(FishingGuideVolI);
+ .distance=2;
+ end;
+}
+
+
+009-2,66,56,0 script #BookC NPC_FINAL_POINT,{
+ doevent "@rules::OnShelfUse";
+ closeclientdialog;
+ close;
+OnInit:
+ .distance=2;
+ end;
+}
+
+
+009-2,62,58,0 script #BookD NPC_FINAL_POINT,{
+ .@book_name$ = l("The Book of Towns");
+ if (openbookshelf(.@book_name$)) {
+ mes sprintf("##B.:: %s ::.##b", l("Tulimshar"));
+ mesc l("Tulimshar is the oldest human city, and its foundation is the year zero of our calendar.");
+ mesc l("The city only flourished because Janett Platinum had the idea to build city walls surrounding this city.");
+ mesc l("Is the capital and where the High Council seat is at.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Hurnscald"));
+ mesc l("Hurnscald was founded after Tulimshar, in more fertile lands. Their walls are not so sturdy as the ones of Tulimshar.");
+ mesc l("Under the leadership of King Wusher, they were the first to accept immigrants from other races. You will find humans and non-humans there.");
+ mesc l("Collectively, these races are called \"Talpans\".");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Halinarzo"));
+ mesc l("Halinarzo was founded to explore Mana Stones.");
+ mesc l("However, once the mines depleted, the town was mostly abandoned.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Nivalis"));
+ mesc l("Nivalis was the last human settlement built during the First Era.");
+ mesc l("It's cold, harsh climate makes difficult to live there. It was founded by people thrown away from Tulimshar and Hunrscald for political reasons.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Frostia"));
+ mesc l("Frostia is the only city known that was not founded by humans.");
+ mesc l("Not much is known about the town due to strict access policies.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Land of Fire Village"));
+ mesc l("Halinarzo was founded to explore Mana Stones.");
+ mesc l("However, once the mines depleted, the town was mostly abandoned.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("Artis"));
+ mesc l("Artis is a city port founded after the Great Fire on the other continent.");
+ mesc l("It is the second largest city in the world, and the capital of the Aurora continent.");
+ dnext;
+ mes sprintf("##B.:: %s ::.##b", l("The Lost Cities"));
+ mesc l("Thermin, Aethyr, Oceania, Esperia and the Redy Volcano Village are lost cities.");
+ mesc l("They might no longer exist in our world.");
+ next;
+ }
+ closeclientdialog;
+ close;
+OnInit:
+ .bookname$ = "The Book of Towns";
+ .distance=2;
+ end;
+}
+
+
+// Source: https://web.archive.org/web/20201021105118/https://sites.google.com/site/tmwbrasil/historia-do-mundo/aeros-a-ilha-flutuante
+// Author: Kriloz, 07 Sept 2009
+// Reviewed by Indigovox, Translated by Jesusalva with DeepSeek
+009-2,62,52,0 script #BookE NPC_FINAL_POINT,{
+ .@book_name$ = l("The Legend of Aeros");
+ if (openbookshelf(.@book_name$)) {
+ mes l("Once in a while, it's always nice to look up at the sky. If you want to ");
+ mes l("see the floating island named Aeros as well, you can do so too. The large ");
+ mes l("floating island has the characteristic of not staying still in just one ");
+ mes l("place. Because of its lower layer, which contains a huge sphere that lifts ");
+ mes l("the island above the ground. On the surface, we have the city, with ");
+ mes l("well-made streets and grand houses. Their gardens are rich in plants that ");
+ mes l("are well taken care of but also dangerous. The waters are crystalline, and ");
+ mes l("at the center of all this beauty stands the temple. It is adorned with ");
+ mes l("precious stones and constructed in the purest form of marble that has ");
+ mes l("never been seen before. Its citizens go there to receive forces for their ");
+ mes l("battles and be cured of illnesses.");
+ next;
+ mes l("Such people are excellent singers, some claim that they can cure diseases ");
+ mes l("with their voice as well. Science is also very advanced, reaching a point ");
+ mes l("where its scientists have built portals that allow matter transport, thus ");
+ mes l("enabling space travel for people from their current location.");
+ mes l("");
+ mes l("In the dark caverns and forests, creatures like limeflies, maggots, and ");
+ mes l("snakes live. However, these are stronger than usual, and some have wings. ");
+ mes l("Additionally, there is a fish-like creature with wings that can grow as ");
+ mes l("large as three men!");
+ next;
+ mes l("In its history, there is a princess named Nayta Ambhar, from the Ambhar ");
+ mes l("lineage, at 15 years old, who was destined to arrange a marriage with the ");
+ mes l("prince known as Eldrun. She did not love him and didn't want to obey her ");
+ mes l("parents' orders. She escaped to the highest mountain on the fortress ");
+ mes l("island and cried to the stars, which transported her to an island above ");
+ mes l("the clouds!");
+ next;
+ mes l("But not everything is flowers. In the same way that beauty and harmony ");
+ mes l("coexist on one side of the island, on its other side lies chaos and ");
+ mes l("destruction. He did not want to lose his future wife and created a ");
+ mes l("powerful magic that allowed him to fly. He followed her and found a ");
+ mes l("fortress where its inhabitants were subjects to the same magic, allowing ");
+ mes l("them to gain strength without dying! However, the magic granted them wings ");
+ mes l("instead of their left arm! Thus, Eldrun became very happy, as he could now ");
+ mes l("have an endless army with just his right hand and wield a great sword with ");
+ mes l("ease!");
+ next;
+ mes l("On the other side of the island, Nayta met Zolrac, the captain of the ");
+ mes l("elite army on the island. The love between them caused Eldrun to deploy ");
+ mes l("his endless army to attack him. However, Zolrac and his group, called ");
+ mes l("Zarech, were benazed by the stars to have their swords granted with the ");
+ mes l("power of light! They live at the highest mountain, subjected to extreme ");
+ mes l("training to prove their loyalty to the princess, and the war continues!");
+ next;
+ mes l("But now, the princess is no longer alone. She has someone she loves as her ");
+ mes l("husband and lives forever with her people in the floating island of Aeros!");
+ dnext;
+ mesc l("Some notes were added to the book.");
+ if ($GAME_STORYLINE >= 5)
+ mesc l("The Moubootaur has decimated the once beautiful island, and like Artis, it is now a ruin of what it once was. It now serves as a critical component in the Moubootaur's magical rituals and as his seat of power.");
+ else if ($GAME_STORYLINE >= 3)
+ mesc l("The Monster King has overtaken Aeros Island, and its current status is unknown. However, the fortress has most certainly have been destroyed.");
+ else
+ mesc l("The island certainly exists, but no one knows to reach it. The story is also extremely old, and no one knows if the island is still inhabited.");
+ next;
+ }
+ closeclientdialog;
+ close;
+OnInit:
+ .bookname$ = "The Legend of Aeros";
+ .distance=2;
+ end;
+}
diff --git a/npc/009-2/librarian.txt b/npc/009-2/librarian.txt
index b08a71eba..6e00d3926 100644
--- a/npc/009-2/librarian.txt
+++ b/npc/009-2/librarian.txt
@@ -134,6 +134,7 @@ L_Complete:
mesc l("They were never again seen. None of them. We burnt all records about everyone here, and blamed the Monster King.");
mesc l("They must never know we had it. Their sacrifices must be forgotten. For the sake of all.");
compareandsetq General_Narrator, 7, 8;
+ tutmes l("You feel your magic power growing. You're now capable of learning a new skill in the Magic Academy.");
close;
L_Report:
diff --git a/npc/014-5-1/objects.txt b/npc/014-5-1/objects.txt
index ed3520924..ffbb3b826 100644
--- a/npc/014-5-1/objects.txt
+++ b/npc/014-5-1/objects.txt
@@ -19,13 +19,14 @@ OnInit:
014-5-1,33,34,0 script Painting#Saggy NPC_NO_SPRITE,{
@qsagratha=@qsagratha|2;
mesn;
- mesc l("Definitely not suspcious at all.");
+ mesc l("Definitely not suspicious at all.");
if (@qsagratha >= 31) {
next;
mesn;
mesc l("Thinking well... There's something behind it! A secret window!");
if (getq(HurnscaldQuest_Sagratha) <= 2) {
setq3 HurnscaldQuest_Sagratha, 1;
+ mesc l("I should ask Wyara what's happening; This passage gives off eerily vibes."), 1;
} else {
next;
mesn l("Secret Window");
diff --git a/npc/014-5/events.txt b/npc/014-5/events.txt
index 4ee1723c9..5671d65cb 100644
--- a/npc/014-5/events.txt
+++ b/npc/014-5/events.txt
@@ -96,7 +96,7 @@
// Each green accessory raises boost gauge in 25.
// Hat, Shirt, Pants, Boots and Gloves.
.@boost=0; .@lucky=0;
- if (getequipcardid(EQI_HEAD_TOP, 0) == GreenDye) {
+ if (getequipcardid(EQI_HEAD_TOP, 0) == GreenDye || getequipid(EQI_HEAD_TOP) == GreenEggshellHat) {
.@boost+=25;
.@lucky+=1;
}
@@ -116,9 +116,15 @@
.@boost+=25;
.@lucky+=1;
}
+ // 4L Clover also boosts the chance of obtaining the Funky Hat
+ if (getequipid(EQI_ACC_L) == FourLeafClover)
+ .@lucky+=1;
// Full set raises in further 25. Max boost gauge from dye is 150 atm.
+ // Four Leaf Clover complements if you failed to obtain the boost
if (.@boost >= 125)
.@boost+=25;
+ else if (getequipid(EQI_ACC_L) == FourLeafClover)
+ .@boost+=25;
// .@boost, right now, is a number from 0 to 250.
// Randomness factor can make that 20% higher, up to 300.
diff --git a/npc/017-3/loratay.txt b/npc/017-3/loratay.txt
index ddef7616d..e44ca0ed9 100644
--- a/npc/017-3/loratay.txt
+++ b/npc/017-3/loratay.txt
@@ -24,8 +24,8 @@
L_Valentine:
.@dye = .colors[gettime(7) % getarraysize(.colors)];
- .@pdy = .colors[(1-gettime(7)) % getarraysize(.colors)];
- .@ndy = .colors[(1+gettime(7)) % getarraysize(.colors)];
+ .@pdy = .colors[(gettime(7)-1) % getarraysize(.colors)];
+ .@ndy = .colors[(gettime(7)+1) % getarraysize(.colors)];
mesn;
mesq l("It's valentine day, and I got my hands on a @@ model!", getitemlink(ValentineDress, .@dye));
next;
diff --git a/npc/018-2-1/dustman.txt b/npc/018-2-1/dustman.txt
index 5def19831..a0ce9bf6a 100644
--- a/npc/018-2-1/dustman.txt
+++ b/npc/018-2-1/dustman.txt
@@ -204,7 +204,7 @@ OnInit:
tradertype(NST_CUSTOM);
// CoD Exchange Booth Selection
- sellitem Dustynator,3000;
+ sellitem Dustynator,2500;
sellitem MercBoxD,1500;
sellitem MercBoxC,750;
sellitem ArcmageBoxset,500;
diff --git a/npc/018-2-2/main.txt b/npc/018-2-2/main.txt
index 671ec4e6e..6c068be84 100644
--- a/npc/018-2-2/main.txt
+++ b/npc/018-2-2/main.txt
@@ -147,9 +147,9 @@ OnInit:
// Master
setarray .Master_Mobs, PrismChest,BlueSlime,MurdererScorpion,Tipiou,AlphaMouboo,BanditLord,Tipiu,GreenDragon,GiantMutatedBat,FallenKing1,
- FallenKing2, EvilScythe, YetiKing, Tipiu, Yetifly, WildxChest, PsiConscience, Birb, EvilChest;
+ FallenKing2, EvilScythe, YetiKing, Tipiu, Yetifly, WildxChest, PsiConscience, Birb, EvilChest, MalignChest;
setarray .Master_Ammo, 2, 140, 20, 20, 20, 20, 20, 19, 19, 9,
- 9, 1, 6, 8, 3, 2, 1, 1, 5;
+ 9, 1, 6, 8, 3, 1, 1, 1, 5, 2;
end;
@@ -788,6 +788,12 @@ OnMaster18:
fix_mobkill(.Master_Mobs[18]);
}
areamonster "018-2-5@Ma", 20, 20, 220, 220, strmobinfo(1, .Master_Mobs[18]), .Master_Mobs[18], 1, "#HH_CONTROLLER01::OnMaster18"; end;
+OnMaster19:
+ if (playerattached()) {
+ if (rand2(0, 2000) <= readparam2(bLuk)+(strmobinfo(3,.Master_Mobs[19])*4)+strmobinfo(7,.Master_Mobs[19])) {getmapxy(.@m$, .@x, .@y, 0); makeitem(HeroCoin, 16, .@m$, .@x, .@y);}
+ fix_mobkill(.Master_Mobs[19]);
+ }
+ areamonster "018-2-5@Ma", 20, 20, 220, 220, strmobinfo(1, .Master_Mobs[19]), .Master_Mobs[19], 1, "#HH_CONTROLLER01::OnMaster19"; end;
}
diff --git a/npc/019-4-1/ofelia.txt b/npc/019-4-1/ofelia.txt
index 145a302ab..636a5850f 100644
--- a/npc/019-4-1/ofelia.txt
+++ b/npc/019-4-1/ofelia.txt
@@ -331,16 +331,19 @@ OnInit:
IntPotionA, 10,
VitPotionA, 10,
AgiPotionA, 10,
+ StrPotionA, 10,
LukPotionB, 7,
DexPotionB, 7,
IntPotionB, 7,
VitPotionB, 7,
AgiPotionB, 7,
+ StrPotionB, 7,
LukPotionC, 3,
DexPotionC, 3,
IntPotionC, 3,
VitPotionC, 3,
AgiPotionC, 3,
+ StrPotionC, 3,
DodgeDonut, 3,
ChocolateDonut, 6,
SparklyChocolateDonut, 6,
diff --git a/npc/020-7-1/sage.txt b/npc/020-7-1/sage.txt
index 6011758e1..f41a28702 100644
--- a/npc/020-7-1/sage.txt
+++ b/npc/020-7-1/sage.txt
@@ -48,7 +48,7 @@ OnTouch:
020-7-1,35,59,0 script The Blue Sage NPC_BLUESAGE,{
function nStart;
function nReport;
- function nLetters;
+ public function nLetters;
function nCindy;
.@cindy=($@CINDY_STATE < gettimetick(2));
@@ -165,7 +165,7 @@ function nReport {
}
// Receive the letters and the next task along a text wall about the AFSM and WE
-function nLetters {
+public function nLetters {
.@q=getq(NivalisQuest_BlueSage);
inventoryplace Coal, 20;
mesn l("Nikolai, the Blue Sage");
@@ -235,6 +235,10 @@ function nLetters {
}
} while (@menu != 5);
+ if (!getarg(0, true)) {
+ return;
+ }
+
// Quest complete? Don't continue. If needed, give a hint to players.
if (.@q != 11) {
mesn l("Nikolai, the Blue Sage");
diff --git a/npc/024-1/john.txt b/npc/024-1/john.txt
index 2404f27b5..1c4b96ccc 100644
--- a/npc/024-1/john.txt
+++ b/npc/024-1/john.txt
@@ -164,7 +164,7 @@
break;
case 7:
if (.@q2 >= 40) {
- .@i = any(LukPotionA, DexPotionA, IntPotionA, VitPotionA, AgiPotionA);
+ .@i = any(LukPotionA, DexPotionA, IntPotionA, VitPotionA, AgiPotionA, StrPotionA);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -179,7 +179,7 @@
break;
case 9:
if (.@q2 >= 60) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -201,7 +201,7 @@
break;
case 12:
if (.@q2 >= 100) {
- .@i = any(LukPotionB, DexPotionB, IntPotionB, VitPotionB, AgiPotionB, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife);
+ .@i = any(LukPotionB, DexPotionB, IntPotionB, VitPotionB, AgiPotionB, StrPotionB, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -209,7 +209,7 @@
break;
case 13:
if (.@q2 >= 120) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -217,7 +217,7 @@
break;
case 14:
if (.@q2 >= 140) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, Manapple);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, Manapple);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -225,7 +225,7 @@
break;
case 15:
if (.@q2 >= 150) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, DeathPotion, PurificationPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -233,7 +233,7 @@
break;
case 16:
if (.@q2 >= 175) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, DodgePotion, PrecisionPotion, MoveSpeedPotion, StatusResetPotion, NymphPoison, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -241,7 +241,7 @@
break;
case 17:
if (.@q2 >= 200) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -249,7 +249,7 @@
break;
case 18:
if (.@q2 >= 250) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, ElixirOfLife, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
@@ -257,7 +257,7 @@
break;
case 19:
if (.@q2 >= 300) {
- .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, SacredLifePotion, SacredManaPotion, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern, GoldenApple);
+ .@i = any(LukPotionC, DexPotionC, IntPotionC, VitPotionC, AgiPotionC, StrPotionC, SacredLifePotion, SacredManaPotion, SacredImmortalityPotion, AncientBlueprint, FrostiaWarpCrystal, ScrollCriticalFortuneA, ScrollMagnusHealA, ScrollSWolvern, GoldenApple);
inventoryplace .@i, 1;
getitem .@i, 1;
setq3 FrostiaQuest_JhonH, .@q3 + 1;
diff --git a/npc/024-11/politics.txt b/npc/024-11/politics.txt
index e21f3094a..4d395edb1 100644
--- a/npc/024-11/politics.txt
+++ b/npc/024-11/politics.txt
@@ -21,7 +21,10 @@ do
else
mesc l("Hey, you're an elf, cool! But you still cannot run for office here!"), 1;
mesc l("%d more active users are required to unlock Frostia Townhall.", 10-GETUSERSAVG());
- close;
+ if ($FROSTIA_MAYOR$ == "Jesus Saves" || $FROSTIA_MAYOR$ == "")
+ close;
+ else
+ next;
}
POL_TownInfo("FROSTIA");
@@ -34,7 +37,7 @@ do
select
l("Information"),
rif(strcharinfo(0) == $FROSTIA_MAYOR$, l("Manage Town")),
- rif(#POL_APPLYWEEK != gettimeparam(GETTIME_WEEKDAY) && frally(), l("Apply for the office!")),
+ rif(#POL_APPLYWEEK != gettimeparam(GETTIME_WEEKDAY) && frally() && GETUSERSAVG() >= 10, l("Apply for the office!")),
l("View Candidate List and cast a vote"),
l("[Quit]");
diff --git a/npc/025-1/phoenix.txt b/npc/025-1/phoenix.txt
index c1edc71f3..9ae8707e3 100644
--- a/npc/025-1/phoenix.txt
+++ b/npc/025-1/phoenix.txt
@@ -103,17 +103,23 @@ OnMain:
#ADD_HLV+=1000000;
warp "005-1", 40, 117;
LOCATION$="Candor";
- kamibroadcast(strcharinfo(0)+" has been reborn.");
- // Maybe you were THE FIRST
+
if (!REBIRTH_WINNER)
REBIRTH_WINNER = gettimetick(2);
+
+ // Maybe you were THE FIRST
if ($REBIRTH_WINNER$ == "") {
$REBIRTH_WINNER$=strcharinfo(0);
- channelmes("#world", $REBIRTH_WINNER$+" is the first player to REBIRTH!! They are so OP! %%N");
- announce "All hail ##B"+$REBIRTH_WINNER$+"##b, first player to REBIRTH and become OP!", bc_all|bc_npc;
+ channelmes("#world", $REBIRTH_WINNER$+" is the first player to be REBORN!! They are so OP! %%N");
+ announce "All hail ##B"+$REBIRTH_WINNER$+"##b, the first player to be REBORN and become OP!", bc_all|bc_npc;
getitem SupremeGift, 1;
next;
+ } else if (REBIRTH == 5) {
+ kamibroadcast(strcharinfo(0) + " has been reborn into the savior race. They are so OP! %%N");
+ } else {
+ kamibroadcast(strcharinfo(0) + " has been reborn. This is their " + .@rebirth$ + " rebirth.");
}
+
// These operations can be delayed or fail
StatusResetReinvest();
if ($EVENT$ == "Rebirth" && .@phoenix)
diff --git a/npc/025-1/rum.txt b/npc/025-1/rum.txt
index 9c7c097ae..ec13ad968 100644
--- a/npc/025-1/rum.txt
+++ b/npc/025-1/rum.txt
@@ -144,6 +144,7 @@ L_Main:
inventoryplace CrazyRum, (FORTRESS_AMMO * .cupammo);
inventoryplace WhiskeyAle, (FORTRESS_AMMO * .cupammo);
mesn;
+ // N.B: a long time may pass between this and the other call of rumbarrel_chance().
mes l("Trying to retrieve it now will have @@ % chance to be successful.", rumbarrel_chance()/100);
mes l("Attempt to retrieve it now?");
next;
diff --git a/npc/026-6/_mobs.txt b/npc/026-6/_mobs.txt
index a7b32b253..0aab1e239 100644
--- a/npc/026-6/_mobs.txt
+++ b/npc/026-6/_mobs.txt
@@ -1,3 +1,3 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 026-6: The Impregnable Fortress (B6F) mobs
-026-6,26,89,0,0 monster Jack.O 1120,1,10000,10000,#026-6Gate::OnGoto
+026-6,26,89,0,0 monster Jack.O 1430,1,10000,10000,#026-6Gate::OnGoto
diff --git a/npc/026-6/_warps.txt b/npc/026-6/_warps.txt
index cbfb4fac2..6c6dd547b 100644
--- a/npc/026-6/_warps.txt
+++ b/npc/026-6/_warps.txt
@@ -1,6 +1,6 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 026-6: The Impregnable Fortress (B6F) warps
-026-6,88,94,0 warp #026-6_88_94 0,0,025-2,100,25
+026-6,91,78,0 warp #026-6_91_78 0,0,025-2,100,25
026-6,95,121,0 script #026-6_95_121 NPC_HIDDEN,0,0,{
end;
OnTouch:
@@ -41,3 +41,23 @@ OnTouch:
OnTouch:
slide 99,64; end;
}
+026-6,122,64,0 script #026-6_122_64 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ slide 133,54; end;
+}
+026-6,133,53,0 script #026-6_133_53 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ slide 122,65; end;
+}
+026-6,120,80,0 script #026-6_120_80 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ slide 125,80; end;
+}
+026-6,124,80,0 script #026-6_124_80 NPC_HIDDEN,0,0,{
+ end;
+OnTouch:
+ slide 119,80; end;
+}
diff --git a/npc/026-6/ctrl.c b/npc/026-6/ctrl.c
index 058b61aea..ceaf4956d 100644
--- a/npc/026-6/ctrl.c
+++ b/npc/026-6/ctrl.c
@@ -84,7 +84,8 @@ OnTouch:
sleep(2500);
mapannounce("026-6", "WORLD HEART : The teleporter is now enabled... Get to positions!", bc_map|bc_npc);
sleep(5000);
- kamibroadcast("It is... SHOWDOWN TIME!", b("WORLD HEART"));
+ if ($GAME_STORYLINE < 5)
+ kamibroadcast("It is... SHOWDOWN TIME!", b("WORLD HEART"));
sleep(2500);
donpcevent "Impregnable#B7F::OnBegin";
}
@@ -169,3 +170,53 @@ OnInit:
end;
}
+026-6,85,79,0 script Expeditionary#A NPC_CONSTR_WORKER,{
+ mesn;
+ mesq l("I'm from the Alliance Expeditionary Force. I'm here to protect these passages from the untrained.");
+ next;
+ mesn;
+ mesq l("This one brings you closer to the World's Heart.");
+ next;
+ mesn;
+ if (!MK_WINNER)
+ mesq l("Which is why I cannot allow you past this point.");
+ else
+ mesq l("You can go there, if you wish, but it is deadly.");
+ close;
+OnInit:
+ .distance=3;
+ end;
+}
+
+026-6,89,79,0 script Expeditionary#B NPC_MAINTENANCE_A,{
+ mesn;
+ mesq l("I'm from the Alliance Expeditionary Force. I'm here to protect these passages from the untrained.");
+ next;
+ mesn;
+ mesq l("One of them will bring you out of the Impregnable Fortress, the other brings you closer to the World's Heart.");
+ next;
+ mesn;
+ if (!MK_WINNER)
+ mesq l("Which is why I cannot allow you past this point.");
+ else
+ mesq l("You can go there, if you wish, but it is deadly.");
+ close;
+OnInit:
+ .distance=3;
+ end;
+}
+
+026-6,92,79,0 script Expeditionary#C NPC_CONSTR_WORKER,{
+ mesn;
+ mesq l("I'm from the Alliance Expeditionary Force. I'm here to protect these passages from the untrained.");
+ next;
+ mesn;
+ mesq l("This one leads you to outside the Impregnable Fortress.");
+ close;
+OnInit:
+ .distance=3;
+ end;
+}
+
+// Optional Dungeon
+// The warp is added by npc/026-8/ctrl.c
diff --git a/npc/026-7/boss.txt b/npc/026-7/boss.txt
index 7398611f1..15cfaa1c9 100644
--- a/npc/026-7/boss.txt
+++ b/npc/026-7/boss.txt
@@ -268,7 +268,7 @@ OnTimer10000:
$@MK_COOLDOWN = gettimetick(2) + 1800;
// Apply some kind of penalty, like lowering EXP rate in 5% for a hour
// (NLib was 50% for 24 hours...)
- if ($GAME_STORYLINE >= 5) {
+ if ($GAME_STORYLINE < 5) {
$@EXP_EVENT=-5;
$@EXP_EVENT_TIME=1;
donpcevent "@exprate::OnPlayerCall";
@@ -474,7 +474,7 @@ OnTimer10000:
sleep(1000);
specialeffect(FX_LIGHTNING, AREA, .@mvp);
squareharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Wind, .@mob);
- harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy, .@mob);
break;
case 18:
.@msg$ = sprintf("Come forth, my minions! Wreak chaos and havoc!");
@@ -509,7 +509,7 @@ OnTimer10000:
sleep(1000);
specialeffect(FX_LIGHTNING, AREA, .@mvp);
squareharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Wind, .@mob);
- harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy, .@mob);
break;
case 21:
.@msg$ = sprintf("##BMagic: Armageddon");
diff --git a/npc/026-8/_import.txt b/npc/026-8/_import.txt
new file mode 100644
index 000000000..a72bad0ac
--- /dev/null
+++ b/npc/026-8/_import.txt
@@ -0,0 +1,5 @@
+// Map 026-8: Optional Dungeon
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/026-8/_mobs.txt",
+"npc/026-8/_warps.txt",
+"npc/026-8/ctrl.c",
diff --git a/npc/026-8/_mobs.txt b/npc/026-8/_mobs.txt
new file mode 100644
index 000000000..69c696c0c
--- /dev/null
+++ b/npc/026-8/_mobs.txt
@@ -0,0 +1,11 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 026-8: Optional Dungeon mobs
+026-8,42,92,22,45 monster Banshee Underling 1458,11,60000,240000
+026-8,61,74,51,59 monster Flying Underling 1459,13,60000,240000
+026-8,53,70,22,45 monster Wizard Underling 1457,11,60000,240000
+026-8,73,93,22,45 monster Halberd Underling 1456,11,60000,240000
+026-8,59,45,45,23 monster Gunner Underling 1455,5,60000,240000
+026-8,55,124,45,18 monster Gunner Underling 1455,5,60000,240000
+026-8,83,64,7,5 monster Moubootaur Top Underling 1454,1,60000,240000,#OPTDungeon::OnBossDown
+026-8,85,72,5,2 monster Gunner Underling 1455,2,60000,240000
+026-8,92,53,6,6 monster Halberd Underling 1455,2,60000,240000
diff --git a/npc/soren-2/_warps.txt b/npc/026-8/_warps.txt
index 02271412f..cb027640e 100644
--- a/npc/soren-2/_warps.txt
+++ b/npc/026-8/_warps.txt
@@ -1,3 +1,3 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
-// Map soren-2: Soren House warps
-soren-2,32,37,0 warp #soren-2_32_37 0,0,soren,105,58
+// Map 026-8: Optional Dungeon warps
+026-8,94,100,0 warp #026-8_94_100 0,0,026-6,86,79
diff --git a/npc/026-8/ctrl.c b/npc/026-8/ctrl.c
new file mode 100644
index 000000000..a2064279d
--- /dev/null
+++ b/npc/026-8/ctrl.c
@@ -0,0 +1,64 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// Optional Dungeon Configuration File
+
+026-8 mapflag zone SuperMMO
+
+// Main Configuration and Warp NPC
+026-6,86,78,0 script #OPTDungeon NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+OnTouchNPC:
+ if (!MK_WINNER) dispbottom l("The Alliance Expeditionary Force won't allow me beyond this point.");
+ else warp "026-8", 93, 100;
+ end;
+
+OnBossDown:
+ if (!playerattached()) end;
+ getitem EvilWarpCrystal, 1;
+ OPTBossCount += 1;
+ switch (OPTBossCount) {
+ case 1:
+ getitem IntelligenceFruit, 1; break;
+ case 2:
+ getitem VitalityFruit, 1; break;
+ case 3:
+ getitem DexterityFruit, 1; break;
+ case 4:
+ getitem StrengthFruit, 1; break;
+ case 5:
+ getitem LuckFruit, 1; break;
+ case 6:
+ getitem AgilityFruit, 1; break;
+ case 7:
+ getitem GoldenBossGift, 1; break;
+ case 8:
+ getitem MercBoxEE, 1; break;
+ case 9:
+ getitem PrismGift, 1; break;
+ case 10:
+ getitem SaviorBlueprint, 1; break;
+ default:
+ // After this, you heal fully and gain extra EXP
+ percentheal 100, 0;
+ getexp OPTBossCount*200, OPTBossCount*10;
+ // You can still get some low value, repeatable prizes in cycles of 40
+ // However, this code does NOT start at zero!
+ if (OPTBossCount % 40 == 20)
+ getitem Arcanum, 1;
+ else if (OPTBossCount % 40 == 30)
+ getitem TreasureKey, 1;
+ else if (OPTBossCount % 40 == 0)
+ getitem ArcmageBoxset, 1;
+ else if (OPTBossCount % 40 == 10)
+ getitem StrangeCoin, 5;
+ break;
+ }
+ fix_mobkill(TopUnderling);
+ end;
+}
+
+
diff --git a/npc/031-3/cook.txt b/npc/031-3/cook.txt
index 5609e0f23..fb3b5dd51 100644
--- a/npc/031-3/cook.txt
+++ b/npc/031-3/cook.txt
@@ -7,6 +7,7 @@
// Doesn't teach any recipe, though. Legit max level for cooking skill is 6.
031-3,35,55,0 script Ashley Loisl NPC_SAVIOR_F,{
+ public function cookHelp;
mesn;
mesq l("Ho... Congratulations in making this far.");
mesc l("Ashley raises an eyebrown at you.");
@@ -54,6 +55,12 @@
close;
OnCookHelp:
+ cookHelp(false);
+ close;
+
+public function cookHelp {
+ if (getarg(0, true))
+ setnpcdialogtitle l("Cooking Instructions - by Ashley Loisl");
mesn;
mesq l("The most important thing to keep in mind is that %s.", b(l("cooked food expire")));
next;
@@ -80,7 +87,8 @@ OnCookHelp:
next;
mesn;
mesq l("Eating the food most suitable for your battle style is the secret for having an edge over your opponents. Don't waste precious food while so many people starve at Halinarzo and it'll be a profitable passtime.");
- close;
+ return;
+}
OnInit:
.@npcId = getnpcid(.name$);
diff --git a/npc/034-4/exit.txt b/npc/034-4/exit.txt
index ef8fcc8ff..f2c6c24ee 100644
--- a/npc/034-4/exit.txt
+++ b/npc/034-4/exit.txt
@@ -73,8 +73,10 @@ OnTouch:
.@mb[0] = MagicGoblin;
.@mb[1] = CaveMaggot;
array_push(.@mb, BronzeChest);
+ array_push(.@mb, MalignChest);
array_push(.@mb, SmallMagicBif);
array_push(.@mb, Bif);
+ array_push(.@mb, EvilChest);
array_push(.@mb, RobinBandit);
array_push(.@mb, SilverChest);
array_push(.@mb, DustGatling);
@@ -82,6 +84,7 @@ OnTouch:
array_push(.@mb, DustRifle);
array_push(.@mb, DustRevolver);
array_push(.@mb, GoldenChest);
+ array_push(.@mb, GoldenMimic);
array_push(.@mb, GreatMoubooSlime);
array_push(.@mb, Piousse);
array_push(.@mb, ManaPiou);
diff --git a/npc/034-4/storage.txt b/npc/034-4/storage.txt
index 893971f32..79ee492c8 100644
--- a/npc/034-4/storage.txt
+++ b/npc/034-4/storage.txt
@@ -165,7 +165,7 @@ function storageutil {
// If it falls on a collision, the item won't be created at all
freeloop(true);
for (.@i=0; .@i <= ((.sto/2)+getmapusers(.mp$)); .@i++) {
- makeitem(any(Wurtzite, ShadowHerb, AlizarinHerb, DiamondPowder, RubyPowder, EmeraldPowder, SapphirePowder, TopazPowder, AmethystPowder, CopperOre, IronOre, Coal, LeadOre, Lifestone, ScorpionClaw, WhiteFur, SquirrelPelt, TinOre, PileOfAsh, EmptyBottle, FluoPowder, TerraniteOre, SulfurPowder, LeatherPatch, LazuriteShard, Root, ReedBundle, GambogeHerb, MauveHerb, CobaltHerb, MaggotSlime, BugLeg, RawLog, BanditHood, BatWing, IronPowder, ArtichokeHerb, LeftCraftyWing, RightCraftyWing, Coral, BlueCoral, Pearl, Moss, RattoTail, RattoTeeth, Knife, SharpKnife, StrangeCoin, PurificationPotion, IcedBottle, Grenade, SmokeGrenade, TreasureMap, AgiPotionA, VitPotionA, IntPotionA, DexPotionA, LukPotionA, EmptyBox, HastePotion, StrengthPotion, Croconut, ChocolateBar, ChocolateBiscuit, PinkieLeg, Potatoz, Coffee, SnakeEgg, Plushroom, Chagashroom, Honey, MoubooSteak, Milk, Orange, CherryCake, Piberries, Aquada, Cheese, Bread, Acorn, Manana), 1, .mp$, rand2(30, 71), rand2(44, 87));
+ makeitem(any(Wurtzite, ShadowHerb, AlizarinHerb, DiamondPowder, RubyPowder, EmeraldPowder, SapphirePowder, TopazPowder, AmethystPowder, CopperOre, IronOre, Coal, LeadOre, Lifestone, ScorpionClaw, WhiteFur, SquirrelPelt, TinOre, PileOfAsh, EmptyBottle, FluoPowder, TerraniteOre, SulfurPowder, LeatherPatch, LazuriteShard, Root, ReedBundle, GambogeHerb, MauveHerb, CobaltHerb, MaggotSlime, BugLeg, RawLog, BanditHood, BatWing, IronPowder, ArtichokeHerb, LeftCraftyWing, RightCraftyWing, Coral, BlueCoral, Pearl, Moss, RattoTail, RattoTeeth, Knife, SharpKnife, StrangeCoin, PurificationPotion, IcedBottle, Grenade, SmokeGrenade, TreasureMap, StrPotionA, AgiPotionA, VitPotionA, IntPotionA, DexPotionA, LukPotionA, EmptyBox, HastePotion, StrengthPotion, Croconut, ChocolateBar, ChocolateBiscuit, PinkieLeg, Potatoz, Coffee, SnakeEgg, Plushroom, Chagashroom, Honey, MoubooSteak, Milk, Orange, CherryCake, Piberries, Aquada, Cheese, Bread, Acorn, Manana), 1, .mp$, rand2(30, 71), rand2(44, 87));
}
freeloop(false);
return;
diff --git a/npc/042-11/boss.txt b/npc/042-11/boss.txt
index d79a7951f..9e3afc070 100644
--- a/npc/042-11/boss.txt
+++ b/npc/042-11/boss.txt
@@ -233,7 +233,7 @@ OnTimer5000:
sleep(1000);
specialeffect(FX_LIGHTNING, AREA, .@mvp);
squareharm(.@mvp, .@RG, .@dsb, HARM_MAGI, Ele_Wind, .@mob);
- harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(.@mvp, .@dmg, HARM_MAGI, Ele_Holy, .@mob);
break;
default:
// First Attack Pattern: Napalm Beat (vs Random)
@@ -245,7 +245,7 @@ OnTimer5000:
sleep(1000);
specialeffect(FX_LIGHTNING, AREA, .@rnd);
squareharm(.@rnd, .@RG, .@dsb, HARM_MAGI, Ele_Wind, .@mob);
- harm(.@rnd, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(.@rnd, .@dmg, HARM_MAGI, Ele_Holy, .@mob);
break;
}
unittalk(.@mob, .@msg$);
diff --git a/npc/042-3/jail.txt b/npc/042-3/jail.txt
index d41c33e67..aea673193 100644
--- a/npc/042-3/jail.txt
+++ b/npc/042-3/jail.txt
@@ -10,7 +10,8 @@
end;
OnKillSlime:
- debugmes "Slime slain";
+ if ($@GM_OVERRIDE || debug)
+ debugmes "Slime slain";
if (!playerattached()) {
consolewarn "[ERROR] Player not Attached on Slime Death D:";
debugmes "[ERROR] Cannot retrieve coordinates!!";
@@ -27,7 +28,10 @@ OnKillSlime:
OnFirstSlime:
// Yes, we just hope it works out of box
- explode(.@map$, .map$, "@");
+ if (playerattached())
+ explode(.@map$, getmap(), "@");
+ else
+ explode(.@map$, .map$, "@");
.@g=atoi(.@map$[1]);
if (.@g < 1) {
consolewarn "[ERROR] [KAMELOT] Unable to spawn for Kamelot %s", .map$;
@@ -42,7 +46,14 @@ OnFirstSlime:
debugmes "[ERROR] Cannot retrieve coordinates!!";
}
getmapxy(.@m$, .@x, .@y, 0);
- sleep2(1800);
+ @kamslimekills += 1;
+ if (@kamslimekills > 12 && @lockpicks) {
+ @kamslimekills -= 3;
+ detachrid();
+ sleep(rand2(24) * 1800);
+ } else {
+ sleep2(1800);
+ }
.@mob=monster(.@m$, .@x, .@y, strmobinfo(1, CopperSlime), CopperSlime, 1, .@label$);
// This should wipe the monster experience value
setunitdata(.@mob, UDT_LEVEL, 1);
diff --git a/npc/_import.txt b/npc/_import.txt
index 84c377814..ae05a74a3 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -18,6 +18,8 @@
@include "npc/001-13-6/_import.txt"
@include "npc/001-13/_import.txt"
@include "npc/001-14/_import.txt"
+@include "npc/001-15/_import.txt"
+@include "npc/001-16/_import.txt"
@include "npc/001-2/_import.txt"
@include "npc/001-3-1/_import.txt"
@include "npc/001-3/_import.txt"
@@ -293,6 +295,7 @@
@include "npc/026-3/_import.txt"
@include "npc/026-6/_import.txt"
@include "npc/026-7/_import.txt"
+@include "npc/026-8/_import.txt"
@include "npc/027-0/_import.txt"
@include "npc/027-1/_import.txt"
@include "npc/027-2/_import.txt"
diff --git a/npc/commands/event.txt b/npc/commands/event.txt
index 2100e341e..f845f942a 100644
--- a/npc/commands/event.txt
+++ b/npc/commands/event.txt
@@ -69,6 +69,9 @@ function script sClear {
if ($EVENT$ == "Anniversary") {
$BCONFB_EXPR-=50;
kamibroadcast(sprintf("EXP Rate changed from %d%% to %d%%", $BCONFB_EXPR+50, $BCONFB_EXPR));
+ .@curio = getvariableofnpc(.current_rate, "@exprate") - 50;
+ set getvariableofnpc(.current_rate, "@exprate"), .@curio;
+ donpcevent "@exprate::OnReload";
}
// Nullify Regnum Blessing
diff --git a/npc/commands/kami.txt b/npc/commands/kami.txt
index 0dc808bb3..e9eaaa025 100644
--- a/npc/commands/kami.txt
+++ b/npc/commands/kami.txt
@@ -131,11 +131,14 @@ function script kamibroadcast {
.@msg$=getarg(0);
.@snd$=getarg(1, "");
- // Send to #world
- if (.@snd$ == "")
- channelmes("#world", .@msg$);
- else
- channelmes("#world", "[ "+.@snd$+" ] : "+.@msg$);
+ // NOTE: Do not send to #world in Hardcore servers
+ if (!$HARDCORE) {
+ // Send to #world
+ if (.@snd$ == "")
+ channelmes("#world", .@msg$);
+ else
+ channelmes("#world", "[ "+.@snd$+" ] : "+.@msg$);
+ }
// Make an announce
if (.@snd$ == "")
diff --git a/npc/commands/rate-management.txt b/npc/commands/rate-management.txt
index 1dbf7efef..e19ba5ae3 100644
--- a/npc/commands/rate-management.txt
+++ b/npc/commands/rate-management.txt
@@ -2,15 +2,15 @@
- script @exprate 32767,{
end;
- function expRateReal {
+ public function expRateReal {
if (is_night())
return $BCONFB_EXPR+$BCONFN_EXPR;
else
return $BCONFB_EXPR+$BCONFD_EXPR;
}
- function expRecalc {
- .@val=getarg(0);
+ public function expRecalc {
+ .@val=getarg(0, .current_rate);
if (is_night())
return .@val+$BCONFN_EXPR;
else
diff --git a/npc/config/location.txt b/npc/config/location.txt
index f2db2bf94..7d4da3ded 100644
--- a/npc/config/location.txt
+++ b/npc/config/location.txt
@@ -7,11 +7,11 @@
OnInit:
// TP_FORT TP_BOSSR
- setarray $@LOCMASTER_TP, TP_CANDOR,TP_TULIM,TP_HALIN,TP_HURNS, TP_LOF,TP_LILIT,TP_NIVAL, TP_FROST, TP_FORT,TP_ARTIS;
- setarray $@LOCMASTER_LOC$, "Candor", "Tulim", "Halin", "Hurns", "LoF", "Lilit", "Nival", "Frostia", "Fort", "Artis";
- setarray $@LOCMASTER_MAP$, "005-1", "003-1", "009-1", "012-1", "017-1", "018-5", "020-1", "024-1", "025-2", "029-0";
- setarray $@LOCMASTER_X, 43, 40, 26, 86, 119, 111, 56, 94, 108, 203;
- setarray $@LOCMASTER_Y, 99, 49, 30, 69, 87, 53, 62, 42, 32, 85;
+ setarray $@LOCMASTER_TP, TP_CANDOR,TP_TULIM,TP_HALIN,TP_HURNS, TP_LOF,TP_LILIT,TP_NIVAL, TP_FROST, TP_FORT,TP_ARTIS, TP_HEART;
+ setarray $@LOCMASTER_LOC$, "Candor", "Tulim", "Halin", "Hurns", "LoF", "Lilit", "Nival", "Frostia", "Fort", "Artis", "Endgame";
+ setarray $@LOCMASTER_MAP$, "005-1", "003-1", "009-1", "012-1", "017-1", "018-5", "020-1", "024-1", "025-2", "029-0", "026-8";
+ setarray $@LOCMASTER_X, 43, 40, 26, 86, 119, 111, 56, 94, 108, 203, 80;
+ setarray $@LOCMASTER_Y, 99, 49, 30, 69, 87, 53, 62, 42, 32, 85, 100;
//debugmes "Locmaster: Index 0: %s [%s.gat (%d, %d)]", $@LOCMASTER_LOC$[0], $@LOCMASTER_MAP$[0], $@LOCMASTER_X[0], $@LOCMASTER_Y[0];
//debugmes "Locmaster: Index 2: %s [%s.gat (%d, %d)]", $@LOCMASTER_LOC$[2], $@LOCMASTER_MAP$[2], $@LOCMASTER_X[2], $@LOCMASTER_Y[2];
diff --git a/npc/config/magic.txt b/npc/config/magic.txt
index f283c8790..b68f6cdde 100644
--- a/npc/config/magic.txt
+++ b/npc/config/magic.txt
@@ -170,7 +170,7 @@ function script rectharm {
.@bl_filter = getarg(7, BL_PC | BL_MER | BL_HOM);
.@filter$ = getarg(8, "filter_always");
} else {
- .@bl_filter = getarg(7, BL_PC | BL_MOB | BL_MER | BL_HOM);
+ .@bl_filter = getarg(7, BL_PC | BL_MER | BL_HOM | BL_MOB);
.@filter$ = getarg(8, "filter_hostile");
}
@@ -204,12 +204,13 @@ function script squareharm {
.@bl_filter = getarg(6, BL_PC | BL_MER | BL_HOM);
.@filter$ = getarg(7, "filter_always");
} else {
- .@bl_filter = getarg(6, BL_PC | BL_MOB | BL_MER | BL_HOM);
+ .@bl_filter = getarg(6, BL_PC | BL_MER | BL_HOM | BL_MOB);
.@filter$ = getarg(7, "filter_hostile");
}
- return rectharm(.@caster, .@target, .@range, .@range,
- .@damage, .@harm_type, .@element, .@bl_filter, .@filter$);
+ return rectharm(.@target, .@range, .@range,
+ .@damage, .@harm_type, .@element,
+ .@caster, .@bl_filter, .@filter$);
}
diff --git a/npc/config/traps.txt b/npc/config/traps.txt
index 9f71edf27..8a030f937 100644
--- a/npc/config/traps.txt
+++ b/npc/config/traps.txt
@@ -101,9 +101,9 @@ function script WorldHeartTrap {
// Monsters are largely unaffected by them!
if (playerattached()) {
percentheal -(.@dmg), 0;
- sc_start SC_WALKSPEED,(.@delay*1000),60;
+ sc_start SC_MOVESLOW_POTION,(.@delay*1000),60;
} else {
- sc_start SC_WALKSPEED,(.@delay*1000),64;
+ sc_start SC_MOVESLOW_POTION,(.@delay*1000),64;
}
// A minor special effect and we're done.
diff --git a/npc/craft/alchemy.txt b/npc/craft/alchemy.txt
index ec268006b..a5bf21cb4 100644
--- a/npc/craft/alchemy.txt
+++ b/npc/craft/alchemy.txt
@@ -27,8 +27,11 @@ function script AlchemySystem {
.@var$ = requestcraft(2);
.@craft = initcraft(.@var$);
.@entry = findcraftentry(.@craft, CRAFT_ALCHEMY);
- if (debug || $@GM_OVERRIDE) mes "found craft entry: " + .@entry;
- if (debug || $@GM_OVERRIDE) mes "knowledge value: " + .knowledge[.@entry];
+ if (debug || $@GM_OVERRIDE) {
+ mes "found craft entry: " + .@entry;
+ mes "knowledge value: " + .knowledge[.@entry];
+ }
+
if (.@entry < 0) {
.success=false;
} else {
@@ -37,6 +40,9 @@ function script AlchemySystem {
.@m=limit(1, GSET_FIXED_ALCHEMY, 25);
} else {
.@max=(is_sponsor() ? 25 : 10);
+ // Guild can brew twice as faster than individual for... reasons
+ if (.scope == CRAFT_GUILD)
+ .@max*=2;
mesc l("How many to brew? (%d-%d)", 1, .@max);
input(.@m, 1, .@max);
}
@@ -97,7 +103,7 @@ OK Homun Stat Reset (Curshroom + Manapple)
OK Move Speed (Gem Powder + Fluor Powder)
OK Precision (Piberries + Mt. Snake Egg)
OK Dodge Potion (Piberries + Snake Egg)
-OK Luck, Dex, Int, Vit, Agi (Gems + Tea)
+OK Luck, Dex, Int, Vit, Agi, Str (Gems + Tea)
OK Sacred Life (Golden Apple + Elixir of Life)
OK Sacred Mana (Golden Apple + Celestia Tea)
OK Sacred Revival (Sacred Life + Sacred Mana)
diff --git a/npc/craft/cooking.txt b/npc/craft/cooking.txt
index 09d668256..b9994351f 100644
--- a/npc/craft/cooking.txt
+++ b/npc/craft/cooking.txt
@@ -25,8 +25,11 @@ function script CookingSystem {
setskin "";
.@craft = initcraft(.@var$);
.@entry = findcraftentry(.@craft, CRAFT_COOKING); // ??????
- if (debug || $@GM_OVERRIDE) mes "found craft entry: " + .@entry;
- if (debug || $@GM_OVERRIDE) mes "knowledge value: " + .knowledge[.@entry];
+ if (debug || $@GM_OVERRIDE) {
+ mes "found craft entry: " + .@entry;
+ mes "knowledge value: " + .knowledge[.@entry];
+ }
+
if (.@entry < 0) {
.success=false;
} else {
diff --git a/npc/craft/price.txt b/npc/craft/price.txt
index f2f073872..e5dbb9a4c 100644
--- a/npc/craft/price.txt
+++ b/npc/craft/price.txt
@@ -75,9 +75,12 @@ function script fix_cPrice {
freeloop(true);
// Fix potions prices
- _fix_cPrice(AgiPotionA);
- _fix_cPrice(AgiPotionB);
- _fix_cPrice(AgiPotionC);
+ _fix_cPrice(StrPotionA);
+ _fix_cPrice(StrPotionB);
+ _fix_cPrice(StrPotionC);
+ _fix_cPrice(StrPotionA);
+ _fix_cPrice(StrPotionB);
+ _fix_cPrice(StrPotionC);
_fix_cPrice(VitPotionA);
_fix_cPrice(VitPotionB);
_fix_cPrice(VitPotionC);
diff --git a/npc/craft/recipes.txt b/npc/craft/recipes.txt
index 1a688e94d..8e40057c2 100644
--- a/npc/craft/recipes.txt
+++ b/npc/craft/recipes.txt
@@ -10,7 +10,7 @@
function readAlchemy;
function readCrafting;
-OnUse:
+ public function readIndex {
setnpcdialogtitle l("Recipe Book");
mesc l("You open the Recipe Book. Each recipe you get can be put here.");
@@ -32,6 +32,11 @@ OnUse:
readCrafting(); break;
}
} while (@menu != 1);
+ return;
+}
+
+OnUse:
+ readIndex();
closeclientdialog;
close;
@@ -181,6 +186,10 @@ function readAlchemy {
showRecipe(DexPotionA,
DexPotionB,
DexPotionC);
+
+ showRecipe(StrPotionA,
+ StrPotionB,
+ StrPotionC);
dnext;
// Scrolls
@@ -394,6 +403,7 @@ function script MakeBlueprint {
array_push(.@recipes, CraftIntPotionA);
array_push(.@recipes, CraftAgiPotionA);
array_push(.@recipes, CraftVitPotionA);
+ array_push(.@recipes, CraftStrPotionA);
array_push(.@recipes, CraftSpeedPotion);
array_push(.@recipes, CraftIcedBottle);
array_push(.@recipes, CraftInsuranceContract);
@@ -416,6 +426,7 @@ function script MakeBlueprint {
array_push(.@recipes, CraftIntPotionB);
array_push(.@recipes, CraftAgiPotionB);
array_push(.@recipes, CraftVitPotionB);
+ array_push(.@recipes, CraftStrPotionB);
array_push(.@recipes, CraftAtroposMixture);
array_push(.@recipes, CraftPurificationPotion);
array_push(.@recipes, CraftHomunResetPotion);
@@ -428,6 +439,7 @@ function script MakeBlueprint {
array_push(.@recipes, CraftIntPotionC);
array_push(.@recipes, CraftAgiPotionC);
array_push(.@recipes, CraftVitPotionC);
+ array_push(.@recipes, CraftStrPotionC);
array_push(.@recipes, CraftSacredLifePotion);
array_push(.@recipes, CraftSacredManaPotion);
array_push(.@recipes, CraftSacredImmortalityPotion);
diff --git a/npc/craft/smith.txt b/npc/craft/smith.txt
index ae7872527..972784d4e 100644
--- a/npc/craft/smith.txt
+++ b/npc/craft/smith.txt
@@ -39,8 +39,11 @@ function script SmithSystem {
.@var$ = requestcraft(4);
.@craft = initcraft(.@var$);
.@entry = findcraftentry(.@craft, CRAFT_EQUIPMENT);
- if (debug || $@GM_OVERRIDE) mes "found craft entry: " + .@entry;
- if (debug || $@GM_OVERRIDE) mes "knowledge value: " + .knowledge[.@entry];
+ if (debug || $@GM_OVERRIDE) {
+ mes "found craft entry: " + .@entry;
+ mes "knowledge value: " + .knowledge[.@entry];
+ }
+
if (.@entry < 0) {
.success=false;
} else {
diff --git a/npc/dev/test.txt b/npc/dev/test.txt
index e74d4e7d5..2b4b195ce 100644
--- a/npc/dev/test.txt
+++ b/npc/dev/test.txt
@@ -116,6 +116,40 @@ function script F_TestVarOfAnotherNPC {
end;
}
+- script export test FAKE_NPC,{
+
+ function OnInit {
+ // functions labels should not be able to be called as events
+ // if a regression occurs, this function could end up being called when
+ // Hercules processes OnInit event calls (issue #2137)
+
+ // NOTE: If script_config.functions_as_events is enabled (defaults: off)
+ // and this this function is marked as public, it will trigger the
+ // warning and fail the unit test regardless.
+
+ $@something_bad_happened[0] = true;
+ end;
+ }
+
+ private function Private {
+ // function explicitly marked as private
+ return;
+ }
+
+ public function Public {
+ // this is for testing public local functions and ownership of the
+ // script
+
+ return getnpcid();
+ }
+
+ public function RefTest {
+ // this is to check if references are passed around properly
+
+ return set(getarg(0), 1337);
+ }
+}
+
function script HerculesSelfTestHelper {
if (.once > 0)
return .errors;
@@ -595,6 +629,11 @@ function script HerculesSelfTestHelper {
callsub(OnCheck, "array shrink", .@x[1], 0);
callsub(OnCheck, "array shrink and getarraysize", getarraysize(.@x), 0);
+ // log2
+ callsub(OnCheck, "log2(0)", log2(0), -1);
+ callsub(OnCheck, "log2(1)", log2(1), 0);
+ callsub(OnCheck, "log2(3<<29)", log2(0x60000000), 30);
+
// min and max
callsub(OnCheck, "min()", min(5, -10, 8, 3, -2, 1000), -10);
callsub(OnCheck, "max()", max(5, -10, 8, 3, -2, 1000), 1000);
@@ -602,9 +641,9 @@ function script HerculesSelfTestHelper {
// bit flag helpers
callsub(OnCheck, "bitmask_count(0)", bitmask_count(0), 0);
callsub(OnCheck, "bitmask_count(1)", bitmask_count(1), 1);
- // first bit falls out of type int32_t
- callsub(OnCheck, "bitmask_count(3 << 30)", bitmask_count(3 << 30), 1);
- callsub(OnCheck, "bitmask_count(0xaaaaAAAA)", bitmask_count(0xaaAAaaAA), 16);
+ // first bit falls out of type int32_t... turns into a script error.
+ //callsub(OnCheck, "bitmask_count( << 30)", bitmask_count(3 << 30), 1);
+ callsub(OnCheck, "bitmask_count(0x55555555)", bitmask_count(0x55555555), 16);
// Constants
@@ -736,6 +775,12 @@ function script HerculesSelfTestHelper {
callsub(OnCheckStr, "sprintf (positional)", sprintf("'%2$+05d'", 5, 6), "'+0006'");
callsub(OnCheckStr, "sprintf (positional)", sprintf("'%2$s' '%1$c'", "First", "Second"), "'Second' 'F'");
+ "export test"::RefTest(.@refTest = 69);
+ callsub(OnCheck, "function as event (regression)", $@something_bad_happened[0], false);
+ callsub(OnCheck, "public local function ownership", "export test"::Public(), getnpcid());
+ callsub(OnCheck, "public local function var reference test", .@refTest, 1337);
+ callsub(OnCheck, "programatic public local call", callfunctionofnpc("export test", "RefTest", .@refTest = 1), 1337);
+
if (.errors) {
consolemes(CONSOLEMES_DEBUG, "Script engine self-test [ \033[0;31mFAILED\033[0m ]");
consolemes(CONSOLEMES_ERROR, "**** The test was completed with " + .errors + " errors. ****");
diff --git a/npc/functions/aurora.txt b/npc/functions/aurora.txt
index dd0c16e9b..c1eb61f53 100644
--- a/npc/functions/aurora.txt
+++ b/npc/functions/aurora.txt
@@ -210,9 +210,9 @@ function script FYT {
case FY_POT:
switch (.@l) {
case 1:
- return any(LukPotionA, DexPotionA, IntPotionA, VitPotionA, AgiPotionA, HastePotion, StrengthPotion);
+ return any(LukPotionA, DexPotionA, IntPotionA, VitPotionA, AgiPotionA, StrPotionA, HastePotion, StrengthPotion);
case 2:
- return any(LukPotionB, DexPotionB, IntPotionB, VitPotionB, AgiPotionB, MoveSpeedPotion, PrecisionPotion, DodgePotion);
+ return any(LukPotionB, DexPotionB, IntPotionB, VitPotionB, AgiPotionB, StrPotionB, MoveSpeedPotion, PrecisionPotion, DodgePotion);
case 3:
return any(SacredImmortalityPotion, SacredLifePotion, SacredManaPotion);
}
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index 5cfa593d4..302a1c129 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -1426,11 +1426,13 @@ function script checkclientversion {
mesc l("Please update manually, or use the [@@%s|Mana Launcher@@] if you're on Windows or Linux.", "https://tmw2.org/launcher");
mesc l("Alternatively, download a bleeding edge build at [@@https://manaplus.germantmw.de/|https://manaplus.germantmw.de/@@]");
next;
- if (ClientVersion >= 24) mesc l("Compatibility Support mode enabled. Client may crash AT RANDOM, beware.");
- if (ClientVersion >= 24) mesc l("Crazy stuff can happen in overall. YOU HAVE BEEN WARNED TO UPDATE YOUR CLIENT.");
- if (ClientVersion >= 24) next;
- if (ClientVersion >= 24) closeclientdialog;
- if (ClientVersion >= 24) return;
+ if (ClientVersion >= 24) {
+ mesc l("Compatibility Support mode enabled. Client may crash AT RANDOM, beware.");
+ mesc l("Crazy stuff can happen in overall. YOU HAVE BEEN WARNED TO UPDATE YOUR CLIENT.");
+ next;
+ closeclientdialog;
+ return;
+ }
mesc l("You won't be allowed to play this game until you have an updated client.");
next;
// Force user to disconnect
diff --git a/npc/functions/dungeon.txt b/npc/functions/dungeon.txt
index 580635623..42386a5f0 100644
--- a/npc/functions/dungeon.txt
+++ b/npc/functions/dungeon.txt
@@ -9,11 +9,14 @@
// Main initialization
OnInit:
- setarray .heatmap$, "007-2", "026-3";
- setarray .cursemap$, "006-4", "006-4-1", "025-1", "026-2";
- setarray .sickmap$, "029-5";
- setarray .bleedmap$, "006-9", "026-6", "026-7";
- setarray .clockmap$, "017-0", "032-2";
+ setarray .heatmap$, "007-2", "026-3", "001-15";
+ setarray .cursemap$, "006-4", "006-4-1", "025-1", "026-2", "001-15";
+ setarray .sickmap$, "029-5", "001-15";
+ setarray .bleedmap$, "006-9", "026-6", "026-7", "001-15";
+ setarray .clockmap$, "017-0", "032-2", "001-15";
+ setarray .windymap$, "001-15";
+ setarray .leechmap$, "001-15";
+ setarray .frostmap$, "001-15";
end;
/////////////////////////////////////////
@@ -239,6 +242,106 @@ OnClocked:
end;
+/////////////////////////////////////////
+// Heartbeat for Windy effects
+OnWindy:
+ // Did you left?
+ .@i=array_find(.windymap$, getmap());
+ if (.@i < 0) {
+ @windy$="";
+ end;
+ }
+
+ // First time seeing this
+ if (@windy$ != getmap()) {
+ @windy$=getmap();
+ dispbottom l("This is a Windy map, walk speed and agility may be reduced.");
+ }
+
+ // You are in a WINDYMAP$, Move speed is impacted until it is neutered
+ .@penalty = 40 - (max(100, rand2(readparam2(bVit))) / 5);
+ if (@windyio <= gettimetick(2) && Class != Orc)
+ SC_Bonus(15, SC_MOVESLOW_POTION, .@penalty);
+ else
+ SC_Bonus(15, SC_MOVESLOW_POTION, 5);
+
+ // You may lose agility at 4% chance per 15 seconds
+ if (rand2(25) == 12)
+ sc_start2 SC_DEC_AGI, 15000, 20, 20, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK|SCFLAG_FIXEDRATE;
+
+ // New tick (15 seconds fixed cycle)
+
+ addtimer2 15000, .name$+"::OnWindy";
+ end;
+
+
+/////////////////////////////////////////
+// Heartbeat for Leech effects
+OnLeech:
+ // Did you left?
+ .@i=array_find(.leechmap$, getmap());
+ if (.@i < 0) {
+ @windy$="";
+ end;
+ }
+
+ // First time seeing this
+ if (@leech$ != getmap()) {
+ @leech$=getmap();
+ dispbottom l("This map is infested by Parasites, your HP will be periodically leeched to enemies!");
+ }
+
+ // You are in a LEECHMAP$ so you lose HP and leech it to mobs
+ if (@leechio <= gettimetick(2) && Class != Tritan) {
+ percentheal -3, 0;
+ callfunc("grenade", 14, -500, false); // Won't recover HP for bosses
+ } else if (rand2(3)) {
+ // 67% chances of you still losing some HP
+ percentheal -1, 0;
+ }
+
+ // New tick (15 seconds fixed cycle)
+ addtimer2 15000, .name$+"::OnLeech";
+ end;
+
+
+/////////////////////////////////////////
+// Heartbeat for Frost effects
+OnFrost:
+ // Did you left?
+ .@i=array_find(.frostmap$, getmap());
+ if (.@i < 0) {
+ @frost$="";
+ end;
+ }
+
+ // First time seeing this
+ if (@frost$ != getmap()) {
+ @frost$=getmap();
+ dispbottom l("This map is extremely cold, and may cause frostbites.");
+ }
+
+ // You are in a FROSTMAP$ and may get frostbites
+ if (@frostio <= gettimetick(2) && (Class != Elf && Class != Ukar)) {
+ // You get Frostbites at 100% probability
+ percentheal any(-1, -2), 0;
+ // You may get cold at ~8% chance
+ if (rand2(12) == 10)
+ SC_Bonus(15, SC_COLD, 5);
+ // You may freeze at ~2% chance
+ if (rand2(50) == 25)
+ SC_Bonus(15, SC_FREEZE, 5);
+ } else {
+ // Only 25% chance of a frostbite
+ if (rand2(4) == 2)
+ percentheal -1, 0;
+ }
+
+ // New tick (15 seconds fixed cycle)
+ addtimer2 15000, .name$+"::OnFrost";
+ end;
+
+
}
diff --git a/npc/functions/event.txt b/npc/functions/event.txt
index f5ca2d615..4e084075f 100644
--- a/npc/functions/event.txt
+++ b/npc/functions/event.txt
@@ -240,6 +240,10 @@ OnForceInit:
.score+=9999;
goto OnTimer90000;
+OnProrrogate:
+ .event += 300; // Extend event duration in 5 minutes
+ end;
+
OnReminder:
announce("Aeros Event : You have asked to be reminded five minutes after an Aeros Event is started.", bc_self|bc_pc);
end;
@@ -800,7 +804,7 @@ OnClock0000:
if (.@dofy && $EVENT$ == "")
FYNewEvent();
else
- debugmes "\033[1mAnother event is scheduled!";
+ debugmes "\033[1mAnother event is scheduled!\033[0m";
}
// Handle Valentine Day
@@ -845,8 +849,12 @@ OnClock0000:
// Begin the event
if (.@d == .tmw2day_stday) {
kamibroadcast("Moubootaur Legends Anniversary Event begun!");
- if ($EVENT$ != "Anniversary")
+ if ($EVENT$ != "Anniversary") {
$BCONFB_EXPR+=50;
+ .@curio = getvariableofnpc(.current_rate, "@exprate") + 50;
+ set getvariableofnpc(.current_rate, "@exprate"), .@curio;
+ donpcevent "@exprate::OnReload";
+ }
$EVENT$="Anniversary";
}
// End the event the day after
diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt
index 978eb1a72..ba0c0b5c5 100644
--- a/npc/functions/hub.txt
+++ b/npc/functions/hub.txt
@@ -119,7 +119,7 @@ function script HUB_Logout {
if (@grace) {
// Grace is upon you (ie. script death)
@grace=false;
- } else if ((.@zone$ == "MMO" || .@zone$ == "SuperMMO") && ABSOLVE_CNT <= 3) {
+ } else if ((.@zone$ == "MMO" || .@zone$ == "SuperMMO" || .@zone$ == "FinalMMO") && ABSOLVE_CNT <= 3) {
// Absolve (limited attempts)
ABSOLVE_CNT+=1;
dispbottom l("This is a special map so your death is not counted.");
@@ -163,10 +163,8 @@ function script HUB_Logout {
if (@alfred_st) {
.@current = gettimeparam(GETTIME_MINUTE);
.@hours = (.@current - @alfred_st) / 60;
- .@wage = 6800 * getq(General_Narrator) / 23; // "Alfred"::_calc_wage();
+ .@wage = "Alfred"::_calc_wage();
.@pay = min(getvariableofnpc(.maxHours, "Alfred"), .@hours) * .@wage;
- // I can't really know the wage! >.<
- // You'll be underpaid, but there's nothing I can *do* about it now.
Zeny += .@pay;
// Terminate the work
@alfred_st = 0;
@@ -290,6 +288,10 @@ function script HUB_Logout {
if (compare(.@mapa$, "fyrb")) {
doevent "sBossRaid::OnDie";
}
+ // Died or logged out at Final Showdown event
+ if (.@mapa$ == "001-15") {
+ "#Moubootaur"::DeathHandler(false, .@dead);
+ }
// Died or logged out during Yeti King Fight
if (getq(HurnscaldQuest_Celestia) > 1)
setq HurnscaldQuest_Celestia, 1;
@@ -312,7 +314,7 @@ function script HUB_Logout {
}
}
// If you were travelling and died/logged out, cleaning is needed
- if (@timer_navio_running) {
+ if (@timer_navio_running || compare(.@mapa$, "016-")) {
@timer_navio_running=0;
// Logged out? Correct your position to inside the ship
// Of course, this is messy... But still better than Save Point
@@ -563,6 +565,12 @@ function script HUB_SkillInvoke {
if (checkidle() > 180)
return;
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOMAGIC) {
+ if (getmap() == "001-15")
+ return;
+ }
+
// Record to database
skillInvoke[@skillId] = skillInvoke[@skillId] + 1;
callfunc "FYE_Olympics_SK";
@@ -647,7 +655,7 @@ function script HUB_SkillInvoke {
// Magic v3
// The basic offensive skill from Trickmaster
case TMW2_MANABOMB:
- // This skill takes 100% mana for a 1:1 ratio damage
+ // This skill takes 100% mana for a 1:2 ratio damage
// And is a trick. Each level improves ratio in 1
// Has no cooldown, so it is powerful with pots
// And is a good starter offensive skill
@@ -673,10 +681,11 @@ function script HUB_SkillInvoke {
break;
case TMW2_HEALING:
.@PW=130+(20*@skillLv);
+ .@heal = -AdjustSpellpower(.@PW);
// Penalty if you have HALT_REGEN on and trying to self heal
if (getstatus(SC_HALT_REGENERATION) && @skillTarget == getcharid(3))
.@heal /= 3;
- harm(@skillTarget, -AdjustSpellpower(.@PW), HARM_MISC);
+ harm(@skillTarget, .@heal, HARM_MISC, Ele_Neutral, @skillCaster);
GetManaExp(TMW2_HEALING, 2);
break;
case TMW2_MAGNUSHEAL:
@@ -700,7 +709,7 @@ function script HUB_SkillInvoke {
.@PW=140+(10*@skillLv);
// 4% chance, 2.5s
sc_start SC_BLOODING, 4500, 1, 400, SCFLAG_NONE, @skillTarget;
- harm(@skillTarget, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Fire);
+ harm(@skillTarget, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Fire, @skillCaster);
GetManaExp(TMW2_FIREBALL, 1);
break;
case TMW2_FIREBALL:
@@ -727,14 +736,14 @@ function script HUB_SkillInvoke {
.@dmg=AdjustSpellpower(.@PW);
.@RG=2+(@skillLv/3);
squareharm(@skillTarget, .@RG, .@dmg, HARM_MAGI, Ele_Holy, @skillCaster);
- harm(@skillTarget, .@dmg/10, HARM_MAGI, Ele_Holy);
+ harm(@skillTarget, .@dmg/10, HARM_MAGI, Ele_Holy, @skillCaster);
GetManaExp(TMW2_HOLYLIGHT, 1);
break;
case TMW2_HOLYLIGHT:
.@PW=125+(25*@skillLv);
.@dmg=AdjustSpellpower(.@PW);
squareharm(@skillTarget, 1, .@dmg/5, HARM_MAGI, Ele_Holy, @skillCaster);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Holy, @skillCaster);
GetManaExp(TMW2_HOLYLIGHT, 2);
break;
case TMW2_JUDGMENT:
@@ -744,7 +753,7 @@ function script HUB_SkillInvoke {
.@dsub=AdjustSpellpower(.@SPW);
.@RG=3+(@skillLv/5);
squareharm(@skillTarget, .@RG, .@dsub, HARM_MAGI, Ele_Holy, @skillCaster);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Holy);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Holy, @skillCaster);
GetManaExp(TMW2_HOLYLIGHT, 3);
break;
////////////////////////////////
@@ -753,13 +762,13 @@ function script HUB_SkillInvoke {
case TMW2_MAGICSTRIKE:
.@PW=125+(25*@skillLv);
.@dmg=AdjustSpellpower(.@PW);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Wind);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Wind, @skillCaster);
GetManaExp(TMW2_LIGHTNINGBOLT, 1);
break;
case TMW2_LIGHTNINGBOLT:
.@PW=150+(50*@skillLv);
.@dmg=AdjustSpellpower(.@PW);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Wind);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Wind, @skillCaster);
GetManaExp(TMW2_LIGHTNINGBOLT, 2);
break;
case TMW2_TEMPEST:
@@ -776,7 +785,7 @@ function script HUB_SkillInvoke {
.@PW=80+(10*@skillLv);
// 22% chance, 2.5s
sc_start SC_FREEZE, 2500, 1, 2200, SCFLAG_NONE, @skillTarget;
- harm(@skillTarget, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Water);
+ harm(@skillTarget, AdjustSpellpower(.@PW), HARM_MAGI, Ele_Water, @skillCaster);
GetManaExp(TMW2_NILFHEIM, 1);
break;
case TMW2_FROSTNOVA:
@@ -804,7 +813,7 @@ function script HUB_SkillInvoke {
.@dmg=AdjustSpellpower(.@PW);
.@TM=1200+(@skillLv*300);
sc_start SC_STUN, .@TM, 1, 800, SCFLAG_NONE, @skillTarget;
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Earth);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Earth, @skillCaster);
GetManaExp(TMW2_METEORSTRIKE, 1);
break;
case TMW2_METEORSHOWER:
@@ -823,16 +832,21 @@ function script HUB_SkillInvoke {
.@dsub=AdjustSpellpower(.@PWB);
areasc(2, 5000, SC_INCDEFRATE, BL_PC, 10, "filter_friendly");
rectharm(@skillTarget, 2, 5, .@dsub, HARM_MAGI, Ele_Earth, @skillCaster);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Earth);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Earth, @skillCaster);
GetManaExp(TMW2_METEORSTRIKE, 3);
break;
////////////////////////////////
// XXX: Parlor Tricks
// (Pathetic skills)
case TMW2_PARLORTRICK:
- .@PW=(getmapmask(getmap()) & MASK_RAIN ? 30 : 0)+(20*@skillLv);
+ .@PW = 20*@skillLv;
+ // Rain bonus
+ if (playerattached()) {
+ if (getmapmask(getmap()) & MASK_RAIN)
+ .@PW += 30;
+ }
.@dmg=AdjustSpellpower(.@PW);
- harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Water);
+ harm(@skillTarget, .@dmg, HARM_MAGI, Ele_Water, @skillCaster);
//No Mana EXP
break;
/*
@@ -937,7 +951,7 @@ function script HUB_SkillInvoke {
.@PW=100;
.@PW+=(5*@skillLv);
@SCombo=@skillTarget;
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_DIAGONALSLASH:
@@ -949,7 +963,7 @@ function script HUB_SkillInvoke {
if (@SCombo != @skillTarget)
.@PW=100;
.@PW+=(5*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_VERTICALSLASH:
@@ -963,7 +977,7 @@ function script HUB_SkillInvoke {
if (@SCombo != @skillTarget)
.@PW=100;
.@PW+=(5*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_STAB:
@@ -979,7 +993,7 @@ function script HUB_SkillInvoke {
if (@SCombo != @skillTarget)
.@PW=100;
.@PW+=(5*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_GRANDBLAST:
@@ -997,7 +1011,7 @@ function script HUB_SkillInvoke {
if (@SCombo != @skillTarget)
.@PW=100;
.@PW+=(5*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Holy);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Holy, @skillCaster);
GetManaExp(@skillId, rand2(2,3));
break;
@@ -1009,7 +1023,7 @@ function script HUB_SkillInvoke {
.@ST=0+(10*@skillLv);
.@TM=100+(90*@skillLv);
sc_start SC_STUN, .@TM, 1, .@ST, SCFLAG_NONE, @skillTarget;
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_GROUNDSTRIKE:
@@ -1025,14 +1039,14 @@ function script HUB_SkillInvoke {
break;
case TMW2_SUPREMEATTACK:
.@PW=100+(50*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
////////////////////////////////
// XXX: Physical Class (Archery)
case TMW2_CHARGEDARROW:
.@PW=100+(50*@skillLv);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
GetManaExp(@skillId, rand2(1,3));
break;
case TMW2_ARROWSHOWER:
@@ -1050,11 +1064,11 @@ function script HUB_SkillInvoke {
// Using a shield, so power is halved
if (getequipid(EQI_HAND_L) > 0)
.@PW=.@PW/2;
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
break;
case TMW2_BEARSTRIKE:
// 60x5 = 300
@@ -1062,15 +1076,15 @@ function script HUB_SkillInvoke {
// Using a shield, so power is halved
if (getequipid(EQI_HAND_L) > 0)
.@PW=.@PW/2;
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
break;
case TMW2_ALLINONE:
// 45x8 = 360
@@ -1078,20 +1092,20 @@ function script HUB_SkillInvoke {
// Using a shield, so power is halved
if (getequipid(EQI_HAND_L) > 0)
.@PW=.@PW/2;
- //harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Fire);
+ //harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Fire, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Water);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Water, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Earth);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Earth, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Wind);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Wind, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Holy);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Holy, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Shadow);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Shadow, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Ghost);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Ghost, @skillCaster);
sleep2(10);
// The main elemental-less blast hits all in same square,
// and also hits behind (and on your square)
@@ -1104,11 +1118,11 @@ function script HUB_SkillInvoke {
// Using a shield, so power is halved
if (getequipid(EQI_HAND_L) > 0)
.@PW=.@PW/2;
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sleep2(10);
- harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral);
+ harm(@skillTarget, AdjustAttackpower(.@PW), HARM_PHYS, Ele_Neutral, @skillCaster);
sc_start SC_STUN, .@TM, 1, 3333, SCFLAG_NONE, @skillTarget;
break;
@@ -1414,16 +1428,57 @@ function script HUB_PCBonus {
if (PCBONUS & PCB_LEGENDARY) {
bonus bDefRatioAtkRace, RC_Legendary;
}
+
/* Passive Skills */
bonus2 bSubRace, RC_Legendary, getskilllv(AL_DP)-10;
if (getq(LoFQuest_Barbara) >= 4 || getq(General_Narrator) >= 19)
bonus bMaxSP, 40;
if (getq(HalinarzoQuest_Speed) > 1)
bonus bSpeedAddRate, min(getq(HalinarzoQuest_Speed)-1, 10);
+ if (MOUBOOTAUR_OINTMENT)
+ bonus bMaxHP, min(2500, MOUBOOTAUR_OINTMENT);
/* Stat reassignment */
bonus bMaxHP, (readparam2(bVit)*2)-(readparam2(bAgi)*2);
+ /* Nullify all assigned stats, and general debuffs */
+ if (Class == Skelli) {
+ bonus bStr, 1-readparam(bStr);
+ bonus bAgi, 1-readparam(bAgi);
+ bonus bVit, 1-readparam(bVit);
+ bonus bDex, 1-readparam(bDex);
+ bonus bInt, 1-readparam(bInt);
+ bonus bLuk, 1-readparam(bLuk);
+ bonus bAllStats, -REBIRTH;
+ // Now comes SEVERAL debuffs for this specific class
+ bonus bMaxHPrate, -25;
+ bonus bMaxSPrate, -25;
+ bonus bAtkRate, -25;
+ bonus bDefRate, -25;
+ bonus bDef2Rate, -25;
+ bonus bMatkRate, 10; // MATK actually gets a buff for... reasons?
+ bonus bMdefRate, -25;
+ bonus bMdef2Rate, -25;
+ bonus bHitRate, -25;
+ bonus bCriticalRate, -25;
+ bonus bFleeRate, -25;
+ bonus bFlee2Rate, 10; // Perfect Evasion actually gets a buff for... dunno
+ bonus bSpeedAddRate, 1; // So... Moving speed bonus/debuff?
+ bonus bAspdRate, -25;
+ bonus bHPrecovRate, -25;
+ bonus bSPrecovRate, -25;
+ bonus bAddItemHealRate, -25;
+ // Shuffle your defense to work better against ranged attacks
+ // But make you weaker to traps, fixed-damage and magic
+ bonus bMagicAtkDef, -15;
+ bonus bMiscAtkDef, -15;
+ bonus bLongAtkDef, 20;
+ // Also, cannot be knocked back for... reasons
+ bonus bNoKnockback, 1;
+ bonus bIntravision, 1;
+ bonus bRestartFullRecover, 75; // Is 75 ignored, or revive with 75% HP
+ }
+
// Double hack fix
if (isequipped(ExplosiveArrow)) {
if (getiteminfo(getequipid(EQI_HAND_R), ITEMINFO_SUBTYPE) != W_BOW)
diff --git a/npc/functions/math.txt b/npc/functions/math.txt
index 22cf88159..d54558352 100644
--- a/npc/functions/math.txt
+++ b/npc/functions/math.txt
@@ -40,31 +40,17 @@ function script lognbaselvl {
}
// log2(<int>)
-// returns the log base 2 of the passed integer, up to 20 (2**20=1.048.576) (round down always)
-
+// returns the base 2 logarithm of the passed integer
+// Note: Negative values are first converted to positive.
+// For 0, -1 is returned instead
+// (as if passed value == 0.5, but that is not possible for integers).
function script log2 {
- .@v=abs(getarg(0));
- .@ok=0;
- .@i=0;
- if (.@v < 1)
- return -1;
-
- freeloop(true);
- while (!.@ok) {
- // exact match
- if (2**.@i == .@v) {
- .@ok=1;
- // inexact match, or limit exceeded
- } else if (2**.@i >= .@v || .@i > 20) {
- .@ok=1;
- .@i-=1; // round down
- // not yet
- } else {
- .@i+=1;
- }
+ .@v = abs(getarg(0));
+ .@i = -1;
+ while (.@v > 0) {
+ .@i += 1;
+ .@v >>= 1;
}
- freeloop(false);
-
return .@i;
}
diff --git a/npc/functions/maze.txt b/npc/functions/maze.txt
index 40de85c55..59d2cb76b 100644
--- a/npc/functions/maze.txt
+++ b/npc/functions/maze.txt
@@ -157,7 +157,6 @@ function script MazeMobs {
.@mb[1] = CaveMaggot;
// Artillery & Chests
- // TODO: Mimics?
if (getarg(1, true)) {
if (.@lv > 10)
array_push(.@mb, BronzeChest);
@@ -181,6 +180,15 @@ function script MazeMobs {
array_push(.@mb, BigMagicBif);
if (.@lv > 105)
array_push(.@mb, PrismChest);
+ // Special Chests
+ if (.@lv >= 120)
+ array_push(.@mb, ThornChest);
+ if (.@lv >= 135)
+ array_push(.@mb, WildxChest);
+ if (.@lv >= 150)
+ array_push(.@mb, ManaChest);
+ if (.@lv >= 175)
+ array_push(.@mb, MalignChest);
}
if (.@lv > 40)
array_push(.@mb, RobinBandit);
diff --git a/npc/functions/mobpoint.txt b/npc/functions/mobpoint.txt
index a11a2f2d3..2456f7110 100644
--- a/npc/functions/mobpoint.txt
+++ b/npc/functions/mobpoint.txt
@@ -109,6 +109,7 @@ OnNPCKillEvent:
// call functions
callfunc "mobpoint";
callfunc "mobhunter";
+ callfunc "mobspecial";
callfunc "SQuest_Hasan";
callfunc "SaggyMobCount";
callfunc "dausen_mobtutorial";
@@ -123,6 +124,7 @@ OnNPCKillEvent:
callfunc "GeminiKill";
callfunc "SK_drops";
callfunc "BonusEXP";
+ callfunc "ML_MobKill";
// Other updates
$@MK_TRIGGERED=true;
diff --git a/npc/functions/mobspecial.txt b/npc/functions/mobspecial.txt
new file mode 100644
index 000000000..cfd4d5ef6
--- /dev/null
+++ b/npc/functions/mobspecial.txt
@@ -0,0 +1,30 @@
+// TMW2 Scripts
+// Author: Jesusalva
+// Desc: Special functions for killing certain monster types
+// Designed by SAULC LE GRANDE
+
+// mobspecial(mobID) → Manual fix for special mobs
+function script mobspecial {
+ .@mobId=getarg(0, killedrid);
+ switch (.@mobId) {
+ case WildxChest:
+ percentheal 70, 0;
+ break;
+ case ManaChest:
+ percentheal 90, 75;
+ break;
+ case ThornChest:
+ percentheal 0, 10;
+ callfunc "SC_Bonus", (200-readparam2(bVit))/20, SC_POISON, 1;
+ callfunc "SC_Bonus", (200-readparam2(bVit))/40, SC_CURSE, 1;
+ break;
+ case MalignChest:
+ percentheal -30, 0;
+ callfunc "SC_Bonus", (200-readparam2(bVit))/20, SC_BLOODING, 1;
+ callfunc "SC_Bonus", (200-readparam2(bVit))/20, SC_CURSE, 1;
+ break;
+ }
+ return;
+}
+
+
diff --git a/npc/functions/treasure.txt b/npc/functions/treasure.txt
index d5160f3f5..a418fd8c6 100644
--- a/npc/functions/treasure.txt
+++ b/npc/functions/treasure.txt
@@ -41,6 +41,13 @@ function script TreasureBox {
else if (.@r <= 300) // SR and UR (67% Bonus)
.@r-=getarg(0, 0)*2/3;
+ // Common chances become Uncommon as you, the game, and the world progress
+ .@agedy = (gettimetick(2) - TUT_VAR) / 86400;
+ .@redux = min($GAME_STORYLINE*10, 50) +
+ min(REBIRTH*10, 50) +
+ min(getq(General_Narrator) * 10, 230) +
+ min(.@agedy, 470);
+
// Select treasure list
// You're warranted an ultra rare (0.1%) every 149 open chests
// You're warranted a super rare (2%) every 50 open chests
@@ -52,7 +59,7 @@ function script TreasureBox {
.@loot=any(MercBoxC, ScrollMagnusHealB, SnakeEgg, LachesisBrew, ArrowAmmoBox, GoldPieces, SilverGift, TerraniteOre, LeadOre, TinOre, SilverOre, GoldOre, TitaniumOre, FluoPowder, Lockpicks, EquipmentBlueprintC, AlchemyBlueprintC, AlchemyBlueprintD, AncientBlueprint, YerbaMate, JasmineTea, DeathPotion, SacredLifePotion, SacredManaPotion, BrokenWarpCrystal, PurificationPotion, GoldenApple);
else if (.@r < 1600 || .@t == 0)
.@loot=any(MercBoxB, MoubooSteak, SmokeGrenade, ClothoLiquor, Coal, RedPlushWine, PrecisionPotion, CoinBag, DodgePotion, MoveSpeedPotion, Dagger, BronzeGift, IronOre, CopperOre, BlueDye, EquipmentBlueprintB, AlchemyBlueprintB, AlchemyBlueprintC, OolongTea);
- else if (.@r < 5200)
+ else if (.@r < (5200+.@redux))
.@loot=any(MercBoxA, Croconut, Potatoz, MoubooSteak, ClothoLiquor, Coal, SmallMushroom, HastePotion, StrengthPotion, WoodenLog, LeatherPatch, Beer, StrangeCoin, EquipmentBlueprintA, EquipmentBlueprintB, AlchemyBlueprintA, SpearmintTea, TreasureMap, DungeonMap, IcedBottle);
else
.@loot=any(FatesPotion, PiberriesInfusion, EmptyBottle, ChocolateBar, Plushroom, Chagashroom, RawLog, LeatherPatch, BugLeg, ScorpionStinger, SmallKnife, ChamomileTea, EquipmentBlueprintA);
diff --git a/npc/functions/util.txt b/npc/functions/util.txt
index 75607185f..345628ade 100644
--- a/npc/functions/util.txt
+++ b/npc/functions/util.txt
@@ -26,10 +26,12 @@ function script DelItemFromEveryPlayer {
// Del items which SQL can't reach
.@c = getunits(BL_PC, .@players, MAX_CYCLE_PC);
for (.@i = 0; .@i < .@c; .@i++) {
- .@am=countitem(getarg(0), .@players[.@i]);
- if (.@am) debugmes "DELETE %d items from ACC %d", .@am, .@players[.@i];
- if (.@am)
- delitem(getarg(0), .@am, .@players[.@i]);
+ .@player = .@players[.@i];
+ .@am=countitem(getarg(0), .@player);
+ if (.@am) {
+ debugmes "DELETE %d items from ACC %d", .@am, .@player;
+ delitem(getarg(0), .@am, .@player);
+ }
}
return;
}
@@ -844,7 +846,7 @@ function script mstone {
// MAGIC_PTS → Amount of used Magic Skill Points
// sk_maxpoints() → Max Magic Skill Points you may use
// Returns how many points you can use
-// Current maximum as of 2020-06-21: (pratic) 30 ~ 43 (theoric)
+// Current maximum as of 2020-06-21: (pratic) 30 ~ 45 (theoric)
function script sk_maxpoints {
// 2 points per magic level
.@val=(MAGIC_LVL)*2;
@@ -858,8 +860,10 @@ function script sk_maxpoints {
.@val+=(REBIRTH*2);
// 1 point per skill permit level
.@val+=getskilllv(TMW2_SKILLPERMIT);
- // Sacrificing the Mouboo: +1 MSP
- .@val+=(alignment() < 0 ? 1 : 0);
+ // Sacrificing the Mouboo: +3 MSP
+ .@val+=(alignment() < 0 ? 3 : 0);
+ // Additional bonus from main story
+ .@val+=(getq(General_Narrator) >= 8 ? 1 : 0);
return .@val;
}
@@ -1148,17 +1152,27 @@ function script POL_LocToTP {
// TODO: Change this to use npc/config/location.txt instead
if (.@tw$ == "FROSTIA")
return TP_FROST;
+ if (.@tw$ == "HEART" || .@tw$ == "ENDGAME")
+ return TP_HEART;
return Exception("Invalid town requested / POL_LocToTP", RB_DEFAULT|RB_SPEECH, -1);
}
// Upon entering a town
-// EnterTown( LocName )
+// EnterTown( LocName{, force=false} )
function script EnterTown {
// Fill variable
.@v$=getarg(0);
+ // If you're dead and did not want to, forceful correction
+ // (MLDIE_Class however CAN be zero, check isn't perfect)
+ if (Class == Skellie && MLDIE_Class && !getarg(1, false)) {
+ Exception(sprintf("EnterTown: Player %d tried to enter %s but had no soul!", getcharid(0), .@v$), RB_DEBUGMES|RB_IRCBROADCAST);
+ warp "001-16", 90, 45;
+ return;
+ }
+
// Validade variable, see npc/config/location.txt first
if (array_find($@LOCMASTER_LOC$, .@v$) < 0)
return Exception("Invalid location passed to EnterTown: "+.@v$);
@@ -1233,7 +1247,7 @@ function script teleporthome {
}
.@i=array_find($@LOCMASTER_MAP$, getmap());
if (.@i >= 0)
- EnterTown($@LOCMASTER_LOC$[.@i]);
+ EnterTown($@LOCMASTER_LOC$[.@i], true);
else
consolewarn("[ERROR] Invalid Town Map for Time Flask: %s", getmap());
return;
diff --git a/npc/guilds/logs.txt b/npc/guilds/logs.txt
index 57bd7cb1e..2fc1658e4 100644
--- a/npc/guilds/logs.txt
+++ b/npc/guilds/logs.txt
@@ -74,6 +74,13 @@ guilds,47,39,0 script Guild Logs NPC_NO_SPRITE,{
.@s+=showRecipe(CraftAgiPotionC, AgiPotionC,
1, PolishedTopaz, 3, HerbalTea);
+ .@s+=showRecipe(CraftStrPotionA, StrPotionA,
+ 1, TopazPowder, 1, HerbalTea);
+ .@s+=showRecipe(CraftStrPotionB, StrPotionB,
+ 1, Topaz, 2, HerbalTea);
+ .@s+=showRecipe(CraftStrPotionC, StrPotionC,
+ 1, PolishedTopaz, 3, HerbalTea);
+
if (.@s > 14)
next;
@@ -264,6 +271,13 @@ guilds,47,39,0 script Guild Logs NPC_NO_SPRITE,{
if (!showRecipe(CraftAgiPotionC, false))
calcRecipe(CraftAgiPotionC, 8, 35000, l("Agi++ Potion"));
+ if (!showRecipe(CraftStrPotionA, false))
+ calcRecipe(CraftStrPotionA, 4, 15000, l("Str Potion"));
+ if (!showRecipe(CraftStrPotionB, false))
+ calcRecipe(CraftStrPotionB, 6, 25000, l("Str+ Potion"));
+ if (!showRecipe(CraftStrPotionC, false))
+ calcRecipe(CraftStrPotionC, 8, 35000, l("Str++ Potion"));
+
// Limit Boosts
if (!showRecipe(CraftSacredManaPotion, false))
calcRecipe(CraftSacredManaPotion, 7, 100000, l("Sacred Mana Potion"));
diff --git a/npc/items/books.txt b/npc/items/books.txt
index 94a642604..3100c3e52 100644
--- a/npc/items/books.txt
+++ b/npc/items/books.txt
@@ -618,6 +618,8 @@ function read_book {
do
{
+ setnpcdialogtitle l(.book_name$);
+
narrator S_NO_NPC_NAME,
l("Please select a chapter:");
@@ -635,7 +637,13 @@ function read_book {
rif2(9, CRAFTQUEST, l("Open Recipe Book")),
rif2(10, true, l("Read Rules")),
rif2(11, getskilllv(TMW2_COOKING), l("Open Cooking Manual")),
- rif2(12, getq(General_Narrator) >= 16, l("Open Homunculus Manual")),
+ //rif2(12, getq(General_Narrator) >= 16, l("Open Homunculus Manual")),
+ rif2(12, getq(LoFQuest_EPISODE) >= 17, l("Ch 6 — The Originals")),
+ rif2(13, getq(NivalisQuest_BlueSage) >= 12, l("Ch 7 — The World's Edge")),
+ rif2(14, getq(General_Narrator) >= 16, l("Ch 8 — Homunculus Manual")),
+ rif2(15, getq(LoFQuest_Barbara) >= 5, l("Ch 9 — The World's Heart")),
+ rif2(16, $GAME_STORYLINE >= 5 && getq(General_Narrator) >= 23, l("Ch 10 — The Moubootaur vs Mana Source")),
+ rif2(17, getq(General_Narrator) >= 23, l("Ch 11 — The Bloody War")),
l("Close");
mes "";
@@ -748,21 +756,108 @@ function read_book {
next;
break;
case 9:
- closeclientdialog;
- doevent("#RecipeBook::OnUse");
- end;
+ "#RecipeBook"::readIndex();
+ next;
break;
case 10:
GameRules();
break;
case 11:
- closeclientdialog;
- doevent("Ashley Loisl::OnCookHelp");
- end;
+ "Ashley Loisl"::cookHelp();
+ next;
+ break;
case 12:
+ // Ch 6 — The Originals
+ // Text duplicated from The Doctor, avoid redaction changes!
+ mes l("There are only four which you could want to know about.");
+ dnext;
+ mesq l("First, %s is the Guardian of Law and Order. He ensures all rules are followed, and if anything breaks them, he erases their existence.", b("Mr. Saves"));
+ mes l("For example, when an item is dropped to the ground, it rots away and disappear. It cannot be recovered. If an item were to break such rule, Mr. Saves would intervene.");
+ dnext;
+ mes l("Next we have %s. It guards the world itself and grants all kinds of magic.", b(l("The Mana Source")));
+ dnext;
+ mes l("Then we have %s. You met her. She guards all Talpan beings, such as Humans, Elves, Reidys, Orcs and whatever. She is an evil woman. She grants nothing to her followers.", b(l("Elli")));
+ dnext;
+ mes l("The last one is %s. You will meet him in the future, so no spoilers. Time traveler word.", b(l("The Moubootaur")));
+ mes l("He guards what you call \"monsters\", but he favor Mouboos. He is possibly the oldest of the Originals.");
+ dnext;
+ mes l("The Originals can shapeshift, but usually Mr. Saves is formless, the Moubootaur is a monster, Elli is a talpan and the Mana Source is an object such as a sword, an apple, a stone, a homunculus or even a dragon.");
+ next;
+ break;
+ case 13:
+ // Ch 7 — The World's Edge
+ "The Blue Sage"::nLetters(false);
+ next;
+ break;
+ case 14:
+ // Ch 8 — Homunculus Manual
closeclientdialog;
doevent("Notebook#MKHB::OnBookRead");
end;
+ case 15:
+ // Ch 9 — The World's Heart
+ mes l("You wrote here notes about your first encounter with the Mana Source.");
+ next;
+ mesc l("Barbara stole Lalica's Apple, which is described to you exactly like a Mana Stone. So I went to the mines, but I didn't find her at first.");
+ dnext;
+ mesc l("Instead, I've found out the city guard was attacked by someone or something, and they put the blame on her.");
+ dnext;
+ mesc l("Going further, I found Orbyter's Shrine, and at the central altar, I found not the Mana Stone, but the Lightbringer - the Mana Source itself, posing as a mana stone.");
+ dnext;
+ mesc l("The Mana Source then summoned a Night Dragon to prove me and disappeared. After passing the trial, I found near the altar the stolen apple and the hood which the Mana Source used to attack both Barbara and Benjamin.");
+ dnext;
+ mesc l("When I left, I found Barbara, who did indeed commit theft, but never had the chance to eat the apple due to being neutralized by the Mana Source.");
+ dnext;
+ mesc l("It was very uncharacteristic of the Mana Source - using physical blows to neutralize anything which could ruin its plan, causing misunderstandings to prove me, and summoning a Night Dragon to fight.");
+ dnext;
+ mesc l("However, it isn't the Mana Source which I must overcome, but the Moubootaur. The Mana Source went out of its way to prove whenever I was ready to find out the truth or not, and it deemed me worthy.");
+ next;
+ break;
+ case 16:
+ // Ch 10 — The Moubootaur vs Mana Source
+ mes l("Once upon a time, the talpan civilizations greatly offended the Moubootaur, guardian of the Monsters. As a result of the clash, an entire race was subverted into monsters, now known as Terranite. This is beginning The Bloody War, and the end of the Savior race.");
+ dnext;
+ mes l("The Mana Source, guardian of the World, fought against, whereas the Moubootaur wished for an even more drastic result which placed Mouboos as the supreme race in the world.");
+ dnext;
+ mes l("Elli, the guardian of Talpans, along with the Mana Source, resisted the Moubootaur. After Mr. Saves intervention the war came to an end, Elli and the Mana Source managed to seal the Moubootaur into the World's Heart, however, the conflict weakened them.");
+ dnext;
+ mes l("Back then, Talpans lived in the Fortress Island in harmony. The Mana Source decided to further split its own power into Mana Stones, to allow talpans to use magic, and after shapeshifiting in the form of a sword, the Lightbringer, it went dormant.");
+ dnext;
+ mes l("Elli then gathered a few friends, such as the first Micksha and the first Fidibus, and broke several shards from the World's Heart - currently known as Soul Menhirs. Elli and her friends led talpans to the great continent. Elli's allies were later known as the Ancient Families.");
+ dnext;
+ mes l("Warned by Elli, however, the Ancient Families wrote a prophecy of how dangerous it would be if the seal were to be broken, and the history of humans ever living in Fortress Town was subsequently erased, to ensure no one would ever return.");
+ next;
+ break;
+ case 17:
+ // Ch 11 — The Bloody War
+ // Text duplicated from Eastern Fortress, avoid redaction changes!
+ mes l("You noted down here the notes your family left behind for you.");
+ next;
+
+ mesc l("%s, if you're reading this, then as Ms. Elli predicted, you survived the seawreck and returned to our encampment. You might notice some things changed in these short weeks we don't see each other.", strcharinfo(0));
+ dnext;
+ mesc l("As you surely remember, there are 8 Mana Fragments, which symbolize the essence of the eight places where Soul Menhirs are: Candor, Hurnscald, Halinarzo, Lilit, Nivalis, Tulimshar, Land of Fire and Frostia. And that the Monster King collected all of them %s ago.", FuzzyTime($NIVALIS_LIBDATE));
+ dnext;
+ mesc l("And as you certainly know: the War between the Moubootaur and the sentient races, the Blood which was spilled, and the Inspiration it caused.");
+ dnext;
+ mesc l("The Mana, the World, snarling Defiance at him. The Guard and the Heir, the four Originals assembled, the lesser Races which were born. The Later, and finally, the Seal of the Moubootaur.");
+ dnext;
+ mesc l("The Fragments scattered, and the War which was to come. The fate of Terranite, the story of all. AEGIS MAGNA PROTECTIVE SCUTUM.");
+ dnext;
+ mesc l("For the Mana Source and the Moubootaur haven't finished their struggle, the Supreme Guardian of the World giving form and source to all mana, and granting its protection to us mortals, by magic and the Aegis Scutum.");
+ dnext;
+ mesc l("Everything the Moubootaur does, he does for this one moment. And everything the Mana Source does, is for the same moment. And everything Elli does, is for her own amusement. Naturally.");
+ dnext;
+ mesc l("All the monsters pledge to the Moubootaur, so we knew he was involved the moment the Monster King started collecting the Fragments. As soon as the ritual is conducted in the Holy Site of Kolev, where Artis was built upon, the final moves on this dance will begin."); // Fires of Steam. Time-accurate.
+ dnext;
+ mesc l("The families which brought the Soul Menhirs to the world were fated to become Terranites, a shadow of the once great Savior civilization. But in time, you may also ascend to the Savior race yourself. No victory was ever gained without sacrifice.");
+ dnext;
+ mesc l("Find where the Seal used to be. The Lightbringer, as the Mana Source's avatar, shall light the way. And if they leave the others behind, then surely the Mana Source shall abandon them. Wield its will, or follow the one whom does.");
+ // TODO Remove the 2 lines below once this is no longer a FIXME
+ dnext;
+ mesc l("WARNING, Remember Me! Cassia was dispatched to guard the location where the showdown will happen, but player is never led to her!"), 1;
+ next;
+ break;
default:
close;
}
diff --git a/npc/items/grenade.txt b/npc/items/grenade.txt
index a3ddf9fca..31a24934d 100644
--- a/npc/items/grenade.txt
+++ b/npc/items/grenade.txt
@@ -18,6 +18,8 @@ function script grenade {
.@dm=max(1, .@hp*(10000-.@d)/10000); // Does it even make sense?
if (getarg(2, false))
.@dm=max(1, .@hp-.@d);
+ if (.@d < 0)
+ .@dm=min(.@dm, getunitdata(.@mbs[.@i], UDT_MAXHP));
if (callfunc(.@f$)) {
//debugmes "Hitting monster (%d hp) for %d damage", .@hp, .@dm;
// TODO: use harm() instead?
diff --git a/npc/items/inc_sc_bonus.txt b/npc/items/inc_sc_bonus.txt
index b0680b680..a07a084c6 100644
--- a/npc/items/inc_sc_bonus.txt
+++ b/npc/items/inc_sc_bonus.txt
@@ -4,7 +4,7 @@
// Description:
// Applies effects for INC_* (STR doesn't exist)
// Valid values: INCAGI INCVIT INCINT INCDEX INCLUK INCHIT INCFLEE
-// Doesn't works: SC_STRUP
+// Doesn't works: SC_STRUP -> SC_STR_SCROLL instead
// Works if .@min == .@max: INCMHP INCMHPRATE INCMSP INCMSPRATE
/// Untested Values: WALKSPEED (reverse logic) INVINCIBLE (broken)
// PS. SC_CRITICALPERCENT (Crit) SC_FOOD_CRITICALSUCCESSVALUE (Crit) SC_STRIKING (Crit , ATK)
@@ -24,6 +24,13 @@ function script SC_Bonus {
if (.@delay <= 0)
return false;
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOBOOST) {
+ // Semi Hardcoded-way to find buffs
+ if (getmap() == "001-15" && .@min > 0 && array_find($@sc_buffs, .@type))
+ return false;
+ }
+
// Get the bonus value
if (.@min != .@max)
.@bonus=rand2(.@min, .@max);
@@ -62,11 +69,22 @@ function script SC_Bonus {
- script inc_sc_bonus -1,{
OnUse:
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOBOOST) {
+ if (getmap() == "001-15")
+ end;
+ }
+
SC_Bonus(@delay, @type, @min, @max);
@delay=0;
@type=0;
@min=0;
@max=0;
end;
+
+// Document all buffs
+OnInit:
+ setarray $@sc_buffs, SC_ATTHASTE_POTION1, SC_INCHIT, SC_KAIZEL, SC_INCATKRATE, SC_ATTHASTE_POTION1, SC_PLUSATTACKPOWER, SC_WALKSPEED, SC_INCLUK, SC_INCDEX, SC_INCAGI, SC_INCVIT, SC_INCINT, SC_STR_SCROLL, SC_CASH_DEATHPENALTY, SC_INCFLEE, SC_FOOD_CRITICALSUCCESSVALUE, SC_CRITICALPERCENT, SC_INCMSPRATE, SC_INCMHPRATE, SC_INCMSP, SC_INCMHP, SC_STRUP, SC_STRIKING, SC_INCHITRATE, SC_INCATKRATE, SC_INCFLEERATE, SC_INCDEFRATE, SC_ATTHASTE_POTION2, SC_OVERLAPEXPUP;
+ end;
}
diff --git a/npc/items/legacy_heal.txt b/npc/items/legacy_heal.txt
index 2beb820d3..d3d3b4f8a 100644
--- a/npc/items/legacy_heal.txt
+++ b/npc/items/legacy_heal.txt
@@ -20,6 +20,12 @@ function script ItHeal {
.@min=getarg(1, @min);
.@max=getarg(2, (@max ? @max : .@min));
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOHEAL) {
+ if (getmap() == "001-15")
+ return;
+ }
+
if (.@delay <= 0) {
Exception("Invalid legacy healing item, deleting without healing effect.");
end;
diff --git a/npc/items/rand_mp_heal.txt b/npc/items/rand_mp_heal.txt
index 4b6a5ca11..5b9365d82 100644
--- a/npc/items/rand_mp_heal.txt
+++ b/npc/items/rand_mp_heal.txt
@@ -18,6 +18,12 @@ function script MPHeal {
end;
}
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOMANA) {
+ if (getmap() == "001-15")
+ return;
+ }
+
// +1 max MP per 3 Int, +1 min MP per 5 int.
// Original max MP will be respected
@max = min(@max*2, @min+(readparam2(bInt)/5));
diff --git a/npc/items/rand_sc_heal.txt b/npc/items/rand_sc_heal.txt
index 41ea3b3a7..454c20887 100644
--- a/npc/items/rand_sc_heal.txt
+++ b/npc/items/rand_sc_heal.txt
@@ -37,6 +37,12 @@ function script ItHeal2 {
.@rarity=getarg(1);
.@delay=getarg(2, 0);
+ // Moubootaur Showdown Effects
+ if (getvariableofnpc(.mapMode, "#Moubootaur") == ML_MAPMODE_NOHEAL) {
+ if (getmap() == "001-15")
+ return 0;
+ }
+
// Calculate healing value in %
.@min=.@rarity * ((.@type*1) + 1);
.@max=.@rarity * ((.@type*2) + 1);
diff --git a/npc/items/shovel.txt b/npc/items/shovel.txt
index 04aaedfff..a9a8583de 100644
--- a/npc/items/shovel.txt
+++ b/npc/items/shovel.txt
@@ -544,6 +544,9 @@ function script shovel_randomdungeon {
array_push(.@mob, SilverChest);
if (.@mz & MAZE_SIZE_S)
array_push(.@mob, BronzeChest);
+ // Only sometimes, you'll find mana chests inside, which replenish you
+ if (any(true, false, (.@mz & MAZE_SIZE_G), (.@mz & MAZE_SIZE_X), (.@mz & MAZE_SIZE_A), (ShovelQuests_DungeonMAP$ == "025-4-1"), (ShovelQuests_DungeonMAP$ == "032-2")))
+ array_push(.@mob, ManaChest);
// Spawn & Configure the boss monster
.@mx=getmapinfo(MAPINFO_SIZE_X, MAZE_MAP$)-20;
diff --git a/npc/items/teleporter.txt b/npc/items/teleporter.txt
index 81ea4f1f3..bfb6cc1cf 100644
--- a/npc/items/teleporter.txt
+++ b/npc/items/teleporter.txt
@@ -36,6 +36,12 @@ OnUse:
}
// TODO: Are you already at target point?
+ // In some cases, you're not allowed to use it
+ if (@itemid == EvilWarpCrystal && !MK_WINNER) {
+ dispbottom l("The Crystal doesn't react. You most likely cannot use this item yet.");
+ ReturnItem(true);
+ }
+
// The chance to break is always at least 20%
// Begins at 100% and each second will subtract 0.01%
// It will never go below 5%, which happens after x seconds
diff --git a/npc/scripts.conf b/npc/scripts.conf
index 5732cccf9..41f030676 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -59,6 +59,7 @@
"npc/functions/marriage.txt",
"npc/functions/mobpoint.txt",
"npc/functions/mobhunter.txt",
+"npc/functions/mobspecial.txt",
"npc/functions/mounts.txt",
"npc/functions/news.txt",
"npc/functions/npcmove.txt",
diff --git a/npc/soren-2/_import.txt b/npc/soren-2/_import.txt
index f1e16d2cf..09cd236d7 100644
--- a/npc/soren-2/_import.txt
+++ b/npc/soren-2/_import.txt
@@ -1,5 +1,4 @@
// Map soren-2: Soren House
// This file is generated automatically. All manually added changes will be removed when running the Converter.
-"npc/soren-2/_warps.txt",
"npc/soren-2/main.txt",
"npc/soren-2/mapflags.txt",
diff --git a/npc/soren-2/main.txt b/npc/soren-2/main.txt
index d732bf871..376cb859f 100644
--- a/npc/soren-2/main.txt
+++ b/npc/soren-2/main.txt
@@ -236,3 +236,19 @@ OnStep5:
OnInit:
end;
}
+
+
+// Exit
+soren-2,32,37,0 script #soren-2_32_37 NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ mesc l("Do you want to leave?");
+ .@ans = askyesnosafe();
+ closeclientdialog;
+ if (.@ans == ASK_YES)
+ warp "soren", 105, 58;
+ end;
+}
+
+