From 644aaca859564f7769378c13a668be43e648aa8b Mon Sep 17 00:00:00 2001 From: Jesusaves Date: Tue, 19 Jun 2018 01:03:33 -0300 Subject: Tier 2 Advancement Quest Sketch --- npc/009-1/barzil.txt | 12 ++++ npc/functions/class.txt | 164 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 174 insertions(+), 2 deletions(-) (limited to 'npc') diff --git a/npc/009-1/barzil.txt b/npc/009-1/barzil.txt index c1019714e..0802556d4 100644 --- a/npc/009-1/barzil.txt +++ b/npc/009-1/barzil.txt @@ -5,9 +5,21 @@ // PS. move to indoors 009-1,44,48,0 script Barzil NPC_LLOYD,{ + if (ST_TIER == 2 && gettimetick(2) < QUEST_ELEVARTEMPO) goto L_Tier2; Banker(.name$, "Halinarzo", 13000); close; +L_Tier2: + mesn strcharinfo(0); + mesq l("I need my master's @@, fast!", getitemlink(SunnyCrystal)); + next; + mesn; + mesq l("Of course! Quick, take it!!"); + inventoryplace SunnyCrystal, 1; + ST_TIER=3; + getitem SunnyCrystal, 1; + close; + OnInit: .sex = G_MALE; .distance = 4; diff --git a/npc/functions/class.txt b/npc/functions/class.txt index 3f8b7dd59..7158c6c5e 100644 --- a/npc/functions/class.txt +++ b/npc/functions/class.txt @@ -21,7 +21,7 @@ function script ClassMaster { if (getskilllv(.@CLASS) == 0) goto L_SignUp; if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 0) goto L_Tier2; - if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 1) mes col("...Where is the recipe for the potion? Ah, I lost it...", 9); + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER > 1) goto L_T2_S0; // Sanity check if (getskilllv(.@SK_T1) >= 1) mesq l("Are you using my skill?"); @@ -148,9 +148,169 @@ L_Tier2Ok: 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; + mes col("WARNING. YOU ARE CHEATING THE SUNNY CRYSTAL QUEST.", 1); + next; + mesn; + mes col("YOU WILL BE PENALIZED WITH 60% OF HEALTH.", 1); + mes col("IF YOU DIE, YOU'LL SUFFER THE PENALTY.", 1); + percentheal -60, -100; + close; + } + } + mes col(".:: Mission Failed ::.", 1); + mes col("You ran out of time.", 1); + mes ""; + mes l("You should have gotten here @@.", FuzzyTime(QUEST_ELEVARTIER,0,2)); + ST_TIER=1; + close; + +L_T2_S0: + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 1) goto L_T2_S1; + if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T2_Fail; + + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 2) goto L_T2_S2; + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 3) goto L_T2_S3; + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 4) goto L_T2_S4; + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 5) goto L_T2_S5; + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER < 8) goto L_T2_S6; + if (getskilllv(.@CLASS) == 1 && MAGIC_LVL >= 2 && ST_TIER == 8) goto L_T2_S7; + close; + L_T2_S1: - addtoskill(.@CLASS,1,0); + .@CLASS=getarg(0); + .@CNAME$=getarg(1); + .@OTHER=getarg(2); + mes ""; + mesn; + mesq l("So, young disciple! I wish I could just chant some gibberish words and that automatically granted you more skills, but allas, that won't work."); + next; + mesn; + mesq l("I can, however, prepare you a potion. But beware, that potion will only last 30 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, 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; + getexp 500, 0; + mesn; + mes col("The class master mix the powder with the slime inside the bottle, and makes some weird mixture.", 9); + next; + mesn; + mes col("He pours something on it, you're not sure what. He then utters some magic words.", 9); + next; + ST_TIER=2; + 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; + mes col("*chants more words, while the crystal hovers the potion*", 9); + 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 (countitem(MauveHerb) < .@req) goto L_T2_Fail; + delitem MauveHerb, .@r; + ST_TIER=5; + getexp .@r*3, 0; + + mesq col("You quickly give him the herbs, and he skillfully mix them on a potion.", 9); + 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. Obey every command. 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: + mesn; + mesq l("You did it! You're now on the last stage of this BORING and LONG quest!"); + next; + 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_T2_S7: + addtoskill(.@CLASS,2,0); getexp 40000, 0; // Yes, 40k experience points. Waw. + mes col(".:: Congratulations! ::.", 2); + mes col("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; } -- cgit v1.2.3-60-g2f50