summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/map/maps.conf3
-rw-r--r--db/constants.conf11
-rw-r--r--db/map_index.txt277
-rw-r--r--maps/re/026-3.mcachebin0 -> 1097 bytes
-rw-r--r--maps/re/026-6.mcachebin0 -> 458 bytes
-rw-r--r--maps/re/026-7.mcachebin0 -> 122 bytes
-rw-r--r--npc/003-2-1/_mobs.txt2
-rw-r--r--npc/025-1/ctrl.c5
-rw-r--r--npc/026-0/ctrl.c2
-rw-r--r--npc/026-1/ctrl.c11
-rw-r--r--npc/026-2/_import.txt1
-rw-r--r--npc/026-2/ctrl.c104
-rw-r--r--npc/026-3/_import.txt2
-rw-r--r--npc/026-4/_import.txt2
-rw-r--r--npc/026-5/_import.txt2
-rw-r--r--npc/026-6/_import.txt2
-rw-r--r--npc/026-7/_import.txt2
-rw-r--r--npc/_import.txt3
-rw-r--r--npc/functions/clientversion.txt1
-rw-r--r--npc/functions/dungeon.txt14
-rw-r--r--npc/functions/politics.txt3
-rw-r--r--npc/scripts.conf2
22 files changed, 294 insertions, 155 deletions
diff --git a/conf/map/maps.conf b/conf/map/maps.conf
index e3cb0f273..35ce19356 100644
--- a/conf/map/maps.conf
+++ b/conf/map/maps.conf
@@ -278,6 +278,9 @@ map_list: (
"026-0",
"026-1",
"026-2",
+ "026-3",
+ "026-6",
+ "026-7",
"027-0",
"027-1",
"027-2",
diff --git a/db/constants.conf b/db/constants.conf
index 4ee12447f..99b26e93b 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -2176,9 +2176,14 @@ constants_db: {
comment__: "Fortress Island Reqs"
MKIF_LV_0F: 3
- MKIF_LV_B0F: 5
- MKIF_LV_B1F: 7
- MKIF_LV_B2F: 10
+ MKIF_LV_B0F: 5 // <- Drop the key
+ MKIF_LV_B1F: 7 // <- Stomp around
+ MKIF_LV_B2F: 10 // <- Flip the place
+ MKIF_LV_B3F: 13 // <- His true name
+ MKIF_LV_B4F: 17 // <- Miller Switches*
+ MKIF_LV_B5F: 20 // <- Maze of Bloody Switches
+ MKIF_LV_B6F: 25 // <- Maze of Riddled Switches
+ MKIF_LV_B7F: 30 // <- Antechamber*
comment__: "Report Bug Flags"
RB_NONE: 0
diff --git a/db/map_index.txt b/db/map_index.txt
index 9fcdca283..7acfdd3b3 100644
--- a/db/map_index.txt
+++ b/db/map_index.txt
@@ -275,140 +275,143 @@
026-0 275
026-1 276
026-2 277
-027-0 278
-027-1 279
-027-2 280
-027-3 281
-027-4 282
-027-5 283
-027-6 284
-027-7 285
-029-0 286
-029-1 287
-029-2 288
-029-3 289
-029-4 290
-029-5 291
-029-6 292
-029-7 293
-029-8 294
-029-9 295
-030-01 296
-030-02 297
-030-03 298
-030-04 299
-030-05 300
-030-06 301
-030-07 302
-030-08 303
-030-09 304
-030-10 305
-030-11 306
-030-12 307
-030-13 308
-030-14 309
-030-15 310
-030-16 311
-030-17 312
-030-18 313
-030-19 314
-030-20 315
-030-21 316
-030-22 317
-030-23 318
-030-24 319
-030-25 320
-030-26 321
-030-27 322
-030-28 323
-030-29 324
-030-30 325
-030-31 326
-030-32 327
-030-33 328
-030-34 329
-030-35 330
-030-36 331
-030-37 332
-030-38 333
-030-39 334
-030-40 335
-030-41 336
-030-42 337
-030-43 338
-030-44 339
-030-45 340
-030-46 341
-030-47 342
-030-48 343
-030-49 344
-030-50 345
-030-51 346
-030-52 347
-030-53 348
-030-54 349
-030-55 350
-030-56 351
-030-57 352
-030-58 353
-030-59 354
-030-60 355
-030-61 356
-030-62 357
-030-63 358
-030-64 359
-030-65 360
-030-66 361
-030-67 362
-030-68 363
-030-69 364
-030-70 365
-030-71 366
-030-72 367
-030-73 368
-030-74 369
-030-75 370
-031-0 371
-031-1 372
-031-2 373
-031-3 374
-031-4 375
-031-5 376
-031-6 377
-031-7 378
-031-8 379
-031-9 380
-032-1 381
-032-2 382
-032-3 383
-032-4 384
-032-5 385
-033-1 386
-033-2 387
-033-3 388
-033-4 389
-033-5 390
-034-1 391
-034-2 392
-034-3 393
-034-4 394
-042-0 395
-042-1 396
-042-10 397
-042-11 398
-042-2 399
-042-3 400
-042-4 401
-042-5 402
-042-6 403
-042-7 404
-042-8 405
-042-9 406
-boss 407
-botcheck 408
-guilds 409
-sec_pri 410
-soren-2 411
-soren 412
-test 413
-testbg 414
+026-3 278
+026-6 279
+026-7 280
+027-0 281
+027-1 282
+027-2 283
+027-3 284
+027-4 285
+027-5 286
+027-6 287
+027-7 288
+029-0 289
+029-1 290
+029-2 291
+029-3 292
+029-4 293
+029-5 294
+029-6 295
+029-7 296
+029-8 297
+029-9 298
+030-01 299
+030-02 300
+030-03 301
+030-04 302
+030-05 303
+030-06 304
+030-07 305
+030-08 306
+030-09 307
+030-10 308
+030-11 309
+030-12 310
+030-13 311
+030-14 312
+030-15 313
+030-16 314
+030-17 315
+030-18 316
+030-19 317
+030-20 318
+030-21 319
+030-22 320
+030-23 321
+030-24 322
+030-25 323
+030-26 324
+030-27 325
+030-28 326
+030-29 327
+030-30 328
+030-31 329
+030-32 330
+030-33 331
+030-34 332
+030-35 333
+030-36 334
+030-37 335
+030-38 336
+030-39 337
+030-40 338
+030-41 339
+030-42 340
+030-43 341
+030-44 342
+030-45 343
+030-46 344
+030-47 345
+030-48 346
+030-49 347
+030-50 348
+030-51 349
+030-52 350
+030-53 351
+030-54 352
+030-55 353
+030-56 354
+030-57 355
+030-58 356
+030-59 357
+030-60 358
+030-61 359
+030-62 360
+030-63 361
+030-64 362
+030-65 363
+030-66 364
+030-67 365
+030-68 366
+030-69 367
+030-70 368
+030-71 369
+030-72 370
+030-73 371
+030-74 372
+030-75 373
+031-0 374
+031-1 375
+031-2 376
+031-3 377
+031-4 378
+031-5 379
+031-6 380
+031-7 381
+031-8 382
+031-9 383
+032-1 384
+032-2 385
+032-3 386
+032-4 387
+032-5 388
+033-1 389
+033-2 390
+033-3 391
+033-4 392
+033-5 393
+034-1 394
+034-2 395
+034-3 396
+034-4 397
+042-0 398
+042-1 399
+042-10 400
+042-11 401
+042-2 402
+042-3 403
+042-4 404
+042-5 405
+042-6 406
+042-7 407
+042-8 408
+042-9 409
+boss 410
+botcheck 411
+guilds 412
+sec_pri 413
+soren-2 414
+soren 415
+test 416
+testbg 417
diff --git a/maps/re/026-3.mcache b/maps/re/026-3.mcache
new file mode 100644
index 000000000..4202e6080
--- /dev/null
+++ b/maps/re/026-3.mcache
Binary files differ
diff --git a/maps/re/026-6.mcache b/maps/re/026-6.mcache
new file mode 100644
index 000000000..f113412b6
--- /dev/null
+++ b/maps/re/026-6.mcache
Binary files differ
diff --git a/maps/re/026-7.mcache b/maps/re/026-7.mcache
new file mode 100644
index 000000000..b01d4aa53
--- /dev/null
+++ b/maps/re/026-7.mcache
Binary files differ
diff --git a/npc/003-2-1/_mobs.txt b/npc/003-2-1/_mobs.txt
index e4ea840b6..3769f3ffb 100644
--- a/npc/003-2-1/_mobs.txt
+++ b/npc/003-2-1/_mobs.txt
@@ -1,3 +1,3 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 003-2-1: #Leave-Complaints mobs
-003-2-1,46,45,16,11 monster Green Dragon 1195,5,3600,36000,NotSoBot::OnHydra
+003-2-1,46,45,16,11 monster Whining Dragon 1046,5,3600,36000,NotSoBot::OnHydra
diff --git a/npc/025-1/ctrl.c b/npc/025-1/ctrl.c
index 563182fca..843915351 100644
--- a/npc/025-1/ctrl.c
+++ b/npc/025-1/ctrl.c
@@ -24,6 +24,11 @@
026-0 mapflag zone SuperMMO
026-1 mapflag zone SuperMMO
026-2 mapflag zone SuperMMO
+026-3 mapflag zone SuperMMO
+//026-4 mapflag zone SuperMMO // <- Randomly generated
+//026-5 mapflag zone SuperMMO // <- Randomly generated
+026-6 mapflag zone SuperMMO
+026-7 mapflag zone SuperMMO
/////////////////////////////////////////
// FUNCTIONS
diff --git a/npc/026-0/ctrl.c b/npc/026-0/ctrl.c
index b490ab028..bc2723499 100644
--- a/npc/026-0/ctrl.c
+++ b/npc/026-0/ctrl.c
@@ -4,7 +4,7 @@
// Description:
// The Impregnable Fortress Control Files
// Quest: General_Fortress
-// (MaxFloor+1, internal, internal)
+// (MaxFloor+2, internal, internal)
026-0,64,20,0 script Impregnable#B0F NPC_HIDDEN,4,0,{
end;
diff --git a/npc/026-1/ctrl.c b/npc/026-1/ctrl.c
index b8a1e9fab..702180e3d 100644
--- a/npc/026-1/ctrl.c
+++ b/npc/026-1/ctrl.c
@@ -4,15 +4,15 @@
// Description:
// The Impregnable Fortress Control Files
// Quest: General_Fortress
-// (MaxFloor+1, internal, internal)
+// (MaxFloor+2, internal, internal)
026-1,60,26,0 script Impregnable#B1F NPC_HIDDEN,0,0,{
end;
OnTouch:
- if (getq(General_Fortress) > 1) goto L_Warp;
+ if (getq(General_Fortress) > 2) goto L_Warp;
mesc l(".:: Impregnable Fortress, %sF ::.", "B1"), 3;
- msObjective(getq(General_Fortress) == 2, l("* Obtain clearance"));
+ msObjective(getq(General_Fortress) == 3, l("* Obtain clearance"));
msObjective($MK_TEMPVAR < MKIF_LV_B2F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B2F));
mes "";
mesc l("Hint: You might need to come back later.");
@@ -26,8 +26,7 @@ L_Warp:
mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B2F), 1;
close;
}
- //warp "026-2", X, Y;
- dispbottom l("Coming Soon, in Moubootaur Legends!");
+ warp "026-2", 32, 97;
end;
// Disarm & reset everything
@@ -123,7 +122,7 @@ function script 0261_CheckReset {
if (!.@r)
warp "003-1", 82, 119;
else
- setq General_Fortress, 2, 0, 0;
+ setq General_Fortress, 3, 0, 0;
}
close;
diff --git a/npc/026-2/_import.txt b/npc/026-2/_import.txt
index 9240be1c5..89acd9d30 100644
--- a/npc/026-2/_import.txt
+++ b/npc/026-2/_import.txt
@@ -1,3 +1,4 @@
// Map 026-2: The Impregnable Fortress (B2F)
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/026-2/_warps.txt",
+"npc/026-2/ctrl.c",
diff --git a/npc/026-2/ctrl.c b/npc/026-2/ctrl.c
new file mode 100644
index 000000000..a0f513aa7
--- /dev/null
+++ b/npc/026-2/ctrl.c
@@ -0,0 +1,104 @@
+// TMW2 scripts.
+// Author:
+// Jesusalva
+// Description:
+// The Impregnable Fortress Control Files
+// Quest: General_Fortress
+// (MaxFloor+1, internal, internal)
+
+026-2,62,91,0 script Books#B2F NPC_NO_SPRITE,{
+ mesc l("These books seem to belong to the fortress keeper. They seem more important than the others.");
+ next;
+ mesc l("Most of them seem to be accounting books. There seems to be a large influx of money for the purchase of %s as a component for homunculus creation.", getitemlink(MaggotSlime));
+ next;
+ mesc l("The records implies a large number of economic players with ties with the Monster King operations, knowingly or not. A line also catches your attention:");
+ mes l("%s - %s GP", strcharinfo(0), fnum(MonsterMoney));
+ if (getq(General_Fortress) != 3) close;
+ next;
+ mesc l("After staring dumbfounded at the book for a while, you find something actually useful:");
+ mesc l("Near the aquarium, chant the magic words; his true name. Only then, you may advance to his Throne Room."), 1;
+ // The door to left leads to the living quarters area and whatnot. Both doors should be locked. The riddle should be black boxed. His true name cannot be found in the fortress, but is registered in any history bard or book.
+ if (getq2(General_Fortress) == 1)
+ mesc l("There seems to be scribbled something about 'the latin part of the prophecy', whatever that means. Seems to be an old passphrase to access 'the World Heart'.");
+ else
+ setq2 General_Fortress, 1;
+ close;
+
+OnInit:
+ .distance=3;
+ end;
+}
+
+026-2,29,26,0 script Impregnable1#B2F NPC_HIDDEN,4,0,{
+ end;
+
+OnTouch:
+ if (getq(General_Fortress) > 4) goto L_Warp;
+ mesc l(".:: Impregnable Fortress, %sF ::.", "B2"), 3;
+ mesc l("Living Quarters")+" ↑", 3;
+ msObjective(getq(General_Fortress) == 4, l("* Chant magic words"));
+ msObjective($MK_TEMPVAR < MKIF_LV_B3F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B3F));
+ mes "";
+ mesc l("Hint: Go read a book if you're bored.");
+ end;
+
+L_Warp:
+ // Not unlocked
+ if ($GAME_STORYLINE >= 3 && $MK_TEMPVAR < MKIF_LV_B3F) {
+ mesc l("The gate is sealed shut."), 1;
+ mesc l("The monster army is still strong on this floor!"), 1;
+ mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B3F), 1;
+ close;
+ }
+ //warp "026-3", X, Y;
+ dispbottom l("Coming Soon, in Moubootaur Legends!");
+ end;
+}
+
+026-2,86,26,0 script Impregnable2#B2F NPC_HIDDEN,4,0,{
+ end;
+
+OnTouch:
+ if (getq(General_Fortress) > 4) goto L_Warp;
+ mesc l(".:: Impregnable Fortress, %sF ::.", "B2"), 3;
+ mesc l("Throne Room")+" ↑", 3;
+ msObjective(getq(General_Fortress) == 4, l("* Chant magic words"));
+ msObjective($MK_TEMPVAR < MKIF_LV_B3F, l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B3F));
+ mes "";
+ mesc l("Hint: Go read a book if you're bored.");
+ end;
+
+L_Warp:
+ // Not unlocked
+ if ($GAME_STORYLINE >= 3 && $MK_TEMPVAR < MKIF_LV_B3F) {
+ mesc l("The gate is sealed shut."), 1;
+ mesc l("The monster army is still strong on this floor!"), 1;
+ mesc l("Minimum wins: %d/%d", $MK_TEMPVAR, MKIF_LV_B3F), 1;
+ close;
+ }
+ //warp "026-3", X, Y;
+ dispbottom l("Coming Soon, in Moubootaur Legends!");
+ end;
+
+OnTalkNearby:
+ if (getq2(General_Fortress) != 1 && getq(General_Fortress) != 3) end;
+ // not very obvious stuff by gumi
+ .@no_nick$ = strip(substr($@p0$, getstrlen(strcharinfo(PC_NAME)) + 3, getstrlen($@p0$) - 1));
+ .@message$ = strtoupper(.@no_nick$);
+ // TODO: I don't know his true name either, but the latin part is in 006-10
+ if (.@message$ == "PER ASPER AD SALVOS") {
+ setq General_Fortress, 4, 0, 0;
+ specialeffect(FX_CIRCLE, SELF, getcharid(3));
+ }
+ end;
+OnInit:
+OnInstanceInit:
+ .distance=3;
+ .pid=getnpcid();
+ // For players
+ debugmes "Fortress B2F Pattern %d", .pid;
+ defpattern(.pid, "^(.*)$", "OnTalkNearby");
+ activatepset(.pid);
+ end;
+}
+
diff --git a/npc/026-3/_import.txt b/npc/026-3/_import.txt
new file mode 100644
index 000000000..dafce2e10
--- /dev/null
+++ b/npc/026-3/_import.txt
@@ -0,0 +1,2 @@
+// Map 026-3: The Impregnable Fortress (B3F)
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/026-4/_import.txt b/npc/026-4/_import.txt
new file mode 100644
index 000000000..00fa2d471
--- /dev/null
+++ b/npc/026-4/_import.txt
@@ -0,0 +1,2 @@
+// Map 026-6: The Impregnable Fortress (B4F)
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/026-5/_import.txt b/npc/026-5/_import.txt
new file mode 100644
index 000000000..d55bebc71
--- /dev/null
+++ b/npc/026-5/_import.txt
@@ -0,0 +1,2 @@
+// Map 026-6: The Impregnable Fortress (B5F)
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/026-6/_import.txt b/npc/026-6/_import.txt
new file mode 100644
index 000000000..bdefc2df4
--- /dev/null
+++ b/npc/026-6/_import.txt
@@ -0,0 +1,2 @@
+// Map 026-6: The Impregnable Fortress (B6F)
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/026-7/_import.txt b/npc/026-7/_import.txt
new file mode 100644
index 000000000..d6ec4a48d
--- /dev/null
+++ b/npc/026-7/_import.txt
@@ -0,0 +1,2 @@
+// Map 026-7: Boss Chamber
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/_import.txt b/npc/_import.txt
index 99ba6d59e..88d0e9aac 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -277,6 +277,9 @@
@include "npc/026-0/_import.txt"
@include "npc/026-1/_import.txt"
@include "npc/026-2/_import.txt"
+@include "npc/026-3/_import.txt"
+@include "npc/026-6/_import.txt"
+@include "npc/026-7/_import.txt"
@include "npc/027-0/_import.txt"
@include "npc/027-1/_import.txt"
@include "npc/027-2/_import.txt"
diff --git a/npc/functions/clientversion.txt b/npc/functions/clientversion.txt
index 2bc2d7a09..0885ced76 100644
--- a/npc/functions/clientversion.txt
+++ b/npc/functions/clientversion.txt
@@ -1129,6 +1129,7 @@ function script clientupdater {
#EVFEATS = #EVFEATS | EVFEAT_EASTER;
}
// Black Cat & Pinkie - not yet implemented
+ MonsterMoney += Zeny / 250; // Initialization
}
// :// End of Regular Update System
diff --git a/npc/functions/dungeon.txt b/npc/functions/dungeon.txt
index 71b2bf82c..a9d2d5003 100644
--- a/npc/functions/dungeon.txt
+++ b/npc/functions/dungeon.txt
@@ -9,10 +9,10 @@
// Main initialization
OnInit:
- setarray .heatmap$, "007-2";
- setarray .cursemap$, "006-4", "006-4-1", "025-1";
+ 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";
+ setarray .bleedmap$, "006-9", "026-6", "026-7";
end;
/////////////////////////////////////////
@@ -105,7 +105,7 @@ OnSick:
.@eff = SC_DPOISON;
// You are in a SICKMAP$, so suffer damage from disease
- if (@sickio > gettimetick(2)) {
+ if (@sickio > gettimetick(2) || Class == Raijin) {
heal -50, 0;
} else {
heal -rand2(50, 200), 0;
@@ -130,15 +130,15 @@ OnBleed:
// First time seeing this
if (@bleed$ != getmap()) {
@bleed$=getmap();
- dispbottom l("This is a bleeding map, HP won't recover naturally, and bleeding may start.");
+ dispbottom l("This is a Blood Pact map, HP won't recover naturally, and bleeding may start.");
}
// You are in a BLEEDMAP$, HP regeneration is disabled
if (@bleedio <= gettimetick(2))
SC_Bonus(15, SC_HALT_REGENERATION, 1);
- // You may bleed at 2% chance per 15 seconds
- if (rand2(50) == 25)
+ // You may bleed at 2% chance per 15 seconds (except heroes)
+ if (rand2(50) == 25 && !islegendary())
SC_Bonus(15, SC_BLOODING, 1);
// New tick (15 seconds fixed cycle)
diff --git a/npc/functions/politics.txt b/npc/functions/politics.txt
index 21d719ce6..ee1125edf 100644
--- a/npc/functions/politics.txt
+++ b/npc/functions/politics.txt
@@ -27,6 +27,7 @@ function script PurchaseTaxes {
.@price=getiteminfo(@bought_nameid[.@i], ITEMINFO_BUYPRICE);
.@tax+=.@price*@bought_quantity[.@i];
}
+ MonsterMoney += (.@price / 5); // MK Control
.@loc$=strtoupper(getarg(0, LOCATION$));
.@vat=getd("$"+.@loc$+"_TAX");
.@tax=.@tax*.@vat/10000;
@@ -50,6 +51,7 @@ function script SaleTaxes {
.@price=getiteminfo(@sold_nameid[.@i], ITEMINFO_SELLPRICE);
.@tax+=.@price*@sold_quantity[.@i];
}
+ MonsterMoney += (.@p / 25); // MK Control (smaller than others)
.@loc$=strtoupper(getarg(0, LOCATION$));
.@vat=getd("$"+.@loc$+"_TAX");
.@vat=.@vat*3/4; // Only 75% of purchase tax (defaults to 0.75% I guess)
@@ -97,6 +99,7 @@ function script POL_PlayerMoney {
.@l$=strtoupper(getarg(1, LOCATION$));
.@t=POL_LocToTP(.@l$);
+ MonsterMoney += (.@p / 5); // MK Control
Zeny-=.@p;
// Town option for tax immunity
diff --git a/npc/scripts.conf b/npc/scripts.conf
index 094d3e064..5f8bc1cab 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -154,4 +154,6 @@
"npc/config/config_blackbox.txt",
// Maps specific scripts
+@include "npc/026-4/_import.txt"
+@include "npc/026-5/_import.txt"
@include "npc/_import.txt"