GetWornItem - Actor
F4SE Member of: Actor Script
Requires F4SE version 0.2.0 or higher.
Obtains WornItem information about an actors Biped Slot.
Syntax
WornItem Function GetWornItem(int slotIndex, bool firstPerson = false) Native
Parameters
- slotIndex: The Biped Slot index to check.
- firstPerson: Specifies whether first or third person information for the Biped Slot should be returned.
Return Value
The WornItem for the given Biped Slot index.
Examples
Actor:WornItem wornItem= Game.GetPlayer().GetWornItem(34) Debug.Trace("Item: " + wornItem.Item) Debug.Trace("Model: " + wornItem.Model) Debug.Trace("ModelName: " + wornItem.ModelName) Debug.Trace("MaterialSwap: " + wornItem.MaterialSwap) Debug.Trace("Texture: " + wornItem.Texture)
{For each biped slot} Actor Player = Game.GetPlayer() int index = 0 int end = 43 const while (index < end) Actor:WornItem wornItem = Player.GetWornItem(index) Debug.Trace("Slot Index: " + index + ", " + wornItem) index += 1 EndWhile
Armor Slot Precedence
There is a precedence to Armor slot ordering which is from head-to-toe. An Armor form only properly exists on the highest slot it covers, lower slots will return none. Armors will superfically flag the cover slots it covers as occupied.
For example a helmet with goggles that covers the HEAD + EYE slots will have to be accessed via the HEAD slot. On the other hand, a gas mask that covers the EYE + MOUTH slots will need to be accessed via the EYE slot. If for some reason there is a mask that covers the HEAD + EYES + MOUTH then it will need to be accessed via the HEAD slot because its the highest one.
Scriptname WornExample extends Quest Actor Player int BipedEyes = 17 const bool ThirdPerson = false const Event OnQuestInit() Player = Game.GetPlayer() Actor:WornItem worn = GetWorn() Debug.TraceSelf(self, "OnQuestInit", "Worn:"+worn) EndEvent Actor:WornItem Function GetWorn() {Scans down the highest slot of an eye slot armor.} int slot = 0 While (slot <= BipedEyes) Actor:WornItem worn = Player.GetWornItem(slot, ThirdPerson) If (ItemFilter(worn.Item)) return worn EndIf slot += 1 EndWhile Debug.TraceSelf(self, "GetWorn", "No biped slot has a valid eyes armor.") return none EndFunction bool Function ItemFilter(Form item) Armor armo = item as Armor return armo && HasSlotMask(armo, kSlotMask47) EndFunction bool Function HasSlotMask(Armor armo, int value) Global return Math.LogicalAnd(armo.GetSlotMask(), value) == value EndFunction
Notes
- Returns a none struct beyond index 43 as those are actually invalid.
- Slots with empty forms are just empty slots.