view ggrtf-merchant.tf @ 684:6f0452997253

Fixed expiration.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 05 Oct 2007 17:28:52 +0000
parents 7e71eda8a1a7
children 29bf395e35f9
line wrap: on
line source

;;
;; GgrTF::Merchant - Merchant guild support and utility macros
;; (C) Copyright 2005-2007 Matti Hämäläinen (Ggr)
;;
;; This file (triggerset) is Free Software distributed under
;; GNU General Public License version 2.
;;
;; NOTICE! This file requires GgrTF (version 0.6.0 or later) to be loaded.
;;
/loaded GgrTF:Merchant

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; General settings and functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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}%;\
	/eval /def prmovestart =%;\
	/eval /def prmoveitem = @@put %%%* in my disc%;\
	/eval /def prmoveend =

/def -i mbox = /msq Move Items -> @{Cgreen}box@{n}%;\
	/eval /def prmovestart = @@drop collect%;\
	/eval /def prmoveitem = @@put %%%* in collect%%%;@@get %%%*%;\
	/eval /def prmoveend = @@get collect

/def -i mdrop = /msq Move Items -> @{Cgreen}drop@{n}%;\
	/eval /def prmovestart =%;\
	/eval /def prmoveitem = @@drop %%%*%;\
	/eval /def prmoveend =

/mdisc

;; Defaults for tools and workbenches
/set mforge_bs=metal
/set mforge_cp=lumber
/set mforge_gc=gems
/set mforge_gb=glass
/set mforge_ma=masonry
/set mforge_sw=fabric
/set mforge_sc=sculpture

/set mtool_bs=hammer
/set mtool_cp=saw
/set mtool_gc=hammer
/set mtool_gb=tube,tongs
/set mtool_ma=hammer
/set mtool_sw=needle
/set mtool_sc=hammer

/set mtool_mine=pick
/set mtool_lj=saw


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Fails & fumbles
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; We catch lots of these, but probably not nearly all.
;; Merchants can fumble and fail in so many wonderful ways, some of these
;; might be up to debate whether they are fumbles or fails. My criteria
;; has been that if it damages material, it is fumble, otherwise it is fail.

/prdeffail -k -F -r -t"^Bang! Bang! You forge "
/prdeffail -k -F    -t"You screw up big time and ruin your ore completely."
/prdeffail -k -F -r -t"^You bang and bang the .* but wood refuses to bend"
/prdeffail -k -F    -t"You slip and cut the ore in the wrong place."
/prdeffail -k -F    -t"You slip up and damage your ore."
/prdeffail -k -F -r -t"^Oops! Your grip on the .* slips, and you damage "
/prdeffail -k -F -r -t"^OUCH, you cut your hand while trying to skin "
/prdeffail -k -F -r -t"^OH NO! *You really were not paying attention "

/prdeffail -k -f -r -t"^OUCH! You swing your hammer and hit your own thumb."
/prdeffail -k -f -r -t"^You completely fail to amalgamate the (material|ore) properly\.$"
/prdeffail -k -f -r -t"^You fail to .+ into its base material\.$"
/prdeffail -k -f -r -t"^You try to label .* but cannot get it done properly\.$"
/prdeffail -k -f    -t"You mine for a long time but don't find anything."
/prdeffail -k -f    -t"You are unable to find a good splitting point."
/prdeffail -k -f -r -t"^You try to improve .*'s appearance but you fail\.$"
/prdeffail -k -f -r -t"^ARGH! *DARN! *CRAP! *You drop "
/prdeffail -k -f -r -t"^Oh shoot! You nick "
/prdeffail -k -f -r -t"^You fail to (alloy the substances properly|refine the ore properly|get the parts to fit|)\.$"


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Workbench and tool helper code
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Tool wielding function
/set merch_st=
/set merch_st_p=1
/set merch_wielded=

/def -i gwieldtool =\
	/if ({1}!~"")\
		/if (merch_wielded!~{1})\
			/if (merch_wielded!~"")\
				/msq Switching '%{merch_wielded}' -> '%{1}'%;\
				@@remove %{merch_wielded}%;\
			/else \
				/msq Wielding -> '%{1}'%;\
			/endif%;\
			/set merch_wielded=%{1}%;\
			@@wield %{1}%;\
		/endif%;\
	/endif

;; (Assume everything to be metal/bs by default)
/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"|{1}=~"amethyst")/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 mwb_forge=$$[mforge_%{mwb_type}]%;\
	/eval /set mwb_tool=$$[mtool_%{mwb_type}]


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LUMBERJACKING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/set merch_st=
/set merch_st_p=1
/set lj_target=

;A birch tree with smooth, papery bark is growing here.
;A tall mahogany tree is growing here.
;A dark grey elm tree stands here.
;A cedar tree with smooth bark stands here.
;A maple tree is growing here.
/def -i glumberjack_grep =\
	/if (regmatch("^pine|holly$",{1}))\
		/set lj_target=%{1} tree%;\
		/let _tmps=tree%;\
	/else \
		/set lj_target=%{1}%;\
		/let _tmps=%{1}%;\
	/endif%;\
	@@grep 'It can be cut down for ' look at %{_tmps} on ground


/def -i -F -p3 -mregexp -t"^.+  .* ([a-z][a-z]+) tree" glumberjack_at1 =\
	/test glumberjack_grep({P1})


/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 =\
	/if ({*}!~"") /set lj_target=%*%;/endif%;\
	/if (merch_st!~"lj" | merch_st_p!~lj_target)\
		/set merch_st_p=%{lj_target}%;\
		/set merch_st=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\.$" glumberjack_get =\
	/if (merch_st=~"lj" & skill_st2=~"on")\
		/let _i=%{P1}%;\
		/prmovestart%;\
		/while (_i > 0)\
			/prmoveitem log%;\
			/let _i=$[_i - 1]%;\
		/done%;\
		/prmoveend%;\
	/endif


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; AMALGAMATING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/def amal = /gsetworkbench %*%;\
	/if (merch_st!~"amal" | merch_st_p!~{*})\
		/set merch_st_p=%*%;\
		/set merch_st=amal%;\
		/test gwieldtool(mwb_tool)%;\
	/endif%;\
	/msq Amalgamating '%*' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
	@@use amalgamate at %* in %{mwb_forge}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; REFINING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/def refine = /gsetworkbench %*%;\
	/if (merch_st!~"ref" | merch_st_p!~{*})\
		/set merch_st_p=%*%;\
		/set merch_st=ref%;\
		/test gwieldtool(mwb_tool)%;\
	/endif%;\
	/msq Refining '%*' in '%{mwb_forge}' with '%{mwb_tool}' ...%;\
	@@use refining at %* in %{mwb_forge}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MINERAL CUTTING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/def mcut = /gsetworkbench %{1}%;\
	/if (merch_st!~"mcut" | merch_st_p!~{1})\
		/set merch_st_p=%{1}%;\
		/set merch_st=mcut%;\
		/test gwieldtool(mwb_tool)%;\
	/endif%;\
	/if ({#} > 1)\
		/let _mcuta=cut %{2}%;\
		/let _mcuts=%{2}g pieces%;\
	/else \
		/let _mcuta=%;\
		/let _mcuts=half%;\
	/endif%;\
	/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(",", " ", {*})]%;\
	/gsetworkbench %{_smat}%;\
	/if (merch_st!~"alloy" | merch_st_p!~{*})\
		/set merch_st_p=%{*}%;\
		/set merch_st=alloy%;\
		/test gwieldtool(mwb_tool)%;\
	/endif%;\
	/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]+)" galloy_check =\
	@@look at %{P1} in %{mwb_forge}


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; GEM CUTTING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/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 gwieldtool(mwb_tool)%;\
	/endif%;\
	/set gcut_gem=%*%;\
	/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." ggcut_get1 =\
	/if (merch_st=~"gcut" & skill_st2=~"on")\
		@@get gem from %{mwb_forge}%;\
		/prmoveitem gem%;\
		@@look at %{gcut_gem} in %{mwb_forge}%;\
	/endif


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MINING
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Autotargetting
/set mine_target=
/set mine_amount=
/set mine_grep=0

;A slab of crystal is embedded in the ground.
;A protrusion of granite is embedded in the ground.
;A deposit of uranium ore is embedded in the ground.
;A lode of copper ore is embedded in the ground.
;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" 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" gmine_at2 =\
;	@@grep 'contains roughly' look at %{P1} on ground%;/set mine_target=%{P2}

/def -i -p4 -mregexp -t"(graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss) of ([a-z ]+) (ore|is)?" gmine_at1 =\
	/set mine_target=%{P2}%;/set mine_grep=0%;@@grep 'contains roughly' look at %{P1} on ground

/def -i -p3 -mregexp -t"An? (graveyard|crag|slab|protrusion|lode|deposit|gloss|abyss)" gmine_at2 =\
	/set mine_grep=1%;/set mine_type=%{P1}

/def -i -p1 -Emine_grep==1 -mregexp -t" ([a-z ]+) (ore)? is embedded " gmine_at3 =\
	/set mine_target=%{P1}%;/set mine_grep=0%;@@grep 'contains roughly' look at %{mine_type} on ground


/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 =\
	/if ({*}!~"") /set mine_target=%*%;/endif%;\
	/if (merch_st!~"mine" | merch_st_p!~mine_target)\
		/set merch_st_p=%{mine_target}%;\
		/set merch_st=mine%;\
		/test gwieldtool(mtool_mine)%;\
	/endif%;\
	/msq Mining '%{mine_target}' ...%;\
	@@use mining at %{mine_target}

/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" 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" gmine_get2 =\
	/test gmine_move({P1},{P2})


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; MAKE REAGENT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/def mr =\
	/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 (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


;; 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 gchest_report =\
	/substitute -p @{BCyellow}%{1}@{n} @{BCwhite}(@{n}@{BCgreen}%{2}@{n}/@{Cgreen}%{3}@{n}@{BCwhite})@{n}

;; 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)