Trader Shop Inventory Logger (script): Difference between revisions

From Elanthipedia
Jump to navigation Jump to search
No edit summary
No edit summary
Line 41: Line 41:
#Open Shoplist-Elanthipedia.txt
#Open Shoplist-Elanthipedia.txt
#Replace the |-| with |-''linebreak''|
#Replace the |-| with |-''linebreak''|
#Replace "GameDate" with the Elanthian date.
#Copy and paste the contents to List of Current Shops.
#Copy and paste the contents to List of Current Shops.


Line 53: Line 52:
#trigger {^\s+(a|an|some|the) (.+) for (\d+) silver (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_00 $shop2 $ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) silver (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_00 $shop2 $ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_000_0000 $shop2 $ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_000_0000 $shop2 $ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+\.\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_000_000 $shop2 $ShopCity} {shop}</pre>
#trigger {^\s+(a|an|some|the) (.+) for (\d+\.\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date $time $2 $roomname $3_000_000 $shop2 $ShopCity} {shop}
#trigger {^It has been (\d+) years, (\d+) days since the Victory of Lanival the Redeemer\.$} {#var year $1;#var yearday $2}
#trigger {^It is the (\d+)\w\w month of (\S+) the \S+ in the year of the (.+)\.$} {#var month $1;#var monthname $2;#var yearname $3}</pre>


==Changelog==
==Changelog==


*'''12/31/2013''': Added automated setting of "GameDate" used in Elanthipedia shop list; added log window alerts; updated parsing of shop script status (changes made to all scripts).
*'''12/29/2013''': Reduced "false matches" in the Shop2 script (when you attempt to SHOP a surface that doesn't exist due to inventory erroneously setting the shop surface variables).
*'''12/29/2013''': Reduced "false matches" in the Shop2 script (when you attempt to SHOP a surface that doesn't exist due to inventory erroneously setting the shop surface variables).
*'''5/15/2013''': Fixed triggers; scripts now close your containers before shopping to prevent conflicts with the SHOP verb.
*'''5/15/2013''': Fixed triggers; scripts now close your containers before shopping to prevent conflicts with the SHOP verb.
Line 65: Line 67:


==Scripts==
==Scripts==

===GameTime===

This is the script that, with the above triggers, sets the current $GameDate variable, which is used in the [[Trader-owned_Shops#List_of_Current_Shops|list of Trader shops on Elanthipedia]]. It ''must'' be named '''gametime.cmd''' to work. (The other scripts run gametime when needed.)

<pre>send time
waitforre ^It is currently
pause .5

evalmath MONTHFACTOR $month-1
evalmath DAYFACTOR %MONTHFACTOR*40
evalmath MONTHDAY $yearday-%DAYFACTOR
math MONTHDAY add 1
put #var GameDate %MONTHDAY $monthname $year

AnduSet:
if %MONTHDAY >= 1 && %MONTHDAY <= 4 then
{
put #var andu 1
put #var anduname Kertandu
}
if %MONTHDAY >= 5 && %MONTHDAY <= 8 then
{
put #var andu 2
put #var anduname Hodandu
}
if %MONTHDAY >= 9 && %MONTHDAY <= 12 then
{
put #var andu 3
put #var anduname Evandu
}
if %MONTHDAY >= 13 && %MONTHDAY <= 16 then
{
put #var andu 4
put #var anduname Truffandu
}
if %MONTHDAY >= 17 && %MONTHDAY <= 20 then
{
put #var andu 5
put #var anduname Havrandu
}
if %MONTHDAY >= 21 && %MONTHDAY <= 24 then
{
put #var andu 6
put #var anduname Elandu
}
if %MONTHDAY >= 25 && %MONTHDAY <= 28 then
{
put #var andu 7
put #var anduname Chandu
}
if %MONTHDAY >= 29 && %MONTHDAY <= 32 then
{
put #var andu 8
put #var anduname Glythandu
}
if %MONTHDAY >= 33 && %MONTHDAY <= 36 then
{
put #var andu 9
put #var anduname Faeandu
}
if %MONTHDAY >= 37 && %MONTHDAY <= 40 then
{
put #var andu 10
put #var anduname Tamsandu
}

Output:
echo
echo year: $year ($yearname)
echo season: $Time.season
echo month: $month ($monthname)
echo andu/week: $andu ($anduname)
echo day of month: %MONTHDAY ($Time.timeOfDay)
echo day of year: $yearday
echo
echo calendar date: $anduname, $GameDate
put #var save
put #parse GAMETIME SCRIPT DONE</pre>


===Shop2===
===Shop2===
Line 625: Line 706:
put .close
put .close
waitfor SCRIPT DONE
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE


put #echo >Log start logging Crossing shop inventory
send read listings board
send read listings board
waitforre shops? (is|are) open\.$
waitforre shops? (is|are) open\.$
Line 631: Line 715:
put #log >Shoplog.txt The following items are sold at Crossing's Market Plaza and are priced in copper Kronars [$date $time]:
put #log >Shoplog.txt The following items are sold at Crossing's Market Plaza and are priced in copper Kronars [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Crossing's Market Plaza===
put #log >Shoplist-Elanthipedia.txt ===Crossing's Market Plaza===
put #log >Shoplist-Elanthipedia.txt Last Updated: GameDate ($date)
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
Line 863: Line 947:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Crossing shop inventory
put #class arrive on
put #class arrive on
put #class shop off
put #class shop off
Line 869: Line 954:
put #play ScriptEnd
put #play ScriptEnd
put #flash
put #flash
put #parse SHOP SCRIPT DONE
exit</pre>
exit</pre>


Line 892: Line 978:
put .close
put .close
waitfor SCRIPT DONE
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE


put #echo >Log start logging Riverhaven shop inventory
send read listings board
send read listings board
waitforre shops? (is|are) open\.$
waitforre shops? (is|are) open\.$
Line 898: Line 987:
put #log >Shoplog.txt The following items are sold at Riverhaven's Knight's Hall and are priced in copper Lirums [$date $time]:
put #log >Shoplog.txt The following items are sold at Riverhaven's Knight's Hall and are priced in copper Lirums [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Riverhaven's Knight's Hall===
put #log >Shoplist-Elanthipedia.txt ===Riverhaven's Knight's Hall===
put #log >Shoplist-Elanthipedia.txt Last Updated: GameDate ($date)
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
Line 1,020: Line 1,109:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Riverhaven shop inventory
put #class arrive on
put #class arrive on
put #class shop off
put #class shop off
Line 1,026: Line 1,116:
put #play ScriptEnd
put #play ScriptEnd
put #flash
put #flash
put #parse SHOP SCRIPT DONE
exit</pre>
exit</pre>


Line 1,049: Line 1,140:
put .close
put .close
waitfor SCRIPT DONE
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE


put #echo >Log start logging Shard shop inventory
send read listings board
send read listings board
waitforre shops? (is|are) open\.$
waitforre shops? (is|are) open\.$
Line 1,055: Line 1,149:
put #log >Shoplog.txt The following items are sold at Shard's Crystal Plaza and are priced in copper Dokoras [$date $time]:
put #log >Shoplog.txt The following items are sold at Shard's Crystal Plaza and are priced in copper Dokoras [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Shard's Crystal Plaza===
put #log >Shoplist-Elanthipedia.txt ===Shard's Crystal Plaza===
put #log >Shoplist-Elanthipedia.txt Last Updated: GameDate ($date)
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
Line 1,158: Line 1,252:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Shard shop inventory
put #class arrive on
put #class arrive on
put #class shop off
put #class shop off
Line 1,164: Line 1,259:
put #play ScriptEnd
put #play ScriptEnd
put #flash
put #flash
put #parse SHOP SCRIPT DONE
exit</pre>
exit</pre>



Revision as of 15:33, 31 December 2013

Trader Shop Inventory Logger (script)
Category information
Front-end Genie
Author Isharon


Description

These scripts and triggers will run through every Trader-owned shop in the market plazas and log inventory, making it easier to find what you want and compare prices. The data is stored in Shoplog.txt. The columns of data are separated by tabs so that you can copy and paste it to Excel for easy sorting. temp

Instructions

Syntax

Once installed, the triggers will do most of the work automatically. You simply need to start the appropriate script in the same room as the listings board. It will go from room to room, shopping at all of the shops and logging the results.

Making a Spreadsheet in Excel

Shop Inventory

Template: Here is a template that you can use to make your own spreadsheet.

  1. Open Shoplog.txt
  2. Delete the underscores ( _ ) from the price column.
  3. Delete the periods ( . ) from the price column.
  4. Copy and paste the data from Shoplog.txt to the first sheet (labeled Inventory) in the Excel document.
  5. To convert prices to plats, divide column E by 10000.
  6. To convert the prices from Lirums to Kronars, multiply column E by 1.25.
  7. To convert the prices from Dokoras to Kronars, multiply column E by 1.385.


If you need help using these features in Excel, see How to Use Microsoft Excel.

Shop List

Simply copy and paste the contents of Shoplist.txt to the second sheet (labeled Shops) of the Excel file.

Updating Elanthipedia's Shop List

Elanthipedia has a list of Trader-owned shops. This script creates a list of shops for this page.

  1. Open Shoplist-Elanthipedia.txt
  2. Replace the |-| with |-linebreak|
  3. Copy and paste the contents to List of Current Shops.

Triggers

#trigger {^(Behind|In|On|Under) the (.+), you see:$} {#var shop2 $2} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) bronze (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_0	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) copper (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) gold (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_000	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_0000	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+) silver (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_00	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_000_0000	$shop2		$ShopCity} {shop}
#trigger {^\s+(a|an|some|the) (.+) for (\d+\.\d+)k platinum (Kronars|Lirums|Dokoras)$} {#log >Shoplog.txt $date	$time	$2	$roomname	$3_000_000	$shop2		$ShopCity} {shop}
#trigger {^It has been (\d+) years, (\d+) days since the Victory of Lanival the Redeemer\.$} {#var year $1;#var yearday $2}
#trigger {^It is the (\d+)\w\w month of (\S+) the \S+ in the year of the (.+)\.$} {#var month $1;#var monthname $2;#var yearname $3}

Changelog

  • 12/31/2013: Added automated setting of "GameDate" used in Elanthipedia shop list; added log window alerts; updated parsing of shop script status (changes made to all scripts).
  • 12/29/2013: Reduced "false matches" in the Shop2 script (when you attempt to SHOP a surface that doesn't exist due to inventory erroneously setting the shop surface variables).
  • 5/15/2013: Fixed triggers; scripts now close your containers before shopping to prevent conflicts with the SHOP verb.
  • 5/5/2013: Scripts now create logs (both in Elanthipedia format and spreadsheet format) of shops, their owners, their hours, and their locations.
  • 3/23/2013: Fixed error in shop2 match table.
  • 11/18/2012: Fixed bug in Plaza scripts that sometimes caused them to hang when shops are unoccupied.
  • 11/6/2012: Added support for more shop surfaces; reduced false matches.

Scripts

GameTime

This is the script that, with the above triggers, sets the current $GameDate variable, which is used in the list of Trader shops on Elanthipedia. It must be named gametime.cmd to work. (The other scripts run gametime when needed.)

send time
waitforre ^It is currently
pause .5

evalmath MONTHFACTOR $month-1
evalmath DAYFACTOR %MONTHFACTOR*40
evalmath MONTHDAY $yearday-%DAYFACTOR
math MONTHDAY add 1
put #var GameDate %MONTHDAY $monthname $year

AnduSet:
if %MONTHDAY >= 1 && %MONTHDAY <= 4 then
{
put #var andu 1
put #var anduname Kertandu
}
if %MONTHDAY >= 5 && %MONTHDAY <= 8 then
{
put #var andu 2
put #var anduname Hodandu
}
if %MONTHDAY >= 9 && %MONTHDAY <= 12 then
{
put #var andu 3
put #var anduname Evandu
}
if %MONTHDAY >= 13 && %MONTHDAY <= 16 then
{
put #var andu 4
put #var anduname Truffandu
}
if %MONTHDAY >= 17 && %MONTHDAY <= 20 then
{
put #var andu 5
put #var anduname Havrandu
}
if %MONTHDAY >= 21 && %MONTHDAY <= 24 then
{
put #var andu 6
put #var anduname Elandu
}
if %MONTHDAY >= 25 && %MONTHDAY <= 28 then
{
put #var andu 7
put #var anduname Chandu
}
if %MONTHDAY >= 29 && %MONTHDAY <= 32 then
{
put #var andu 8
put #var anduname Glythandu
}
if %MONTHDAY >= 33 && %MONTHDAY <= 36 then
{
put #var andu 9
put #var anduname Faeandu
}
if %MONTHDAY >= 37 && %MONTHDAY <= 40 then
{
put #var andu 10
put #var anduname Tamsandu
}

Output:
echo
echo year:		$year ($yearname)
echo season:		$Time.season
echo month:		$month ($monthname)
echo andu/week:	$andu ($anduname)
echo day of month:	%MONTHDAY ($Time.timeOfDay)
echo day of year:	$yearday
echo
echo calendar date:	$anduname, $GameDate
put #var save
put #parse GAMETIME SCRIPT DONE

Shop2

This is the script that actually shops each surface. It must be named shop2.cmd to work. (The other scripts run shop2 when needed.)

action goto end when ^There is nothing to buy here

setvar altar 0
setvar armoir 0
setvar bale 0
setvar bar 0
setvar barn 0
setvar barrel 0
setvar basket 0
setvar bedroll 0
setvar bench 0
setvar bin 0
setvar block 0
setvar blossom 0
setvar boar 0
setvar board 0
setvar bookcase 0
setvar bookshelf 0
setvar bookshelves 0
setvar bookstand 0
setvar box 0
setvar branch 0
setvar breakfront 0
setvar broomstick 0
setvar bucket 0
setvar buffet 0
setvar bull 0
setvar bureau 0
setvar bust 0
setvar butterflies 0
setvar butterfly 0
setvar cabinet 0
setvar carpet 0
setvar cart 0
setvar carton 0
setvar case 0
setvar catalog 0
setvar cauldron 0
setvar chair 0
setvar chest 0
setvar closet 0
setvar cloud 0
setvar coffer 0
setvar container 0
setvar cord 0
setvar cornucopia 0
setvar corral 0
setvar cot 0
setvar counter 0
setvar cradle 0
setvar crate 0
setvar cushion 0
setvar desk 0
setvar display 0
setvar drawer 0
setvar dresser 0
setvar drum 0
setvar dummies 0
setvar dummy 0
setvar easel 0
setvar endtable 0
setvar fence 0
setvar firepit 0
setvar footrest 0
setvar fountain 0
setvar framework 0
setvar garderobe 0
setvar goblin 0
setvar gourd 0
setvar grinder 0
setvar hand 0
setvar hanger 0
setvar hatstand 0
setvar head 0
setvar highboy 0
setvar hole 0
setvar hook 0
setvar hooks 0
setvar horse 0
setvar jar 0
setvar keg 0
setvar lattice 0
setvar locker 0
setvar mannequin 0
setvar mantel 0
setvar mantle 0
setvar moon 0
setvar net 0
setvar niche 0
setvar ogre 0
setvar pail 0
setvar pallet 0
setvar panel 0
setvar peccaries 0
setvar peccary 0
setvar pedestal 0
setvar peg 0
setvar pegboard 0
setvar pew 0
setvar pillow 0
setvar pipe 0
setvar pit 0
setvar plank 0
setvar planter 0
setvar platter 0
setvar plinth 0
setvar podium 0
setvar pole 0
setvar post 0
setvar pumpkin 0
setvar quilt 0
setvar rack 0
setvar rope 0
setvar rug 0
setvar salver 0
setvar sawhorse 0
setvar shelf 0
setvar shell 0
setvar shelves 0
setvar showcase 0
setvar sidebar 0
setvar sideboard 0
setvar skeleton 0
setvar skippet 0
setvar spittoon 0
setvar stable 0
setvar stand 0
setvar star 0
setvar stool 0
setvar stove 0
setvar stump 0
setvar sun 0
setvar table 0
setvar tomb 0
setvar tray 0
setvar tree 0
setvar trestle 0
setvar trough 0
setvar trunk 0
setvar turtle 0
setvar urn 0
setvar valet 0
setvar vanities 0
setvar vanity 0
setvar vat 0
setvar wall 0
setvar wardrobe 0
setvar waterwheel 0
setvar web 0
setvar webbing 0
setvar workbench 0
setvar worktable 0
ACTION setvar altar 1 WHEN ^\s+(an?|some|the).+\baltare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar armoir 1 WHEN ^\s+(an?|some|the).+\barmoire?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bale 1 WHEN ^\s+(an?|some|the).+\bbalee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bar 1 WHEN ^\s+(an?|some|the).+\bbare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar barn 1 WHEN ^\s+(an?|some|the).+\bbarne?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar barrel 1 WHEN ^\s+(an?|some|the).+\bbarrele?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar basket 1 WHEN ^\s+(an?|some|the).+\bbaskete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bedroll 1 WHEN ^\s+(an?|some|the).+\bbedrolle?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bench 1 WHEN ^\s+(an?|some|the).+\bbenche?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bin 1 WHEN ^\s+(an?|some|the).+\bbine?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar block 1 WHEN ^\s+(an?|some|the).+\bblocke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar blossom 1 WHEN ^\s+(an?|some|the).+\bblossome?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar boar 1 WHEN ^\s+(an?|some|the).+\bboare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar board 1 WHEN ^\s+(an?|some|the).+\bboarde?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bookcase 1 WHEN ^\s+(an?|some|the).+\bbookcasee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bookshelf 1 WHEN ^\s+(an?|some|the).+\bbookshelfe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bookshelves 1 WHEN ^\s+(an?|some|the).+\bbookshelvese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bookstand 1 WHEN ^\s+(an?|some|the).+\bbookstande?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar box 1 WHEN ^\s+(an?|some|the).+\bboxe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar branch 1 WHEN ^\s+(an?|some|the).+\bbranche?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar breakfront 1 WHEN ^\s+(an?|some|the).+\bbreakfronte?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar broomstick 1 WHEN ^\s+(an?|some|the).+\bbroomsticke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bucket 1 WHEN ^\s+(an?|some|the).+\bbuckete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar buffet 1 WHEN ^\s+(an?|some|the).+\bbuffete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bull 1 WHEN ^\s+(an?|some|the).+\bbulle?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bureau 1 WHEN ^\s+(an?|some|the).+\bbureaue?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar bust 1 WHEN ^\s+(an?|some|the).+\bbuste?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar butterflies 1 WHEN ^\s+(an?|some|the).+\bbutterfliese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar butterfly 1 WHEN ^\s+(an?|some|the).+\bbutterflye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cabinet 1 WHEN ^\s+(an?|some|the).+\bcabinete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar carpet 1 WHEN ^\s+(an?|some|the).+\bcarpete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cart 1 WHEN ^\s+(an?|some|the).+\bcarte?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar carton 1 WHEN ^\s+(an?|some|the).+\bcartone?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar case 1 WHEN ^\s+(an?|some|the).+\bcasee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar catalog 1 WHEN ^\s+(an?|some|the).+\bcataloge?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cauldron 1 WHEN ^\s+(an?|some|the).+\bcauldrone?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar chair 1 WHEN ^\s+(an?|some|the).+\bchaire?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar chest 1 WHEN ^\s+(an?|some|the).+\bcheste?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar closet 1 WHEN ^\s+(an?|some|the).+\bclosete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cloud 1 WHEN ^\s+(an?|some|the).+\bcloude?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar coffer 1 WHEN ^\s+(an?|some|the).+\bcoffere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar container 1 WHEN ^\s+(an?|some|the).+\bcontainere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cord 1 WHEN ^\s+(an?|some|the).+\bcorde?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cornucopia 1 WHEN ^\s+(an?|some|the).+\bcornucopiae?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar corral 1 WHEN ^\s+(an?|some|the).+\bcorrale?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cot 1 WHEN ^\s+(an?|some|the).+\bcote?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar counter 1 WHEN ^\s+(an?|some|the).+\bcountere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cradle 1 WHEN ^\s+(an?|some|the).+\bcradlee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar crate 1 WHEN ^\s+(an?|some|the).+\bcratee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar cushion 1 WHEN ^\s+(an?|some|the).+\bcushione?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar desk 1 WHEN ^\s+(an?|some|the).+\bdeske?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar display 1 WHEN ^\s+(an?|some|the).+\bdisplaye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar drawer 1 WHEN ^\s+(an?|some|the).+\bdrawere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar dresser 1 WHEN ^\s+(an?|some|the).+\bdressere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar drum 1 WHEN ^\s+(an?|some|the).+\bdrume?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar dummies 1 WHEN ^\s+(an?|some|the).+\bdummiese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar dummy 1 WHEN ^\s+(an?|some|the).+\bdummye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar easel 1 WHEN ^\s+(an?|some|the).+\beasele?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar endtable 1 WHEN ^\s+(an?|some|the).+\bendtablee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar fence 1 WHEN ^\s+(an?|some|the).+\bfencee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar firepit 1 WHEN ^\s+(an?|some|the).+\bfirepite?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar footrest 1 WHEN ^\s+(an?|some|the).+\bfootreste?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar fountain 1 WHEN ^\s+(an?|some|the).+\bfountaine?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar framework 1 WHEN ^\s+(an?|some|the).+\bframeworke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar garderobe 1 WHEN ^\s+(an?|some|the).+\bgarderobee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar goblin 1 WHEN ^\s+(an?|some|the).+\bgobline?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar gourd 1 WHEN ^\s+(an?|some|the).+\bgourde?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar grinder 1 WHEN ^\s+(an?|some|the).+\bgrindere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hand 1 WHEN ^\s+(an?|some|the).+\bhande?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hanger 1 WHEN ^\s+(an?|some|the).+\bhangere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hatstand 1 WHEN ^\s+(an?|some|the).+\bhatstande?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar head 1 WHEN ^\s+(an?|some|the).+\bheade?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar highboy 1 WHEN ^\s+(an?|some|the).+\bhighboye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hole 1 WHEN ^\s+(an?|some|the).+\bholee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hook 1 WHEN ^\s+(an?|some|the).+\bhooke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar hooks 1 WHEN ^\s+(an?|some|the).+\bhookse?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar horse 1 WHEN ^\s+(an?|some|the).+\bhorsee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar jar 1 WHEN ^\s+(an?|some|the).+\bjare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar keg 1 WHEN ^\s+(an?|some|the).+\bkege?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar lattice 1 WHEN ^\s+(an?|some|the).+\blatticee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar locker 1 WHEN ^\s+(an?|some|the).+\blockere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar mannequin 1 WHEN ^\s+(an?|some|the).+\bmannequine?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar mantel 1 WHEN ^\s+(an?|some|the).+\bmantele?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar mantle 1 WHEN ^\s+(an?|some|the).+\bmantlee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar moon 1 WHEN ^\s+(an?|some|the).+\bmoone?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar net 1 WHEN ^\s+(an?|some|the).+\bnete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar niche 1 WHEN ^\s+(an?|some|the).+\bnichee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar ogre 1 WHEN ^\s+(an?|some|the).+\bogree?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pail 1 WHEN ^\s+(an?|some|the).+\bpaile?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pallet 1 WHEN ^\s+(an?|some|the).+\bpallete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar panel 1 WHEN ^\s+(an?|some|the).+\bpanele?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar peccaries 1 WHEN ^\s+(an?|some|the).+\bpeccariese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar peccary 1 WHEN ^\s+(an?|some|the).+\bpeccarye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pedestal 1 WHEN ^\s+(an?|some|the).+\bpedestale?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar peg 1 WHEN ^\s+(an?|some|the).+\bpege?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pegboard 1 WHEN ^\s+(an?|some|the).+\bpegboarde?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pew 1 WHEN ^\s+(an?|some|the).+\bpewe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pillow 1 WHEN ^\s+(an?|some|the).+\bpillowe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pipe 1 WHEN ^\s+(an?|some|the).+\bpipee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pit 1 WHEN ^\s+(an?|some|the).+\bpite?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar plank 1 WHEN ^\s+(an?|some|the).+\bplanke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar planter 1 WHEN ^\s+(an?|some|the).+\bplantere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar platter 1 WHEN ^\s+(an?|some|the).+\bplattere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar plinth 1 WHEN ^\s+(an?|some|the).+\bplinthe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar podium 1 WHEN ^\s+(an?|some|the).+\bpodiume?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pole 1 WHEN ^\s+(an?|some|the).+\bpolee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar post 1 WHEN ^\s+(an?|some|the).+\bposte?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar pumpkin 1 WHEN ^\s+(an?|some|the).+\bpumpkine?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar quilt 1 WHEN ^\s+(an?|some|the).+\bquilte?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar rack 1 WHEN ^\s+(an?|some|the).+\bracke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar rope 1 WHEN ^\s+(an?|some|the).+\bropee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar rug 1 WHEN ^\s+(an?|some|the).+\bruge?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar salver 1 WHEN ^\s+(an?|some|the).+\bsalvere?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar sawhorse 1 WHEN ^\s+(an?|some|the).+\bsawhorsee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar shelf 1 WHEN ^\s+(an?|some|the).+\bshelfe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar shell 1 WHEN ^\s+(an?|some|the).+\bshelle?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar shelves 1 WHEN ^\s+(an?|some|the).+\bshelvese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar showcase 1 WHEN ^\s+(an?|some|the).+\bshowcasee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar sidebar 1 WHEN ^\s+(an?|some|the).+\bsidebare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar sideboard 1 WHEN ^\s+(an?|some|the).+\bsideboarde?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar skeleton 1 WHEN ^\s+(an?|some|the).+\bskeletone?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar skippet 1 WHEN ^\s+(an?|some|the).+\bskippete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar spittoon 1 WHEN ^\s+(an?|some|the).+\bspittoone?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar stable 1 WHEN ^\s+(an?|some|the).+\bstablee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar stand 1 WHEN ^\s+(an?|some|the).+\bstande?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar star 1 WHEN ^\s+(an?|some|the).+\bstare?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar stool 1 WHEN ^\s+(an?|some|the).+\bstoole?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar stove 1 WHEN ^\s+(an?|some|the).+\bstovee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar stump 1 WHEN ^\s+(an?|some|the).+\bstumpe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar sun 1 WHEN ^\s+(an?|some|the).+\bsune?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar table 1 WHEN ^\s+(an?|some|the).+\btablee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar tomb 1 WHEN ^\s+(an?|some|the).+\btombe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar tray 1 WHEN ^\s+(an?|some|the).+\btraye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar tree 1 WHEN ^\s+(an?|some|the).+\btreee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar trestle 1 WHEN ^\s+(an?|some|the).+\btrestlee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar trough 1 WHEN ^\s+(an?|some|the).+\btroughe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar trunk 1 WHEN ^\s+(an?|some|the).+\btrunke?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar turtle 1 WHEN ^\s+(an?|some|the).+\bturtlee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar urn 1 WHEN ^\s+(an?|some|the).+\burne?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar valet 1 WHEN ^\s+(an?|some|the).+\bvalete?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar vanities 1 WHEN ^\s+(an?|some|the).+\bvanitiese?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar vanity 1 WHEN ^\s+(an?|some|the).+\bvanitye?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar vat 1 WHEN ^\s+(an?|some|the).+\bvate?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar wall 1 WHEN ^\s+(an?|some|the).+\bwalle?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar wardrobe 1 WHEN ^\s+(an?|some|the).+\bwardrobee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar waterwheel 1 WHEN ^\s+(an?|some|the).+\bwaterwheele?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar web 1 WHEN ^\s+(an?|some|the).+\bwebe?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar webbing 1 WHEN ^\s+(an?|some|the).+\bwebbinge?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar workbench 1 WHEN ^\s+(an?|some|the).+\bworkbenche?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))
ACTION setvar worktable 1 WHEN ^\s+(an?|some|the).+\bworktablee?s?\b(?!.+(Dokoras?|Kronars?|Lirums?))

send shop
waitforre ^The following items contain goods for sale:

startshop:
if %altar = 1 then gosub shopvar altar
if %armoir = 1 then gosub shopvar armoir
if %bale = 1 then gosub shopvar bale
if %bar = 1 then gosub shopvar bar
if %barn = 1 then gosub shopvar barn
if %barrel = 1 then gosub shopvar barrel
if %basket = 1 then gosub shopvar basket
if %bedroll = 1 then gosub shopvar bedroll
if %bench = 1 then gosub shopvar bench
if %bin = 1 then gosub shopvar bin
if %block = 1 then gosub shopvar block
if %blossom = 1 then gosub shopvar blossom
if %boar = 1 then gosub shopvar boar
if %board = 1 then gosub shopvar board
if %bookcase = 1 then gosub shopvar bookcase
if %bookshelf = 1 then gosub shopvar bookshelf
if %bookshelves = 1 then gosub shopvar bookshelves
if %bookstand = 1 then gosub shopvar bookstand
if %box = 1 then gosub shopvar box
if %branch = 1 then gosub shopvar branch
if %breakfront = 1 then gosub shopvar breakfront
if %broomstick = 1 then gosub shopvar broomstick
if %bucket = 1 then gosub shopvar bucket
if %buffet = 1 then gosub shopvar buffet
if %bull = 1 then gosub shopvar bull
if %bureau = 1 then gosub shopvar bureau
if %bust = 1 then gosub shopvar bust
if %butterflies = 1 then gosub shopvar butterflies
if %butterfly = 1 then gosub shopvar butterfly
if %cabinet = 1 then gosub shopvar cabinet
if %carpet = 1 then gosub shopvar carpet
if %cart = 1 then gosub shopvar cart
if %carton = 1 then gosub shopvar carton
if %case = 1 then gosub shopvar case
if %catalog = 1 then gosub shopvar catalog
if %cauldron = 1 then gosub shopvar cauldron
if %chair = 1 then gosub shopvar chair
if %chest = 1 then gosub shopvar chest
if %closet = 1 then gosub shopvar closet
if %cloud = 1 then gosub shopvar cloud
if %coffer = 1 then gosub shopvar coffer
if %container = 1 then gosub shopvar container
if %cord = 1 then gosub shopvar cord
if %cornucopia = 1 then gosub shopvar cornucopia
if %corral = 1 then gosub shopvar corral
if %cot = 1 then gosub shopvar cot
if %counter = 1 then gosub shopvar counter
if %cradle = 1 then gosub shopvar cradle
if %crate = 1 then gosub shopvar crate
if %cushion = 1 then gosub shopvar cushion
if %desk = 1 then gosub shopvar desk
if %display = 1 then gosub shopvar display
if %drawer = 1 then gosub shopvar drawer
if %dresser = 1 then gosub shopvar dresser
if %drum = 1 then gosub shopvar drum
if %dummies = 1 then gosub shopvar dummies
if %dummy = 1 then gosub shopvar dummy
if %easel = 1 then gosub shopvar easel
if %endtable = 1 then gosub shopvar endtable
if %fence = 1 then gosub shopvar fence
if %firepit = 1 then gosub shopvar firepit
if %footrest = 1 then gosub shopvar footrest
if %fountain = 1 then gosub shopvar fountain
if %framework = 1 then gosub shopvar framework
if %garderobe = 1 then gosub shopvar garderobe
if %goblin = 1 then gosub shopvar goblin
if %gourd = 1 then gosub shopvar gourd
if %grinder = 1 then gosub shopvar grinder
if %hand = 1 then gosub shopvar hand
if %hanger = 1 then gosub shopvar hanger
if %hatstand = 1 then gosub shopvar hatstand
if %head = 1 then gosub shopvar head
if %highboy = 1 then gosub shopvar highboy
if %hole = 1 then gosub shopvar hole
if %hook = 1 then gosub shopvar hook
if %hooks = 1 then gosub shopvar hooks
if %horse = 1 then gosub shopvar horse
if %jar = 1 then gosub shopvar jar
if %keg = 1 then gosub shopvar keg
if %lattice = 1 then gosub shopvar lattice
if %locker = 1 then gosub shopvar locker
if %mannequin = 1 then gosub shopvar mannequin
if %mantel = 1 then gosub shopvar mantel
if %mantle = 1 then gosub shopvar mantle
if %moon = 1 then gosub shopvar moon
if %net = 1 then gosub shopvar net
if %niche = 1 then gosub shopvar niche
if %ogre = 1 then gosub shopvar ogre
if %pail = 1 then gosub shopvar pail
if %pallet = 1 then gosub shopvar pallet
if %panel = 1 then gosub shopvar panel
if %peccaries = 1 then gosub shopvar peccaries
if %peccary = 1 then gosub shopvar peccary
if %pedestal = 1 then gosub shopvar pedestal
if %peg = 1 then gosub shopvar peg
if %pegboard = 1 then gosub shopvar pegboard
if %pew = 1 then gosub shopvar pew
if %pillow = 1 then gosub shopvar pillow
if %pipe = 1 then gosub shopvar pipe
if %pit = 1 then gosub shopvar pit
if %plank = 1 then gosub shopvar plank
if %planter = 1 then gosub shopvar planter
if %platter = 1 then gosub shopvar platter
if %plinth = 1 then gosub shopvar plinth
if %podium = 1 then gosub shopvar podium
if %pole = 1 then gosub shopvar pole
if %post = 1 then gosub shopvar post
if %pumpkin = 1 then gosub shopvar pumpkin
if %quilt = 1 then gosub shopvar quilt
if %rack = 1 then gosub shopvar rack
if %rope = 1 then gosub shopvar rope
if %rug = 1 then gosub shopvar rug
if %salver = 1 then gosub shopvar salver
if %sawhorse = 1 then gosub shopvar sawhorse
if %shelf = 1 then gosub shopvar shelf
if %shell = 1 then gosub shopvar shell
if %shelves = 1 then gosub shopvar shelves
if %showcase = 1 then gosub shopvar showcase
if %sidebar = 1 then gosub shopvar sidebar
if %sideboard = 1 then gosub shopvar sideboard
if %skeleton = 1 then gosub shopvar skeleton
if %skippet = 1 then gosub shopvar skippet
if %spittoon = 1 then gosub shopvar spittoon
if %stable = 1 then gosub shopvar stable
if %stand = 1 then gosub shopvar stand
if %star = 1 then gosub shopvar star
if %stool = 1 then gosub shopvar stool
if %stove = 1 then gosub shopvar stove
if %stump = 1 then gosub shopvar stump
if %sun = 1 then gosub shopvar sun
if %table = 1 then gosub shopvar table
if %tomb = 1 then gosub shopvar tomb
if %tray = 1 then gosub shopvar tray
if %tree = 1 then gosub shopvar tree
if %trestle = 1 then gosub shopvar trestle
if %trough = 1 then gosub shopvar trough
if %trunk = 1 then gosub shopvar trunk
if %turtle = 1 then gosub shopvar turtle
if %urn = 1 then gosub shopvar urn
if %valet = 1 then gosub shopvar valet
if %vanities = 1 then gosub shopvar vanities
if %vanity = 1 then gosub shopvar vanity
if %vat = 1 then gosub shopvar vat
if %wall = 1 then gosub shopvar wall
if %wardrobe = 1 then gosub shopvar wardrobe
if %waterwheel = 1 then gosub shopvar waterwheel
if %web = 1 then gosub shopvar web
if %webbing = 1 then gosub shopvar webbing
if %workbench = 1 then gosub shopvar workbench
if %worktable = 1 then gosub shopvar worktable
goto end

shopvar:
put #var shopper $0
goto shop1

shop1:
send shop first $shopper
matchre shop2 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop2:
send shop second $shopper
matchre shop3 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop3:
send shop third $shopper
matchre shop4 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop4:
send shop fourth $shopper
matchre shop5 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop5:
send shop fifth $shopper
matchre shop6 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop6:
send shop sixth $shopper
matchre shop7 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop7:
send shop seventh $shopper
matchre shop8 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop8:
send shop eighth $shopper
matchre shop9 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop9:
send shop ninth $shopper
matchre shop10 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop10:
send shop tenth $shopper
matchre shop11 ^\[Type SHOP \[GOOD\] to see some details about
matchre return ^I could not find what you were referring to|^You can buy this item if you like
matchwait

shop11:
send shop eleventh $shopper
goto return

return:
return

end:
put #parse SCRIPT DONE
exit

Crossing's Market Plaza

start:
put #class rp on
put #class racial on
put #class shop on
put #class combat off
put #class arrive off
put #var currency Kronars
put #var ShopCity Crossing
var Order 0
put avoid !drag
waitforre ^You're now avoiding
put avoid !hold
waitforre ^You're now avoiding
put avoid !dancing
waitforre ^You're now avoiding
send stop play
waitforre ^You stop playing your song|^In the name of love|^But you're not performing anything
put .close
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE

put #echo >Log start logging Crossing shop inventory
send read listings board
waitforre shops? (is|are) open\.$

put #log >Shoplog.txt The following items are sold at Crossing's Market Plaza and are priced in copper Kronars [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Crossing's Market Plaza===
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt |-
put #log >Shoplist-Elanthipedia.txt !Shop Name!!Owner!!Hours!!Room

action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours $3 when ^'(.+)' is owned by (\S+) and will be open between (.+) Eastern time
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours $2 when ^'(\w+)'s Shop' will be open between (.+) Eastern time
action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours variable when ^'(.+)' is owned by (\S+) and will be open whenever \S+ is in attendance
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours variable when ^'(\w+)'s Shop' will be open whenever \S+ is in attendance
action setvariable RoomName $1 when ^\[Market Plaza, (.+)\]$
action setvariable RoomName $2 when ^\[Market Plaza (Cellar|Upstairs), (.+)\]$
action math Order add 1;put #log >Shoplist-Elanthipedia.txt |-|%ShopName||[[%ShopOwner]]||%ShopHours||%RoomName;put #log >Shoplist.txt %Order	$ShopCity	%RoomName	%ShopName	%ShopOwner	%ShopHours when It is currently (open|closed)\.$

move north

Sun_Room:
gosub arch
gosub door
gosub entrance
move east

Water_Room:
gosub arch
gosub door
gosub entrance
move northeast

Grass_Room:
gosub arch
gosub door
gosub entrance
move northwest

Solarium:
gosub arch
gosub door
gosub entrance
move southwest
move northwest

Forest_Room:
gosub arch
gosub door
gosub entrance
move southwest

Dimly-Lit_Storage:
gosub arch
gosub door
gosub entrance
move southeast

Meeting_Room:
gosub arch
gosub door
gosub entrance
move east
move southeast

Moon_Room:
gosub arch
gosub door
gosub entrance
move east

Armor_Room:
gosub arch
gosub door
gosub entrance
move west
move south

Lodge_Room:
gosub arch
gosub door
gosub entrance
move north
move northwest
move southwest

Gladiolus_Room:
gosub arch
gosub door
gosub entrance
move west

Fire_Room:
gosub arch
gosub door
gosub entrance
move east
move south

Library:
gosub arch
gosub door
gosub entrance
move north
move northeast
move go spiral ramp

Volcano_Room:
gosub arch
gosub door
gosub entrance
move east

Palm_Room:
gosub arch
gosub door
gosub entrance
move northeast

Ocean_Room:
gosub arch
gosub door
gosub entrance
move northwest

Tundra_Room:
gosub arch
gosub door
gosub entrance
move southwest

Jungle_Room:
gosub arch
gosub door
gosub entrance
move northwest

Savannah_Room:
gosub arch
gosub door
gosub entrance
move southwest

Desert_Room:
gosub arch
gosub door
gosub entrance
move southeast

River_Room:
gosub arch
gosub door
gosub entrance
move east
move go spiral ramp
move climb marble staircase

Tasting_Room:
gosub arch
gosub door
gosub entrance
move north

Bottle_Room:
gosub arch
gosub door
gosub entrance
move north

Stomping_Room:
gosub arch
gosub door
gosub entrance
move east

Barrel_Room:
gosub arch
gosub door
gosub entrance
move west
move north

Fermentation_Room:
gosub arch
gosub door
gosub entrance
move south
move west

Cooper_Room:
gosub arch
gosub door
gosub entrance
move east
move south
move south
move climb marble staircase
move south
goto done

arch:
setvariable portal arch
send look arch
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

door:
setvariable portal door
send look door
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

entrance:
setvariable portal entrance
send look entrance
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

shopinv:
move go %portal
put .shop2
waitfor SCRIPT DONE
move out
return

return:
return

done:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Crossing shop inventory
put #class arrive on
put #class shop off
put .open
waitfor SCRIPT DONE
put #play ScriptEnd
put #flash
put #parse SHOP SCRIPT DONE
exit

Riverhaven's Knight's Hall

start:
put #class rp on
put #class racial on
put #class shop on
put #class combat off
put #class arrive off
put #var currency Lirums
put #var ShopCity Riverhaven
var Order 0
put avoid !drag
waitforre ^You're now avoiding
put avoid !hold
waitforre ^You're now avoiding
put avoid !dancing
waitforre ^You're now avoiding
send stop play
waitforre ^You stop playing your song|^In the name of love|^But you're not performing anything
put .close
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE

put #echo >Log start logging Riverhaven shop inventory
send read listings board
waitforre shops? (is|are) open\.$

put #log >Shoplog.txt The following items are sold at Riverhaven's Knight's Hall and are priced in copper Lirums [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Riverhaven's Knight's Hall===
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt |-
put #log >Shoplist-Elanthipedia.txt !Shop Name!!Owner!!Hours!!Room

action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours $3 when ^'(.+)' is owned by (\S+) and will be open between (.+) Eastern time
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours $2 when ^'(\w+)'s Shop' will be open between (.+) Eastern time
action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours variable when ^'(.+)' is owned by (\S+) and will be open whenever \S+ is in attendance
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours variable when ^'(\w+)'s Shop' will be open whenever \S+ is in attendance
action setvariable RoomName $1 when ^\[Knight's Hall, (.+)\]$
action math Order add 1;put #log >Shoplist-Elanthipedia.txt |-|%ShopName||[[%ShopOwner]]||%ShopHours||%RoomName;put #log >Shoplist.txt %Order	$ShopCity	%RoomName	%ShopName	%ShopOwner	%ShopHours when It is currently (open|closed)\.$

move north

Rose_Room:
gosub arch
gosub door
gosub entrance
move north

Warrior_Room:
gosub arch
gosub door
gosub entrance
move north

Food_Plaza:
gosub arch
gosub door
gosub entrance
move north

Childrens_Room:
gosub arch
gosub door
gosub entrance
move south
move south
move south
move south
move northeast

Theatre_Room:
gosub arch
gosub door
gosub entrance
move northeast

World_Room:
gosub arch
gosub door
gosub entrance
move northeast

The_Back_Room:
gosub arch
gosub door
gosub entrance
move southwest
move southwest
move southwest
move northwest

Keep_Room:
gosub arch
gosub door
gosub entrance
move northwest

Dungeon_Room:
gosub arch
gosub door
gosub entrance
move northwest

Storage_Area:
gosub arch
gosub door
gosub entrance
move southeast
move southeast
move southeast
goto done

arch:
setvariable portal arch
send look arch
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

door:
setvariable portal door
send look door
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

entrance:
setvariable portal entrance
send look entrance
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

shopinv:
move go %portal
put .shop2
waitfor SCRIPT DONE
move out
return

return:
return

done:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Riverhaven shop inventory
put #class arrive on
put #class shop off
put .open
waitfor SCRIPT DONE
put #play ScriptEnd
put #flash
put #parse SHOP SCRIPT DONE
exit

Shard's Crystal Plaza

start:
put #class rp on
put #class racial on
put #class shop on
put #class combat off
put #class arrive off
put #var currency Dokoras
put #var ShopCity Shard
var Order 0
put avoid !drag
waitforre ^You're now avoiding
put avoid !hold
waitforre ^You're now avoiding
put avoid !dancing
waitforre ^You're now avoiding
send stop play
waitforre ^You stop playing your song|^In the name of love|^But you're not performing anything
put .close
waitfor SCRIPT DONE
put .gametime
waitfor GAMETIME SCRIPT DONE

put #echo >Log start logging Shard shop inventory
send read listings board
waitforre shops? (is|are) open\.$

put #log >Shoplog.txt The following items are sold at Shard's Crystal Plaza and are priced in copper Dokoras [$date $time]:
put #log >Shoplist-Elanthipedia.txt ===Shard's Crystal Plaza===
put #log >Shoplist-Elanthipedia.txt Last Updated: $GameDate ($date)
put #log >Shoplist-Elanthipedia.txt <br />
put #log >Shoplist-Elanthipedia.txt {|class="wikitable sortable"
put #log >Shoplist-Elanthipedia.txt |-
put #log >Shoplist-Elanthipedia.txt !Shop Name!!Owner!!Hours!!Room

action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours $3 when ^'(.+)' is owned by (\S+) and will be open between (.+) Eastern time
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours $2 when ^'(\w+)'s Shop' will be open between (.+) Eastern time
action setvariable ShopName $1;setvariable ShopOwner $2;setvariable ShopHours variable when ^'(.+)' is owned by (\S+) and will be open whenever \S+ is in attendance
action setvariable ShopName $1's Shop;setvariable ShopOwner $1;setvariable ShopHours variable when ^'(\w+)'s Shop' will be open whenever \S+ is in attendance
action setvariable RoomName $1 when ^\[Crystal Plaza, (.+)\]$
action math Order add 1;put #log >Shoplist-Elanthipedia.txt |-|%ShopName||[[%ShopOwner]]||%ShopHours||%RoomName;put #log >Shoplist.txt %Order	$ShopCity	%RoomName	%ShopName	%ShopOwner	%ShopHours when It is currently (open|closed)\.$

move north
move north

Play_Yard:
gosub arch
gosub door
gosub entrance
move south
move northeast

Prism_Room:
gosub arch
gosub door
gosub entrance
move southwest
move east

Oak_Room:
gosub arch
gosub door
gosub entrance
move west
move southeast

Luminous_Room:
gosub arch
gosub door
gosub entrance
move northwest
move southwest

Storage:
gosub arch
gosub door
gosub entrance
move northeast
move west

Food_Court:
gosub arch
gosub door
gosub entrance
move east
move northwest

The_Sea:
gosub arch
gosub door
gosub entrance
move southeast
move south
goto done

arch:
setvariable portal arch
send look arch
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

door:
setvariable portal door
send look door
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

entrance:
setvariable portal entrance
send look entrance
matchre shopinv ^'.+'.+It is currently open\.$
matchre return It is currently closed\.$|^An attendant approaches you and says
matchwait 2
return

shopinv:
move go %portal
put .shop2
waitfor SCRIPT DONE
move out
return

return:
return

done:
put #log >Shoplist-Elanthipedia.txt |}
put #log >Shoplist-Elanthipedia.txt
put #echo >Log finish logging Shard shop inventory
put #class arrive on
put #class shop off
put .open
waitfor SCRIPT DONE
put #play ScriptEnd
put #flash
put #parse SHOP SCRIPT DONE
exit

See Also

  • Trader-owned Shops: I periodically update this list of shops, their record owners, and their locations.
  • Trader Shop Inventory: This is a spreadsheet that I made from the information logged by these triggers.