{
"description": [
"Bare of all furnishings, the room is an exact contrast to the one through the curtained arch. Where the other is blindingly bright, this one is completely black from ebonwood flooring to raftered ceiling. A single frosted globe is suspended from the ceiling over a strange series of golden interlacing circles and casts an eerie greenish glow upon the dark walls."
],
"id": 14359,
"location": "Solhaven",
"paths": [
"Obvious exits: out"
],
"tags": [
"travel waiting room"
],
"timeto": {
"14358": 0.2,
"8634": ";e open_regex = /^You open|^That is already open\\.$|^There doesn't seem to be any way to do that\\.$|^What were you referring to\\?|^I could not find what you were referring to\\./\n\nif UserVars.mapdb_use_day_pass == true\n $mapdb_day_passes ||= Hash.new\n unless DownstreamHook.list.include?('mapdb_day_pass_monitor')\n last_id = nil\n month_num = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12 }\n hook_proc = proc { |s|\n if s =~ /^Bold calligraphy states simply, \"This <a exist=\"(-?[0-9]+)\" noun=\"pass\">pass<\\/a> entitles the original purchaser to one \\(1\\) day of unlimited travel between the towns of (.+?) and (.+?), commencing/\n last_id = $1\n $mapdb_day_passes[last_id] = { :towns => [$2,$3] }\n elsif s =~ /^Bold red block letters spelling out \"EXPIRED\" appear to have been stamped across the face and reverse of the <a exist=\"(-?\\d+)\" noun=\"pass\">pass/\n $mapdb_day_passes[$1] = { :towns => [], :expires => Time.now }\n elsif s =~ /^\\[Your pass will expire on \\w+ (\\w+) *(\\d+) (\\d+):(\\d+):(\\d+) ET (\\d+)\\./\n if last_id\n $mapdb_day_passes[last_id][:expires] = Time.at(Time.new($6, month_num[$1], $2, $3, $4, $5, \"-05:00\").to_i)\n last_id = nil\n end\n elsif s =~ /quickly hands you a Chronomage day pass/ # fixme: xml\n UserVars.mapdb_find_day_pass = 'yes'\n end\n s\n }\n DownstreamHook.add('mapdb_day_pass_monitor', hook_proc)\n UserVars.mapdb_find_day_pass = 'yes'\n end\n\n if (UserVars.mapdb_find_day_pass == 'yes') and (bounty? !~ /^You have made contact with the child/) and ((bounty? !~ /provide a protective escort/) or (bounty? =~ /WAIT/))\n if (sack_name = UserVars.day_pass_sack)\n sack = (\n GameObj.inv.find { |obj| obj.noun == sack_name} ||\n GameObj.inv.find { |obj| obj.name == sack_name } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{Regexp.escape(sack_name)}$/i } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{sack_name.split(' ').collect { |n| Regexp.escape(n) }.join(\".*\\\\b\")}/i }\n )\n if sack\n close_sack = false\n if sack.contents.nil?\n open_result = dothistimeout \"open ##{sack.id}\", 10, open_regex\n if open_result =~ /^You open/\n close_sack = true\n else\n dothistimeout \"look in ##{sack.id}\", 10, /In the .*? you see/\n end\n end\n if sack.contents\n $mapdb_day_passes.keys.each { |id|\n unless sack.contents.any? { |obj| obj.id == id }\n $mapdb_day_passes.delete(id)\n end\n }\n sack.contents.find_all { |obj| obj.name == 'Chronomage day pass' }.each { |pass|\n next if $mapdb_day_passes[pass.id]\n dothistimeout \"look ##{pass.id}\", 10, /^Bold calligraphy states simply|^Bold red block letters spelling out \"EXPIRED\"|^I could not find/\n }\n UserVars.mapdb_find_day_pass = 'no'\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"Failed to find contents of day_pass_sack: #{sack_name}; go2 will not use Chronomage day pass travel.\"\n end\n end\n if close_sack\n dothistimeout \"close ##{sack.id}\", 3, /^You close/\n end\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"warning: Failed to find day_pass_sack: #{sack_name}; go2 will not use Chronomage day pass travel.\"\n end\n end\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"warning: day_pass_sack is not set; go2 will not use Chronomage day pass travel.\"\n echo \"Specify the location of your Chronomage day passes with #{$clean_lich_char}vars set day_pass_sack=CONTAINER\"\n end\n end\n end\n if $mapdb_day_passes.any? { |id,h| h[:towns].include?(\"Solhaven\") and h[:towns].include?(\"Wehnimer's Landing\") and h[:expires] > (Time.now + 10) }\n 0.8\n elsif UserVars.mapdb_buy_day_pass.to_s =~ /^(yes|true)$|\\bsol,wl\\b/i\n 7.4\n else\n nil\n end\nelse\n nil\nend\n\n",
"8916": ";e open_regex = /^You open|^That is already open\\.$|^There doesn't seem to be any way to do that\\.$|^What were you referring to\\?|^I could not find what you were referring to\\./\n\nif UserVars.mapdb_use_day_pass == true\n $mapdb_day_passes ||= Hash.new\n unless DownstreamHook.list.include?('mapdb_day_pass_monitor')\n last_id = nil\n month_num = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12 }\n hook_proc = proc { |s|\n if s =~ /^Bold calligraphy states simply, \"This <a exist=\"(-?[0-9]+)\" noun=\"pass\">pass<\\/a> entitles the original purchaser to one \\(1\\) day of unlimited travel between the towns of (.+?) and (.+?), commencing/\n last_id = $1\n $mapdb_day_passes[last_id] = { :towns => [$2,$3] }\n elsif s =~ /^Bold red block letters spelling out \"EXPIRED\" appear to have been stamped across the face and reverse of the <a exist=\"(-?\\d+)\" noun=\"pass\">pass/\n $mapdb_day_passes[$1] = { :towns => [], :expires => Time.now }\n elsif s =~ /^\\[Your pass will expire on \\w+ (\\w+) *(\\d+) (\\d+):(\\d+):(\\d+) ET (\\d+)\\./\n if last_id\n $mapdb_day_passes[last_id][:expires] = Time.at(Time.new($6, month_num[$1], $2, $3, $4, $5, \"-05:00\").to_i)\n last_id = nil\n end\n elsif s =~ /quickly hands you a Chronomage day pass/ # fixme: xml\n UserVars.mapdb_find_day_pass = 'yes'\n end\n s\n }\n DownstreamHook.add('mapdb_day_pass_monitor', hook_proc)\n UserVars.mapdb_find_day_pass = 'yes'\n end\n\n if (UserVars.mapdb_find_day_pass == 'yes') and (bounty? !~ /^You have made contact with the child/) and ((bounty? !~ /provide a protective escort/) or (bounty? =~ /WAIT/))\n if (sack_name = UserVars.day_pass_sack)\n sack = (\n GameObj.inv.find { |obj| obj.noun == sack_name} ||\n GameObj.inv.find { |obj| obj.name == sack_name } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{Regexp.escape(sack_name)}$/i } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{sack_name.split(' ').collect { |n| Regexp.escape(n) }.join(\".*\\\\b\")}/i }\n )\n if sack\n close_sack = false\n if sack.contents.nil?\n open_result = dothistimeout \"open ##{sack.id}\", 10, open_regex\n if open_result =~ /^You open/\n close_sack = true\n else\n dothistimeout \"look in ##{sack.id}\", 10, /In the .*? you see/\n end\n end\n if sack.contents\n $mapdb_day_passes.keys.each { |id|\n unless sack.contents.any? { |obj| obj.id == id }\n $mapdb_day_passes.delete(id)\n end\n }\n sack.contents.find_all { |obj| obj.name == 'Chronomage day pass' }.each { |pass|\n next if $mapdb_day_passes[pass.id]\n dothistimeout \"look ##{pass.id}\", 10, /^Bold calligraphy states simply|^Bold red block letters spelling out \"EXPIRED\"|^I could not find/\n }\n UserVars.mapdb_find_day_pass = 'no'\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"Failed to find contents of day_pass_sack: #{sack_name}; go2 will not use Chronomage day pass travel.\"\n end\n end\n if close_sack\n dothistimeout \"close ##{sack.id}\", 3, /^You close/\n end\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"warning: Failed to find day_pass_sack: #{sack_name}; go2 will not use Chronomage day pass travel.\"\n end\n end\n else\n if $mapdb_last_day_pass_message.nil? or ((Time.now - $mapdb_last_day_pass_message) > 5)\n $mapdb_last_day_pass_message = Time.now\n echo \"warning: day_pass_sack is not set; go2 will not use Chronomage day pass travel.\"\n echo \"Specify the location of your Chronomage day passes with #{$clean_lich_char}vars set day_pass_sack=CONTAINER\"\n end\n end\n end\n if $mapdb_day_passes.any? { |id,h| h[:towns].include?(\"Solhaven\") and h[:towns].include?('Icemule Trace') and h[:expires] > (Time.now + 10) }\n 0.8\n elsif UserVars.mapdb_buy_day_pass.to_s =~ /^(yes|true)$|\\bsol,imt\\b/i\n 7.4\n else\n nil\n end\nelse\n nil\nend\n\n"
},
"title": [
"[Solhaven, Beacon Tower]",
"[Solhaven, Departures]"
],
"uid": [
4223007
],
"wayto": {
"14358": "out",
"8634": ";e open_regex = /^You open|^That is already open\\.$|^There doesn't seem to be any way to do that\\.$|^What were you referring to\\?|^I could not find what you were referring to\\./\nget_regex = /^You (?:shield the opening of .*? from view as you |discreetly |carefully |deftly )?(?:remove|draw|grab|reach|slip|tuck|retrieve|already have|unsheathe|detach)|^Get what\\?$|^Why don't you leave some for others\\?$|^You need a free hand|^You already have that/\nput_regex = /^You (?:attempt to shield .*? from view as you |discreetly |carefully |absent-mindedly )?(?:put|place|slip|tuck|add|hang|drop|untie your|find an incomplete bundle|wipe off .*? and sheathe)|^A sigh of grateful pleasure can be heard as you feed .*? to your|^As you place|^I could not find what you were referring to\\.$|^Your bundle would be too large|^The .+ is too large to be bundled\\.|^As you place your|^The .*? is already a bundle|^Your .*? won't fit in .*?\\.$|^You can't .+ It's closed!$|^You can't put/\n\nsack_name = UserVars.day_pass_sack\nsack = (\n GameObj.inv.find { |obj| obj.noun == sack_name} ||\n GameObj.inv.find { |obj| obj.name == sack_name } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{Regexp.escape(sack_name)}$/i } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{sack_name.split(' ').collect { |n| Regexp.escape(n) }.join(\".*\\\\b\")}/i }\n)\nclose_sack = false\nif sack.contents.nil?\n open_result = dothistimeout \"open ##{sack.id}\", 10, open_regex\n if open_result =~ /^You open/\n close_sack = true\n else\n dothistimeout \"look in ##{sack.id}\", 10, /In the .*? you see/\n end\nend\nempty_hand\n$mapdb_day_passes.keys.each { |id|\n if $mapdb_day_passes[id][:expires] < (Time.now - 10)\n dothistimeout \"_drag ##{id} drop\", 2, /^As you let go|^You drop/\n $mapdb_day_passes.delete(id)\n end\n}\npass_id = $mapdb_day_passes.keys.find { |id| $mapdb_day_passes[id][:towns].include?(\"Solhaven\") and $mapdb_day_passes[id][:towns].include?(\"Wehnimer's Landing\") and $mapdb_day_passes[id][:expires] > (Time.now + 10) }\nif pass_id\n dothistimeout \"get ##{pass_id}\", 10, get_regex\nelsif UserVars.mapdb_buy_day_pass.to_s =~ /^(yes|true)$|\\bsol,wl\\b/i\n move 'out'\n fput 'unhide' if hidden? or invisible?\n dothistimeout \"ask agent for wehnimer\", 10, /says to you/\n result = dothistimeout \"ask agent for wehnimer\", 10, /don't have enough|quickly hands you/\n if (result =~ /don't have enough/) and $go2_get_silvers\n [ 'out', 'down', 'down', 'down', 'down', 'go ramp', 'east', 'northwest', 'north', 'north', 'northwest', 'north', 'north', 'north', 'north', 'north', 'north', 'northwest', 'east', 'go doors' ].each { |dir| move dir }\n dothistimeout 'withdraw 5000', 10, /carefully records|through the books/\n [ 'out', 'west', 'southeast', 'south', 'south', 'south', 'south', 'south', 'south', 'southeast', 'south', 'south', 'southeast', 'west', 'climb ramp', 'climb stairway', 'up', 'up', 'up', 'go building' ].each { |dir| move dir }\n fput 'unhide' if hidden? or invisible?\n result = dothistimeout \"ask agent for wehnimer\", 10, /says to you|don't have enough|quickly hands you/\n if result =~ /says to you/\n result = dothistimeout \"ask agent for wehnimer\", 10, /don't have enough|quickly hands you/\n end\n end\n if result =~ /quickly hands you/\n if GameObj.right_hand.noun == 'pass'\n pass_id = GameObj.right_hand.id\n elsif GameObj.left_hand.noun == 'pass'\n pass_id = GameObj.left_hand.id\n end\n fput \"look ##{pass_id}\"\n move 'go arch'\n elsif result =~ /don't have enough/\n echo 'error: You are too poor to buy Chronomage day passes. Turning off buy_day_pass setting.'\n sleep 3\n UserVars.mapdb_buy_day_pass = 'no'\n end\nend\nif pass_id\n result = dothistimeout \"raise ##{pass_id}\", 10, /whirlwind of color subsides|pass is expired|not valid for departures|As you go to raise your pass, you realize|Raise what/\n dothistimeout \"_drag ##{pass_id} ##{sack.id}\", 10, put_regex\nelse\n $mapdb_day_passes.clear\n UserVars.mapdb_find_day_pass = 'yes'\n $restart_go2 = true\nend\nfill_hand\nif close_sack\n dothistimeout \"close ##{sack.id}\", 2, /^You close/\nend\n\n",
"8916": ";e open_regex = /^You open|^That is already open\\.$|^There doesn't seem to be any way to do that\\.$|^What were you referring to\\?|^I could not find what you were referring to\\./\nget_regex = /^You (?:shield the opening of .*? from view as you |discreetly |carefully |deftly )?(?:remove|draw|grab|reach|slip|tuck|retrieve|already have|unsheathe|detach)|^Get what\\?$|^Why don't you leave some for others\\?$|^You need a free hand|^You already have that/\nput_regex = /^You (?:attempt to shield .*? from view as you |discreetly |carefully |absent-mindedly )?(?:put|place|slip|tuck|add|hang|drop|untie your|find an incomplete bundle|wipe off .*? and sheathe)|^A sigh of grateful pleasure can be heard as you feed .*? to your|^As you place|^I could not find what you were referring to\\.$|^Your bundle would be too large|^The .+ is too large to be bundled\\.|^As you place your|^The .*? is already a bundle|^Your .*? won't fit in .*?\\.$|^You can't .+ It's closed!$|^You can't put/\n\nsack_name = UserVars.day_pass_sack\nsack = (\n GameObj.inv.find { |obj| obj.noun == sack_name} ||\n GameObj.inv.find { |obj| obj.name == sack_name } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{Regexp.escape(sack_name)}$/i } ||\n GameObj.inv.find { |obj| obj.name =~ /\\b#{sack_name.split(' ').collect { |n| Regexp.escape(n) }.join(\".*\\\\b\")}/i }\n)\nclose_sack = false\nif sack.contents.nil?\n open_result = dothistimeout \"open ##{sack.id}\", 10, open_regex\n if open_result =~ /^You open/\n close_sack = true\n else\n dothistimeout \"look in ##{sack.id}\", 10, /In the .*? you see/\n end\nend\nempty_hand\n$mapdb_day_passes.keys.each { |id|\n if $mapdb_day_passes[id][:expires] < (Time.now - 10)\n dothistimeout \"_drag ##{id} drop\", 2, /^As you let go|^You drop/\n $mapdb_day_passes.delete(id)\n end\n}\npass_route = [\"Icemule Trace\",\"Solhaven\",];\npass_id = $mapdb_day_passes.find{|k,v| v[:towns].sort == pass_route.sort and v[:expires] > (Time.now + 10)}.first\nif pass_id\n dothistimeout \"get ##{pass_id}\", 10, get_regex\nelsif UserVars.mapdb_buy_day_pass.to_s =~ /^(yes|true)$|\\bsol,imt\\b/i\n move 'out'\n fput 'unhide' if hidden? or invisible?\n dothistimeout \"ask agent for icemule\", 10, /says to you/\n result = dothistimeout \"ask agent for icemule\", 10, /don't have enough|quickly hands you/\n if (result =~ /don't have enough/) and $go2_get_silvers\n [ 'out', 'down', 'down', 'down', 'down', 'go ramp', 'east', 'northwest', 'north', 'north', 'northwest', 'north', 'north', 'north', 'north', 'north', 'north', 'northwest', 'east', 'go doors' ].each { |dir| move dir }\n dothistimeout 'withdraw 5000', 10, /carefully records|through the books/\n [ 'out', 'west', 'southeast', 'south', 'south', 'south', 'south', 'south', 'south', 'southeast', 'south', 'south', 'southeast', 'west', 'climb ramp', 'climb stairway', 'up', 'up', 'up', 'go building' ].each { |dir| move dir }\n fput 'unhide' if hidden? or invisible?\n result = dothistimeout \"ask agent for icemule\", 10, /says to you|don't have enough|quickly hands you/\n if result =~ /says to you/\n result = dothistimeout \"ask agent for icemule\", 10, /don't have enough|quickly hands you/\n end\n end\n if result =~ /quickly hands you/\n if GameObj.right_hand.noun == 'pass'\n pass_id = GameObj.right_hand.id\n elsif GameObj.left_hand.noun == 'pass'\n pass_id = GameObj.left_hand.id\n end\n fput \"look ##{pass_id}\"\n move 'go arch'\n elsif result =~ /don't have enough/\n echo 'error: You are too poor to buy Chronomage day passes. Turning off buy_day_pass setting.'\n sleep 3\n UserVars.mapdb_buy_day_pass = 'no'\n end\nend\nif pass_id\n result = dothistimeout \"raise ##{pass_id}\", 10, /whirlwind of color subsides|pass is expired|not valid for departures|As you go to raise your pass, you realize|Raise what/\n dothistimeout \"_drag ##{pass_id} ##{sack.id}\", 10, put_regex\nelse\n $mapdb_day_passes.clear\n UserVars.mapdb_find_day_pass = 'yes'\n $restart_go2 = true\nend\nfill_hand\nif close_sack\n dothistimeout \"close ##{sack.id}\", 2, /^You close/\nend\n\n"
}
}