Mercurial > hg > batmud > ggrtf
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)