Room Information

Room description and navigation information for [River's Rest, Underbridge]
Description: Tall cattails and water grasses take up much of the space beneath the drawbridge above, and beyond them the Tempest River flows swiftly. Wavering shadows in the shallower waters indicate potential meals to the enterprising fishermen, while the soothing sound of moving water -- a chorus of gurgles and chuckles -- fills the air. A cast iron fish sits forelonely before a rickety shack nestled against the underside of the bridge and the bank.
Obvious Paths: Obvious paths: none
Map Image: rr-rivers_rest-1618766733.png
Tags: urchin-access, acantha leaf, calamia fruit, aloeas stem, soft white mushroom, withered black mushroom, striped heart mushroom, daggerstalk mushroom, flathead mushroom, genkew mushroom, blue trafel mushroom, water chestnut, stalk of cattail, stalk of bluebells, wild chokecherry, bright red cranberry, kylan berry, murdroot, wavepetal blossom, sunburst blossom, talneo root, banana leaf, meta:forage-sensed, meta:forage-sensed:night:2023-02, golden flax fronds, cassava root, small green quenepas, vibrant green plantain, bright yellow plantain, cone-shaped pineapple, bright orange, meta:forage-sensed:day:2024-05
Exit Command Connecting Room ID
go path 11006
;e ticket_nouns = [ 'scrip', 'scroll', 'document', 'parchment', 'paper', 'note' ]; check_ticket = proc { |test_id| look_result = dothistimeout "look ##{test_id}", 3, /reads, ".*#{checkname}|^You see nothing unusual\.|^It takes you a moment to focus|[0-9]+ silver/; if look_result =~ /reads, ".*#{checkname}/; test_id; else; nil; end }; force_go2 = proc { |room_num| go2_count = Script.running.find_all { |s| s.name == 'go2' }.length; force_start_script 'go2', [ room_num.to_s ]; wait_while { Script.running.find_all { |s| s.name == 'go2' }.length > go2_count } }; ticket_id = nil; if ticket_nouns.include?(GameObj.right_hand.noun); ticket_id = check_ticket.call(GameObj.right_hand.id); end; unless ticket_id; if ticket_nouns.include?(GameObj.left_hand.noun); if ticket_id = check_ticket.call(GameObj.left_hand.id); fput 'swap'; end; end; end; unless ticket_id; empty_hands; checked_containers = Array.new; for container in GameObj.inv; unless container.contents.nil? or container.contents.empty?; checked_containers.push(container.id); container.contents.find_all { |obj| ticket_nouns.include?(obj.noun) }.each { |obj| break if ticket_id = check_ticket.call(obj.id) }; end; break if ticket_id; end; if ticket_id; fput "get ##{ticket_id}"; end; end; unless ticket_id; status_tags; inv_result = dothis 'inventory containers', /^You are wearing/; status_tags; container_list = inv_result.scan(/exist="([0-9]+)"/).flatten; for container_id in (container_list - checked_containers); if container = GameObj.inv.find { |obj| obj.id == container_id }; open_result = dothis "open ##{container.id}", /^You open|^That is already open\.$/; if open_result == 'That is already open.'; fput "look in ##{container.id}"; end; container.contents.find_all { |obj| ticket_nouns.include?(obj.noun) }.each { |obj| break if ticket_id = check_ticket.call(obj.id) }; if ticket_id; fput "get ##{ticket_id}"; if open_result =~ /^You open/; fput "close ##{container.id}"; end; break; else; if open_result =~ /^You open/; fput "close ##{container.id}"; end; end; end; end; end; unless ticket_id; echo 'failed to find your ticket'; if $go2_get_silvers; echo 'going to buy one...'; sleep 2; force_go2.call(11748); fput 'unhide' if hidden? or invisible?; ask_result = dothis 'ask percy about ticket', /^Percy whispers, "Look \-\- I need [0-9]+ coins for something like that\.|^Percy quietly takes your money/; if ask_result =~ /^Percy whispers, "Look -- I need ([0-9]+) coins for something like that\./; cost = $1; force_go2.call(10911); fput 'unhide' if hidden? or invisible?; withdraw_result = dothis "withdraw #{cost} silvers", /hands you [0-9]+ silvers|don't seem to have that much/; unless withdraw_result =~ /hands you [0-9]+ silvers/; echo "you are too poor to go to Solhaven"; exit; end; force_go2.call(11748); fput 'unhide' if hidden? or invisible?; ask_result = dothis 'ask percy about ticket', /^Percy quietly takes your money/; end; force_go2.call(18677); else; echo 'for automatic ticket buying, use ;go2 getsilvers=on'; exit; end; end; fput 'unhide' if (hidden? or invisible?) and checkloot.include?('gangplank'); unless checkloot.include?('gangplank') and move('go gangplank'); echo 'waiting for the cutter...'; line = get until line =~ /^A small cutter glides up beneath the bridge. The crew swiftly extends a gangplank\.|^You hear a voice on the cutter shouting, "Are the passengers all aboard\?"/; fput 'unhide' if hidden? or invisible?; move 'go gangplank'; end 11749
go shack 18678
;e true 30711

Full Room Data

Full Room Info (JSON Data)
{ "climate": "moist", "description": [ "Tall cattails and water grasses take up much of the space beneath the drawbridge above, and beyond them the Tempest River flows swiftly. Wavering shadows in the shallower waters indicate potential meals to the enterprising fishermen, while the soothing sound of moving water -- a chorus of gurgles and chuckles -- fills the air. A cast iron fish sits forelonely before a rickety shack nestled against the underside of the bridge and the bank." ], "id": 18677, "image": "rr-rivers_rest-1618766733.png", "image_coords": [ 2216, 1564, 2240, 1586 ], "location": "the town of River's Rest", "paths": [ "Obvious paths: none" ], "tags": [ "urchin-access", "acantha leaf", "calamia fruit", "aloeas stem", "soft white mushroom", "withered black mushroom", "striped heart mushroom", "daggerstalk mushroom", "flathead mushroom", "genkew mushroom", "blue trafel mushroom", "water chestnut", "stalk of cattail", "stalk of bluebells", "wild chokecherry", "bright red cranberry", "kylan berry", "murdroot", "wavepetal blossom", "sunburst blossom", "talneo root", "banana leaf", "meta:forage-sensed", "meta:forage-sensed:night:2023-02", "golden flax fronds", "cassava root", "small green quenepas", "vibrant green plantain", "bright yellow plantain", "cone-shaped pineapple", "bright orange", "meta:forage-sensed:day:2024-05" ], "terrain": "riparian", "timeto": { "11006": 0.2, "11749": 300.0, "18678": 0.2, "30711": ";e Map[7].timeto['30714'].call;" }, "title": [ "[River's Rest, Underbridge]" ], "uid": [ 2101039 ], "wayto": { "11006": "go path", "11749": ";e ticket_nouns = [ 'scrip', 'scroll', 'document', 'parchment', 'paper', 'note' ]; check_ticket = proc { |test_id| look_result = dothistimeout \"look ##{test_id}\", 3, /reads, \".*#{checkname}|^You see nothing unusual\\.|^It takes you a moment to focus|[0-9]+ silver/; if look_result =~ /reads, \".*#{checkname}/; test_id; else; nil; end }; force_go2 = proc { |room_num| go2_count = Script.running.find_all { |s| s.name == 'go2' }.length; force_start_script 'go2', [ room_num.to_s ]; wait_while { Script.running.find_all { |s| s.name == 'go2' }.length > go2_count } }; ticket_id = nil; if ticket_nouns.include?(GameObj.right_hand.noun); ticket_id = check_ticket.call(GameObj.right_hand.id); end; unless ticket_id; if ticket_nouns.include?(GameObj.left_hand.noun); if ticket_id = check_ticket.call(GameObj.left_hand.id); fput 'swap'; end; end; end; unless ticket_id; empty_hands; checked_containers = Array.new; for container in GameObj.inv; unless container.contents.nil? or container.contents.empty?; checked_containers.push(container.id); container.contents.find_all { |obj| ticket_nouns.include?(obj.noun) }.each { |obj| break if ticket_id = check_ticket.call(obj.id) }; end; break if ticket_id; end; if ticket_id; fput \"get ##{ticket_id}\"; end; end; unless ticket_id; status_tags; inv_result = dothis 'inventory containers', /^You are wearing/; status_tags; container_list = inv_result.scan(/exist=\"([0-9]+)\"/).flatten; for container_id in (container_list - checked_containers); if container = GameObj.inv.find { |obj| obj.id == container_id }; open_result = dothis \"open ##{container.id}\", /^You open|^That is already open\\.$/; if open_result == 'That is already open.'; fput \"look in ##{container.id}\"; end; container.contents.find_all { |obj| ticket_nouns.include?(obj.noun) }.each { |obj| break if ticket_id = check_ticket.call(obj.id) }; if ticket_id; fput \"get ##{ticket_id}\"; if open_result =~ /^You open/; fput \"close ##{container.id}\"; end; break; else; if open_result =~ /^You open/; fput \"close ##{container.id}\"; end; end; end; end; end; unless ticket_id; echo 'failed to find your ticket'; if $go2_get_silvers; echo 'going to buy one...'; sleep 2; force_go2.call(11748); fput 'unhide' if hidden? or invisible?; ask_result = dothis 'ask percy about ticket', /^Percy whispers, \"Look \\-\\- I need [0-9]+ coins for something like that\\.|^Percy quietly takes your money/; if ask_result =~ /^Percy whispers, \"Look -- I need ([0-9]+) coins for something like that\\./; cost = $1; force_go2.call(10911); fput 'unhide' if hidden? or invisible?; withdraw_result = dothis \"withdraw #{cost} silvers\", /hands you [0-9]+ silvers|don't seem to have that much/; unless withdraw_result =~ /hands you [0-9]+ silvers/; echo \"you are too poor to go to Solhaven\"; exit; end; force_go2.call(11748); fput 'unhide' if hidden? or invisible?; ask_result = dothis 'ask percy about ticket', /^Percy quietly takes your money/; end; force_go2.call(18677); else; echo 'for automatic ticket buying, use ;go2 getsilvers=on'; exit; end; end; fput 'unhide' if (hidden? or invisible?) and checkloot.include?('gangplank'); unless checkloot.include?('gangplank') and move('go gangplank'); echo 'waiting for the cutter...'; line = get until line =~ /^A small cutter glides up beneath the bridge. The crew swiftly extends a gangplank\\.|^You hear a voice on the cutter shouting, \"Are the passengers all aboard\\?\"/; fput 'unhide' if hidden? or invisible?; move 'go gangplank'; end", "18678": "go shack", "30711": ";e true" } }

Nearby Rooms Data

Nearby Rooms on This Map

The following rooms are also shown on this map and can be clicked or navigated to:

Search Rooms

Enter a room ID number, UID starting with u, tag name, or any text to search in room titles and descriptions