diff options
Diffstat (limited to 'npc/011-1_Woodland/alchemist.txt')
-rw-r--r-- | npc/011-1_Woodland/alchemist.txt | 216 |
1 files changed, 209 insertions, 7 deletions
diff --git a/npc/011-1_Woodland/alchemist.txt b/npc/011-1_Woodland/alchemist.txt index 6329a5d6..a15884cc 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,30 +87,49 @@ 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; + goto L_post_monster_oil; set @menuitems$[@c], "Can you make monster oil?"; set @menuID[@c], @CHOICE_MONSTER_OIL; set @c, @c + 1; -L_main_menu: +L_post_monster_oil: set @menuitems$[@c], "No thanks."; set @menuID[@c], @CHOICE_ABORT; set @c, @c + 1; +L_main_menu: + menu @menuitems$[0], -, @menuitems$[1], -, @menuitems$[2], -, @menuitems$[3], -, - @menuitems$[4], -; + @menuitems$[4], -, + @menuitems$[5], -, + @menuitems$[6], -, + @menuitems$[7], -; set @menu, @menu - 1; @@ -103,7 +139,173 @@ 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.\""; + next; + 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, followed by a cup of water. He removes the residual 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; + getinventorylist; + if ((@inventorylist_count == 100) + && (countitem(@MAUVE) > 30) + && (countitem(@ASH) > 5) + && (countitem(@PEARL) > 1) + && (countitem(@WATER) > 1) + && (countitem(@MANAPOTION) < 1)) + goto L_mana_potion_toomuch; + + 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_toomuch: + mes "[Rauk the Alchemist]"; + mes "\"You look quite burdened already. Why don't you drop off a few things first, and come back later?\""; + 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.\""; + next; + goto L_main_menu; L_iron: if(countitem(566) < 20) goto L_no_iron; |