diff options
author | Jesusaves <cpntb1@ymail.com> | 2025-05-16 19:54:44 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2025-05-16 19:54:44 -0300 |
commit | 7409ca4b0bb6faf85cbe0f21bf02095975e78da9 (patch) | |
tree | b33cfdb0f5e2a646d53e72abdbe21e23227f72f0 | |
parent | 18c87454d5b7a4760da7774bfb971cc58f252be0 (diff) | |
download | serverdata-7409ca4b0bb6faf85cbe0f21bf02095975e78da9.tar.gz serverdata-7409ca4b0bb6faf85cbe0f21bf02095975e78da9.tar.bz2 serverdata-7409ca4b0bb6faf85cbe0f21bf02095975e78da9.tar.xz serverdata-7409ca4b0bb6faf85cbe0f21bf02095975e78da9.zip |
Several changes on several things, mostly related to Final Showdown.
But also some minor balance tweaks.
-rw-r--r-- | db/constants.conf | 1 | ||||
-rw-r--r-- | db/re/map_zone_db.conf | 24 | ||||
-rw-r--r-- | maps/re/001-15.mcache | bin | 389 -> 390 bytes | |||
-rw-r--r-- | npc/001-1/bgmaster.txt | 7 | ||||
-rw-r--r-- | npc/001-16/obelisk.c | 28 | ||||
-rw-r--r-- | npc/018-2-2/main.txt | 5 | ||||
-rw-r--r-- | npc/functions/hub.txt | 14 | ||||
-rw-r--r-- | npc/functions/politics.txt | 2 |
8 files changed, 58 insertions, 23 deletions
diff --git a/db/constants.conf b/db/constants.conf index abece060f..7a7293611 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -1898,6 +1898,7 @@ constants_db: { NPC_STOVE: 284 NPC_TIKI: 285 NPC_ML_CIRCLE: 286 + NPC_ML_ANDREI: 287 // TMW-BR Non Animated NPCs NPC_SHOPPAKEP: 301 diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index f4cbc86f6..7e017ac55 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -708,11 +708,11 @@ zones: ( disabled_skills: { AL_WARP: "ALL" AL_TELEPORT: "ALL" - WE_CALLPARTNER: "ALL" + //WE_CALLPARTNER: "ALL" WE_CALLPARENT: "ALL" WE_CALLBABY: "ALL" SC_DIMENSIONDOOR: "ALL" - GD_EMERGENCYCALL: "ALL" + //GD_EMERGENCYCALL: "ALL" } disabled_items: { @@ -755,7 +755,7 @@ zones: ( recall: 100 recallall: 100 monster: 100 - item: 100 + //item: 100 summon: 100 killer: 100 killable: 100 @@ -788,6 +788,24 @@ zones: ( } }, { + name: "FinalMMO No Tricks" + inherit: ( "FinalMMO" ) + disabled_skills: { + AL_WARP: "ALL" + AL_TELEPORT: "ALL" + //WE_CALLPARTNER: "ALL" + WE_CALLPARENT: "ALL" + WE_CALLBABY: "ALL" + SC_DIMENSIONDOOR: "ALL" + //GD_EMERGENCYCALL: "ALL" + AM_REST: "ALL" + AM_RESURRECTHOMUN: "ALL" + AM_CALLHOMUN: "ALL" + NV_TRICKDEAD: "ALL" + GD_EMERGENCYCALL: "ALL" + } +}, +{ name: "Towns" mapflags: ( diff --git a/maps/re/001-15.mcache b/maps/re/001-15.mcache Binary files differindex 9032dc493..78c75da2a 100644 --- a/maps/re/001-15.mcache +++ b/maps/re/001-15.mcache diff --git a/npc/001-1/bgmaster.txt b/npc/001-1/bgmaster.txt index b9c8d63c3..52efdd38c 100644 --- a/npc/001-1/bgmaster.txt +++ b/npc/001-1/bgmaster.txt @@ -33,19 +33,18 @@ L_Moubootaur: 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; + // Superior Safeguard (TODO WIP) + if (!is_staff() && !debug) 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; + changeplayermusic "around_the_world.ogg"; // Start main timer if (!$@ML_SHOWDOWN) donpcevent "#Moubootaur::OnIntroCutscene"; - // TODO: bg_join? - // TODO: "#Moubootaur"::PermanentDebuffs() goto L_Close; L_TODO: diff --git a/npc/001-16/obelisk.c b/npc/001-16/obelisk.c index afcdef451..affa6bc62 100644 --- a/npc/001-16/obelisk.c +++ b/npc/001-16/obelisk.c @@ -12,11 +12,26 @@ 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; + next; if ($@ML_SHOWDOWN) { - next; - mesc l("Do you wish to return to the Moubootaur Showdown as an undead?"), 1; - next; - .@ans = askyesno(); + // Determine if your body still exists and can be recovered + // (Logout should have created it, but it lasts only 10 minutes) + // Player_Name#ML!GIDGID + // So 13 chars available for char name + if (getstrlen(strcharinfo(0)) > 12) + .@n$=substr(strcharinfo(0), 0, 12); + else + .@n$=strcharinfo(0); + .@n$=sprintf("%s#ML!%06d", .@n$, getcharid(0)); + .@bodyId = getnpcid(.@n$); + if (.@bodyId) { + mesc l("Do you wish to return to the Moubootaur Showdown as an undead?"), 1; + next; + .@ans = askyesno(); + } else { + mesc l("Your physical body no longer exists; you will need to use the Obelisk of Power and hope it recreates one for you!"), 1; + next; + } } closeclientdialog; if (.@ans == ASK_YES) @@ -34,7 +49,10 @@ OnInit: .@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? + if (getq(LilitQuest_Access)) + .@dest = any(TP_FROST, TP_HALIN, TP_LOF, TP_FORT, TP_LILIT, TP_CANDOR, TP_ARTIS); // TP_BOSSR? TP_NIVAL? + else + .@dest = any(TP_FROST, TP_HALIN, TP_LOF, TP_FORT, 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); diff --git a/npc/018-2-2/main.txt b/npc/018-2-2/main.txt index e650737bf..01772075e 100644 --- a/npc/018-2-2/main.txt +++ b/npc/018-2-2/main.txt @@ -100,7 +100,7 @@ OnPlayerCycle: end; } // Heroes Hold has some "traps" which complement the difficulty - if (@HH_NOTRAP < @HH_TIMER && rand2(1000) <= @HH_LEVEL) { + if (@HH_NOTRAP < gettimetick(2) && rand2(1000) <= @HH_LEVEL) { dispbottom any(l("You set off a trap!"), l("A trap is sprung on you!"), l("The floor suddenly raises spikes up!"), @@ -111,7 +111,8 @@ OnPlayerCycle: // You lose some HP and MP, depending on the difficulty heal -(@HH_LEVEL*rand2(3,6)), -(@HH_LEVEL/2); // Depending on your INT and VIT, you can avoid further traps - @HH_NOTRAP = @HH_TIMER + min(10, readparam2(bVit)/15) + min(10, readparam2(bInt)/15); + // (Giving up to *15* seconds immunity) + @HH_NOTRAP = gettimetick(2) + min(5, readparam2(bVit)/30) + min(10, readparam2(bInt)/15); // Otherwise, depending on your VIT, you get an ailment if (rand2(250) > readparam2(bVit)) { // Determine the dangers of the random trap diff --git a/npc/functions/hub.txt b/npc/functions/hub.txt index ba0c0b5c5..7b7d06351 100644 --- a/npc/functions/hub.txt +++ b/npc/functions/hub.txt @@ -14,6 +14,10 @@ function script HUB_Login { if (.@mapa$ == "020-7-1") { addtimer(1000, "#BlueSageHUB::OnCycle"); } + // Login on Death Maze + if (.@mapa$ == "001-16") { + SC_Bonus(86400, SC_ELLIBAN, 1); + } // Random Treasure cleaning if (CHAREG_CLEANUP < gettimetick(2)-CHEST_WAITTIME) @@ -119,7 +123,7 @@ function script HUB_Logout { if (@grace) { // Grace is upon you (ie. script death) @grace=false; - } else if ((.@zone$ == "MMO" || .@zone$ == "SuperMMO" || .@zone$ == "FinalMMO") && ABSOLVE_CNT <= 3) { + } else if (compare(.@zone$, "MMO") && ABSOLVE_CNT <= 3) { // Absolve (limited attempts) ABSOLVE_CNT+=1; dispbottom l("This is a special map so your death is not counted."); @@ -1443,13 +1447,7 @@ function script HUB_PCBonus { /* 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; + //sc_start(SC_ELLIBAN -> to login sequence, and no expire on death // Now comes SEVERAL debuffs for this specific class bonus bMaxHPrate, -25; bonus bMaxSPrate, -25; diff --git a/npc/functions/politics.txt b/npc/functions/politics.txt index 7fe0600ca..437b621a3 100644 --- a/npc/functions/politics.txt +++ b/npc/functions/politics.txt @@ -585,7 +585,7 @@ function script POL_Manage { } break; case 62: - .@cost = 75000 - (.@TX * 6) - (.@RP * 15); + .@cost = 65000 - (.@TX * 5) - (.@RP * 400); mesc l("Moubootaur Showdown Preparations + Marketing"), 3; mesc l("You need @@ GP to make this investment.", fnum(.@cost)); mesc l("This investment will allow the Alliance to make a better effort when facing down the Moubootaur."); |