summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFate <fate-tmw@googlemail.com>2008-12-27 22:22:21 -0700
committerFate <fate-tmw@googlemail.com>2008-12-27 22:22:21 -0700
commitaacf6527a0ae9d440f9271906400825c9722275f (patch)
tree10ec2d33e7d9bd4285227722f9fce410fa2abae6
parent562a0fdbaa002a49f4763bd07442e2ed32726ab9 (diff)
downloadserverdata-aacf6527a0ae9d440f9271906400825c9722275f.tar.gz
serverdata-aacf6527a0ae9d440f9271906400825c9722275f.tar.bz2
serverdata-aacf6527a0ae9d440f9271906400825c9722275f.tar.xz
serverdata-aacf6527a0ae9d440f9271906400825c9722275f.zip
Magic quests 0, 2, 4
-rw-r--r--conf/magic.conf21
-rw-r--r--db/const.txt2
-rw-r--r--db/item_db.txt25
-rw-r--r--npc/001-1_Tulimshar/bard.txt145
-rw-r--r--npc/001-1_Tulimshar/elanore.txt129
-rw-r--r--npc/009-2_Hurnscald/_import.txt1
-rw-r--r--npc/009-2_Hurnscald/shops.txt2
-rw-r--r--npc/009-2_Hurnscald/wyara.txt153
-rw-r--r--npc/011-1_Woodland/alchemist.txt67
-rw-r--r--npc/011-1_Woodland/auldsbel.txt10
-rw-r--r--npc/012-1_Woodland_Hills/_import.txt1
-rw-r--r--npc/012-1_Woodland_Hills/injured-mouboo.txt228
-rw-r--r--npc/013-1_Woodland_hills/_import.txt1
-rw-r--r--npc/013-1_Woodland_hills/sagatha.txt129
-rw-r--r--npc/functions/magic.txt4
15 files changed, 893 insertions, 25 deletions
diff --git a/conf/magic.conf b/conf/magic.conf
index a0eb7b4a..21a8ddf8 100644
--- a/conf/magic.conf
+++ b/conf/magic.conf
@@ -211,7 +211,10 @@ SPELL lesser-heal (target : STRING) : "#L00" =
=> EFFECT CALL adjust_spellpower(school);
CALL default_effect();
IF failed(pc(target))
- THEN target = caster; # quest handling goes here
+ THEN (IF ((target = "mouboo" || target = "Mouboo")
+ && rdistance(location(caster), location(npc("Mouboo"))) < 2 + (spellpower / 100))
+ THEN { mes "Your spell seems to have no effect on the mouboo."; next; close; }
+ ELSE target = caster);
ELSE target = pc(target);
CALL heal(target, 200);
CALL gain_xp(1);
@@ -372,9 +375,19 @@ SPELL lay-on-hands (target : STRING) : "#L10" =
))
=> EFFECT CALL adjust_spellpower(school);
IF failed(pc(target))
- THEN target = caster; # quest handling goes here
- ELSE target = pc(target);
- needed = max_hp(target) - hp(target);
+ THEN (IF ((target = "mouboo" || target = "Mouboo")
+ && rdistance(location(caster), location(npc("Mouboo"))) < 2 + (spellpower / 100))
+ THEN (needed = 1000;
+ {
+ set @spell, 1;
+ callfunc "QuestMoubooHeal";
+ })
+ ELSE (target = caster;
+ needed = max_hp(target) - hp(target);
+ ));
+ ELSE (target = pc(target);
+ needed = max_hp(target) - hp(target);)
+
pay_fraction = max(80, 200 - (vit(caster) + (spellpower / 10))); # Pay at least 40%
payment = (needed * pay_fraction) / 200;
available = hp(caster) - (max_hp(caster) / 20);
diff --git a/db/const.txt b/db/const.txt
index f372ff14..a2d4788a 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -194,3 +194,5 @@ MFLAG_KNOWS_WYARA 32 // Character has met Wyara
MFLAG_KNOWS_SAGATHA 64 // Character has met Sagatha
MFLAG_KNOWS_MANAPOTION 128 // Has heard about the mana potion
+MFLAG_MANASEED_RUMOUR 256 // Has heard rumour about mana seed
+
diff --git a/db/item_db.txt b/db/item_db.txt
index ee68f152..543b847f 100644
--- a/db/item_db.txt
+++ b/db/item_db.txt
@@ -1,7 +1,7 @@
#ID, Name, Label, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Job, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
0, DEFAULT, Default, 0, 20, 10, 10, , , , , , 10477567, 2, , , , , {}, {}
501, CactusDrink, Cactus Drink, 0, 50, 25, 70, , , , , , 10477567, 2, , , 0, , { itemheal 15,0; }, {}
-502, CactusPotion, Cactus Potion, 0, 70, 35, 70, , , , , , 10477567, 2, , , 0, , { itemheal 25,10; }, {}
+502, CactusPotion, Cactus Potion, 0, 70, 35, 70, , , , , , 10477567, 2, , , 0, , { itemheal 25,0; }, {}
503, CasinoCoins, Casino Coins, 3, 20, 10, 1, , , , , , , , , , , , {}, {}
504, DecorCandy, Decor Candy, 3, 25, 10, 10, , , , , , , , , , , , {}, {}
505, MaggotSlime, Maggot Slime, 3, 8, 4, 10, , , , , , , , , , , , {}, {}
@@ -33,12 +33,12 @@
531, MinerGloves, Miner Gloves, 5, 3000, 1000, 20, , 2, , -10, 0, 10477567, 2, 4, , 0, 0, {}, {}
532, LeatherGloves, Leather Gloves, 5, 6000, 2000, 30, , 4, , -20, 0, 10477567, 2, 4, , 0, 0, {}, {}
533, RoastedMaggot, Roasted Maggot, 0, 110, 55, 5, , , , , , 10477567, 2, , , 0, , { itemheal 150,0; }, {}
-534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, , , , , , 10477567, 2, , , 0, , { itemheal 100,10; }, {}
+534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, , , , , , 10477567, 2, , , 0, , { itemheal 100,0; }, {}
535, Apple, Apple, 0, 10, 5, 5, , , , , , 10477567, 2, , , 0, , { itemheal 50,0; }, {}
536, ShortSword, Short Sword, 4, 8000, 4000, 100, 100, , 1, , 0, 10477567, 2, 2, 1, 1, 1, {}, {}
537, TreasureKey, Treasure Key, 3, 100, 50, 5, , , , , , , , , , , , {}, {}
538, GreenPresentBox, Green Present Box, 0, 20, 10, 10, , , , , , 10477567, 2, , , 0, , {}, {}
-539, Beer, Beer, 0, 175, 87, 10, , , , , , 10477567, 2, , , 0, , { itemheal 200,5; }, {}
+539, Beer, Beer, 0, 175, 87, 10, , , , , , 10477567, 2, , , 0, , { itemheal 200,0; }, {}
540, Empty Bottle, Empty Bottle, 3, 20, 10, 10, , , , , , , , , , , , {}, {}
541, BottleOfWater, Bottle of Water, 0, 200, 100, 10, , , , , , 10477567, 2, , , 0, , { itemheal 250,0; getitem 540,1; }, {}
542, BottleOfSand, Bottle of Sand, 3, 70, 35, 10, , , , , , , , , , , , {}, {}
@@ -63,13 +63,13 @@
559, Hint9, Hint, 3, 20, 0, 10, , , , , , , , , , , , {}, {}
560, Hint10, Hint, 3, 20, 0, 10, , , , , , , , , , , , {}, {}
561, Sabre, Sabre, 4, 10000, 5000, 100, 100, , 1, , 0, 10477567, 2, 2, 1, 1, 1, {}, {}
-562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, , , , , , 10477567, 2, , , 0, , { itemheal 500,5; }, {}
+562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, , , , , , 10477567, 2, , , 0, , { itemheal 500,0; }, {}
563, WinterGloves, Winter Gloves, 5, 6000, 3000, 20, , 3, , -15, 0, 10477567, 2, 4, , 0, 0, {}, {}
564, TurtleneckSweater, Turtleneck Sweater, 5, 2000, 1000, 10, , 6, , -18, 0, 10477567, 2, 512, , 0, 0, {}, {}
-565, Petal, Petal, 0, 50, 25, 10, , , , , , 10477567, 2, , , 0, , { itemheal 50,5; }, {}
-566, SmallMushroom, Small Mushroom, 0, 50, 25, 10, , , , , , 10477567, 2, , , 0, , { itemheal 50,5; }, {}
-567, IronPotion, Iron Potion, 0, 500, 250, 10, , , , , , 10477567, 2, , , 0, , { sc_start 185, 90, 60; }, {}
-568, ConcentrationPotion, Concentration Potion, 0, 500, 250, 10, , , , , , 10477567, 2, , , 0, , { sc_start 37, 90, 30; }, {}
+565, Petal, Petal, 0, 50, 25, 10, , , , , , 10477567, 2, , , 0, , { itemheal 50,0; }, {}
+566, SmallMushroom, Small Mushroom, 0, 50, 25, 10, , , , , , 10477567, 2, , , 0, , { itemheal 50,0; }, {}
+567, IronPotion, Iron Potion, 0, 500, 250, 10, , , , , , 10477567, 2, , , 0, , { sc_start 185, 60, 60; }, {}
+568, ConcentrationPotion, Concentration Potion, 0, 500, 250, 10, , , , , , 10477567, 2, , , 0, , { sc_start 37, 60, 30; }, {}
569, RawLog, Raw Log, 3, 20, 10, 10, , , , , , , , , , , , {}, {}
570, BoneKnife, Bone Knife, 4, 10000, 6000, 120, 115, , 1, , 0, 10477567, 2, 2, 1, 1, 1, {}, {}
571, Setzer, Setzer, 4, 20000, 8000, 80, 110, , 1, , 0, 10477567, 2, 2, 1, 1, 3, {}, {}
@@ -203,10 +203,10 @@
711, MountainSnakeTongue, Mountain Snake Tongue, 3, 80, 40, 1, , , , , , , , , , , , {}, {}
712, GrassSnakeTongue, Grass Snake Tongue, 3, 160, 80, 1, , , , , , , , , , , , {}, {}
713, CaveSnakeTongue, Cave Snake Tongue, 3, 120, 60, 1, , , , , , , , , , , , {}, {}
-714, SnakeEgg, Snake Egg, 0, 50, 25, 4, , , , , , 10477567, 2, , , 0, , { itemheal 30,5; }, {}
-715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, , , , , , 10477567, 2, , , 0, , { itemheal 40,5; }, {}
-716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, , , , , , 10477567, 2, , , 0, , { itemheal 50,5; }, {}
-717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, , , , , , 10477567, 2, , , 0, , { itemheal 20,5; }, {}
+714, SnakeEgg, Snake Egg, 0, 50, 25, 4, , , , , , 10477567, 2, , , 0, , { itemheal 30,0; }, {}
+715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, , , , , , 10477567, 2, , , 0, , { itemheal 40,0; }, {}
+716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, , , , , , 10477567, 2, , , 0, , { itemheal 50,0; }, {}
+717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, , , , , , 10477567, 2, , , 0, , { itemheal 20,0; }, {}
718, SilkCocoon, Silk Cocoon, 3, 200, 3, 1, , , , , , , , , , , , {}, {}
// RESERVED
720, SilkRobe, Silk Robe, 5, 8000, 4000, 5, , 5, , 0, 0, 10477567, 2, 512, , 0, 0, {}, {}
@@ -221,6 +221,7 @@
729, WarpedLog, Warped Log, 3, 0, 0, 2, , , , , , , , , , , , {}, {}
730, Lifestone, Lifestone, 3, 0, 0, 1, , , , , , , , , , , , {}, {}
731, AssassinPants, Assassin Pants, 5, 10000, 3000, 10, , 5, , -5, 0, 10477567, 2, 1, , 0, 0, {}, {}
+732, DruidTreeBranch, Druid Tree Branch, 3, 0, 0, 2, , , , , , 10477567, , , , , , {}, {}
#ID, Name, Label, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Job, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
1198, JackOSoul, Jack O Soul, 3, 100000, 1, 1, , , , , , , , , , , , {}, {}
diff --git a/npc/001-1_Tulimshar/bard.txt b/npc/001-1_Tulimshar/bard.txt
index 8d53fc72..d361b860 100644
--- a/npc/001-1_Tulimshar/bard.txt
+++ b/npc/001-1_Tulimshar/bard.txt
@@ -1,10 +1,153 @@
//
-001-1.gat,50,44,0 script Bard 152,{
+001-1.gat,37,73,0 script Bard 152,{
setarray @songs$, "\"There once was a bard, who had it hard, because a man in dark green, was very mean.\"",
"\"At Hurnscald inn, there was a person of fairest skin, declining wedding bands from quite a many hands.\"",
"\"As the Sun sets down in the forest's brown, she whom the fragrance holds counts her gold.\"";
set @id, rand(3);
+ mes "[Bill Wobbleball the Bard]";
+ if (Sex)
+ mes "\"Greetings, traveler! Have you come to listen to my stories?\"";
+ if (!Sex)
+ mes "\"Greetings, fair lady! Well met, on such a lovely day! Might I entertain you with a tale or two?\"";
+ next;
+
+L_Main:
+ menu "Sing me a song, lute man!", L_Song,
+ "Have you heard any news?", L_News,
+ "What do you know about...", L_Question,
+ "Farewell!", -;
+ close;
+
+L_News:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"News I have for you indeed, lest you have already overheard (for then it would no longer be news to you!)\"";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Rumor has it that an ancient source of magic, a Mana Seed, has been sighted in the west, beyond the fair town of Hurnscald.\"";
+ next;
+ set MFLAG, MFLAG | MFLAG_MANASEED_RUMOUR;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Whence it came, nobody knows... but they say that sometimes such Mana Seeds may choose a powerful individual to impart some of its mystic power to!\"";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"I wonder who might be qualified?\"";
+ next;
+ goto L_Main;
+
+L_Question:
+ set @QQ_ELANORE, 1;
+ set @QQ_MANASEED, 2;
+ set @QQ_WYARA, 3;
+ set @QQ_SAGATHA, 4;
+ set @QQ_AULDSBEL, 5;
+
+ setarray @choice$, "", "", "", "", "", "";
+ set @choices_nr, 0;
+ setarray @choice_idx, 0, 0, 0, 0, 0, 0;
+
+ set @choice$[@choices_nr], "...Elanore the Healer?";
+ set @choice_idx[@choices_nr], @QQ_ELANORE;
+ set @choices_nr, @choices_nr + 1;
+
+ if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
+ goto L_Q_post_manaseed;
+ set @choice$[@choices_nr], "...the Mana Seed?";
+ set @choice_idx[@choices_nr], @QQ_MANASEED;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manaseed:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
+ goto L_Q_post_wyara;
+ set @choice$[@choices_nr], "...Wyara the Witch?";
+ set @choice_idx[@choices_nr], @QQ_WYARA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_wyara:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
+ goto L_Q_post_sagatha;
+ set @choice$[@choices_nr], "...Sagatha the Witch?";
+ set @choice_idx[@choices_nr], @QQ_SAGATHA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_sagatha:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
+ goto L_Q_post_auldsbel;
+ set @choice$[@choices_nr], "...Auldsbel the Wizard?";
+ set @choice_idx[@choices_nr], @QQ_AULDSBEL;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_auldsbel:
+
+ set @choice$[@choices_nr], "...never mind.";
+ set @choice_idx[@choices_nr], 0;
+ set @choices_nr, @choices_nr + 1;
+
+ menu @choice$[0], -,
+ @choice$[1], -,
+ @choice$[2], -,
+ @choice$[3], -,
+ @choice$[4], -;
+
+ set @menu, @menu - 1;
+
+ if (@menu >= @choices_nr)
+ set @menu, 0;
+
+ set @c, @choice_idx[@menu];
+
+ if (@c == 0) goto L_Main;
+ if (@c == @QQ_ELANORE) goto L_Q_elanore;
+ if (@c == @QQ_MANASEED) goto L_Q_manaseed;
+ if (@c == @QQ_WYARA) goto L_Q_wyara;
+ if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
+ if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
+ close;
+
+L_Q_elanore:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Elanore is this town's healer. Rumor has it that she traveled far and wide when she was younger, to learn the deepest secrets of healing magic, after her brother caught a mysterious illness.\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"The Mana Seed is said to be a source of great magic. Perhaps some witch or wizard might know more about it?\"";
+ next;
+ goto L_Main;
+
+L_Q_wyara:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Wyara is not actually from Hurnscald. As a young witch, she decided to settle down there to help the people of Hurnscald. She is kind and gentle, except towards the Doctor, who seems to have little respect for her potions.\"";
+ next;
+ goto L_Main;
+
+L_Q_sagatha:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Sagatha! Ah, such a wonderful and mysterious being; the center of many a tale...\"";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Some say that she is the most powerful witch in all of Argaes. I don't know whether that is true, but I am quite certain that the is the most beautiful of all the witches! Alas, she will let no man touch her...\"";
+ mes "He sighs.";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"I met her only twice, back in my traveling days, but there are two pieces of advice I can give you:\"";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"First, she will suffer no fool easily, particularly no man.\"";
+ next;
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Second, the creatures of the forest mean everything to her. Harm them, and you may find her an enemy-- and a powerful one at that...\"";
+ next;
+ goto L_Main;
+
+L_Q_auldsbel:
+ mes "[Bill Wobbleball the Bard]";
+ mes "\"Auldsbel is some wizard from further north, from what I have gathered. He bought a hut near Hurnscald some years back and often comes here to experiment on things, probably because he is not allowed to do these experiments where he comes from.\"";
+ next;
+ goto L_Main;
+
+
+L_Song:
mes @songs$[@id];
close;
}
diff --git a/npc/001-1_Tulimshar/elanore.txt b/npc/001-1_Tulimshar/elanore.txt
index 4171e54f..99d52b3f 100644
--- a/npc/001-1_Tulimshar/elanore.txt
+++ b/npc/001-1_Tulimshar/elanore.txt
@@ -2,6 +2,8 @@
001-1.gat,58,68,0 script Elanore 108,{
+ set @has_magic, getskilllv(SKILL_MAGIC);
+
if (baselevel > 10) goto L_NoHeal;
set @TEMP,rand(4);
@@ -78,7 +80,10 @@ Heal_4:
close;
L_NoHeal:
+ if (MAGIC_FLAGS)
+ goto L_Chat;
+L_NoHealMessage:
mes "[Elanore the Healer]";
mes "\"I'm sorry but unless you are young and in need, I can't help you, and your level is already higher than ten.";
mes "With so many people still injured from the earthquake, I really have no time to help.";
@@ -86,5 +91,129 @@ L_NoHeal:
close;
+L_Chat:
+ mes "[Elanore the Healer]";
+ mes "\"Hello! Can I help you?\"";
+ next;
+L_Main:
+ if (@has_magic)
+ menu
+ "Can you heal me?", L_NoHealMessage,
+ "Can you teach me magic?", L_Teach,
+ "What do you know about...", L_Question;
+
+ if (!@has_magic)
+ menu
+ "Can you heal me?", L_NoHealMessage,
+ "What do you know about...", L_Question;
+ close;
+
+L_Teach:
+ close;
+
+L_Question:
+ set @QQ_MANAPOTION, 1;
+ set @QQ_MANASEED, 2;
+ set @QQ_WYARA, 3;
+ set @QQ_SAGATHA, 4;
+ set @QQ_AULDSBEL, 5;
+
+ setarray @choice$, "", "", "", "", "", "";
+ set @choices_nr, 0;
+ setarray @choice_idx, 0, 0, 0, 0, 0, 0;
+
+ if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
+ goto L_Q_post_manaseed;
+ set @choice$[@choices_nr], "...the Mana Seed?";
+ set @choice_idx[@choices_nr], @QQ_MANASEED;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manaseed:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
+ goto L_Q_post_manapotion;
+ set @choice$[@choices_nr], "...Mana Potions?";
+ set @choice_idx[@choices_nr], @QQ_MANAPOTION;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manapotion:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
+ goto L_Q_post_wyara;
+ set @choice$[@choices_nr], "...Wyara the Witch?";
+ set @choice_idx[@choices_nr], @QQ_WYARA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_wyara:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
+ goto L_Q_post_sagatha;
+ set @choice$[@choices_nr], "...Sagatha the Witch?";
+ set @choice_idx[@choices_nr], @QQ_SAGATHA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_sagatha:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
+ goto L_Q_post_auldsbel;
+ set @choice$[@choices_nr], "...Auldsbel the Wizard?";
+ set @choice_idx[@choices_nr], @QQ_AULDSBEL;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_auldsbel:
+
+ set @choice$[@choices_nr], "...never mind.";
+ set @choice_idx[@choices_nr], 0;
+ set @choices_nr, @choices_nr + 1;
+
+ menu @choice$[0], -,
+ @choice$[1], -,
+ @choice$[2], -,
+ @choice$[3], -,
+ @choice$[4], -;
+
+ set @menu, @menu - 1;
+
+ if (@menu >= @choices_nr)
+ set @menu, 0;
+
+ set @c, @choice_idx[@menu];
+
+ if (@c == 0) goto L_Main;
+ if (@c == @QQ_MANASEED) goto L_Q_manaseed;
+ if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
+ if (@c == @QQ_WYARA) goto L_Q_wyara;
+ if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
+ if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
+ close;
+
+L_Q_manaseed:
+ mes "[Elanore the Healer]";
+ mes "She smiles.";
+ mes "\"If the rumors are true and there really is a Mana Seed, then that would be wonderful news-- perhaps we will have a few more healers soon!\"";
+ next;
+ goto L_Main;
+
+L_Q_manapotion:
+ mes "[Elanore the Healer]";
+ mes "\"I'm sorry, but I can't help you with that.\"";
+ next;
+ goto L_Main;
+
+L_Q_wyara:
+ mes "[Elanore the Healer]";
+ mes "\"Wyara is the Hurnscald town witch. She was also the town healer before the Doctor moved there.\"";
+ next;
+ goto L_Main;
+
+L_Q_sagatha:
+ mes "[Elanore the Healer]";
+ mes "\"Oh, I have only met Sagatha once or twice, while collecting herbs. She is a warm and gentle person, but she tries to hide it.\"";
+ next;
+ goto L_Main;
+
+L_Q_auldsbel:
+ mes "[Elanore the Healer]";
+ mes "\"Oh, sorry-- I don't really know him very well.\"";
+ next;
+ goto L_Main;
+
+
+
}
diff --git a/npc/009-2_Hurnscald/_import.txt b/npc/009-2_Hurnscald/_import.txt
index d2badb7b..773191c7 100644
--- a/npc/009-2_Hurnscald/_import.txt
+++ b/npc/009-2_Hurnscald/_import.txt
@@ -13,3 +13,4 @@ npc: npc/009-2_Hurnscald/richard.txt
npc: npc/009-2_Hurnscald/selim.txt
npc: npc/009-2_Hurnscald/shops.txt
npc: npc/009-2_Hurnscald/waitress.txt
+npc: npc/009-2_Hurnscald/wyara.txt
diff --git a/npc/009-2_Hurnscald/shops.txt b/npc/009-2_Hurnscald/shops.txt
index ebd9f767..f943ac8f 100644
--- a/npc/009-2_Hurnscald/shops.txt
+++ b/npc/009-2_Hurnscald/shops.txt
@@ -22,7 +22,7 @@
// Potion Shop
// sells cactus drink, cactus potion, iron potion and concentration potion
-009-2.gat,121,26,0 shop Witch 103,501:50,502:70,567:500,568:500
+009-2.gat,123,22,0 shop Potions#_M 127,501:50,502:70,567:500,568:500
// Blacksmith
// Sells all knives, chainmail armor, light platemail
diff --git a/npc/009-2_Hurnscald/wyara.txt b/npc/009-2_Hurnscald/wyara.txt
new file mode 100644
index 00000000..f0492368
--- /dev/null
+++ b/npc/009-2_Hurnscald/wyara.txt
@@ -0,0 +1,153 @@
+009-2.gat,121,26,0 script Wyara#_M 103,{
+
+ set @MAUVE, 680;
+ set @BOTTLE_WATER, 541;
+ set @MANAPOTION, 705;
+
+ set @has_magic, getskilllv(SKILL_MAGIC);
+
+ mes "[Wyara the Witch]";
+ next;
+
+ set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_WYARA;
+L_Main:
+ menu "Q: generic", L_Question,
+ "Q: buy", L_Shop,
+ "Bye", -;
+ close;
+
+L_Shop:
+ mes "[Wyara the Witch]";
+ mes "cf. Potion Shelf behind me";
+ next;
+ goto L_Main;
+
+L_Question:
+ set @QQ_ELANORE, 1;
+ set @QQ_MANASEED, 2;
+ set @QQ_MANAPOTION, 3;
+ set @QQ_SAGATHA, 4;
+ set @QQ_AULDSBEL, 5;
+
+ setarray @choice$, "", "", "", "", "", "";
+ set @choices_nr, 0;
+ setarray @choice_idx, 0, 0, 0, 0, 0, 0;
+
+ set @choice$[@choices_nr], "...Elanore the Healer?";
+ set @choice_idx[@choices_nr], @QQ_ELANORE;
+ set @choices_nr, @choices_nr + 1;
+
+ if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
+ goto L_Q_post_manaseed;
+ set @choice$[@choices_nr], "...the Mana Seed?";
+ set @choice_idx[@choices_nr], @QQ_MANASEED;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manaseed:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
+ goto L_Q_post_manapotion;
+ set @choice$[@choices_nr], "...Mana Potions?";
+ set @choice_idx[@choices_nr], @QQ_MANAPOTION;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manapotion:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
+ goto L_Q_post_sagatha;
+ set @choice$[@choices_nr], "...Sagatha the Witch?";
+ set @choice_idx[@choices_nr], @QQ_SAGATHA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_sagatha:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
+ goto L_Q_post_auldsbel;
+ set @choice$[@choices_nr], "...Auldsbel the Wizard?";
+ set @choice_idx[@choices_nr], @QQ_AULDSBEL;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_auldsbel:
+
+ set @choice$[@choices_nr], "...never mind.";
+ set @choice_idx[@choices_nr], 0;
+ set @choices_nr, @choices_nr + 1;
+
+ menu @choice$[0], -,
+ @choice$[1], -,
+ @choice$[2], -,
+ @choice$[3], -,
+ @choice$[4], -;
+
+ set @menu, @menu - 1;
+
+ if (@menu >= @choices_nr)
+ set @menu, 0;
+
+ set @c, @choice_idx[@menu];
+
+ if (@c == 0) goto L_Main;
+ if (@c == @QQ_ELANORE) goto L_Q_elanore;
+ if (@c == @QQ_MANASEED) goto L_Q_manaseed;
+ if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
+ if (@c == @QQ_SAGATHA) goto L_Q_sagatha;
+ if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
+ close;
+
+L_Q_elanore:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed:
+ if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
+ goto L_Q_manaseed_unabsorbed;
+ mes "[Wyara the Witch]";
+ mes "\"FIXME: No idea\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed_unabsorbed:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME: Perhaps a mana potion would help\"";
+ set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_MANAPOTION;
+ next;
+ goto L_Main;
+
+L_Q_manapotion:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME: Can make one for you: 40 mauve, bottle of water\"";
+ next;
+ menu "OK", L_make_manapotion,
+ "No", L_Main;
+ goto L_Main;
+
+L_make_manapotion:
+ if(countitem(@MAUVE) < 40) goto L_make_manapotion_lack;
+ if(countitem(@WATER) < 1) goto L_make_manapotion_lack;
+
+ delitem @MAUVE, 40;
+ delitem @WATER, 1;
+ getitem @MANAPOTION, 1;
+
+ mes "[Wyara the Witch]";
+ mes "\"FIXME: Here.\"";
+
+ goto L_Main;
+
+L_make_manapotion_lack:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME: Need: 40 mauve, bottle of water\"";
+ goto L_Main;
+
+L_Q_sagatha:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME\"";
+ next;
+ goto L_Main;
+
+L_Q_auldsbel:
+ mes "[Wyara the Witch]";
+ mes "\"FIXME\"";
+ next;
+ goto L_Main;
+
+
+}
diff --git a/npc/011-1_Woodland/alchemist.txt b/npc/011-1_Woodland/alchemist.txt
index 6329a5d6..0c1e7663 100644
--- a/npc/011-1_Woodland/alchemist.txt
+++ b/npc/011-1_Woodland/alchemist.txt
@@ -18,6 +18,9 @@
set @MAUVE, 680;
set @PETAL, 565;
set @PEARL, 700;
+ set @WATER, 541;
+ set @ASH, 701;
+ set @MANAPOTION, 705;
set @ORE, 640;
set @MAGGOTSLIME, 505;
@@ -30,9 +33,10 @@
set @CHOICE_DYEING_INTRO, 2;
set @CHOICE_DYE, 3;
set @CHOICE_MONSTER_OIL, 4;
- set @CHOICE_ABORT, 5;
+ set @CHOICE_MANA_POTION, 5;
+ set @CHOICE_ABORT, 6;
- setarray @menuitems$, "", "", "", "", "";
+ setarray @menuitems$, "", "", "", "", "", "";
set @c, 0;
set @menuitems$[@c], "Iron potion.";
@@ -43,6 +47,13 @@
set @menuID[@c], @CHOICE_CONCENTRATION;
set @c, @c + 1;
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
+ goto L_post_mana_potion_c;
+ set @menuitems$[@c], "Mana potion.";
+ set @menuID[@c], @CHOICE_MANA_POTION;
+ set @c, @c + 1;
+L_post_mana_potion_c:
+
if (QUEST_clothdyer_knowsdye >= @QUEST_CAN_GET_DYE_HERE)
goto L_skip_introducing;
@@ -94,6 +105,7 @@ L_main_menu:
@menuitems$[2], -,
@menuitems$[3], -,
@menuitems$[4], -;
+ @menuitems$[5], -;
set @menu, @menu - 1;
@@ -103,8 +115,59 @@ L_main_menu:
if (@menuID[@menu] == @CHOICE_DYEING_INTRO) goto L_dyeing_intro;
if (@menuID[@menu] == @CHOICE_DYE) goto L_pick_colour;
if (@menuID[@menu] == @CHOICE_MONSTER_OIL) goto L_monster_oil;
+ if (@menuID[@menu] == @CHOICE_MANA_POTION) goto L_mana_potion;
if (@menuID[@menu] == @CHOICE_ABORT) goto L_abort;
+L_mana_potion:
+ mes "[Rauk the Alchemist]";
+ mes "\"Humh... I do believe that I have a recipe somewhere. One moment...\"";
+ mes "Rauk pulls a small book out of his sleeve and leafs through it.";
+ mes "\"Aha, here we are. Hmm, I'm not convinced that this is the best possible recipe...\"";
+ next;
+ mes "[Rauk the Alchemist]";
+ mes "\"I shall need one pearl, one bottle of water, thirty mauve leaves, twenty gamboge leaves, and five piles of volcanic ash.\"";
+ next;
+
+ menu "Here you are!", L_get_mana_potion,
+ "Never mind.", L_main_menu;
+
+ goto L_main_menu;
+
+L_get_mana_potion:
+ if(countitem(@MAUVE) < 30) goto L_mana_potion_lacking;
+ if(countitem(@YELLOW) < 20) goto L_mana_potion_lacking;
+ if(countitem(@ASH) < 5) goto L_mana_potion_lacking;
+ if(countitem(@PEARL) < 1) goto L_mana_potion_lacking;
+ if(countitem(@WATER) < 1) goto L_mana_potion_lacking;
+
+ delitem @MAUVE, 30;
+ delitem @YELLOW, 20;
+ delitem @ASH, 5;
+ delitem @PEARL, 1;
+ delitem @WATER, 1;
+ getitem @MANAPOTION, 1;
+
+ mes "[Rauk the Alchemist]";
+ mes "Rauk grinds the leaves, then crushes the pearl. Taking out a small charcoal oven, he heats up your water bottle and dissolves first the pearl powder, then the ashes.";
+ mes "The brew begins to bubble violently.";
+ next;
+
+ mes "[Rauk the Alchemist]";
+ mes "Taking the bottle with a pair of tongs, he pours the liquid through a fine sieve, discarding the liquid.";
+ mes "He then mixes the residual paste with the leaves, stirs in a little water from the pond and fills the result into a separate bottle.";
+ next;
+
+ mes "[Rauk the Alchemist]";
+ mes "\"Here you are. I hope that this is what you wanted.\"";
+ next;
+
+ goto L_main_menu;
+
+L_mana_potion_lacking:
+ mes "[Rauk the Alchemist]";
+ mes "\"Sorry, but I need one pearl, one bottle of water, 30 mauve leaves, 20 gamboge leaves, and five piles of volcanic ash.\"";
+ goto L_main_menu;
+
L_iron:
if(countitem(566) < 20) goto L_no_iron;
getinventorylist;
diff --git a/npc/011-1_Woodland/auldsbel.txt b/npc/011-1_Woodland/auldsbel.txt
index 5be274a6..b632edf4 100644
--- a/npc/011-1_Woodland/auldsbel.txt
+++ b/npc/011-1_Woodland/auldsbel.txt
@@ -402,7 +402,7 @@ L_question:
set @choice_idx[@choices_nr], @QQ_ELANORE;
set @choices_nr, @choices_nr + 1;
- if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANASEED))
+ if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
goto L_Q_post_manaseed;
set @choice$[@choices_nr], "...the Mana Seed?";
set @choice_idx[@choices_nr], @QQ_MANASEED;
@@ -472,10 +472,18 @@ L_Q_sagatha:
next;
goto L_main_menu;
+L_Q_manaseed_rumour:
+ mes "[Auldsbel the Wizard]";
+ mes "\"A mana seed? Around here? Nah, they've been pulling your leg. Those things are extremely rare, after all.\"";
+ next;
+ goto L_main_menu;
+
L_Q_manaseed:
mes "[Auldsbel the Wizard]";
if (@has_magic)
goto L_Q_manaseed_withmagic;
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANASEED)) // rumour only?
+ goto L_Q_manaseed_rumour;
if (MAGIC_FLAGS & MFLAG_DRANK_POTION)
goto L_Q_manaseed_prepared;
if (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)
diff --git a/npc/012-1_Woodland_Hills/_import.txt b/npc/012-1_Woodland_Hills/_import.txt
index 851f97fc..c4438c6c 100644
--- a/npc/012-1_Woodland_Hills/_import.txt
+++ b/npc/012-1_Woodland_Hills/_import.txt
@@ -2,4 +2,5 @@ map: 012-1.gat
npc: npc/012-1_Woodland_Hills/_mobs.txt
npc: npc/012-1_Woodland_Hills/_warps.txt
npc: npc/012-1_Woodland_Hills/monsters.txt
+npc: npc/012-1_Woodland_Hills/injured-mouboo.txt
npc: npc/012-1_Woodland_Hills/shops.txt
diff --git a/npc/012-1_Woodland_Hills/injured-mouboo.txt b/npc/012-1_Woodland_Hills/injured-mouboo.txt
new file mode 100644
index 00000000..d6c536f2
--- /dev/null
+++ b/npc/012-1_Woodland_Hills/injured-mouboo.txt
@@ -0,0 +1,228 @@
+// The following auxiliary function is used both by appropriate magic and within the regular script:
+
+function script QuestMoubooHeal {
+ set @Q_MASK, NIBBLE_2_MASK;
+ set @Q_SHIFT, NIBBLE_2_SHIFT;
+
+ set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
+ set @Q_status_upper, @Q_status & 12;
+ set @Q_status, @Q_status & 3;
+
+ set @STATE_INITIAL, 0;
+ set @STATE_HEALED_MOUBOO, 3;
+
+ if (@Q_status != @STATE_INITIAL)
+ goto L_nothing;
+
+ set @Q_status, @STATE_HEALED_MOUBOO;
+ callsub S_update_var;
+ mes "[Injured Mouboo]";
+ mes "A soft white glow surrounds the mouboo's leg, which slowly shifts back into place.";
+ mes "As the glow subsides, the mouboo gets up, carefully, and takes a few steps. It seems to be fully healed!";
+ mes "[5000 experience points]";
+ getexp 5000, 0;
+ next;
+
+ mes "[Injured Mouboo]";
+ mes "Visibly happy, the mouboo lies down on the ground and snuggles with a black piece of cloth it had been lying on.";
+ mes "The healing process must have been exhausting, for it is asleep in an instant.";
+ close;
+
+L_nothing:
+ mes "Your spell has no effect.";
+ next;
+ close;
+
+S_update_var:
+ set @Q_wr_status, @Q_status | @Q_status_upper;
+ set QUEST_MAGIC,
+ (QUEST_MAGIC & ~(@Q_MASK)
+ | (@Q_wr_status << @Q_SHIFT));
+ return;
+}
+
+
+
+012-1.gat,57,153,0 script Mouboo 171,{
+ set @Q_MASK, NIBBLE_2_MASK;
+ set @Q_SHIFT, NIBBLE_2_SHIFT;
+
+ set @Q_status, (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
+ set @Q_status_upper, @Q_status & 12;
+ set @Q_status, @Q_status & 3;
+
+ set @STATE_INITIAL, 0;
+ set @STATE_KILLED_MOUBOO, 1;
+ set @STATE_TOOK_KILL_REWARD, 2;
+ set @STATE_HEALED_MOUBOO, 3;
+
+ if (@Q_status = @STATE_KILLED_MOUBOO)
+ goto L_dead;
+ if (@Q_status = @STATE_TOOK_KILL_REWARD)
+ goto L_took_reward;
+ if (@Q_status = @STATE_HEALED_MOUBOO)
+ goto L_healed;
+
+ mes "[Injured Mouboo]";
+ mes "You notice a mouboo lying on the ground, groaning, as if in pain.";
+ next;
+
+L_menu:
+ menu
+ "Examine the mouboo", L_examine,
+ "Give the mouboo something", L_give,
+ "Kill the mouboo", L_kill,
+ "Leave", -;
+ close;
+
+L_examine:
+ mes "[Injured Mouboo]";
+ mes "Looking closer, you notice that the mouboo's left hind leg is bent in a very unnatural angle-- that seems to be the cause for its pain.";
+ next;
+ mes "[Injured Mouboo]";
+ mes "You also notice that the mouboo is lying on top of what appears to be a black turtleneck sweater.";
+ mes "Do you want to pick up the sweater?";
+ next;
+ menu
+ "Yes.", L_pickup_alive,
+ "No.", L_menu;
+ goto L_menu;
+
+L_pickup_alive:
+ mes "[Injured Mouboo]";
+ mes "The Mouboo groans and pushes your hand away. It seems to be rather fond of the sweater."
+ next;
+ goto L_menu;
+
+L_give:
+ set @items_nr, 12;
+ setarray @items, 501, 502, 509, 527, 534, 535, 539, 541, 684, 685, 686, 687;
+ setarray @itemeat, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0;
+
+ setarray @choice$, "", "", "", "", "", "", "", "", "", "", "", "";
+ set @choices_nr, 0;
+ setarray @choice_idx, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
+ setarray @choice_eat, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
+
+ set @n, 0;
+L_nloop:
+ set @k, @items[@n];
+ if (countitem(@k) == 0)
+ goto L_nloop_skip;
+
+ set @name$, getitemname(@k);
+ set @choice$[@n], @name$;
+ set @choice_idx[@n], @k;
+ set @choice_eat[@n], @itemeat[@n];
+
+L_nloop_skip:
+
+ set @n, @n+1;
+ if (@n < @items_nr)
+ goto L_nloop;
+
+ menu
+ @choice$[0], -
+ @choice$[1], -
+ @choice$[2], -
+ @choice$[3], -
+ @choice$[4], -
+ @choice$[5], -
+ @choice$[6], -
+ @choice$[7], -
+ @choice$[8], -
+ @choice$[9], -
+ @choice$[10], -
+ @choice$[11], -;
+
+ set @menu, @menu - 1;
+ set @choice = @choice_idx[@menu];
+ set @choice_e = @choice_eat[@menu];
+ set @verb$, "drinks";
+ if (@choice_e)
+ set @verb$, "eats";
+
+ if (@choice && countitem(@choice))
+ goto L_consume;
+
+ goto L_menu;
+
+L_consume:
+ mes "[Injured Mouboo]";
+
+ mes "The mouboo " + @verb$ + " your " + getitemname(@choice) + ".";
+ delitem @choice, 1;
+ next;
+
+ if (@choice == 687)
+ goto L_do_heal;
+
+
+ mes "[Injured Mouboo]";
+ mes "Unfortunately, it seems to have had no effect.";
+ goto L_menu;
+
+L_do_heal:
+ callfunc "QuestMoubooHeal";
+
+L_kill:
+ mes "[Injured Mouboo]";
+ if (BaseLevel > 44)
+ goto L_kill_success;
+ mes "The mouboo deflects your attack and counterattacks!";
+ mes "It misses you only barely.";
+ mes "Injured though it may be, this mouboo is still more than a match for you!";
+ next;
+ goto L_menu;
+
+L_kill_success:
+ mes "After some wrestling, the mouboo succumbs to your attacks.";
+ mes "[100 experience points]";
+ getexp 100, 0;
+
+ set @Q_status, @STATE_KILLED_MOUBOO;
+ callsub S_update_var;
+
+ next;
+
+L_dead:
+ mes "[Dead Mouboo]";
+ mes "The dead mouboo is lying on top of a black T-neck sweater.";
+
+ getinventorylist;
+ if (@inventorylist_count == 100)
+ goto L_nopickup;
+
+ getitem 2076, 1;
+ mes "You pull out the sweater and stuff it into your backpack.";
+
+ set @Q_status, @STATE_TOOK_KILL_REWARD;
+ callsub S_update_var;
+
+ next;
+ close;
+
+L_took_reward:
+ mes "[Dead Mouboo]";
+ mes "You see a dead mouboo.";
+ next;
+ close;
+
+L_nopickup:
+ mes "Unfortunately, you can't carry any more.";
+ next;
+ close;
+
+L_healed;
+ mes "[Mouboo]";
+ mes "The mouboo is sleeping soundly, smiling in its dreams.";
+ next;
+ close;
+
+S_update_var:
+ set @Q_wr_status, @Q_status | @Q_status_upper;
+ set QUEST_MAGIC,
+ (QUEST_MAGIC & ~(@Q_MASK)
+ | (@Q_wr_status << @Q_SHIFT));
+ return;
+}
diff --git a/npc/013-1_Woodland_hills/_import.txt b/npc/013-1_Woodland_hills/_import.txt
index c4c325bc..899d3d7e 100644
--- a/npc/013-1_Woodland_hills/_import.txt
+++ b/npc/013-1_Woodland_hills/_import.txt
@@ -2,3 +2,4 @@ map: 013-1.gat
npc: npc/013-1_Woodland_hills/_mobs.txt
npc: npc/013-1_Woodland_hills/_warps.txt
npc: npc/013-1_Woodland_hills/monsters.txt
+npc: npc/013-1_Woodland_hills/sagatha.txt
diff --git a/npc/013-1_Woodland_hills/sagatha.txt b/npc/013-1_Woodland_hills/sagatha.txt
new file mode 100644
index 00000000..4295043a
--- /dev/null
+++ b/npc/013-1_Woodland_hills/sagatha.txt
@@ -0,0 +1,129 @@
+013-1.gat,131,24,0 script Sagatha#_M 167,{
+ set @has_magic, getskilllv(SKILL_MAGIC);
+ set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_SAGATHA;
+
+L_Main:
+ menu "What do you know about...", L_Question;
+ close;
+
+L_Question:
+ set @QQ_ELANORE, 1;
+ set @QQ_MANASEED, 2;
+ set @QQ_WYARA, 3;
+ set @QQ_AULDSBEL, 5;
+
+ setarray @choice$, "", "", "", "", "", "";
+ set @choices_nr, 0;
+ setarray @choice_idx, 0, 0, 0, 0, 0, 0;
+
+ set @choice$[@choices_nr], "...Elanore the Healer?";
+ set @choice_idx[@choices_nr], @QQ_ELANORE;
+ set @choices_nr, @choices_nr + 1;
+
+ if (!(MAGIC_FLAGS & (MFLAG_KNOWS_MANASEED | MFLAG_MANASEED_RUMOUR)))
+ goto L_Q_post_manaseed;
+ set @choice$[@choices_nr], "...the Mana Seed?";
+ set @choice_idx[@choices_nr], @QQ_MANASEED;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manaseed:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_MANAPOTION))
+ goto L_Q_post_manapotion;
+ set @choice$[@choices_nr], "...Mana Potions?";
+ set @choice_idx[@choices_nr], @QQ_MANAPOTION;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_manapotion:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_WYARA))
+ goto L_Q_post_wyara;
+ set @choice$[@choices_nr], "...Wyara the Witch?";
+ set @choice_idx[@choices_nr], @QQ_WYARA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_wyara:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_SAGATHA))
+ goto L_Q_post_sagatha;
+ set @choice$[@choices_nr], "...Sagatha the Witch?";
+ set @choice_idx[@choices_nr], @QQ_SAGATHA;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_sagatha:
+
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_AULDSBEL))
+ goto L_Q_post_auldsbel;
+ set @choice$[@choices_nr], "...Auldsbel the Wizard?";
+ set @choice_idx[@choices_nr], @QQ_AULDSBEL;
+ set @choices_nr, @choices_nr + 1;
+L_Q_post_auldsbel:
+
+ set @choice$[@choices_nr], "...never mind.";
+ set @choice_idx[@choices_nr], 0;
+ set @choices_nr, @choices_nr + 1;
+
+ menu @choice$[0], -,
+ @choice$[1], -,
+ @choice$[2], -,
+ @choice$[3], -,
+ @choice$[4], -;
+
+ set @menu, @menu - 1;
+
+ if (@menu >= @choices_nr)
+ set @menu, 0;
+
+ set @c, @choice_idx[@menu];
+
+ if (@c == 0) goto L_Main;
+ if (@c == @QQ_ELANORE) goto L_Q_elanore;
+ if (@c == @QQ_MANASEED) goto L_Q_manaseed;
+ if (@c == @QQ_MANAPOTION) goto L_Q_manapotion;
+ if (@c == @QQ_WYARA) goto L_Q_wyara;
+ if (@c == @QQ_AULDSBEL) goto L_Q_auldsbel;
+ close;
+
+L_Q_elanore:
+ mes "[Sagatha the Witch]";
+ mes "\"FIXME.\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed:
+ mes "[Sagatha the Witch]";
+ if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))
+ goto L_Q_manaseed_unabsorbed;
+ if (@has_magic)
+ goto L_Q_manaseed_m;
+ mes "\"arimasu\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed_unabsorbed:
+ mes "[Sagatha the Witch]";
+ mes "\"...unattuned.\"";
+ next;
+ goto L_Main;
+
+L_Q_manaseed_m:
+ mes "[Sagatha the Witch]";
+ mes "\"...\"";
+ next;
+ goto L_Main;
+
+L_Q_manapotion:
+ mes "[Sagatha the Witch]";
+ mes "\"Can't make one without a cauldron.\"";
+ next;
+ goto L_Main;
+
+L_Q_wyara:
+ mes "[Sagatha the Witch]";
+ mes "\"\"";
+ next;
+ goto L_Main;
+
+L_Q_auldsbel:
+ mes "[Sagatha the Witch]";
+ mes "\"\"";
+ next;
+ goto L_Main;
+
+}
diff --git a/npc/functions/magic.txt b/npc/functions/magic.txt
index 9cce48c2..eab4b60a 100644
--- a/npc/functions/magic.txt
+++ b/npc/functions/magic.txt
@@ -13,7 +13,3 @@ function script MagicGainBasic {
close;
}
-
-function script MagicGainExp {
- set MAGIC_EXP, MAGIC_EXP + (@value * @value);
-}