summaryrefslogtreecommitdiff
path: root/npc/011-1_Woodland/alchemist.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/011-1_Woodland/alchemist.txt')
-rw-r--r--npc/011-1_Woodland/alchemist.txt194
1 files changed, 189 insertions, 5 deletions
diff --git a/npc/011-1_Woodland/alchemist.txt b/npc/011-1_Woodland/alchemist.txt
index 6329a5d6..bc7b53f3 100644
--- a/npc/011-1_Woodland/alchemist.txt
+++ b/npc/011-1_Woodland/alchemist.txt
@@ -9,6 +9,8 @@
set @Q_MASK, NIBBLE_3_MASK;
set @Q_SHIFT, NIBBLE_3_SHIFT;
+ set @wants_sulphur, (QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK));
+ set @wants_ironpowder, (((QUEST_MAGIC & (NIBBLE_6_MASK | NIBBLE_7_MASK)) >> NIBBLE_6_SHIFT) >= 7);
set @Q_status, (QUEST_Forestbow_state & @Q_MASK) >> @Q_SHIFT;
// End of Setzer quest/monster oil quest participation
@@ -18,8 +20,13 @@
set @MAUVE, 680;
set @PETAL, 565;
set @PEARL, 700;
+ set @WATER, 541;
+ set @ASH, 701;
+ set @MANAPOTION, 705;
set @ORE, 640;
set @MAGGOTSLIME, 505;
+ set @SULPHUR, 703;
+ set @IRONPOWDER, 704;
set @QUEST_CAN_GET_DYE_HERE, 2;
set @QUEST_HAS_SOLVED_DYE_PUZZLE, 3;
@@ -30,9 +37,12 @@
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_SULPHUR_POWDER, 6;
+ set @CHOICE_IRON_POWDER, 7;
+ set @CHOICE_ABORT, 8;
- setarray @menuitems$, "", "", "", "", "";
+ setarray @menuitems$, "", "", "", "", "", "", "", "";
set @c, 0;
set @menuitems$[@c], "Iron potion.";
@@ -43,6 +53,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;
@@ -70,13 +87,27 @@ L_skip_introducing:
set @c, @c + 1;
goto L_certain_condition;
-
L_pre_dyeing:
+
set @menuitems$[@c], "Actually, can you make dye?";
set @menuID[@c], @CHOICE_DYEING_INTRO;
set @c, @c + 1;
-
L_certain_condition:
+
+ if (!@wants_sulphur)
+ goto L_post_sulphur_option;
+ set @menuitems$[@c], "Can you make sulphur powder?";
+ set @menuID[@c], @CHOICE_SULPHUR_POWDER;
+ set @c, @c + 1;
+L_post_sulphur_option:
+
+ if (!@wants_ironpowder)
+ goto L_post_ironpowder_option;
+ set @menuitems$[@c], "Can you make iron powder?";
+ set @menuID[@c], @CHOICE_IRON_POWDER;
+ set @c, @c + 1;
+L_post_ironpowder_option:
+
if (@Q_status == @SETZER_INITIAL)
goto L_main_menu;
set @menuitems$[@c], "Can you make monster oil?";
@@ -93,7 +124,10 @@ L_main_menu:
@menuitems$[1], -,
@menuitems$[2], -,
@menuitems$[3], -,
- @menuitems$[4], -;
+ @menuitems$[4], -,
+ @menuitems$[5], -,
+ @menuitems$[6], -,
+ @menuitems$[7], -;
set @menu, @menu - 1;
@@ -103,7 +137,157 @@ 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_SULPHUR_POWDER) goto L_sulphur;
+ if (@menuID[@menu] == @CHOICE_IRON_POWDER) goto L_iron_powder;
if (@menuID[@menu] == @CHOICE_ABORT) goto L_abort;
+ goto L_abort;
+
+L_iron_powder:
+ mes "[Rauk the Alchemist]";
+ mes "\"Iron powder? Hmm, I can extract some iron powder out of a chunk of iron ore, but that will require me to dissolve it. If you give me a chunk of iron ore and 100 GP for the acid, I can do it.\"";
+ menu
+ "Never mind.", L_abort,
+ "Here you are!", -;
+
+ if (countitem(@ORE) < 1)
+ goto L_iron_powder_noore;
+ if (zeny < 100)
+ goto L_iron_powder_nozeny;
+ getinventorylist;
+ if (@inventorylist_count == 100
+ && countitem(@ORE) > 1
+ && countitem(@IRONPOWDER) < 1)
+ goto L_iron_powder_full;
+ delitem @ORE, 1;
+ set zeny, zeny - 100;
+ getitem @IRONPOWDER, 4;
+ mes "[Rauk the Alchemist]";
+ mes "Rauk places your chunk of ore in a strange glass container, then pours a steaming yellow liquid over it. Before your eyes, the ore dissolves.\"";
+ next;
+
+ mes "[Rauk the Alchemist]";
+ mes "Rauk pours another liquid over the resultant mixture, then pours the result through a piece of cloth placed in a funnel. He removes some amount of metal powder from the cloth and hands it to you.\"";
+ mes "\"This is about as fine as I can make it without mechanical help.\"";
+ next;
+
+ close;
+
+L_iron_powder_noore:
+ mes "[Rauk the Alchemist]";
+ mes "\"I do need a chunk of iron ore. Please return when you have one.\"";
+ next;
+ close;
+
+L_iron_powder_nozeny:
+ mes "[Rauk the Alchemist]";
+ mes "\"I'm sorry, but I must ask that you pay 100 GP-- the acid I use is not cheap.\"";
+ next;
+ close;
+
+L_iron_powder_full:
+ mes "[Rauk the Alchemist]";
+ mes "\"I don't think that you have room to carry this. Please come back later.\"";
+ next;
+ close;
+
+L_sulphur:
+ mes "[Rauk the Alchemist]";
+ mes "\"Oh, that is easy. Bring me three piles of volcanic ash and three mauve leaves, and I will extract twelve piles of sulphur ash for you.\"";
+ next;
+ menu
+ "I will be back.", L_abort,
+ "No, I won't!", L_abort,
+ "Here you are!", -;
+
+ if (countitem(@ASH) < 3) goto L_sulphur_noash;
+ if (countitem(@MAUVE) < 3) goto L_sulphur_nomauve;
+ getinventorylist;
+ if (@inventorylist_count == 100
+ && countitem(@SULPHUR) == 0
+ && countitem(@ASH) > 3
+ && countitem(@MAUVE) > 3)
+ goto L_sulphur_nospace;
+
+ delitem @ASH, 3;
+ delitem @MAUVE, 3;
+ getitem @SULPHUR, 12;
+ mes "[Rauk the Alchemist]";
+ mes "You watch Rauk burn the mauve leaves in the midst of the ashes. He then dissolves the result and pours it through a filter, finally heating up the residual liquid.";
+ next;
+ mes "[Rauk the Alchemist]";
+ mes "The water having evaporated, only some yellow powder is left over. Rauk carefully pours it into your hand.";
+ mes "\"This should be precisely twelve half-ounces of sulphur powder.\"";
+ next;
+ close;
+
+L_sulphur_noash:
+ mes "[Rauk the Alchemist]";
+ mes "\"You don't seem to have all three piles of volcanic ash.\"";
+ next;
+ close;
+
+L_sulphur_nomauve:
+ mes "[Rauk the Alchemist]";
+ mes "\"You don't seem to have the three mauve leaves I asked for.\"";
+ next;
+ close;
+
+L_sulphur_nospace:
+ mes "[Rauk the Alchemist]";
+ mes "\"Oh dear. You don't seem to be able to carry the sulphur powder.\"";
+ next;
+ close;
+
+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;