changeset 587:81189696e27b

Major cleanup of merchant module. New features added. Some things are probably now BROKEN, please test. :P
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 24 Dec 2006 20:24:08 +0000
parents a0bb7ca6158b
children 294f8fa08285
files ggrtf-merchant.tf
diffstat 1 files changed, 143 insertions(+), 155 deletions(-) [+]
line wrap: on
line diff
--- a/ggrtf-merchant.tf	Sun Dec 24 20:09:54 2006 +0000
+++ b/ggrtf-merchant.tf	Sun Dec 24 20:24:08 2006 +0000
@@ -14,6 +14,9 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Set "on" if you have merchant belt
 /prdeftoggle -n"havebelt" -d"Use merchant belt functionality"
+/prdeftoggle -n"usepouch" -d"Use reagent pouch as target in /mr"
+/prdefvalue -n"pouchname" -d"Name of reagent pouch if usepouch enabled"
+
 
 ;; Move item
 /def -i mdisc = /msq Move Items -> @{Cgreen}disc@{n}%;\
@@ -87,32 +90,35 @@
 ;; Workbench and tool helper code
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Tool wielding function
-/set mwield_cur=
-/def -i mwield =\
+/set merch_st=
+/set merch_st_p=1
+/set merch_wielded=
+
+/def -i gwieldtool =\
 	/if ({1}!~"")\
-		/if (mwield_cur!~{1})\
-			/if (mwield_cur!~"")\
-				/msq Switching '%{mwield_cur}' -> '%{1}'%;\
-				@remove %{mwield_cur}%;\
+		/if (merch_wielded!~{1})\
+			/if (merch_wielded!~"")\
+				/msq Switching '%{merch_wielded}' -> '%{1}'%;\
+				@@remove %{merch_wielded}%;\
 			/else \
 				/msq Wielding -> '%{1}'%;\
 			/endif%;\
-			/set mwield_cur=%{1}%;\
-			@wield %{1}%;\
+			/set merch_wielded=%{1}%;\
+			@@wield %{1}%;\
 		/endif%;\
 	/endif
 
 ;; (Assume everything to be metal/bs by default)
-/def -i mworkbench_set = /set wb_type=bs%;/set wb_forge=%;/set wb_tool=%;\
-	/if ({1}=~"bamboo"|{1}=~"bone"|{1}=~"ebony"|{1}=~"wood"|{1}=~"birch"|{1}=~"oak"|{1}=~"cedar"|{1}=~"elm"|{1}=~"maple"|{1}=~"mallorn"|{1}=~"mahogany") /set wb_type=cp%;\
-	/elseif ({1}=~"onyx"|{1}=~"turquoise"|{1}=~"sapphire"|{1}=~"olivine"|{1}=~"sunstone"|{1}=~"ruby"|{1}=~"bloodstone"|{1}=~"emerald"|{1}=~"quartz"|{1}=~"diamond")/set wb_type=gc%;\
-	/elseif ({1}=~"marble"|{1}=~"slate"|{1}=~"moonstone")/set wb_type=ma%;\
-	/elseif ({1}=~"laen"|{1}=~"glass"|{1}=~"crystal"|{1}=~"obsidian")/set wb_type=gb%;\
-	/elseif ({1}=~"flesh"|{1}=~"cloth"|{1}=~"feathers"|{1}=~"fur"|{1}=~"leather"|{1}=~"cotton"|{1}=~"wool")/set wb_type=sw%;\
-	/elseif ({1}=~"rubber"|{1}=~"alabaster"|{1}=~"fire"|{1}=~"porcelain")/set wb_type=sc%;\
+/def -i gsetworkbench = /set mwb_type=bs%;/set mwb_forge=%;/set mwb_tool=%;\
+	/if ({1}=~"bamboo"|{1}=~"bone"|{1}=~"ebony"|{1}=~"wood"|{1}=~"birch"|{1}=~"oak"|{1}=~"cedar"|{1}=~"elm"|{1}=~"maple"|{1}=~"mallorn"|{1}=~"mahogany") /set mwb_type=cp%;\
+	/elseif ({1}=~"onyx"|{1}=~"turquoise"|{1}=~"sapphire"|{1}=~"olivine"|{1}=~"sunstone"|{1}=~"ruby"|{1}=~"bloodstone"|{1}=~"emerald"|{1}=~"quartz"|{1}=~"diamond")/set mwb_type=gc%;\
+	/elseif ({1}=~"marble"|{1}=~"slate"|{1}=~"moonstone")/set mwb_type=ma%;\
+	/elseif ({1}=~"laen"|{1}=~"glass"|{1}=~"crystal"|{1}=~"obsidian")/set mwb_type=gb%;\
+	/elseif ({1}=~"flesh"|{1}=~"cloth"|{1}=~"feathers"|{1}=~"fur"|{1}=~"leather"|{1}=~"cotton"|{1}=~"wool")/set mwb_type=sw%;\
+	/elseif ({1}=~"rubber"|{1}=~"alabaster"|{1}=~"fire"|{1}=~"porcelain")/set mwb_type=sc%;\
 	/endif%;\
-	/eval /set wb_forge=$$[mforge_%{wb_type}]%;\
-	/eval /set wb_tool=$$[mtool_%{wb_type}]
+	/eval /set mwb_forge=$$[mforge_%{mwb_type}]%;\
+	/eval /set mwb_tool=$$[mtool_%{mwb_type}]
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -128,10 +134,12 @@
 ;A dark grey elm tree stands here.
 ;A cedar tree with smooth bark stands here.
 ;A maple tree is growing here.
-/def -i -F -p1 -mregexp -t"^.........  .* ([a-z][a-z]+) tree " lj_at1 =\
+/def -i -F -p1 -mregexp -t"^.........  .* ([a-z][a-z]+) tree " glumberjack_grep =\
 	@@grep 'It can be cut down for ' look at %{P1} on ground%;/set lj_target=%{P1}
 
-/def -i -p9999 -ag -mregexp -t"^It can be cut down for ([0-9]) logs? of ([a-z]+)\.$" lj_amount =\
+/def -i -p9999 -ag -msimple -t"No matches for \'It can be cut down for \'." glumberjack_gag
+
+/def -i -p9999 -ag -mregexp -t"^It can be cut down for ([0-9]) logs? of ([a-z]+)\.$" glumberjack_amount =\
 	/msq [@{BCgreen}%{P1} logs@{n}] of @{Cyellow}%{P2}@{n}
 
 /def lj =\
@@ -139,19 +147,19 @@
 	/if (merch_st!~"lj" | merch_st_p!~lj_target)\
 		/set merch_st_p=%{lj_target}%;\
 		/set merch_st=lj%;\
-		/test mwield(mtool_lj)%;\
+		/test gwieldtool(mtool_lj)%;\
 	/endif%;\
 	/msq Lumberjacking '%{lj_target}' ...%;\
 	@@use lumberjacking at %{lj_target}
 
 
-/def -i -p9999 -mregexp -t"^You chop up the [a-z ]+ into ([0-9]+) useable logs\.$" lj_getlog =\
+/def -i -p9999 -mregexp -t"^You chop up the [a-z ]+ into ([0-9]+) useable logs\.$" glumberjack_get =\
 	/if (merch_st=~"lj" & skill_st2=~"on")\
-		/let i=%{P1}%;\
+		/let _i=%{P1}%;\
 		/prmovestart%;\
-		/while (i > 0)\
+		/while (_i > 0)\
 			/prmoveitem log%;\
-			/let i=$[i - 1]%;\
+			/let _i=$[_i - 1]%;\
 		/done%;\
 		/prmoveend%;\
 	/endif
@@ -160,86 +168,86 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; AMALGAMATING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def amal = /mworkbench_set %*%;\
+/def amal = /gsetworkbench %*%;\
 	/if (merch_st!~"amal" | merch_st_p!~{*})\
 		/set merch_st_p=%*%;\
 		/set merch_st=amal%;\
-		/test mwield(wb_tool)%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
-	/msq Amalgamating '%*' in '%{wb_forge}' with '%{wb_tool}' ...%;\
-	@@use amalgamate at %* in %{wb_forge}
+	/msq Amalgamating '%*' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
+	@@use amalgamate at %* in %{mwb_forge}
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; REFINING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def refine = /mworkbench_set %*%;\
+/def refine = /gsetworkbench %*%;\
 	/if (merch_st!~"ref" | merch_st_p!~{*})\
 		/set merch_st_p=%*%;\
 		/set merch_st=ref%;\
-		/test mwield(wb_tool)%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
-	/msq Refining '%*' in '%{wb_forge}' with '%{wb_tool}' ...%;\
-	@@use refining at %* in %{wb_forge}
+	/msq Refining '%*' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
+	@@use refining at %* in %{mwb_forge}
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; MINERAL CUTTING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def mcut = /mworkbench_set %{1}%;\
+/def mcut = /gsetworkbench %{1}%;\
 	/if (merch_st!~"mcut" | merch_st_p!~{1})\
 		/set merch_st_p=%{1}%;\
 		/set merch_st=mcut%;\
-		/test mwield(wb_tool)%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
 	/if ({#} > 1)\
-		/set mcut=cut %{2}%;\
-		/set mcuts=%{2}g pieces%;\
+		/let _mcuta=cut %{2}%;\
+		/let _mcuts=%{2}g pieces%;\
 	/else \
-		/set mcut=%;\
-		/set mcuts=half%;\
+		/let _mcuta=%;\
+		/let _mcuts=half%;\
 	/endif%;\
-	/msq Mineral Cutting ore '%{1}' in '%{wb_forge}' with '%{wb_tool}' to %{mcuts} ...%;\
-	@@use mineral cutting at %{1} in %{wb_forge} %{mcut}
+	/msq Mineral Cutting ore '%{1}' in '%{mwb_forge}' with '%{mwb_tool}' to %{_mcuts} ...%;\
+	@@use mineral cutting at %{1} in %{mwb_forge} %{_mcuta}
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; ALLOYING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 /def alloy = /let _smat=$[replace(",", " ", {*})]%;\
-	/mworkbench_set %{_smat}%;\
+	/gsetworkbench %{_smat}%;\
 	/if (merch_st!~"alloy" | merch_st_p!~{*})\
 		/set merch_st_p=%{*}%;\
 		/set merch_st=alloy%;\
-		/test mwield(wb_tool)%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
-	/msq Alloying '%*' in '%{wb_forge}' with '%{wb_tool}' ...%;\
-	@@use alloying at %{*} in %{wb_forge}
+	/msq Alloying '%*' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
+	@@use alloying at %{*} in %{mwb_forge}
 
-/def -i -p9999 -aBCwhite -mregexp -t"^You create a quantity of ([a-z]+)" malloy_check =\
-	@@look at %{P1} in %{wb_forge}
+/def -i -p9999 -aBCwhite -mregexp -t"^You create a quantity of ([a-z]+)" galloy_check =\
+	@@look at %{P1} in %{mwb_forge}
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; GEM CUTTING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def -i gcut = /mworkbench_set %*%;\
-	/set wb_tool=magnifying glass,chisel%;\
+/def -i gcut = /gsetworkbench %*%;\
+	/set mwb_tool=magnifying glass,chisel%;\
 	/if (merch_st!~"gcut" | merch_st_p!~{*})\
 		/set merch_st_p=%*%;\
 		/set merch_st=gcut%;\
-		/test mwield(wb_tool)%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
 	/set gcut_gem=%*%;\
-	/msq Gem Cutting '%{gcut_gem}' in '%{wb_forge}' with '%{wb_tool}' ...%;\
-	@@use gem cutting at %{gcut_gem} in %{wb_forge}
+	/msq Gem Cutting '%{gcut_gem}' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
+	@@use gem cutting at %{gcut_gem} in %{mwb_forge}
 
 
-/def -i -p9999 -aBCwhite -t"You skillfully cut the gem ore into a beautiful gem." gcut_get1 =\
+/def -i -p9999 -aBCwhite -t"You skillfully cut the gem ore into a beautiful gem." ggcut_get1 =\
 	/if (merch_st=~"gcut" & skill_st2=~"on")\
-		@@get gem from %{wb_forge}%;\
+		@@get gem from %{mwb_forge}%;\
 		/prmoveitem gem%;\
-		@@look at %{gcut_gem} in %{wb_forge}%;\
+		@@look at %{gcut_gem} in %{mwb_forge}%;\
 	/endif
 
 
@@ -257,16 +265,20 @@
 ;A crag of marble is embedded in the ground.
 ;A deposit of chalk is embedded in the ground.
 
-/def -i -p2 -mregexp -t"^.........  .*An? (graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss) of ([a-z ]+) ore" mmine_at1 =\
+/def -i -p2 -mregexp -t"^.........  .*An? (graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss) of ([a-z ]+) ore" gmine_at1 =\
 	@@grep 'contains roughly' look at %{P1} on ground%;/set mine_target=%{P2}
 
-/def -i -p1 -mregexp -t"^.........  .*An? (graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss) of ([a-z ]+) is" mmine_at2 =\
+/def -i -p1 -mregexp -t"^.........  .*An? (graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss) of ([a-z ]+) is" gmine_at2 =\
 	@@grep 'contains roughly' look at %{P1} on ground%;/set mine_target=%{P2}
 
-/def -i -p9999 -ag -mregexp -t"^The ([a-z]+) contains roughly ([0-9]+) kg of ([a-z ]+)\.$" mmine_amount =\
+/def -i -p9999 -ag -msimple -t"No matches for \'contains roughly\'." gmine_gag1
+
+/def -i -p9999 -ag -mregexp -t"^The ([a-z]+) contains roughly ([0-9]+) kg of ([a-z ]+)\.$" gmine_amount =\
 	/set mine_amount=%{P2}%;/set mine_target=%{P3}%;\
 	/msq [@{BCgreen}%{P2} kg@{n}] of @{Cyellow}%{P3}@{n}
 
+/def -i -p9999 -mregexp -t"^No matches for \'\(" gmine_gag2 =\
+	/substitute ====================
 
 ;; Mine
 /def mine =\
@@ -274,129 +286,105 @@
 	/if (merch_st!~"mine" | merch_st_p!~mine_target)\
 		/set merch_st_p=%{mine_target}%;\
 		/set merch_st=mine%;\
-		/test mwield(mtool_mine)%;\
+		/test gwieldtool(mtool_mine)%;\
 	/endif%;\
 	/msq Mining '%{mine_target}' ...%;\
 	@@use mining at %{mine_target}
 
-/def -i mmine_move =\
+/def -i gmine_move =\
 	/if (merch_st=~"mine" & skill_st2=~"on")\
 		/prmoveitem %{1}%;\
 	/endif
 
-/def -i -p9999 -aBCwhite -mregexp -t"^You begin mining the ([a-z]+) ([a-z]+) and you manage to retrieve" mmine_get1 =\
-	/test mmine_move({P1},{P2})%;\
+/def -i -p9999 -aBCwhite -mregexp -t"^You begin mining the ([a-z]+) ([a-z]+) and you manage to retrieve" gmine_get1 =\
+	/test gmine_move({P1},{P2})%;\
 	@@grep 'contains roughly' look at %{P2} on ground
 
-/def -i -p9999 -aBCwhite -mregexp -t"^You mine the ([a-z]+) ([a-z]+) and retrieve" mmine_get2 =\
-	/test mmine_move({P1},{P2})
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; IDENTIFY
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def -i -p9999 -aBCblue -mregexp -t"^The following messages seem to vibrate from (.+):$" midentify_start =\
-	/if (merch_st=~"id" & id_st == 1)\
-		/set id_item=%{P1}%;\
-		/set id_str=%;\
-		/set id_st=2%;\
-		/eval /def -i -Eid_st==2 -p9999 -ag -mregexp -t"[a-z]" midentify_get = /set id_str=%%%{id_str} %%%*%;\
-	/endif
-
-/def -i -p9999 -ag -mregexp -t"best use this in" midentify_end1 =\
-	/if (merch_st=~"id" & id_st >= 1)\
-		/undef midentify_get%;\
-		/set id_str=%{id_str} %{P0}%;\
-		/msq [%{id_item}]:%;\
-		/msq %{id_str}%;\
-	/endif%;\
-	/set id_st=0
-
-/def id = /set id_st=1%;\
-	/if (merch_st!~"id" | merch_st_p!~{1})\
-		/set merch_st_p=%{1}%;\
-		/set merch_st=id%;\
-	/endif%;\
-	/if ({#} > 1) /set id_target=%{2}%;\
-	/else /set id_target=%;/endif%;\
-	@@cast identify at %{1}
+/def -i -p9999 -aBCwhite -mregexp -t"^You mine the ([a-z]+) ([a-z]+) and retrieve" gmine_get2 =\
+	/test gmine_move({P1},{P2})
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; MAKE REAGENT
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 /def mr =\
-/set mr_st=1%;\
-/if ({*}!~"") /set mr_target=%*%;/endif%;\
-/mworkbench_set %{mr_target}%;\
-/if (merch_st!~"mr" | merch_st_p!~mr_target)\
-	/set merch_st_p=%{mr_target}%;\
-	/set merch_st=mr%;\
-	/test mwield(wb_tool)%;\
+	/set mmr_st=1%;\
+	/if ({*}!~"") /set mmr_target=%*%;/endif%;\
+	/gsetworkbench %{mmr_target}%;\
+	/if (merch_st!~"mr" | merch_st_p!~mmr_target)\
+		/set merch_st_p=%{mmr_target}%;\
+		/set merch_st=mr%;\
+		/test gwieldtool(mwb_tool)%;\
 	/endif%;\
-/if (mr_target=~"olivine")		/set mr_spell=Acid Blast%;	/set mr_rn1=handful of olivine powder%;\
-/elseif (mr_target=~"stone")		/set mr_spell=Acid Shield%;	/set mr_rn1=stone cube%;\
-/elseif (mr_target=~"bloodstone")	/set mr_spell=Acid Storm%;	/set mr_rn1=pair of interlocked rings%;\
-/elseif (mr_target=~"highsteel")	/set mr_spell=Armour of Aether%;/set mr_rn1=small highsteel disc%;\
-/elseif (mr_target=~"leather")		/set mr_spell=Aura of Wind%;	/set mr_rn1=tiny leather bag%;\
-/elseif (mr_target=~"bronze")		/set mr_spell=Blast Vacuum%;	/set mr_rn1=bronze marble%;\
-/elseif (mr_target=~"steel")		/set mr_spell=Cold Ray%;	/set mr_rn1=steel arrowhead%;\
-/elseif (mr_target=~"electrum")		/set mr_spell=Electrocution%;	/set mr_rn1=small piece of electrum wire%;\
-/elseif (mr_target=~"glass")		/set mr_spell=Flame Shield%;	/set mr_rn1=small glass cone%;\
-/elseif (mr_target=~"fur")		/set mr_spell=Frost Shield%;	/set mr_rn1=grey fur triangle%;\
-/elseif (mr_target=~"copper")		/set mr_spell=Golden Arrow%;	/set mr_rn1=copper rod%;\
-/elseif (mr_target=~"onyx")		/set mr_spell=Hailstorm%;	/set mr_rn1=handful of onyx gravel%;\
-/elseif (mr_target=~"ebony")		/set mr_spell=Killing Cloud%;	/set mr_rn1=ebony tube%;\
-/elseif (mr_target=~"granite")		/set mr_spell=Lava Blast%;	/set mr_rn1=granite sphere%;\
-/elseif (mr_target=~"cobalt")		/set mr_spell=Lava Storm%;	/set mr_rn1=blue cobalt cup%;\
-/elseif (mr_target=~"iron")		/set mr_spell=Lightning Shield%;/set mr_rn1=small iron rod%;\
-/elseif (mr_target=~"tungsten")		/set mr_spell=Lightning Storm%;	/set mr_rn1=cluster of tungsten wires%;\
-/elseif (mr_target=~"platinum")		/set mr_spell=Magic Eruption%;	/set mr_rn1=tiny platinum hammer%;\
-/elseif (mr_target=~"quartz")		/set mr_spell=Repulsor Aura%;	/set mr_rn1=quartz prism%;\
-/elseif (mr_target=~"amethyst")		/set mr_spell=Shield of Detoxification%;/set mr_rn1=tiny amethyst crystal%;\
-/elseif (mr_target=~"mallorn")		/set mr_spell=Summon Carnal Spores%;/set mr_rn1=silvery bark chip%;\
-/elseif (mr_target=~"brass")		/set mr_spell=Vacuum Globe%;	/set mr_rn1=small fan%;\
-/else /set mr_spell=%;/set mr_rn1=%;/endif%;\
-/msq Make Reagent from '%{mr_target}' for spell '%{mr_spell}' with '%{wb_tool}' ...%;\
-@@use make reagent at %{mr_target} for $[tolower(mr_spell)] into pouch
+/if (mmr_target=~"olivine")		/set mmr_spell=Acid Blast%;	/set mmr_rn1=handful of olivine powder%;\
+/elseif (mmr_target=~"stone")		/set mmr_spell=Acid Shield%;	/set mmr_rn1=stone cube%;\
+/elseif (mmr_target=~"bloodstone")	/set mmr_spell=Acid Storm%;	/set mmr_rn1=pair of interlocked rings%;\
+/elseif (mmr_target=~"highsteel")	/set mmr_spell=Armour of Aether%;/set mmr_rn1=small highsteel disc%;\
+/elseif (mmr_target=~"leather")		/set mmr_spell=Aura of Wind%;	/set mmr_rn1=tiny leather bag%;\
+/elseif (mmr_target=~"bronze")		/set mmr_spell=Blast Vacuum%;	/set mmr_rn1=bronze marble%;\
+/elseif (mmr_target=~"steel")		/set mmr_spell=Cold Ray%;	/set mmr_rn1=steel arrowhead%;\
+/elseif (mmr_target=~"electrum")	/set mmr_spell=Electrocution%;	/set mmr_rn1=small piece of electrum wire%;\
+/elseif (mmr_target=~"glass")		/set mmr_spell=Flame Shield%;	/set mmr_rn1=small glass cone%;\
+/elseif (mmr_target=~"fur")		/set mmr_spell=Frost Shield%;	/set mmr_rn1=grey fur triangle%;\
+/elseif (mmr_target=~"copper")		/set mmr_spell=Golden Arrow%;	/set mmr_rn1=copper rod%;\
+/elseif (mmr_target=~"onyx")		/set mmr_spell=Hailstorm%;	/set mmr_rn1=handful of onyx gravel%;\
+/elseif (mmr_target=~"ebony")		/set mmr_spell=Killing Cloud%;	/set mmr_rn1=ebony tube%;\
+/elseif (mmr_target=~"granite")		/set mmr_spell=Lava Blast%;	/set mmr_rn1=granite sphere%;\
+/elseif (mmr_target=~"cobalt")		/set mmr_spell=Lava Storm%;	/set mmr_rn1=blue cobalt cup%;\
+/elseif (mmr_target=~"iron")		/set mmr_spell=Lightning Shield%;/set mmr_rn1=small iron rod%;\
+/elseif (mmr_target=~"tungsten")	/set mmr_spell=Lightning Storm%;/set mmr_rn1=cluster of tungsten wires%;\
+/elseif (mmr_target=~"platinum")	/set mmr_spell=Magic Eruption%;	/set mmr_rn1=tiny platinum hammer%;\
+/elseif (mmr_target=~"quartz")		/set mmr_spell=Repulsor Aura%;	/set mmr_rn1=quartz prism%;\
+/elseif (mmr_target=~"amethyst")	/set mmr_spell=Shield of Detoxification%;/set mmr_rn1=tiny amethyst crystal%;\
+/elseif (mmr_target=~"mallorn")		/set mmr_spell=Summon Carnal Spores%;/set mmr_rn1=silvery bark chip%;\
+/elseif (mmr_target=~"brass")		/set mmr_spell=Vacuum Globe%;	/set mmr_rn1=small fan%;\
+/else /set mmr_spell=%;/set mmr_rn1=%;/endif%;\
+/if (opt_usepouch=~"on" & set_pouchname!~"")\
+	/msq Make Reagent from '%{mmr_target}' for spell '%{mmr_spell}' into '%{set_pouchname} ...%;\
+	@@use make reagent at %{mmr_target} for $[tolower(mmr_spell)] into %{set_pouchname}%;\
+/else \
+	/msq Make Reagent from '%{mmr_target}' for spell '%{mmr_spell}' ...%;\
+	@@use make reagent at %{mmr_target} for $[tolower(mmr_spell)]%;\
+/endif
 
 
-/def -i -E(mr_st==1) -aCgreen -msimple -t"You craft some spell reagents." mr_done =\
-	/set mr_st=0%;\
-	/if (opt_havebelt=~"on") @@weigh %{mr_target}%;/endif
+;; Automagically weigh the remaining material after crafting, if belt is enabled
+/def -i -E(mmr_st==1) -aCgreen -msimple -t"You craft some spell reagents." gmmr_done =\
+	/set mmr_st=0%;\
+	/if (opt_havebelt=~"on") @@weigh %{mmr_target}%;/endif
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Chest creation status translation
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-/def -i gmtchest =\
+/def -i gchest_report =\
 	/substitute -p @{BCyellow}%{1}@{n} @{BCwhite}(@{n}@{BCgreen}%{2}@{n}/@{Cgreen}%{3}@{n}@{BCwhite})@{n}
 
-/def -i -msimple -t"The basic structure is forming up." gmtchest1 = /test gmtchest({*},1,16)
-/def -i -msimple -t"It slightly resembles a chest." gmtchest2 = /test gmtchest({*},2,16)
-/def -i -msimple -t"It is missing a lid." gmtchest3 = /test gmtchest({*},3,16)
-/def -i -msimple -t"It is still quite shaky." gmtchest4 = /test gmtchest({*},4,16)
-/def -i -msimple -t"It looks like a small chest but it could be so much more." gmtchest5 = /test gmtchest({*},5,16)
-/def -i -msimple -t"It does not look quite safe yet." gmtchest6 = /test gmtchest({*},6,16)
-/def -i -msimple -t"The base looks strong now but lid is still quite weak." gmtchest7 = /test gmtchest({*},7,16)
-/def -i -msimple -t"The chest is looking much larger." gmtchest8 = /test gmtchest({*},8,16)
-/def -i -msimple -t"The construction looks bigger and bigger." gmtchest9 = /test gmtchest({*},9,16)
-/def -i -msimple -t"The structure is now stronger than ever before." gmtchest10 = /test gmtchest({*},10,16)
-/def -i -msimple -t"The chest looks big enough to hold out several equipments." gmtchest11 = /test gmtchest({*},11,16)
-/def -i -msimple -t"The extra material has made the chest almost impossible to breach." gmtchest12 = /test gmtchest({*},12,16)
-/def -i -msimple -t"The chest construction looks quite large and safe." gmtchest13 = /test gmtchest({*},13,16)
-/def -i -msimple -t"The extra material in support-structure guarantees quality." gmtchest14 = /test gmtchest({*},14,16)
-/def -i -msimple -t"The chest looks just perfect and there is very little unfinished." gmtchest15 = /test gmtchest({*},15,16)
-/def -i -msimple -t"The construction looks very big and sturdy." gmtchest16 = /test gmtchest({*},16,16)
+;; Chest build status
+/def -i -msimple -t"The basic structure is forming up." gchest_build1 = /test gchest_report({*},1,16)
+/def -i -msimple -t"It slightly resembles a chest." gchest_build2 = /test gchest_report({*},2,16)
+/def -i -msimple -t"It is missing a lid." gchest_build3 = /test gchest_report({*},3,16)
+/def -i -msimple -t"It is still quite shaky." gchest_build4 = /test gchest_report({*},4,16)
+/def -i -msimple -t"It looks like a small chest but it could be so much more." gchest_build5 = /test gchest_report({*},5,16)
+/def -i -msimple -t"It does not look quite safe yet." gchest_build6 = /test gchest_report({*},6,16)
+/def -i -msimple -t"The base looks strong now but lid is still quite weak." gchest_build7 = /test gchest_report({*},7,16)
+/def -i -msimple -t"The chest is looking much larger." gchest_build8 = /test gchest_report({*},8,16)
+/def -i -msimple -t"The construction looks bigger and bigger." gchest_build9 = /test gchest_report({*},9,16)
+/def -i -msimple -t"The structure is now stronger than ever before." gchest_build10 = /test gchest_report({*},10,16)
+/def -i -msimple -t"The chest looks big enough to hold out several equipments." gchest_build11 = /test gchest_report({*},11,16)
+/def -i -msimple -t"The extra material has made the chest almost impossible to breach." gchest_build12 = /test gchest_report({*},12,16)
+/def -i -msimple -t"The chest construction looks quite large and safe." gchest_build13 = /test gchest_report({*},13,16)
+/def -i -msimple -t"The extra material in support-structure guarantees quality." gchest_build14 = /test gchest_report({*},14,16)
+/def -i -msimple -t"The chest looks just perfect and there is very little unfinished." gchest_build15 = /test gchest_report({*},15,16)
+/def -i -msimple -t"The construction looks very big and sturdy." gchest_build16 = /test gchest_report({*},16,16)
 
+;; Chest reinforcement status
+/def -i -msimple -t"The reinforcement looks totally incomplete." gchest_reinf1 = /test gchest_report({*},1,8)
+/def -i -msimple -t"The reinforcement is still quite weak." gchest_reinf2 = /test gchest_report({*},2,8)
+/def -i -msimple -t"The structure looks much stronger because of the reinforcement." gchest_reinf3 = /test gchest_report({*},3,8)
+/def -i -msimple -t"The reinforcement still lacks quality." gchest_reinf4 = /test gchest_report({*},4,8)
+/def -i -msimple -t"The reinforcement looks fine but it could be improved." gchest_reinf5 = /test gchest_report({*},5,8)
+/def -i -msimple -t"The reinforced chest looks quite sturdy now." gchest_reinf6 = /test gchest_report({*},6,8)
+/def -i -msimple -t"It would be a pain to force through the reinforcements." gchest_reinf7 = /test gchest_report({*},7,8)
+/def -i -msimple -t"Just a final touch and the reinforcement is fully complete." gchest_reinf8 = /test gchest_report({*},8,8)
 
-/def -i -msimple -t"The reinforcement looks totally incomplete." mtreinf1 = /test gmtchest({*},1,8)
-/def -i -msimple -t"The reinforcement is still quite weak." mtreinf2 = /test gmtchest({*},2,8)
-/def -i -msimple -t"The structure looks much stronger because of the reinforcement." mtreinf3 = /test gmtchest({*},3,8)
-/def -i -msimple -t"The reinforcement still lacks quality." mtreinf4 = /test gmtchest({*},4,8)
-/def -i -msimple -t"The reinforcement looks fine but it could be improved." mtreinf5 = /test gmtchest({*},5,8)
-/def -i -msimple -t"The reinforced chest looks quite sturdy now." mtreinf6 = /test gmtchest({*},6,8)
-/def -i -msimple -t"It would be a pain to force through the reinforcements." mtreinf7 = /test gmtchest({*},7,8)
-/def -i -msimple -t"Just a final touch and the reinforcement is fully complete." mtreinf8 = /test gmtchest({*},8,8)
-
-