summaryrefslogtreecommitdiff
path: root/npc/003-0
diff options
context:
space:
mode:
Diffstat (limited to 'npc/003-0')
-rw-r--r--npc/003-0/_import.txt1
-rw-r--r--npc/003-0/_mobs.txt4
-rw-r--r--npc/003-0/recepcionist.txt373
3 files changed, 72 insertions, 306 deletions
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;