Estate Visibility Functional Spec

== General Description ==
What does this feature do?
* Defines a collection of regions that have their own visibility and access rules.
== Interface Requirements ==
How does the user use/activate this feature?
* Users access this feature via the Estate Tools
* Employees access this feature via the Grid tool and CSR tools on the internal web sites, and the god tools in the god menu of the viewer.
== Performance Requirements ==
Will this feature affect:
Client FPS? NO
Simulator FPS? NO
Database? NO
Asset server? NO
Network load? NO
Any other system? NO
== Design Constraints ==
Will this feature be unavailable on certain hardware? NO
Is this feature consistent with other features? YES
Is this feature Safe, Predictable, and Responsive? YES
Is this feature well integrated (where you expect to find it)? YES
Is this feature discoverable (newbie friendly)? adequate
Is this feature attractive or slick? adequate
== Feature Dependencies ==
=== Features that this feature will affect ===
Teleport
Login
Finder
Agent Online Status (presence)
World Map
=== Features that affect this feature ===
Estate tools
== Security risks ==
Does this feature give access to something it should not? Potentially. If a region's has its Estate ID set to main grid and its Parent Estate ID set to teen grid, a bridge between grids is formed.
== Usage Rules ==
* Access should follow visibility. If you can see it on the map, you should be able to teleport there.
** exception: when "Mainland Visible From Here" is used, estates you have access to will be hidden.
* Regions have an Estate ID and Parent Estate ID
* Users have a Parent Estate ID
* Users can see regions that have either an Estate ID or Parent Estate ID that matches the user's Parent Estate ID. (Ie. users on the teen grid have their parent estate set to 5, and can only see regions that are estate 5 or have a parent estate of 5, and thus cannot see the main grid (estate 1) or any estates on the main grid.)
is superseded by
* If an estate is set to "Visible from Mainland = YES", everyone can see it.
is superseded by
* If an Estate is set to "Visible from Mainland = NO", it will not be visible from any other estate (not only mainland)
** Other regions within the estate will be visible if you are on a region within the estate.
is superseded by
* If a user is on an estate access list or group access list, he will be able to see an Estate set to "Visible from Mainland = NO"
is superseded by
* If a user is on an Estate's Ban list, he will not be able to see the estate, regardless of other settings
is superseded by
* ??? Estate owners can always see their estate (even when banned?)
* ??? Estate managers can always see the estates they are managing. (even when banned?)
is superseded by
* If an estate has "Mainland Visible From Here = OFF", users on that estate will not be able to see other estates on the World Map
** Users on this estate can still teleport to the other estates via Finder, Landmarks, Home, or Teleport invite.
** This "Mainland Visible From Here" feature breaks the visible = accessible paradigm. 
** ??? When on this estate, you should be able to see other estates you have access to(?? Which rule wins? What if you are an owner of another estate?)
is superseded by
* Users with god mode turned on can see all estates.
Special cases
* if a region is marked as "prelude", you cannot enter it if your db flag is set to ...? (What keeps me from going back to OI via SLURL or LM?)
* Restricted users: 
** A user may be restricted to an estate if the user's Parent ID is set to the Estate ID of that estate. Eg. A region has Estate ID 1234 and Parent Estate ID of 1. A user with Parent Estate ID of 1234 will be able to see only that estate. Users from mainland (Estate 1) will be able to visit the estate because their Parent Estate is 1.
*Users with different Parent Estate ID's are segregated in the following ways.
** You cannot invite someone from another ParentEstate into your group
** You cannot find someone from another ParentEstate in your finder
** You cannot pass items to someone from another ParentEstate via their calling card, llGiveInventory, llGiveInventoryList, or dropping items on their avatar.
*** Users in god mode can bypass the finder and inventory restrictions.
Category:Functional Specs