parent $utility_objects object $places var $root dbref 'places var $root child_index 0 var $root fertile 0 var $root manager $places var $root owned [$places] var $root owners [$places] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $root inited 1 var $places default_place $nowhere var $places exit_starting_place $void var $root info ["Utility object for all 'Places' and items relating to places (such as exits)"] var $places starting_place $creation var $places default_new_place $place var $places coordinate_shortcuts 0 method place arg which; which = tosym(tostr(which) + "_place"); return (> get_var(which) <); . method is_place arg obj; return 1; if (!(obj.has_ancestor($place))) throw(~place, ("Object \"" + (obj.dbref())) + "\" is not a place."); . method set_place arg which, obj; .perms(sender(), 'manager); (> .is_place(obj) <); if (!(which in (.parameters()))) throw(~place, (toliteral(which) + " is not a valid entry try one of: ") + toliteral(.parameters())); set_var(which, obj); . method coordinates arg str; var x; for x in (coordinate_shortcuts) { if (match_template(x[1], str)) return x[2]; } throw(~coordnf, ("Unable to find coordinate shortcut for \"" + str) + "\"."); . method coordinate_shortcuts return coordinate_shortcuts; . method valid_coordinates arg radial, azimuth; if ((radial > 360) || (radial < (-1))) throw(~invcoord, "Radial coordinate must be from -1 to 360 degrees."); if ((azimuth > 90) || (azimuth < (-90))) throw(~invcoord, "Azimuth coordinate must be from 90 to -90 degrees."); . method invert_coordinates arg radial, azimuth; radial = radial + 180; if (radial > 360) radial = radial - 360; if (azimuth > 0) azimuth = -azimuth; else azimuth = abs(azimuth); return [radial, azimuth]; .