diff options
author | Jesusaves <cpntb1@ymail.com> | 2020-02-22 00:49:42 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2020-02-22 00:49:42 -0300 |
commit | 7120c5a757d1efd712a9c453301c7970d4e49fc3 (patch) | |
tree | 7655e1f11a3fa53d84b588b5eb0de5a1ff35e4ba | |
parent | 63e089ea2af74a5f8f0aaa1f9c8423295b004efe (diff) | |
download | serverdata-7120c5a757d1efd712a9c453301c7970d4e49fc3.tar.gz serverdata-7120c5a757d1efd712a9c453301c7970d4e49fc3.tar.bz2 serverdata-7120c5a757d1efd712a9c453301c7970d4e49fc3.tar.xz serverdata-7120c5a757d1efd712a9c453301c7970d4e49fc3.zip |
Split Magic School recepcionist in two.
One giving an intro on the same old map.
The other giving the Special Class in the Academy.
-rw-r--r-- | maps/re/003-0.mcache | bin | 139 -> 129 bytes | |||
-rw-r--r-- | npc/003-0/_import.txt | 1 | ||||
-rw-r--r-- | npc/003-0/_mobs.txt | 4 | ||||
-rw-r--r-- | npc/003-0/recepcionist.txt | 373 | ||||
-rw-r--r-- | npc/027-1/_import.txt | 1 | ||||
-rw-r--r-- | npc/027-1/laura.txt | 338 |
6 files changed, 411 insertions, 306 deletions
diff --git a/maps/re/003-0.mcache b/maps/re/003-0.mcache Binary files differindex 4a60efd02..74e42bdc0 100644 --- a/maps/re/003-0.mcache +++ b/maps/re/003-0.mcache diff --git a/npc/003-0/_import.txt b/npc/003-0/_import.txt index e8e5f82a8..c9fea03ef 100644 --- a/npc/003-0/_import.txt +++ b/npc/003-0/_import.txt @@ -1,5 +1,6 @@ // Map 003-0: Magic Academy // This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/003-0/_mobs.txt", "npc/003-0/_warps.txt", "npc/003-0/recepcionist.txt", "npc/003-0/trickmaster.txt", diff --git a/npc/003-0/_mobs.txt b/npc/003-0/_mobs.txt new file mode 100644 index 000000000..23f6637d0 --- /dev/null +++ b/npc/003-0/_mobs.txt @@ -0,0 +1,4 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 003-0: Magic Academy mobs +003-0,45,32,24,2 monster Piou 1002,3,60000,30000 +003-0,45,30,24,1 monster Croc 1006,3,60000,30000 diff --git a/npc/003-0/recepcionist.txt b/npc/003-0/recepcionist.txt index b1d0474a6..5f6ee6870 100644 --- a/npc/003-0/recepcionist.txt +++ b/npc/003-0/recepcionist.txt @@ -2,37 +2,28 @@ // Author: // Jesusalva // Description: -// Magic School recepcionist (TODO: Give S. Badge) - -003-0,47,44,4 script Recepcionist#003-0 NPC_FEMALE,{ - if (MGQUEST && getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER >= 1) goto L_T3_S0; +// Magic School receptionist (TODO: Give S. Badge) +003-0,61,44,4 script Recepcionist#003-0 NPC_FEMALE,{ mesn; mesq l("Hello, and welcome to the Magic School of Tulimshar."); next; mesn; - mesq l("Thankfully, we'll be moving soon. This building is old and the roof is falling."); + mesq l("Actually I'm responsible of dispatching mages to the Magic Academy."); next; - mesn; - mesq l("I hope our new campus get built soon. It'll be much better than here."); - if (!MGQUEST) + select + l("What is the Magic Academy?"), + l("I am a mage. How do I get to Academy?"), + l("What magic classes are there?"), + l("Erm... Good bye."); + mes ""; + switch (@menu) { + case 1: goto L_Prologue; - 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; + case 2: + goto L_Academy; + case 3: + goto L_Classes; } closeclientdialog; goodbye; @@ -55,308 +46,78 @@ L_Prologue: mesn l("Magic Academy Tutorial"); mesc l("Upgrading a skill level can be done the same away and will always cost a single Magic Skill Point. Job Level points are obtained only after Lv @@, and is a single point each @@ levels.", 15+12, 12); next; - inventoryplace ScholarshipBadge, 1; - mesn; - mesq l("That being said, I'll give you an @@, which allows you to learn a skill even if you can't pay for it.", getitemlink(ScholarshipBadge)); - next; - mesn; - mesq l("Please note unless you have Magic Powers, obtained from the Mana Seed, all you will be able to learn are small tricks, so please make a wise choice."); - MGQUEST=true; - getitem ScholarshipBadge, 1; - tutmes l("Magic skills allows for a more advanced gameplay, but they are meant for level 30 onwards."); - tutmes l("If you follow %s's quest, you will eventually reach the requeriments for here.", b("Lua")); - 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) { + if (!MGQUEST) { + inventoryplace ScholarshipBadge, 1; mesn; - mesq l("Alright. I wish you good luck in your studies."); - close; + mesq l("That being said, I'll give you an @@, which allows you to learn a skill even if you can't pay for it.", getitemlink(ScholarshipBadge)); + next; } 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; + mesq l("Please note unless you have Magic Powers, obtained from the Mana Seed, all you will be able to learn are small tricks, so please make a wise choice."); + if (!MGQUEST) { + MGQUEST=true; + getitem ScholarshipBadge, 1; } - 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."); + tutmes l("Magic skills allows for a more advanced gameplay, but they are meant for level 30 onward."); + tutmes l("If you follow %s's quest, you will eventually reach the requirements for here.", b("Lua")); 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 @@ @@ 20 @@.", getitemlink(DivineApple), getitemlink(SilkCocoon), b(l("and")), 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) { +////////////// +/* Academy */ +////////////// +L_Academy: + if (!MAGIC_LVL) { mesn; - mesc l("I advise you to do more quests on Tulimshar and Candor, otherwise, you will fail right at the end."), 1; + mesq l("Oh please. Even if you know a trick or two, you don't have real magic."); 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) { + mesq l("You need to touch a Mana Stone to get magic. Certainly the only Mana Stone on Tulimshar is highly protected by the Council, so no chances here."); + next; 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) { + mesq l("Well, the biggest mana stones mine was in %s, but I'm afraid it has already depleted... Besides, it is very dangerous.", b("Halinarzo")); + } else { mesn; - mesq l("Where's the Sunny Crystal? Hurry up, you only have @@ left!", FuzzyTime(QUEST_ELEVARTEMPO,2,2)); + mesq l("Oh, just walk on the dock, and you'll be warped there."); + next; + mesn; + mesq l("I mean, a ship should come to pick you up, but the arch-wizards said they were too lazy to take care of those small details. So you'll be warped."); } - 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: +////////////// +/* Classes */ +////////////// +L_Classes: mesn; - mesq l("Jesusaves wrote a grimorie, with ancient secrets of our world."); + mesq l("We have four classes, but you can make a mix between them."); 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; + mesc ".:: "+l("Physical Science")+" ::.", 3; + mes l("They use magic to boost their bodies, allowing them to do very, VERY powerful physical attacks."); + mes l("They also don't need much intelligence or magic equipment."); + mes ""; + mes l("Physical Science Institute is on the %s area of the campus.", b(l("west"))); 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!"); + mesc ".:: "+l("Wizardry")+" ::.", 3; + mes l("They use mana to create magic attacks and blast their foes away."); + mes l("They rely entirely in intelligence and magic equipment."); + mes ""; + mes l("Wizardry Institute is on the %s area of the campus.", b(l("north"))); next; - mesn; - mesq lg("Yes, courageous and worthy adventurer. You did well!"); + mesc ".:: "+l("Scholarship Science")+" ::.", 3; + mes l("Training to be sages, their knowledge is unparalleled. They're masters of boosting skills."); + mes l("Most of their skills are stat-independent, but not all of them."); + mes ""; + mes l("Scholarship Institute is on the %s area of the campus.", b(l("north"))); 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; + mesc ".:: "+l("Tricks")+" ::.", 3; + mes l("They cheat! They make silly tricks which look like magic."); mes ""; - mes l("You should have gotten here @@.", FuzzyTime(QUEST_ELEVARTEMPO,0,2)); - ST_TIER=1; + mes l("The trickster can be found right here."); close; + /// Core code OnTimer1000: domovestep; @@ -371,16 +132,16 @@ OnInit: setunitdata(.@npcId, UDT_HAIRCOLOR, 5); // Small movement - initpath "move", 47, 44, + initpath "move", 61, 44, "dir", UP, 0, "wait", 7, 0, - "move", 48, 46, + "move", 62, 46, "dir", DOWN, 0, "wait", 7, 0, - "move", 49, 44, + "move", 63, 44, "dir", UP, 0, "wait", 7, 0, - "move", 47, 44; + "move", 61, 44; initialmove; initnpctimer; diff --git a/npc/027-1/_import.txt b/npc/027-1/_import.txt index 85a86e822..d964d0a64 100644 --- a/npc/027-1/_import.txt +++ b/npc/027-1/_import.txt @@ -4,6 +4,7 @@ "npc/027-1/_warps.txt", "npc/027-1/colin.txt", "npc/027-1/enzo.txt", +"npc/027-1/laura.txt", "npc/027-1/luca.txt", "npc/027-1/saves.txt", "npc/027-1/statue.txt", diff --git a/npc/027-1/laura.txt b/npc/027-1/laura.txt new file mode 100644 index 000000000..db29e3de0 --- /dev/null +++ b/npc/027-1/laura.txt @@ -0,0 +1,338 @@ +// TMW2 Scripts. +// Author: +// Jesusalva +// Description: +// Magic School special class + +027-1,117,131,0 script Laura NPC_FEMALE,{ + if (MGQUEST && getskilllv(TMW2_SKILLPERMIT) == 2 && MAGIC_LVL >= 3 && ST_TIER >= 1) goto L_T3_S0; + + mesn; + mesq l("Hello, and welcome to the Magic Academy."); + next; + mesn; + mesq l("I love living here, but I wish people weren't locked inside the rooms all time."); + 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 @@ @@ 20 @@.", getitemlink(DivineApple), getitemlink(SilkCocoon), b(l("and")), 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 +OnInit: + .@npcId = getnpcid(.name$); + setunitdata(.@npcId, UDT_HEADTOP, FancyHat); + setunitdata(.@npcId, UDT_HEADMIDDLE, SorcererRobe); + //setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes); + //setunitdata(.@npcId, UDT_WEAPON, JeansShorts); + setunitdata(.@npcId, UDT_HAIRSTYLE, any(8,11,20)); + setunitdata(.@npcId, UDT_HAIRCOLOR, 5); + + .sex=G_FEMALE; + .distance=5; + end; +} + |