diff options
Diffstat (limited to 'npc/009-2_Hurnscald')
-rw-r--r-- | npc/009-2_Hurnscald/_import.txt | 1 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/alan.txt | 4 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/doctor.txt | 20 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/kfahr.txt | 62 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/misc.txt | 50 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/nicholas.txt | 68 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/shops.txt | 2 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/waitress.txt | 16 | ||||
-rw-r--r-- | npc/009-2_Hurnscald/wyara.txt | 572 |
9 files changed, 709 insertions, 86 deletions
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/alan.txt b/npc/009-2_Hurnscald/alan.txt index 6d8a1770..6dc9da67 100644 --- a/npc/009-2_Hurnscald/alan.txt +++ b/npc/009-2_Hurnscald/alan.txt @@ -134,7 +134,7 @@ L_State_3_try: mes "\"Hmmm... looks ok, but is it strong enough?\""; mes "Alan bends the log over his knee."; next; - delitem 569, 1; + delitem "RawLog", 1; set @Temp1, rand(20); if (@Temp1 == 0) goto L_State_3_success; mes "The log breaks with a loud crack"; @@ -177,7 +177,7 @@ L_State_4_pay: getinventorylist; if (@inventorylist_count == 100) goto L_State_4_TooMany; set zeny, zeny - 10000; - getitem 545, 1; + getitem "ForestBow", 1; set @Q_status, 5; callsub S_Update_Var; mes "[Alan]"; diff --git a/npc/009-2_Hurnscald/doctor.txt b/npc/009-2_Hurnscald/doctor.txt index 2d7c2602..84cf97de 100644 --- a/npc/009-2_Hurnscald/doctor.txt +++ b/npc/009-2_Hurnscald/doctor.txt @@ -24,9 +24,25 @@ L_Cure: mes "[Doctor]"; - mes "\"That is impossible. Status ailments aren't ingame yet!\""; + if (sc_check(sc_poison)) + goto L_CurePoison; + mes "The doctor examines you briefly."; + mes "\"Nonsense! You look fine and dandy to me. All you need is a bit more exercise and fresh fruit in your diet!\""; close; +L_CurePoison: + mes "\"Well, well, well! Look at all those green bubbles coming out of your head; that looks like poisoning to me! Did you eat something rotten?\""; + next; + mes "[Doctor]"; + mes "The doctor pulls out a syringe and fills it with a white liquid from a jar on his desk."; + mes "\"Now hold still, this won't hurt a bit...\""; + next; + mes "[Doctor]"; + sc_end(sc_poison); + mes "*Ouch!*"; + mes "\"Next time, be more careful! Make sure to cook any meats before you eat them, and don't eat fish once it starts to smell.\""; + close; + L_Axe: mes "[Doctor]"; mes "\"Oh my, what happened to you?\""; @@ -56,7 +72,7 @@ L_Eyepatch_GlassEye: next; mes "[Doctor]"; - mes "\"I can't seem to find where I put that box. YOu should come back later, I may have found them by then.\""; + mes "\"I can't seem to find where I put that box. You should come back later, I may have found them by then.\""; next; close; diff --git a/npc/009-2_Hurnscald/kfahr.txt b/npc/009-2_Hurnscald/kfahr.txt index f24d2071..ba6cc02b 100644 --- a/npc/009-2_Hurnscald/kfahr.txt +++ b/npc/009-2_Hurnscald/kfahr.txt @@ -24,21 +24,13 @@ set @QS_STINGER_QUEST, 6; set @QS_STINGER_QUEST_DONE, 7; - set @BEER, 539; - - set @BLACK_STINGER, 709; set @BLACK_STINGERS_NR, 10; - set @MUSHROOM, 566; set @MUSHROOMS_NR, 10; - set @SNAKE_SKIN, 641; set @SNAKE_SKINS_NR, 10; set @KNIFE_QUEST_XP, 50000; set @STINGER_QUEST_XP, 80000; - set @BONE_KNIFE, 570; - set @GOLDEN_STINGER, 706; - set @Q_MASK, NIBBLE_2_MASK; set @Q_SHIFT, NIBBLE_2_SHIFT; @@ -783,10 +775,10 @@ L_knife_quest_check: close; L_knife_quest_completecheck: - if (countitem(@BLACK_STINGER) < @BLACK_STINGERS_NR) + if (countitem("BlackScorpionStinger") < @BLACK_STINGERS_NR) goto L_knife_quest_missing_stingers; - if (countitem(@MUSHROOM) < @MUSHROOMS_NR) + if (countitem("SmallMushroom") < @MUSHROOMS_NR) goto L_knife_quest_missing_mushrooms; @@ -810,10 +802,10 @@ L_knife_quest_completecheck: mes "I had the nomads make me a few of them, and I hardly use them nowadays, so I think I can part with this one."; next; - if (countitem(@BLACK_STINGER) < @BLACK_STINGERS_NR) + if (countitem("BlackScorpionStinger") < @BLACK_STINGERS_NR) goto L_knife_quest_missing_stingers_2; - if (countitem(@MUSHROOM) < @MUSHROOMS_NR) + if (countitem("SmallMushroom") < @MUSHROOMS_NR) goto L_knife_quest_missing_mushrooms_2; getinventorylist; if (@inventorylist_count == 100) goto L_Knife_TooMany; @@ -827,10 +819,10 @@ L_knife_quest_completecheck: set @Q_status, @QS_KNIFE_QUEST_DONE; callsub L_Update_Var; - delitem @BLACK_STINGER, @BLACK_STINGERS_NR; - delitem @MUSHROOM, @MUSHROOMS_NR; + delitem "BlackScorpionStinger", @BLACK_STINGERS_NR; + delitem "SmallMushroom", @MUSHROOMS_NR; getexp @KNIFE_QUEST_XP, 0; - getitem @BONE_KNIFE, 1; + getitem "BoneKnife", 1; next; goto L_main_menu; @@ -843,9 +835,9 @@ L_Knife_TooMany: L_knife_quest_missing_stingers: mes "[Kfahr the Warrior]"; mes "\"No, no... I said " + @BLACK_STINGERS_NR + " black scorpion stingers."; - if (countitem(@BLACK_STINGER)) - mes "You will need " + (@BLACK_STINGERS_NR - (countitem (@BLACK_STINGER))) + " more of those.\""; - if (countitem(@BLACK_STINGER) == 0) + if (countitem("BlackScorpionStinger")) + mes "You will need " + (@BLACK_STINGERS_NR - (countitem ("BlackScorpionStinger"))) + " more of those.\""; + if (countitem("BlackScorpionStinger") == 0) mes "You didn't bring even a single one!\""; next; close; @@ -853,9 +845,9 @@ L_knife_quest_missing_stingers: L_knife_quest_missing_stingers_2: mes "[Kfahr the Warrior]"; mes "\"You just had " + @BLACK_STINGERS_NR + " black scorpion stingers. What happened to them?"; - if (countitem(@BLACK_STINGER)) - mes "You will need " + (@BLACK_STINGERS_NR - (countitem (@BLACK_STINGER))) + " more of those.\""; - if (countitem(@BLACK_STINGER) == 0) + if (countitem("BlackScorpionStinger")) + mes "You will need " + (@BLACK_STINGERS_NR - (countitem ("BlackScorpionStinger"))) + " more of those.\""; + if (countitem("BlackScorpionStinger") == 0) mes "You didn't bring even a single one!\""; next; close; @@ -863,9 +855,9 @@ L_knife_quest_missing_stingers_2: L_knife_quest_missing_mushrooms: mes "[Kfahr the Warrior]"; mes "\"No, no... I said " + @MUSHROOMS_NR + " small mushrooms."; - if (countitem(@MUSHROOM)) - mes "You will need " + (@MUSHROOMS_NR - (countitem (@MUSHROOM))) + " more of those.\""; - if (countitem(@MUSHROOM) == 0) + if (countitem("SmallMushroom")) + mes "You will need " + (@MUSHROOMS_NR - (countitem ("SmallMushroom"))) + " more of those.\""; + if (countitem("SmallMushroom") == 0) mes "You didn't bring me even a single little mushroom!\""; next; close; @@ -873,9 +865,9 @@ L_knife_quest_missing_mushrooms: L_knife_quest_missing_mushrooms_2: mes "[Kfahr the Warrior]"; mes "\"You just had " + @MUSHROOMS_NR + " small mushrooms. What happened to them?"; - if (countitem(@MUSHROOM)) - mes "You will need " + (@MUSHROOMS_NR - (countitem (@MUSHROOM))) + " more of those.\""; - if (countitem(@MUSHROOM) == 0) + if (countitem("SmallMushroom")) + mes "You will need " + (@MUSHROOMS_NR - (countitem ("SmallMushroom"))) + " more of those.\""; + if (countitem("SmallMushroom") == 0) mes "You didn't bring me even a single little mushroom!\""; next; close; @@ -893,13 +885,13 @@ L_stinger_quest_check: L_snakeskins_completecheck: - if (countitem(@SNAKE_SKIN) < @SNAKE_SKINS_NR) + if (countitem("SnakeSkin") < @SNAKE_SKINS_NR) goto L_snakeskins_missing; getinventorylist; if (@inventorylist_count == 100) goto L_SnakeSkins_TooMany; - delitem @SNAKE_SKIN, @SNAKE_SKINS_NR; - getitem @GOLDEN_STINGER, 1; + delitem "SnakeSkin", @SNAKE_SKINS_NR; + getitem "GoldenScorpionStinger", 1; set @Q_status, @QS_STINGER_QUEST_DONE; callsub L_Update_Var; @@ -917,9 +909,9 @@ L_snakeskins_completecheck: L_snakeskins_missing: mes "[Kfahr the Warrior]"; mes "\"No, no... I said " + @SNAKE_SKINS_NR + " snake skins."; - if (countitem(@SNAKE_SKIN)) - mes "You will need " + (@SNAKE_SKINS_NR - (countitem (@SNAKE_SKIN))) + " more of those.\""; - if (countitem(@SNAKE_SKIN) == 0) + if (countitem("SnakeSkin")) + mes "You will need " + (@SNAKE_SKINS_NR - (countitem ("SnakeSkin"))) + " more of those.\""; + if (countitem("SnakeSkin") == 0) mes "You didn't bring even a single skin!\""; next; close; @@ -930,7 +922,7 @@ L_SnakeSkins_TooMany: close; L_give_beer: - if (countitem(@BEER) < 1) + if (countitem("Beer") < 1) goto L_player_out_of_beer; if (@has_beer) @@ -948,7 +940,7 @@ L_give_beer: set @mesg$, @beermessages$[@beer_count]; - delitem @BEER, 1; + delitem "Beer", 1; set @has_beer, 1; set @beer_count, @beer_count + 1; diff --git a/npc/009-2_Hurnscald/misc.txt b/npc/009-2_Hurnscald/misc.txt index 56d02bf9..9a929203 100644 --- a/npc/009-2_Hurnscald/misc.txt +++ b/npc/009-2_Hurnscald/misc.txt @@ -9,3 +9,53 @@ close; // In case you don't get the joke - it's a parody on Illutia. } + +//Bookshelf +009-2.gat,109,44,0 script #Book 127, { + if (getskilllv(SKILL_MAGIC)) + goto L_magic; + mes "[Bookshelf]"; + mes "This bookshelf seems to have a selection of diaries and manuscripts, though you can't make out anything that strikes you as being particularly interesting."; + close; + +L_magic: + mes "[Bookshelf]"; + mes "Browsing through the books, you come across a manuscript entitled 'Notes of Potaffe, On Transmutation'."; + next; + + if (getskilllv(SKILL_MAGIC_TRANSMUTE) < 2) + goto L_magic_boring; + + mes "[Bookshelf]"; + mes "Leafing through the manuscript, you find that you can read little of the tiny handwriting, and understand only a fraction of what is said."; + next; + + mes "[Bookshelf]"; + mes "After a while, you stumble across a section that appears to be in more careful handwriting. The author notes that he (or she?) is describing a completely new transmutation there."; + next; + + mes "[Bookshelf]"; + mes "Excitedly, you turn the page-- only to find that it is stuck to the next, and won't get unstuck!"; + next; + + mes "[Bookshelf]"; + mes "The page after that is more scribbly again, with many crossed-out words and sections, and side remarks such as 'It almost worked' or 'Worked fine yesterday.'"; + next; + + mes "[Bookshelf]"; + mes "The last word on that page is '" + getspellinvocation("make-iron-powder") + "', underlined twice, with a comment saying 'finally got it right'."; + next; + + mes "[Bookshelf]"; + mes "Unfortunately, you can't make out from the text what the transmutation is for or whether it requires any material components..."; + next; + + mes "[Bookshelf]"; + mes "You can't make out anything else of value, so you place the manuscript back in the bookshelf."; + next; + close; + +L_magic_boring: + mes "[Bookshelf]"; + mes "Leafing through the manuscript, you find that you understand too little of what is said there to make any sense of it."; +} diff --git a/npc/009-2_Hurnscald/nicholas.txt b/npc/009-2_Hurnscald/nicholas.txt index b9c8a36d..0ee1053f 100644 --- a/npc/009-2_Hurnscald/nicholas.txt +++ b/npc/009-2_Hurnscald/nicholas.txt @@ -13,14 +13,6 @@ 009-2.gat,185,55,0 script Nicholas 135,{ - set @IRON_ORE, 640; - set @INFANTRY, 638; - set @LEATHER_PATCH, 708; - set @SHORT_SWORD, 536; - set @MONSTER_OIL, 707; - set @SETZER, 571; - set @STEEL_SHIELD, 601; - set @SETZER_XP, 100000; set @SHIELD_XP, 20000; @@ -59,9 +51,9 @@ L_Check: mes "[Nicholas]"; mes "\"Let me take at look at how much you have...\""; next; - if(countitem(@IRON_ORE)<5) goto L_NoItem; - if(countitem(@IRON_ORE)<10) goto L_StageA; - if(countitem(@IRON_ORE)<15) goto L_StageB; + if(countitem("IronOre")<5) goto L_NoItem; + if(countitem("IronOre")<10) goto L_StageA; + if(countitem("IronOre")<15) goto L_StageB; goto L_StageC; L_Info: @@ -120,19 +112,19 @@ L_main_menu: set @choices_nr, 0; setarray @choice_idx, 0, 0, 0, 0, 0; - if (countitem(@SHORT_SWORD) < 1) goto L_main_menu_post_setzer; + if (countitem("ShortSword") < 1) goto L_main_menu_post_setzer; set @choice$[@choices_nr], "Can you make my short sword better?"; set @choice_idx[@choices_nr], @CHOICE_SETZER; set @choices_nr, 1 + @choices_nr; L_main_menu_post_setzer: - if (countitem(@IRON_ORE)<5) goto L_no_more_helmets; + if (countitem("IronOre")<5) goto L_no_more_helmets; set @choice$[@choices_nr], "Knight's Helmet. (5 Iron Ores)"; set @choice_idx[@choices_nr], @CHOICE_KNIGHT; set @choices_nr, 1 + @choices_nr; - if (countitem(@IRON_ORE)<10) goto L_no_more_helmets; + if (countitem("IronOre")<10) goto L_no_more_helmets; set @choice$[@choices_nr], "Crusade Helmet. (10 Iron Ores)"; set @choice_idx[@choices_nr], @CHOICE_CRUSADE; @@ -142,7 +134,7 @@ L_main_menu_post_setzer: set @choice_idx[@choices_nr], @CHOICE_SHIELD; set @choices_nr, 1 + @choices_nr; - if (countitem(@IRON_ORE)<15) goto L_no_more_helmets; + if (countitem("IronOre")<15) goto L_no_more_helmets; set @choice$[@choices_nr], "Warlord Helmet. (15 Iron Ores)"; set @choice_idx[@choices_nr], @CHOICE_WARLORD; @@ -192,8 +184,8 @@ L_YesKnight: getinventorylist; if (@inventorylist_count == 100) goto L_TooMany; set zeny, zeny - 10000; - delitem @IRON_ORE, 5; - getitem 637, 1; + delitem "IronOre", 5; + getitem "KnightsHelmet", 1; goto L_Done; L_YesCrusade: @@ -201,8 +193,8 @@ L_YesCrusade: getinventorylist; if (@inventorylist_count == 100) goto L_TooMany; set zeny, zeny-10000; - delitem @IRON_ORE,10; - getitem 639,1; + delitem "IronOre", 10; + getitem "CrusadeHelmet", 1; goto L_Done; L_YesWarlord: @@ -210,8 +202,8 @@ L_YesWarlord: getinventorylist; if (@inventorylist_count == 100) goto L_TooMany; set zeny, zeny-10000; - delitem @IRON_ORE,15; - getitem 636,1; + delitem "IronOre", 15; + getitem "WarlordHelmet", 1; goto L_Done; L_YesShield: @@ -223,8 +215,8 @@ L_YesShield: menu "Sure, have a look!", -, "No.", L_Pass; - if (countitem(@INFANTRY) == 1) goto L_MoreInfantry; - if (countitem(@INFANTRY) == 0) goto L_NoInfantry; + if (countitem("InfantryHelmet") == 1) goto L_MoreInfantry; + if (countitem("InfantryHelmet") == 0) goto L_NoInfantry; mes "[Nicholas]"; mes "Nicholas pulls out two of your infantry helmets."; @@ -241,9 +233,9 @@ L_YesShield: "No way.", L_Pass; if (zeny < 20000) goto L_ShieldNoZeny; - if (countitem(@INFANTRY) < 2) goto L_ShieldNoInfantry; - if (countitem(@IRON_ORE) < 10) goto L_ShieldNoOre; - if (countitem(@LEATHER_PATCH) < 1) goto L_ShieldNoLeatherPatch; + if (countitem("InfantryHelmet") < 2) goto L_ShieldNoInfantry; + if (countitem("IronOre") < 10) goto L_ShieldNoOre; + if (countitem("LeatherPatch") < 1) goto L_ShieldNoLeatherPatch; // No inventory check needed, as infantry helms are removed, opening two slots mes "[Nicholas]"; @@ -251,10 +243,10 @@ L_YesShield: mes "You watch Nicholas melt the ore and helmets and form a shield out of the resulting iron. He then cuts your leather patch apart and adds it to the handles."; mes "\"Here is your shield!\""; - delitem @INFANTRY, 1; - delitem @INFANTRY, 1; - delitem @LEATHER_PATCH, 1; - delitem @IRON_ORE, 10; + delitem "InfantryHelmet", 1; + delitem "InfantryHelmet", 1; + delitem "LeatherPatch", 1; + delitem "IronOre", 10; set zeny, zeny - 20000; if (@Q_SHIELD_status < @SHIELD_COMPLETED) @@ -265,7 +257,7 @@ L_YesShield: set @Q_SHIELD_status, @SHIELD_COMPLETED; // get XP only once callsub L_Update_Var; - getitem @STEEL_SHIELD, 1; + getitem "SteelShield", 1; next; close; @@ -330,20 +322,20 @@ L_SetzerQuest: "HOW much? Never mind.", L_Pass; if (zeny < 50000) goto L_SetzerNoZeny; - if (countitem(@IRON_ORE) < 5) goto L_SetzerNoOre; - if (countitem(@MONSTER_OIL) < 1) goto L_SetzerNoMonsterOil; - if (countitem(@SHORT_SWORD) < 1) goto L_SetzerNoSword; + if (countitem("IronOre") < 5) goto L_SetzerNoOre; + if (countitem("MonsterOilPotion") < 1) goto L_SetzerNoMonsterOil; + if (countitem("ShortSword") < 1) goto L_SetzerNoSword; // No inventory check needed, as the short sword is removed, opening a slot mes "[Nicholas]"; mes "Nicholas takes the items, heats up your sword and pounds it with a heavy hammer. Before your eyes it turns thinner and flatter. Finally he pours the monster oil over it, heats it up again and douses it in water."; set zeny, zeny - 50000; - delitem @IRON_ORE, 5; - delitem @MONSTER_OIL, 1; - delitem @SHORT_SWORD, 1; + delitem "IronOre", 5; + delitem "MonsterOilPotion", 1; + delitem "ShortSword", 1; - getitem @SETZER, 1; + getitem "Setzer", 1; if (!(@Q_SETZER_status & @SETZER_FLAG_MADE_SETZER)) mes "[" + @SETZER_XP + " experience points]"; if (!(@Q_SETZER_status & @SETZER_FLAG_MADE_SETZER)) diff --git a/npc/009-2_Hurnscald/shops.txt b/npc/009-2_Hurnscald/shops.txt index 3cd1e8f0..f357074c 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/waitress.txt b/npc/009-2_Hurnscald/waitress.txt index bcf2f434..4bf018ee 100644 --- a/npc/009-2_Hurnscald/waitress.txt +++ b/npc/009-2_Hurnscald/waitress.txt @@ -3,8 +3,8 @@ 009-2.gat,60,52,0 script Melinda 140,{ if (zeny < 180) goto L_NoMoney; getinventorylist; - set @beerCount, countitem(539); - if (@inventorylist_count == 100 && beerCount < 0) goto L_TooMany; + set @beerCount, countitem("Beer"); + if (@inventorylist_count == 100 && beerCount == 0) goto L_TooMany; mes "[Melinda]"; mes "\"Hi sweety! Want a fresh beer for 170gp?\""; @@ -19,24 +19,24 @@ mes "[Melinda]"; mes "Pff... nickel nurser!"; next; - set zeny,zeny-170; - getitem 539,1; + set zeny, zeny - 170; + getitem "Beer", 1; close; L_5Tip: mes "[Melinda]"; mes "\"Here you go, sweethearth!\""; next; - set zeny,zeny-175; - getitem 539,1; + set zeny, zeny - 175; + getitem "Beer", 1; close; L_10Tip: mes "[Melinda]"; mes "\"Thank you, sweety! Want me to hear a secret?\""; next; - set zeny,zeny-180; - getitem 539,1; + set zeny, zeny - 180; + getitem "Beer", 1; menu "What's it, darling?", -, "Nah, I don't feel like chatting.", L_No; diff --git a/npc/009-2_Hurnscald/wyara.txt b/npc/009-2_Hurnscald/wyara.txt new file mode 100644 index 00000000..a2abec12 --- /dev/null +++ b/npc/009-2_Hurnscald/wyara.txt @@ -0,0 +1,572 @@ +// ---------------------------------------- +// Wyara the Hurnscald witch +// ---------------------------------------- +009-2.gat,121,26,0 script Wyara#_M 103,{ + set @Q_MASK, NIBBLE_2_MASK; + set @Q_SHIFT, NIBBLE_2_SHIFT; + set @Q_status, (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT; + + set @STATUS_INITIAL, 0; + set @STATUS_PURIFY_EXPLAINED, 1; + set @STATUS_PURIFY_ONCE, 2; + set @STATUS_PURIFY_TWICE, 3; + set @STATUS_PURIFY_OVER, 4; + + set @has_magic, getskilllv(SKILL_MAGIC); + + if (@Q_status == @STATUS_PURIFY_ONCE) + goto L_Magic_purify_once; + if (@Q_status == @STATUS_PURIFY_TWICE) + goto L_Magic_purify_done; + + mes "[Wyara the witch]"; + if (!Sex) + mes "\"Greetings, fair traveller! What can I do for you?\""; + if (Sex) + mes "\"Hello! What brings you here?\""; + next; + + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_WYARA; +L_Main: + if (!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED)) + menu "What do you know about...", L_Question, + "Can you help me use the mana seed?", L_Q_manaseed_unabsorbed, + "Can you help me learn magic?", L_Magic, + "I would like to buy potions.", L_Shop, + "Bye!", -; + if (!(!@has_magic && (MAGIC_FLAGS & MFLAG_TOUCHED_MANASEED))) + menu "What do you know about...", L_Question, + "Can you help me learn magic?", L_Magic, + "I would like to buy potions.", L_Shop, + "Bye!", -; + close; + +L_Shop: + mes "[Wyara the Witch]"; + mes "\"Please have a look at the shelf behind me.\""; + next; + close; + +L_Question: + callfunc "MagicTalkOptionsSetup"; + set @ignore, @QQ_WYARA; + callfunc "MagicTalkMenu"; + + 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; + if (@c == @QQ_IMP) goto L_Q_imp; + if (@c == @QQ_OLDWIZ) goto L_Q_old_wizard; + + mes "[Wyara the Witch]"; + mes "\"I fear that I can't help you with that.\""; + next; + goto L_Main; + + +L_Q_old_wizard: + mes "[Wyara the Witch]"; + mes "\"I don't know his name, but I do know that he has been living in the mountains since I first came here. He is a master of many schools of magic, I believe.\""; + next; + mes "[Wyara the Witch]"; + mes "She smiles."; + mes "\"He is also a nice and friendly person to talk to, and quite knowledgeable about the teas of this area.\""; + next; + goto L_Main; + + +L_Q_elanore: + mes "[Wyara the Witch]"; + mes "\"Elanore is the Tulimshar healer. She is a very kind person and an outstanding healer.\""; + 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 "\"A mana seed? I'm afraid that I can't help you with that.\""; + next; + goto L_Main; + +L_Q_manaseed_unabsorbed: + mes "[Wyara the Witch]"; + mes "\"So you touched the mana seed but weren't able to absorb its powers? That means that you're lacking a natural magical ability. Still, there are ways around that.\""; + next; + mes "[Wyara the Witch]"; + mes "\"If you drink a mana potion, you should be able to retain this magical power and slowly build up a magical skill.\""; + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_MANAPOTION; + next; + goto L_Main; + +L_Q_manapotion: + mes "[Wyara the Witch]"; + mes "\"I have a simple recipe for making mana potions, but I don't have one ready right now. Can you bring me 40 mauve leaves and a bottle of water? I can make one from those quite easily.\""; + next; + menu "Sure!", L_make_manapotion, + "No.", L_Main; + goto L_Main; + +L_manapotion_toomany: + mes "[Wyara the Witch]"; + mes "\"Hmm... looking at you, I don't think that you would be able to carry it.\""; + next; + goto L_Main; + +L_make_manapotion: + if(countitem("MauveHerb") < 40) goto L_make_manapotion_lack; + if(countitem("BottleOfWater") < 1) goto L_make_manapotion_lack; + getinventorylist; + if ((@inventorylist_count == 100) + && (countitem("MauveHerb") > 40) + && (countitem("BottleOfWater") > 100) + && (countitem("ManaPotion") < 1)) + goto L_manapotion_toomany; + + delitem "MauveHerb", 40; + delitem "BottleOfWater", 1; + getitem "ManaPotion", 1; + + mes "[Wyara the Witch]"; + mes "Wyara takes your mauve leaves, grinds them, and pours some of the resultant paste into her cauldron. She then takes your bottle and sticks it into her brew, head-first."; + next; + + mes "[Wyara the Witch]"; + mes "The water in the bottle takes on a strange golden hue, but doesn't flow out."; + mes "After a while, she retrieves the bottle, fills some of the liquid into a smaller, clay bottle, mixes in the rest of the paste, plugs the bottle and shakes it."; + next; + + mes "[Wyara the Witch]"; + mes "\"I shall keep the rest of your water and the bottle as a payment, if you don't mind. But here is the potion; let it rest for a minute before you use it for maximum effect.\""; + next; + + goto L_Main; + +L_make_manapotion_lack: + mes "[Wyara the Witch]"; + mes "\"No, we need forty mauve leaves and a bottle of water.\""; + next; + + goto L_Main; + +L_Q_imp: + mes "[Wyara the Witch]"; + mes "\"Sagatha told me that she imprisoned an evil earth spirit in a dried-up well. She wants it to stay there until it has mended its ways, or forever, if it doesn't.\""; + next; + goto L_main_menu; + +L_Q_sagatha: + mes "[Wyara the Witch]"; + mes "Wyara smiles."; + mes "\"You have met Sagatha? She's a wonderful person, isn't she? Well, she does hold back a little towards humans, but deep down she feels for them, too.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"She does hold all plants and animals very dear, though. Well, the peaceful ones more than the aggressive ones, I suppose, and scorpions not very much at all.\""; + next; + + goto L_Main; + +L_Q_auldsbel: + mes "[Wyara the Witch]"; + mes "\"Auldsbel... the guild wizard? I don't know him very well; as far as I know, he is only visiting.\""; + next; + + goto L_Main; + +L_Magic_no: + mes "[Wyara the Witch]"; + mes "\"I am sorry, but you don't seem to be able to control any magic. That means that I really can't help you with that.\""; + next; + goto L_Main; + +L_Magic: + if (!@has_magic) + goto L_Magic_no; + mes "[Wyara the Witch]"; + mes "\"Perhaps I can help you a little, but I am not a master of any school of magic.\""; + next; + +L_Magic_main: + menu + "Can you explain magic to me?", L_Magic_explain, + "Can you teach me a spell?", L_Magic_spell, + "Can you train me?", L_Magic_train, + "Never mind.", -; + + goto L_Main; + +L_Magic_explain: + mes "[Wyara the Witch]"; + mes "\"Magic is just a name for the force that lives in all plants and animals and emanates from there into all things, living or dead.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Some things it finds easier to pass through-- natural things, living things-- but dead things, such as rock or metal, can slow it down.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"There are different kinds of magic, too; nature, astral, and so on, but if this interests you, you should talk to a scholar.\""; + next; + + goto L_Magic_main; + +L_Magic_spell: + if (getskilllv(SKILL_MAGIC_NATURE) > 1) + goto L_Magic_spell3; + if (getskilllv(SKILL_MAGIC) > 1) + goto L_Magic_spell2; + mes "[Wyara the Witch]"; + mes "\"No... I don't think that you are ready yet. But please ask me again when you have some more control over your magical powers.\""; + next; + + goto L_Magic_main; + +L_Magic_spell3: + mes "[Wyara the Witch]"; + mes "\"Now that you know the basics of nature magic, here is one of my favourites: '" + getspellinvocation("rain") + "' will summon rain, whereever you are standing. It will consume a bottle of water, though.\""; + if (getskilllv(SKILL_MAGIC) < 2) + mes "\"You are not powerful enough to use it yet, though; you will first have to absorb more magic from the mana seed.\""; + next; + +L_Magic_spell2: + mes "[Wyara the Witch]"; + mes "\"Here is an easy and useful one: '" + getspellinvocation("detect-players") + "'. It will tell you the names of everyone nearby, but beware that there are ways to protect against it.\""; + next; + + if (!(getpartnerid2(0))) + goto L_Magic_main; + + mes "[Wyara the Witch]"; + mes "\"Married partners can find each other even more easily. Use the '" + getspellinvocation("sense-spouse") + "' spell instead.\""; + next; + goto L_Magic_main; + +L_Magic_train: + if (getskilllv(SKILL_MAGIC_NATURE) > 1) + goto L_Magic_train_no; + mes "[Wyara the Witch]"; + + if (@Q_status >= @STATUS_PURIFY_EXPLAINED) + goto L_Magic_train_wb; + + mes "\"Train you? No... you should talk to Sagatha.\""; + mes "She hesitates."; + next; + + callfunc "SagathaStatus"; + + if (@evil) + goto L_Magic_train_evil; + + mes "[Wyara the Witch]"; + mes "\"It would be difficult to ask her to accept you unless you understand some of the basics already.\""; + next; + + goto L_Magic_train_dispatch; + +L_Magic_train_evil: + mes "Wyara looks at you sadly."; + mes "\"I have heard that you have done something unforgiveable. No witch in this land will teach you now.\""; + next; + goto L_Magic_main; + +L_Magic_train_wb: + callfunc "SagathaStatus"; + + if (@evil) + goto L_Magic_train_evil; + + mes "\"Ah, yes, your training...\""; + next; + + +L_Magic_train_dispatch: + if (@Q_status == @STATUS_PURIFY_TWICE) + goto L_Magic_purify_done; + if (@Q_status == @STATUS_PURIFY_ONCE) + goto L_Magic_purify_once; + if (@Q_status == @STATUS_PURIFY_EXPLAINED) + goto L_Magic_purify_explained; + + mes "[Wyara the Witch]"; + mes "\"Well, let me help you get started, then! But first, to make sure that you are serious, I have a small task for you.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"There is a pond west of Hurnscald, a very small one, almost square in shape, with a rock on its southern ledge leading to its center. This pond is close to dying.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"I want to save it; for that, someone will have to pour a purification potion into it.\""; + next; + + set @Q_status, @STATUS_PURIFY_EXPLAINED; + callsub S_update_var; +L_Magic_purify_explained: + if (countitem("PurificationPotion")) + goto L_Magic_purify_doit; + + mes "[Wyara the Witch]"; + mes "\"To make the purification potion, I will need twenty maggot slimes and twenty leaves of mauve.\""; + next; + + menu + "I shall get them later.", L_Magic_main, + "Booring.", L_Magic_main, + "Here they are.", -; + + getinventorylist; + if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20)) + goto L_Magic_purify_nospace; + + if (countitem("MauveHerb") < 20) + goto L_Magic_purify_lacking; + if (countitem("MaggotSlime") < 20) + goto L_Magic_purify_lacking; + + delitem "MauveHerb", 20; + delitem "MaggotSlime", 20; + getitem "PurificationPotion", 1; + mes "[Wyara the Witch]"; + mes "Wyara grinds the leaves and mixes them with the slime, boils them, then speaks a brief incantation over them and hands you the result."; + next; + +L_Magic_purify_doit: + mes "[Wyara the Witch]"; + mes "\"Take your purification potion to the pond, right next to its center, and pour the potion in.\""; + next; + close; + +L_Magic_purify_nospace: + mes "[Wyara the Witch]"; + mes "\"You don't have enough space to carry the potion. Please come back later.\""; + next; + goto L_Magic_main; + +L_Magic_purify_lacking: + mes "[Wyara the Witch]"; + mes "\"You'll need twenty mauve leaves and twenty maggot slimes for the potion.\""; + next; + goto L_Magic_main; + +L_Magic_purify_once: + mes "[Wyara the Witch]"; + mes "Wyara nods."; + mes "\"You have purified the pond a little, but not enough, I think. We'll need another potion.\""; + next; + + if (countitem("PurificationPotion")) + goto L_Magic_purify_doit2; + + mes "[Wyara the Witch]"; + mes "\"I'll need twenty more maggot slimes and leaves of mauve.\""; + next; + + menu + "I'll do that later.", L_Main, + "No way.", L_Main, + "Here you are.", -; + getinventorylist; + if ((@inventorylist_count == 100) && (countitem("MauveHerb") > 20) && (countitem("MaggotSlime") > 20)) + goto L_Magic_purify_nospace; + + if (countitem("MauveHerb") < 20) + goto L_Magic_purify_lacking; + if (countitem("MaggotSlime") < 20) + goto L_Magic_purify_lacking; + + delitem "MauveHerb", 20; + delitem "MaggotSlime", 20; + getitem "PurificationPotion", 1; + mes "[Wyara the Witch]"; + mes "Wyara brews another purification potion."; + next; +L_Magic_purify_doit2: + mes "[Wyara the Witch]"; + mes "\"Please apply this one quickly, again.\""; + next; + close; + +L_Magic_purify_done: + mes "[Wyara the Witch]"; + mes "Wyara smiles at you."; + mes "\"A friend told me... you have saved the pond for now. Perhaps it will need some more attention later, but I'll ask others for this.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Please sit down and touch the ground.\""; + next; + + menu + "Very well.", -, + "No way!", L_Magic_purify_abort; + + mes "[Wyara the Witch]"; + mes "You sit down and touch the ground, and so does Wyara."; + next; + + mes "[Wyara the Witch]"; + mes "You sense the earth, through the floor boards, and begin to feel one with it, as if you were a plant or rock."; + next; + + mes "[Wyara the Witch]"; + mes "The gentle breeze coming in through the window begins to take on a very different quality, as if it were the gentle caress of a mother soothing her child."; + next; + + mes "[Wyara the Witch]"; + mes "You can sense the water within the ground, and from it you sense your sisters and brothers, plants, animals, people..."; + next; + + mes "[Wyara the Witch]"; + mes "Slowly, the sensation recedes, but you feel changed."; + mes "[5000 experience points]"; + mes "[Level 2 in Nature Magic]"; + + getexp 5000, 0; + if (getskilllv(SKILL_MAGIC_NATURE) < 2) + setskill SKILL_MAGIC_NATURE, 2; + set @Q_status, @STATUS_PURIFY_OVER; + callsub S_update_var; + close; + +L_Magic_purify_abort: + mes "[Wyara the Witch]"; + mes "\"I can't help you if you don't subject yourself to the ritual.\""; + next; + close; + +L_Magic_train_no: + mes "[Wyara the Witch]"; + mes "\"I can't teach you anything at this time. Perhaps Sagatha can help you, but I'm not sure if she will accept you as a student.\""; + next; + +L_Magic_train_sagatha: + menu + "OK.", L_Magic_main, + "How can I convince her to accept me?", -; + + callfunc "SagathaStatus"; + mes "[Wyara the Witch]"; + if (@evil) + L_Magic_train_sagatha_fail; + + if (getskilllv(SKILL_MAGIC) < 2) + goto L_Magic_train_sagatha_lvl1; + + if (@good > 1) + mes "\"Come to think of it, I have heard good things about you. Perhaps she will be willing to accept you as a student now?\""; + if (@good == 1) + mes "\"I have heard some good things about you, but I'm not sure if it will be enough to sway her-- she is hesitant to accept students.\""; + if (@good == 0) + mes "\"Sagatha cares greatly about all living creatures, but particularly about the creatures of the forest. If you are kind to them, she will be more likely to be kind to you.\""; + next; + + if (@druid == 3) + goto L_Magic_main; + + mes "[Wyara the Witch]"; + mes "She smiles."; + mes "\"Actually, I think I know of a good thing you could do. There is a very special tree in the desert south-east of Tulimshar, a tree that has been there for a very long time.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"The tree is slowly dying-- and has been for a long time-- but it is there because of a wonderful thing that happened long ago. Tend to it, and I am sure that she will learn about this.\""; + next; + set MAGIC_FLAGS, MAGIC_FLAGS | MFLAG_KNOWS_DRUIDTREE; + + menu + "What is that tree?", L_Magic_train_tree_backgd, + "How should I tend to it?", -, + "Nah.", L_Magic_main; + + mes "[Wyara the Witch]"; + mes "\"The tree has been there alone and unattended for a long time; what he needs most is water and affection. Give him both.\""; + next; + goto L_Magic_main; + +L_Magic_train_tree_backgd: + mes "[Wyara the Witch]"; + mes "\"Many generations ago, there was a lush, green oasis in the desert south-east of Tulimshar. Plants of all kinds grew there, and many animals, including mouboos, made this place their home.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Then there came war, and some people pleaded to the demon Grenxen. He founded Tulimshar, and to provide it with water he changed the underground waterflow. The oasis began to dry out quickly.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"But the oasis, like many such places back in the old days, had a druid watching over it. The druid refused to accept what Grenxen had done, but he was powerless to revert or change it.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"All he could do was to delay the inevitable, to give the animals and nomads some time to adapt.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"But to do so, he had to reach the water streams deep underground. Thus, he turned himself into a tree, a deep-rooted fyrad, so that his roots could reach underground.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"He had to exert himself tremendously; he had to grow deep, quickly; I believe that no druid or witch has summoned such magic before or since. But he succeeded, and for a while he saved the oasis.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Many generations he remained the only one ever to have successfully defied Grenxen, but this came at a price: he had to remain a tree, and he never turned back.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"I believe that he has not forgotten his old magic, because even though a tree remembers many things for a very long time, trees are not keen to change things, not even themselves.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Now he stands alone in the desert, dried-up and forgotten, with no-one remembering him.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Please give him water, for he is always in need of it, and thank him for his sacrifice. It is all we can do for him now.\""; + next; + +L_Magic_tree_menu: + menu + "How should I give him water?", L_Magic_tree_water, + "How should I thank him?", L_Magic_tree_remind, + "I will.", -, + "No.", -; + goto L_Magic_main; + +L_Magic_tree_water: + mes "[Wyara the Witch]"; + mes "\"A bottle of water would probably not be enough. No, you would have to water the ground all around... that's too many bottles. You will have to get water from elsewhere.\""; + next; + goto L_Magic_tree_menu; + +L_Magic_tree_remind: + mes "[Wyara the Witch]"; + mes "\"Give him a sign of affection. Something that works with a tree, but also something that humans might do to each other, to remind him of his days as a human.\""; + next; + + mes "[Wyara the Witch]"; + mes "\"Yes... that would be important. Show your affection in the same way that you might towards a human.\""; + next; + goto L_Magic_tree_menu; + +L_Magic_train_sagatha_fail: + mes "She shakes her head."; + mes "\"No... from what I have heard, you have done something unforgivable. I very much doubt that you can be her student now, and I won't teach you any further either.\""; + next; + goto L_Magic_main; + +L_Magic_train_sagatha_lvl1: + mes "\"Well, you're still a bit of a beginner, so I don't think she will accept you yet. Maybe you can absorb some more power from the mana seed? If you can grow your magical powers a little, I might be able to help you.\""; + next; + goto L_Magic_main; + +S_update_var: + set QUEST_MAGIC2, + (QUEST_MAGIC2 & ~(@Q_MASK) + | (@Q_status << @Q_SHIFT)); + return; +} |