// TMW2 script. // Author: // Saulc // Jesusalva // Description: // Luca and Colin assigns player a class. Luca is the Warrior Master. 003-0-1,35,29,0 script Luca NPC_PLAYER,{ mesn; mesq l("I am the @@ master.", l("Magic Warriors")); if (!MAGIC_LVL) goto L_NoMagic; if (getskilllv(WIZARD_MAGE) && !is_admin()) close; if (getskilllv(MAGIC_WARRIOR) == 0) goto L_SignUp; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 0) goto L_Tier2; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER >= 1) goto L_T2_S0; // Sanity check if (getskilllv(MAGIC_WARRIOR) >= 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(MAGIC_WARRIOR,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: next; mesn; mesq l("Your lack of magical power is critical. I dare say, you might never in your life get access to a Mana Stone."); next; mesn; mesq l("Besides the Magic Council, Andrei Sakar have his own Mana Stone, but I doubt he would train the likes of you, or share his Mana Stone."); next; mesn; 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("", ) // 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(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 1) goto L_T2_S1; if (gettimetick(2) > QUEST_ELEVARTEMPO) goto L_T2_Fail; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 2) goto L_T2_S2; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 3) goto L_T2_S3; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 4) goto L_T2_S4; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 5) goto L_T2_S5; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER == 6) goto L_T2_S6; if (getskilllv(MAGIC_WARRIOR) == 1 && MAGIC_LVL >= 2 && ST_TIER <= 9) goto L_T2_S7; if (getskilllv(MAGIC_WARRIOR) == 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: //MAGIC_WARRIOR 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(MAGIC_WARRIOR,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); setunitdata(.@npcId, UDT_HEADMIDDLE, BromenalChest); setunitdata(.@npcId, UDT_HEADBOTTOM, JeansShorts); setunitdata(.@npcId, UDT_WEAPON, DeepBlackBoots); setunitdata(.@npcId, UDT_HAIRSTYLE, 21); setunitdata(.@npcId, UDT_HAIRCOLOR, 6); .sex = G_MALE; .distance = 5; end; }