IsInSameCurrentLocAsRef

Revision as of 22:31, 1 December 2021 by Jadkai (talk | contribs)

Description

IsInSameCurrentLocAsRef returns 1 if the two refs' current locations are the same location, or their current locations have a parent location matching the (optional) keyword.

The keyword is used to essentially define which "level" of location to test. For example, if two actors' current locations are each a different interior (their houses), and each of the their houses are attached to locations that have the same parent location (a town), then passing a keyword associated with that parent location (example: LocTypeTown), it will return true.

Not passing the keyword tests against the immediate location of the cell each reference is currently in (in other words, doesn't care if they share any of same parent locations).

Usually you will be supplying a keyword that helps define the "range" of the location you are looking at, above the particular immediate location the reference is placed. For example, are these two references in the same dungeon, or town, or Hold, rather than are these two reference in the same house, or room.

When used to fill a Location Alias

When you use IsInSameCurrentLocAsRef to fill a Location Alias, the game will first find the parent location of OtherRef that has the specified keyword. It will then select a Location at random within that parent Location, regardless of whether OtherRef is currently in the selected Location. To emphasize, OtherRef might not be in the selected Location or one of its children at all.

For example, if you fill an alias using IsInSameCurrentLocAsRef PlayerRef LocTypeHold while the player is standing in Candlehearth Hall in Eastmarch, this will select a location within Eastmarch hold, but it will not necessarily select the hold itself. It may even select a Location that has no other parent Location in common with the player other than Eastmarch hold. It could select a Location in Darkwater Crossing or in Kynesgrove, even though the player is standing in Windhelm. Using this example, if you want to force selection of the player's current hold, you must also use LocationHasKeyword as one of the conditions on the Location Alias.

Syntax

[ObjectREF.]IsInSameCurrentLocAsRef OtherRef LocationKeyword

Examples

player.IsInSameCurrentLocAsRef AlvorRef     ; returns true if both the player and AlvorRef are currently each in a cell in the same location
player.IsInSameCurrentLocAsRef AlvorRef LocTypeCity     ; returns true if both the player and AlvorRef are each currently in a cell in locations that have the keyword LocTypeCioty, or if any of the parents of their locations have that keyword.

See Also

Papyrus Version

GetCurrentLocation - ObjectReference
HasCommonParent - Location