diff options
author | Jesusaves <cpntb1@ymail.com> | 2023-10-28 19:23:27 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2023-10-28 19:23:27 -0300 |
commit | c0337b2a6498eb75a9e4e0188b947a258961f953 (patch) | |
tree | fca7b2ab773afa709dfb1588d6ac239c7d798680 | |
parent | d4a359b7bd7951afa7f462dcf9467e5272bda95a (diff) | |
download | serverdata-c0337b2a6498eb75a9e4e0188b947a258961f953.tar.gz serverdata-c0337b2a6498eb75a9e4e0188b947a258961f953.tar.bz2 serverdata-c0337b2a6498eb75a9e4e0188b947a258961f953.tar.xz serverdata-c0337b2a6498eb75a9e4e0188b947a258961f953.zip |
Allow to exchange Wumpus Egg for the Sunny Crystal, as per the official design.
Prepare the Gemini Quest extension after MK is dead (nothing happens yet).
-rw-r--r-- | db/constants.conf | 6 | ||||
-rw-r--r-- | npc/014-2-2/valia.txt | 2 | ||||
-rw-r--r-- | npc/023-3-1/logic.txt | 20 | ||||
-rw-r--r-- | npc/027-0/emma.txt | 13 | ||||
-rw-r--r-- | npc/027-0/enrique.txt | 12 | ||||
-rw-r--r-- | npc/034-2/gemini.txt | 2 | ||||
-rw-r--r-- | npc/034-4/exit.txt | 9 | ||||
-rw-r--r-- | npc/functions/mkbot.txt | 11 |
8 files changed, 67 insertions, 8 deletions
diff --git a/db/constants.conf b/db/constants.conf index 5aef9ce39..061473252 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -1967,6 +1967,7 @@ constants_db: { NPC_EURNI: 462 NPC_TONORI_GUARD_MALE: 463 NPC_TONORI_GUARD_FEMALE: 464 + NPC_ISBAMUTH: 465 NPC_MONSTERKING: 500 NPC_AIRSHIP: 501 @@ -2159,6 +2160,11 @@ constants_db: { COLLECT_ALL: 262144 // Maximum 32 collectibles, currently used: 19 + comment__: "Misc Flags enum" + FLAG_NONE: 0 + FLAG_MKFIRSTBLOOD: 1 + FLAG_WUMPUSEGG: 2 + comment__: "Monster King Events" MK_NONE: 0 MK_LOCKED: 1 diff --git a/npc/014-2-2/valia.txt b/npc/014-2-2/valia.txt index f954ad2ca..ff52a1f49 100644 --- a/npc/014-2-2/valia.txt +++ b/npc/014-2-2/valia.txt @@ -13,6 +13,8 @@ function script GeminiCheck { .@st = getarg(0, 0); if (getq(General_Narrator) < 16 || @mystatus < .@st) { + if (!@mystatus && .@st > 1) + consolebug("%s mystatus zeroed for Status %d", strcharinfo(0), .@st); warp "Save", 0, 0; dispbottom l("You don't feel so well... And then, you're dead."); die(); diff --git a/npc/023-3-1/logic.txt b/npc/023-3-1/logic.txt index 3a58013b0..68d391329 100644 --- a/npc/023-3-1/logic.txt +++ b/npc/023-3-1/logic.txt @@ -10,6 +10,8 @@ end; OnTouch: + if (instance_id() < 0) + cwarp "014-2-2", 35, 20; .@m$=getmap(); .@n=getq(General_Narrator); .@q=getq(FrostiaQuest_Homunculus); @@ -36,6 +38,8 @@ OnTouch: 023-3-1,45,80,0 script #Exit02331 NPC_HIDDEN,1,0,{ end; OnTouch: + if (instance_id() < 0) + cwarp "014-2-2", 35, 20; .@n=getq(General_Narrator); .@q=getq3(FrostiaQuest_Homunculus); // Cheater Detected @@ -305,3 +309,19 @@ OnTimerQuit: +023-3-1,45,33,0 script Isbamuth NPC_ISBAMUTH,{ + mesn; + mesq l("I lost interest in you. Don't bother me - leave from where you've came."); + mesc l("Maybe if NetSysFire was around, she would finish coding this NPC."); + close; + +OnInit: + .sex = G_MALE; + .distance = 5; + end; + +OnInstanceInit: + disablenpc instance_npcname(.name$); + end; +} + diff --git a/npc/027-0/emma.txt b/npc/027-0/emma.txt index a44aa570e..e5fa74f57 100644 --- a/npc/027-0/emma.txt +++ b/npc/027-0/emma.txt @@ -11,6 +11,8 @@ academicrank(), fnum(MAGIC_RP)); if (!MAGIC_LVL) close; + if (countitem(WumpusEgg) && !(FLAGS & FLAG_WUMPUSEGG)) + mesq l("OMG, that - that is a %s! I've been looking for scrambled eggs. I offer you a %s for it.", getitemlink(WumpusEgg), getitemlink(SunnyCrystal)); next; mesn; mesq l("I'm currently doing tutorship for students who are... falling behind %%p"); @@ -34,8 +36,17 @@ l("30 minutes"), 30, l("1 hour"), 60, l("2 hours"), 120, - rif(abizit() == 5 && MAGIC_LVL > 3, l("Show me something more advanced!")), -1; + rif(abizit() == 5 && MAGIC_LVL > 3, l("Show me something more advanced!")), -1, + rif(countitem(WumpusEgg) && !(FLAGS & FLAG_WUMPUSEGG), l("I want to trade the Wumpus Egg!")), -252; mes ""; + if (@menuret == -252) { + delitem WumpusEgg, 1; + getitem SunnyCrystal, 1; + FLAGS = FLAGS | FLAG_WUMPUSEGG; + mesn; + mesq l("Done and done. Have fun!"); + close; + } if (@menuret < 0) { goto L_Advanced; } diff --git a/npc/027-0/enrique.txt b/npc/027-0/enrique.txt index 11bacac9f..bd0a33ee9 100644 --- a/npc/027-0/enrique.txt +++ b/npc/027-0/enrique.txt @@ -11,6 +11,8 @@ academicrank(), fnum(MAGIC_RP)); if (!MAGIC_LVL) close; + if (countitem(WumpusEgg) && !(FLAGS & FLAG_WUMPUSEGG)) + mesq l("OMG, that - that is a %s! I've been looking for that reagent. I offer you a %s for it.", getitemlink(WumpusEgg), getitemlink(SunnyCrystal)); do { next; @@ -23,7 +25,8 @@ l("Who are the most famous scholars?"), rif(!ACADEMIC_RANK, l("I would like to enroll!")), l("What counts for titulation? Could you give me examples?"), - rif(getskilllv(TMW2_STUDY) < ACADEMIC_RANK, l("I would like to learn a new skill!")); + rif(getskilllv(TMW2_STUDY) < ACADEMIC_RANK, l("I would like to learn a new skill!")), + rif(countitem(WumpusEgg) && !(FLAGS & FLAG_WUMPUSEGG), l("I want to trade the Wumpus Egg!")); mes ""; switch (@menu) { case 1: @@ -169,6 +172,13 @@ mesq l("Use its powers for good!"); } break; + case 10: + delitem WumpusEgg, 1; + getitem SunnyCrystal, 1; + FLAGS = FLAGS | FLAG_WUMPUSEGG; + mesn; + mesq l("Done and done. Have fun!"); + break; } } while (@menu != 1); close; diff --git a/npc/034-2/gemini.txt b/npc/034-2/gemini.txt index ca8a3ae30..882cfa8c0 100644 --- a/npc/034-2/gemini.txt +++ b/npc/034-2/gemini.txt @@ -91,7 +91,7 @@ OnTouch: } -// Cell Doors +// Cell Doors (FIXME: Why not duplicates?) 034-2,58,100,0 script Cell Door#G01 NPC_NO_SPRITE,{ if (instance_id() < 0 || getcharid(1) < 1) end; GeminiCheck(7); diff --git a/npc/034-4/exit.txt b/npc/034-4/exit.txt index 07d96ea0b..ac33ac343 100644 --- a/npc/034-4/exit.txt +++ b/npc/034-4/exit.txt @@ -39,8 +39,13 @@ OnExit: next; } sleep2(400); - warp "014-2-2", 35, 20; - warpparty("014-2-2", 35, 20, getcharid(1), MAZE_MAP$, true); + if ($GAME_STORYLINE >= 5) { + warp "023-3-1", 45, 77; + warpparty("023-3-1", 45, 77, getcharid(1), MAZE_MAP$, true); + } else { + warp "014-2-2", 35, 20; + warpparty("014-2-2", 35, 20, getcharid(1), MAZE_MAP$, true); + } end; OnTouch: diff --git a/npc/functions/mkbot.txt b/npc/functions/mkbot.txt index 61559913d..f7ef00631 100644 --- a/npc/functions/mkbot.txt +++ b/npc/functions/mkbot.txt @@ -40,9 +40,14 @@ OnBourneAgain: // Reset aggro $@MK_AGGRO=0; if (playerattached()) { - channelmes("#world", strcharinfo(0)+" did an act worth of notice."); - dispbottom l("Oh well, this sucks, but that was only an illusion."); - dispbottom l("The real Monster King is probably on his fortress. It'll take more than that to take him down."); + if (!FLAGS & FLAG_MKFIRSTBLOOD) { + channelmes("#world", strcharinfo(0)+" did an act worth of notice."); + FLAGS = FLAGS | FLAG_MKFIRSTBLOOD; + dispbottom l("Oh well, this sucks, but that was only an illusion."); + dispbottom l("The real Monster King is probably on his fortress. It'll take more than that to take him down."); + } else { + dispbottom l("While it is utterly pointless, you once again vanish the Monster King's illusion."); + } if ($REBIRTH_WINNER$ == "" && TOP3AVERAGELVL() < 100) getexp min(641500, BaseLevel**3), 0; else if (!$FIRESOFSTEAM) |