summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-07-19 20:05:41 -0300
committerJesusaves <cpntb1@ymail.com>2019-07-19 20:05:41 -0300
commit953c069c44b444dece2a6c28600d562c9ac6684b (patch)
tree17aa77bdacbcc5cec54432923ceb194349f95a40
parent461f39372eb3d431bb2db0caa7590e79c39b26ff (diff)
downloadserverdata-953c069c44b444dece2a6c28600d562c9ac6684b.tar.gz
serverdata-953c069c44b444dece2a6c28600d562c9ac6684b.tar.bz2
serverdata-953c069c44b444dece2a6c28600d562c9ac6684b.tar.xz
serverdata-953c069c44b444dece2a6c28600d562c9ac6684b.zip
Port fully the Tier Quests to Recepcionist.
-rw-r--r--npc/003-0/luca.txt332
-rw-r--r--npc/003-0/recepcionist.txt312
-rw-r--r--npc/009-3/barzil.txt2
-rw-r--r--npc/014-3/fountain.txt3
4 files changed, 313 insertions, 336 deletions
diff --git a/npc/003-0/luca.txt b/npc/003-0/luca.txt
index 3ffb716cc..39bf70e9b 100644
--- a/npc/003-0/luca.txt
+++ b/npc/003-0/luca.txt
@@ -10,81 +10,6 @@
mesq l("I am the @@ master.", l("Magic Warriors"));
if (!MAGIC_LVL) goto L_NoMagic;
if (getskilllv(WIZARD_MAGE) && !is_admin()) close;
- if (getskilllv(TMW2_SKILLPERMIT) == 0) goto L_SignUp;
-
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 0) goto L_Tier2;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER >= 1) goto L_T2_S0;
-
- // Sanity check
- if (getskilllv(TMW2_SKILLPERMIT) >= 1) {
- mesn;
- mesq l("The Warriors have three other subclasses:");
- mesn lg("Paladin");
- mesc l("The well-round guy, with reasonable def, attack, and support skills.");
- mesn lg("Berserker");
- mesc l("The full-attack guy. Two hand swords works best!");
- mesn lg("Tanker");
- mesc l("The full-defense guy. Most skills require a shield.");
- }
- close;
-
-L_SignUp:
- next;
- mesn;
- mesq l("You have some magic power. Do you want to join the @@? ##BThis cannot be undone##b.", l("Magic Warriors"));
- next;
- mesn;
- mesq l("We use swords and bows to protect the people, and we use magic to spice things up! Because we're strong even without it!");
- next;
- menu
- l("What do I need to do to join?"), L_JoinReq,
- l("I'm not interested, sorry."), -;
- close;
-
-L_JoinReq:
- mesn;
- mesq l("Ah, nothing too major, as you already have magic.");
- next;
- mesn;
- mesq l("We only require a small fee of 1 @@, or 40 @@, or 500 @@ if you are poor adventurer.", getitemlink(DivineApple), getitemlink(SnakeEgg), getitemlink(MaggotSlime));
- next;
- switch(select(
- rif(countitem(DivineApple) >= 1, l("I got the apple.")),
- rif(countitem(SnakeEgg) >= 40, l("I got the eggs.")),
- rif(countitem(MaggotSlime) >= 500, l("I got the maggots slimes.")),
- l("I will apply later."))) {
-
- case 1:
- delitem DivineApple, 1;
- getexp $MANA_BLVL*100, $MANA_JLVL*10;
- goto L_Tier1Ok;
- break;
- case 2:
- // If player had 40 eggs, and eat 1 - they are clearly cheating.
- // It will delete all 39 eggs, and when it tries to delete the 40th,
- // it won't find and will terminate the script. No lame cheating.
- // Of course, all 39 eggs are gone for and I can't do anything about it.
- delitem SnakeEgg, 40;
- getexp $MANA_BLVL*100, $MANA_JLVL*10;
- goto L_Tier1Ok;
- break;
- case 3:
- delitem MaggotSlime, 500;
- goto L_Tier1Ok;
- break;
- default:
- break;
- }
-
- close;
-
-L_Tier1Ok:
- // The last argument is duration: 0 - permanent 1- temporary. If omitted, defaults to 1.
- skill(SM_BASH,1,0);
- skill(TMW2_SKILLPERMIT,1,0);
- mes "";
- mesn;
- mesq l("Here, learn this awesome skill. It is on the skills tab. You can drag it to the shortcut list. Use it to protect people!");
close;
L_NoMagic:
@@ -99,263 +24,6 @@ L_NoMagic:
mesq l("Perhaps, in the city, someone knows rumors about Mana Stones and can teach you. Other than that, you're on your own.");
close;
-// progressbar("<color>", <seconds>)
-// Script will be canceled if character moves :D
-// So I probably could *try* to reuse TMW-BR Magic Tier 2 Scripts.
-L_Tier2:
- next;
- mesn;
- mesq l("Wha, your magic power increased! How?! Ah, nevermind. You are eligible to get tier 2!");
- next;
- mesn;
- mesq l("But whoa, not so fast! You must pass the seven steps of a trial first!");
- next;
- mesn;
- mesq l("The first trial is simple, I'm not doing anything in special. Bring me 1 @@, or 200 @@ and 20 @@.", getitemlink(DivineApple), getitemlink(SilkCocoon), getitemlink(ChocolateMouboo));
- next;
- switch(select(
- rif(countitem(DivineApple) >= 1, l("I got the apple.")),
- rif(countitem(SilkCocoon) >= 200 && countitem(ChocolateMouboo) >= 20, l("I got the silk and chocolate.")),
- l("I will apply later."))) {
-
- case 1:
- delitem DivineApple, 1;
- goto L_Tier2Ok;
- break;
- case 2:
- delitem SilkCocoon, 200;
- delitem ChocolateMouboo, 20;
- goto L_Tier2Ok;
- break;
- default:
- break;
- }
-
- close;
-
-L_Tier2Ok:
- // The last argument is duration: 0 - permanent 1- temporary. If omitted, defaults to 1.
- addtoskill(SM_BASH,2,0);
- getexp 10000, 0;
- ST_TIER=1;
- mes "";
- mesn;
- mesq l("Good, good. The skill you got earlier just raised a single level. I'll also impair some experience on you, no biggies.");
- next;
- mesn;
- mesq l("Now, the real challenge will start. You have a lot of raw power, but that doesn't gives you a lot of skills to learn.");
- next;
- mesn;
- mesq l("I can make a nice, simple potion for you. That will help the raw mana to settle on your body.");
- next;
- mesn;
- mesq l("However, beware! That potion is short-lived, you'll be running against time. Get ready to travel a lot.");
- next;
- if (nard_reputation() < 8) {
- mesn;
- mesq l("I advise you to do more quests on Tulimshar and Candor, otherwise, you might fail right at the end.");
- next;
- }
- mesn;
- mesq l("Come talk to me when you're ready, and we can begin.");
- close;
-
-L_T2_Fail:
- if (ST_TIER == 3) {
- if (countitem(SunnyCrystal) > 0) {
- delitem SunnyCrystal, 1;
- } else {
- mesn;
- mesc l("WARNING. YOU ARE CHEATING THE SUNNY CRYSTAL QUEST."), 1;
- next;
- mesn;
- mesc l("YOU WILL BE PENALIZED WITH 60% OF HEALTH."), 1;
- mesc l("IF YOU DIE, YOU'LL SUFFER THE EXP PENALTY."), 1;
- percentheal -60, -100;
- close;
- }
- }
-
- if (ST_TIER == 10) {
- if (countitem(JesusalvaGrimorium) > 0) {
- delitem JesusalvaGrimorium, 1;
- } else {
- mesn;
- mesc l("WARNING. YOU ARE CHEATING THE GRIMORIE QUEST."), 1;
- next;
- mesn;
- mesc l("YOU WILL BE PENALIZED WITH 70% OF HEALTH."), 1;
- mesc l("IF YOU DIE, YOU'LL SUFFER THE EXP PENALTY."), 1;
- percentheal -70, -100;
- close;
- }
- }
-
- mesc l(".:: Mission Failed ::."), 1;
- mesc l("You ran out of time."), 1;
- mes "";
- mes l("You should have gotten here @@.", FuzzyTime(QUEST_ELEVARTEMPO,0,2));
- ST_TIER=1;
- close;
-
-L_T2_S0:
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 1) goto L_T2_S1;
- if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T2_Fail;
-
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 2) goto L_T2_S2;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 3) goto L_T2_S3;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 4) goto L_T2_S4;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 5) goto L_T2_S5;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 6) goto L_T2_S6;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER <= 9) goto L_T2_S7;
- if (getskilllv(TMW2_SKILLPERMIT) == 1 && MAGIC_LVL >= 2 && ST_TIER == 10) goto L_T2_Final;
- mesc l("Error, error, L_T2_S0 General Error, REPORT ME");
- close;
-
-L_T2_S1:
- //TMW2_SKILLPERMIT l("Magic Warriors") WIZARD_MAGE
- mes "";
- mesn;
- mesq l("So, young disciple! I wish I could just chant some gibberish words and that automatically granted you more skills, but alas, that won't work.");
- next;
- if (nard_reputation() < 8) {
- mesn;
- mesc l("I advise you to do more quests on Tulimshar and Candor, otherwise, you will fail right at the end."), 1;
- next;
- }
- mesn;
- mesq l("I can, however, prepare you a potion. But beware, that potion will only last 35 minutes once baked.");
- next;
- mesn; // PiberriesInfusion
- mesq l("If it expires, you'll need to do another. To bake it I need 1 @@, 10 @@ and a @@. Have Mauve and Money, lots of it.", getitemlink(EverburnPowder), getitemlink(MaggotSlime), getitemlink(EmptyBottle));
- next;
- select
- rif(countitem(MaggotSlime) >= 10 && countitem(EverburnPowder) && countitem(EmptyBottle), l("I have everything.")),
- l("I'm not ready.");
-
- mes "";
- if (@menu == 2) {
- mesn;
- mesq l("Yes, as you see, the costs are high. Prepare yourself.");
- close;
- }
-
- delitem EmptyBottle, 1;
- delitem EverburnPowder, 1;
- delitem MaggotSlime, 10;
- ST_TIER=2;
- set QUEST_ELEVARTEMPO, gettimetick(2) + (60 * 35);
- getexp 400, 0;
- mesn;
- mesc l("The class master mix the powder with the slime inside the bottle, and makes some weird mixture.");
- next;
- mesn;
- mesc l("He pours something on it, you're not sure what. He then utters some magic words.");
- next;
- // Reset timer, this is the place where it should really happen.
- set QUEST_ELEVARTEMPO, gettimetick(2) + (60 * 35);
- mesn;
- mesq l("The potion is baked, you have thirty five minutes! Read as fast as you can, don't miss details!");
- next;
- mesn;
- mesq l("First thing is to get a @@. One from black market won't do, go to Halinarzo!", getitemlink(SunnyCrystal));
- next;
- mesn;
- mesq l("Speak with ##BBarzil##b. Tell him I need it, he'll give you one from my inventory. HURRY UP!");
- close;
-
-L_T2_S2:
- mesn;
- mesq l("Hurry up! Bring my @@ from Barzil in Halinarzo!! You only have @@ left!", getitemlink(SunnyCrystal), FuzzyTime(QUEST_ELEVARTEMPO,2,2));
- close;
-
-L_T2_S3:
- if (countitem(SunnyCrystal) == 0) {
- mesn;
- mesq l("Where's the Sunny Crystal? Hurry up, you only have @@ left!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
- }
- delitem SunnyCrystal, 1;
- ST_TIER=4;
- getexp 250, 0;
- mesn;
- mesq l("Good, you did it!");
- next;
- mesn;
- mesc l("*chants more words, while the crystal hovers the potion*");
- next;
-
-L_T2_S4:
- mesn;
- mesq l("I will need many Mauve Herbs! Do you have them with you? If you don't have enough, we'll lose everything! You need at most @@!", BaseLevel+40);
- select
- rif(countitem(MauveHerb), l("Yes, I have herbs. I assume the risks.")),
- l("No I don't have herbs. I'll be back.");
-
- if (@menu == 2)
- close;
-
- if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T2_Fail;
- .@req=rand(BaseLevel-20, BaseLevel+40);
- // Minimum is 40, max is unknown, defaults to 100
-
- mesn;
- mesq l("I need @@ Herbs!", .@req);
- //next; // If you comment this next, you'll allow players to logout and prevent penalty.
- mes "";
-
- if (countitem(MauveHerb) < .@req) goto L_T2_Fail;
- delitem MauveHerb, .@r;
- ST_TIER=5;
- getexp .@r*3, 0;
- //getitem MagicPotion, 1;
-
- mesc l("You quickly give him the herbs, and he skillfully mix them on a potion.");
- next;
- // You'll get a random amount of time, based on spent herbs
- // Usually, 10~73 sec, being 73 sec = 1m13s
- QUEST_ELEVARTEMPO=QUEST_ELEVARTEMPO+rand(10,.@r-27);
-
-L_T2_S5:
- mesn;
- mesq l("Good! Last step! West of Hurnscald, there is a magic fountain.");
- next;
- mesn;
- mesq l("Talk to the Fountain. Pour the potion on it. I advise you to put all your points on int if possible.");
- next;
- mesn;
- mesq l("Hurry up, you'll run out of time in @@!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
- close;
-
-L_T2_S6:
- ST_TIER=7;
- mesn;
- mesq l("You did it! You're now on the last stage of this BORING and LONG quest!");
- next;
-
-L_T2_S7:
- mesn;
- mesq l("Jesusaves wrote a grimorie, with ancient secrets of our world.");
- next;
- mesn;
- mesq l("Captain Nard have it. Fetch it with him! Quick, you only have @@ left!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
- close;
-
-// You gain two skills: Provoke (works better, but limited usability) and the class skill
-L_T2_Final:
- skill(NV_TRICKDEAD,1,0);
- skill(SM_PROVOKE, 1, 0);
- addtoskill(TMW2_SKILLPERMIT,2,0);
- getexp 40000, 0; // Yes, 40k experience points. Waw.
- mesc l(".:: Congratulations! ::."), 2;
- mesc l("You advanced your tier!"), 2;
- next;
- mesn;
- mesq l("Keep the Grimorie with you. It's the proof you are now Tier 2. The book shall guide your advances!");
- next;
- mesn;
- mesq lg("Yes, courageous and worthy adventurer. You did well. I won't babysit you anymore. Embrace the new world opening before you!");
- close;
-
OnInit:
.@npcId = getnpcid(.name$);
setunitdata(.@npcId, UDT_HEADTOP, NPCEyes);
diff --git a/npc/003-0/recepcionist.txt b/npc/003-0/recepcionist.txt
index 8476af6db..118112d80 100644
--- a/npc/003-0/recepcionist.txt
+++ b/npc/003-0/recepcionist.txt
@@ -5,6 +5,8 @@
// Magic School recepcionist
003-0,47,44,4 script Recepcionist#003-0 NPC_FEMALE,{
+ if (MAGIC_LVL >= 3 && ST_TIER >= 1) goto L_T3_S0;
+
mesn;
mesq l("Hello, and welcome to the Magic School of Tulimshar.");
next;
@@ -13,8 +15,318 @@
next;
mesn;
mesq l("I hope our new campus get built soon. It'll be much better than here.");
+ if (!MAGIC_LVL)
+ close;
+ next;
+ switch (getskilllv(TMW2_SKILLPERMIT)) {
+ case 0:
+ if (MAGIC_LVL >= 1)
+ goto L_Tier1;
+ break;
+ case 1:
+ if (MAGIC_LVL >= 2)
+ goto L_Tier2;
+ break;
+ case 2:
+ if (MAGIC_LVL >= 3)
+ goto L_Tier3;
+ break;
+ }
+ closeclientdialog;
+ goodbye;
+ close;
+
+////////////////
+/* First Tier */
+////////////////
+L_Tier1:
+ mesn;
+ mesq l("Also, I see you're a newly registered mage. Am I right?");
+ next;
+ if (askyesno() == ASK_NO) {
+ mesn;
+ mesq l("Alright. I wish you good luck in your studies.");
+ close;
+ }
+ mesn;
+ mesq l("Good. Did you knew you could register to the Special Class, in order to get an extra skill point?");
+ next;
+ mesn;
+ mesq l("We only require a small fee of 1 @@, or 40 @@, or 500 @@ if you are poor adventurer.", getitemlink(DivineApple), getitemlink(SnakeEgg), getitemlink(MaggotSlime));
+ next;
+ switch(select(
+ rif(countitem(DivineApple) >= 1, l("I got the apple.")),
+ rif(countitem(SnakeEgg) >= 40, l("I got the eggs.")),
+ rif(countitem(MaggotSlime) >= 500, l("I got the maggots slimes.")),
+ l("I will apply later."))) {
+
+ case 1:
+ delitem DivineApple, 1;
+ getexp $MANA_BLVL*100, $MANA_JLVL*10;
+ break;
+ case 2:
+ delitem SnakeEgg, 40;
+ getexp $MANA_BLVL*100, $MANA_JLVL*10;
+ break;
+ case 3:
+ delitem MaggotSlime, 500;
+ break;
+ default:
+ close;
+ break;
+ }
+ skill TMW2_SKILLPERMIT, 1, 0;
+ mes "";
+ mesn;
+ mesq l("Many thanks, your help has been invaluable. You now have an extra point, use it wisely.");
+ close;
+
+/////////////////
+/* Second Tier */
+/////////////////
+L_Tier2:
+ mesn;
+ mesq l("Maybe you're interested in the Special Class again? An extra magic skill point for a lot of items, what do ya say?");
+ next;
+ if (askyesno() == ASK_NO) {
+ mesn;
+ mesq l("Alright. I wish you good luck in your studies.");
+ close;
+ }
+ mesn;
+ mesq l("Great news! Then please bring me 1 @@, or 200 @@ and 20 @@.", getitemlink(DivineApple), getitemlink(SilkCocoon), getitemlink(ChocolateMouboo));
+ next;
+ switch(select(
+ rif(countitem(DivineApple) >= 1, l("I got the apple.")),
+ rif(countitem(SilkCocoon) >= 200 && countitem(ChocolateMouboo) >= 20, l("I got the silk and chocolate.")),
+ l("I will apply later."))) {
+
+ case 1:
+ delitem DivineApple, 1;
+ break;
+ case 2:
+ delitem SilkCocoon, 200;
+ delitem ChocolateMouboo, 20;
+ break;
+ default:
+ close;
+ break;
+ }
+ skill TMW2_SKILLPERMIT, 2, 0;
+ getexp 10000, 0;
+ mes "";
+ mesn;
+ mes l("Many thanks, and once again, your help has been invaluable.");
+ mes l("You now have an extra point, use it wisely.");
+ close;
+
+/////////////////
+/* Third Tier */
+/////////////////
+L_Tier3:
+ ST_TIER=1;
+ mesn;
+ mesq l("Maybe you're interested in the Special Class again? An extra magic skill point, but this time in a dangerous journey, what do ya say?");
+ next;
+ if (nard_reputation() < 8) {
+ mesn;
+ mesc l("I advise you to do more quests on Tulimshar and Candor, otherwise, you will fail right at the end."), 1;
+ next;
+ }
+ if (askyesno() == ASK_NO) {
+ mesn;
+ mesq l("Alright. I wish you good luck in your studies.");
+ close;
+ }
+ mesn;
+ mesq l("I will prepare you a potion. But beware, that potion will only last 20 minutes. You should assign some intelligence points to succeed.");
+ next;
+ mesn;
+ mes l("If it expires, you'll need to do another. To bake it I need 1 @@, 10 @@ and an @@.", getitemlink(EverburnPowder), getitemlink(MaggotSlime), getitemlink(EmptyBottle));
+ mesc l("Have Maggot Slimes, Bug Legs, Mauve Herbs and Money, lots of them."), 1;
+ next;
+ select
+ rif(countitem(MaggotSlime) >= 10 && countitem(EverburnPowder) && countitem(EmptyBottle), l("I have everything.")),
+ l("I'm not ready.");
+ mes "";
+ if (@menu == 2) {
+ mesn;
+ mesq l("Yes, as you see, the costs are high. Prepare yourself.");
+ close;
+ }
+
+ delitem EmptyBottle, 1;
+ delitem EverburnPowder, 1;
+ delitem MaggotSlime, 10;
+ ST_TIER=2;
+ QUEST_ELEVARTEMPO=gettimetick(2) + (60 * 20);
+ getexp 400, 0;
+ mesn;
+ mesc l("She mix the powder with the slime inside the bottle, and makes some weird mixture.");
+ next;
+ mesn;
+ mesc l("She pours something on it, you're not sure what. And then utters some magic words.");
+ next;
+ // Reset timer, this is the place where it should really happen.
+ QUEST_ELEVARTEMPO=gettimetick(2) + (60 * 20);
+ mesn;
+ mesq l("The potion is baked, and the time is now running! Read as fast as you can, don't miss details!");
+ next;
+ mesn;
+ mesq l("First thing is to get a @@. One from black market won't do, go to Halinarzo!", getitemlink(SunnyCrystal));
+ next;
+ mesn;
+ mesq l("Speak with ##BBarzil##b. Tell him it is for the Magic Academy. HURRY UP!");
+ close;
+
+// Logic handler
+L_T3_S0:
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 1) goto L_Tier3;
+ if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T3_Fail;
+
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 2) goto L_T3_S2;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 3) goto L_T3_S3;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 4) goto L_T3_S4;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 5) goto L_T3_S5;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 6) goto L_T3_S6;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER <= 9) goto L_T3_S7;
+ if (getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER == 10) goto L_T3_Final;
+ mesc l("Error, error, L_T3_S0 General Error, REPORT ME");
+ close;
+
+L_T3_S2:
+ mesn;
+ mesq l("Hurry up! Bring a @@ from Barzil in Halinarzo!! You only have @@ left!", getitemlink(SunnyCrystal), FuzzyTime(QUEST_ELEVARTEMPO,2,2));
+ close;
+
+L_T3_S3:
+ if (countitem(SunnyCrystal) == 0) {
+ mesn;
+ mesq l("Where's the Sunny Crystal? Hurry up, you only have @@ left!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
+ }
+ delitem SunnyCrystal, 1;
+ ST_TIER=4;
+ getexp 250, 0;
+ mesn;
+ mesq l("Good, you did it!");
+ next;
+ mesn;
+ mesc l("*chants more words, while the crystal hovers the potion*");
+ next;
+
+L_T3_S4:
+ mesn;
+ mesq l("I will need many Mauve Herbs! Do you have them with you? If you don't have enough, we'll lose everything! You need at most @@!", BaseLevel+40);
+ select
+ rif(countitem(MauveHerb), l("Yes, I have herbs. I assume the risks.")),
+ l("No I don't have herbs. I'll be back.");
+
+ if (@menu == 2)
+ close;
+
+ if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T3_Fail;
+ .@req=rand2(BaseLevel-20, BaseLevel+40);
+ // Minimum is 40, max is unknown, defaults to 100
+
+ mesn;
+ mesq l("I need @@ Herbs!", .@req);
+ //next; // If you comment this next, you'll allow players to logout and prevent penalty.
+ mes "";
+
+ if (countitem(MauveHerb) < .@req) goto L_T3_Fail;
+ delitem MauveHerb, .@r;
+ ST_TIER=5;
+ getexp .@r*3, 0;
+ //getitem MagicPotion, 1;
+
+ mesc l("You quickly give her the herbs, and she skillfully mix them on a potion.");
+ next;
+ // You'll get a random amount of time, based on spent herbs
+ // Usually, 10~73 sec, being 73 sec = 1m13s
+ QUEST_ELEVARTEMPO=QUEST_ELEVARTEMPO+rand2(10,.@r-27);
+
+L_T3_S5:
+ mesn;
+ mesq l("Good! Last step! West of Hurnscald, there is a magic fountain.");
+ next;
+ mesn;
+ mesq l("Talk to the Fountain. Pour the potion on it. I advise you to put all your points on int if possible.");
+ next;
+ mesn;
+ mesq l("Hurry up, you'll run out of time in @@!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
+ close;
+
+L_T3_S6:
+ ST_TIER=7;
+ mesn;
+ mesq l("You did it! You're now on the last stage of this BORING and LONG quest!");
+ next;
+
+L_T3_S7:
+ mesn;
+ mesq l("Jesusaves wrote a grimorie, with ancient secrets of our world.");
+ next;
+ mesn;
+ mesq l("Captain Nard have it. Fetch it with him! Quick, you only have @@ left!", FuzzyTime(QUEST_ELEVARTEMPO,2,2));
+ close;
+
+L_T3_Final:
+ skill TMW2_SKILLPERMIT, 3, 0;
+ getexp 40000, 0; // Yes, 40k experience points. Waw.
+ mesc l(".:: Congratulations! ::."), 2;
+ mesc l("You have completed the Jesusaves Grimorium Quest!"), 2;
+ next;
+ mesn;
+ mesq l("Keep the Grimorie with you. It's a rare book which holds data from all others. The book shall guide your advances!");
+ next;
+ mesn;
+ mesq lg("Yes, courageous and worthy adventurer. You did well!");
+ next;
+ mesn;
+ mesc l("*sigh*");
+ mesq l("Now I can turn in my report to Professor Volrtaw... I should not have stayed behind the classes.");
+ close;
+
+/// Fail handlers
+L_T3_Fail:
+ if (ST_TIER == 3) {
+ if (countitem(SunnyCrystal) > 0) {
+ delitem SunnyCrystal, 1;
+ } else {
+ mesn;
+ mesc l("WARNING. YOU ARE CHEATING THE SUNNY CRYSTAL QUEST."), 1;
+ next;
+ mesn;
+ mesc l("YOU WILL BE PENALIZED WITH 60% OF HEALTH."), 1;
+ mesc l("IF YOU DIE, YOU'LL SUFFER THE EXP PENALTY."), 1;
+ percentheal -60, -100;
+ close;
+ }
+ }
+
+ if (ST_TIER == 10) {
+ if (countitem(JesusalvaGrimorium) > 0) {
+ delitem JesusalvaGrimorium, 1;
+ } else {
+ mesn;
+ mesc l("WARNING. YOU ARE CHEATING THE GRIMORIE QUEST."), 1;
+ next;
+ mesn;
+ mesc l("YOU WILL BE PENALIZED WITH 70% OF HEALTH."), 1;
+ mesc l("IF YOU DIE, YOU'LL SUFFER THE EXP PENALTY."), 1;
+ percentheal -70, -100;
+ close;
+ }
+ }
+
+ mesc l(".:: Mission Failed ::."), 1;
+ mesc l("You ran out of time."), 1;
+ mes "";
+ mes l("You should have gotten here @@.", FuzzyTime(QUEST_ELEVARTEMPO,0,2));
+ ST_TIER=1;
close;
+/// Core code
OnTimer1000:
domovestep;
diff --git a/npc/009-3/barzil.txt b/npc/009-3/barzil.txt
index 4b1ea3c57..d4462bdc1 100644
--- a/npc/009-3/barzil.txt
+++ b/npc/009-3/barzil.txt
@@ -12,7 +12,7 @@
L_Tier2:
mesn strcharinfo(0);
- mesq l("I need my master's @@, fast!", getitemlink(SunnyCrystal));
+ mesq l("I need for the Magic Academy a @@, fast!", getitemlink(SunnyCrystal));
next;
mesn;
mesq l("Of course! Quick, take it!!");
diff --git a/npc/014-3/fountain.txt b/npc/014-3/fountain.txt
index b721fd2ae..741cc4134 100644
--- a/npc/014-3/fountain.txt
+++ b/npc/014-3/fountain.txt
@@ -117,9 +117,6 @@ L_Tier2Ok:
mesn;
mes l("I will empower you with raw mana, and your time will start running out again.");
next;
- // 30~60 s + 4~6 minutes to finish in average. Each level grants 4~6 extra seconds.
- // You will also get extra time for int, but randomly.
- QUEST_ELEVARTEMPO=gettimetick(2)+rand(30,60)+rand((BaseLevel*4),(BaseLevel*6))+rand(1,readparam(bInt));
ST_TIER=6;
// Ref. 240 xp. You will be penalized with 1 xp for over-level. (waw...)
if (BaseLevel < 300)