the main quest is zbfx and it is from type zbfxMain

Enumeration:

* gagSlot

* collarSlot

* armBinderSlot

* analPlugSlot

* chastityBeltSlot

* nippleClampsSlot

* ankleCuffSlot

* blindfoldSlot

* vaginalPlugSlot

* corsetSlot

* wristCuffSlot

restraintsSlots = int vector containing all slots

Functions:

GetApi() - returns the running instance of zbfx

function Moan(Actor victimRef,bool vibrate = false) - victim is moaning, in case the victim is gagged a gag sound is played

function Cry(Actor victimRef,bool vibrate = false) - victim is crying in pain, in case the victim is gagged a gag sound is played

function AddTears(Actor victimRef,int timeout = 30) - adds tears to the victims face (for a amount of seconds)

function ClearFaceExpression(Actor victimRef) - remove every facial expression override

function SetFaceExpressionShy(Actor victimRef,int strength = 50) - overrides facial expression shy

function SetFaceExpressionFear(Actor victimRef,int strength = 50) - overrides facial expression fear

bool function IsPlug(Form f) - returns true if the form is a plug

bool function IsPlugged(Actor victimRef) - returns true if the victim wears a plug

Armor function GetPlug(Actor victimRef) - returns a victims plug (vaginal or anal) or none if the victim doesn't wear a plug

Armor function GetAnalPlug(Actor victimRef) - returns a victims anal plug or none if the victim doesn't wear a plug

Armor function GetVaginalPlug(Actor victimRef) - returns a victims vaginal plug or none if the victim doesn't wear a plug

Armor function GetSlipperyPlug(Actor victimRef) - similar to GetPlug but returns a plug only if it is a splippery plug

bool function IsGag(Form f)

bool function IsGagged(Actor victimRef)

Form function GetGag(Actor victimRef)

bool function IsBelt(Form f)

bool function WearsBelt(Actor victimRef)

Form function GetBelt(Actor victimRef)

bool function IsCollar(Form f)

bool function WearsCollar(Actor victimRef)

Form function GetCollar(Actor victimRef)

bool function IsBlindfold(Form f)

bool function IsBlindfolded(Actor victimRef)

Form function GetBlindfold(Actor victimRef)

bool function ItemRemovable(Form restraints,Actor victimRef,Actor removerRef = none)

It returns true if the form can be removed by the removing actor (or by the victim himself if no removing actor is set).

It checks the faction, the inventory and the bounding state of the victim. For example armbinders and yokes prevents anything even if the victim has daggery, keys or lockpicks in their inventory.

function RemoveAllRestraints(Actor victimRef,Actor removerRef = none,ObjectReference destinationContainer = none, bool includeCollar = false)

It removes all removable restraints (see ItemRemovable).

Slicable restraints will be destroyed.

If the removing actor is a blacksmith every restraint will be destroyed.

Lockpicked or manual removable restraints are stored into the destinationContainer or dropped to the ground.

This function also checks complex dependencies - eg. if the victim wears a plug and a belt and the belt cannot be removed, the plug cannot be removed either.

bool function WearsAtLeastOneRemovableRestraints(Actor victimRef,Actor removerRef = none)

returns true if at least one restraint can be removed

function EquipRestraints(Actor victimRef,Form restraints,bool forceUnlock = false,string itemList = "")

Equips the restraints based on the locking state.

If forceUnlock is true it wont be locked at all.

itemList is a StorageUtil keyword - the item is added to the victims FormList (StorageUtil.FormListAdd(victimRef,itemList,restraints,false)). Use this function in scenes where you will equip and unequip restraints temporary without affecting other restraints.

If the object has the keyword zbfxLockable a short lock sound is played

function RemoveRestraints(Actor victimRef,Form restraints,ObjectReference destinationContainer = none,string itemList = "")

Removes the restraints without any lock logic

If the object has the keyword zbfxLockable a short un-lock sound is played

bool function IsRelevantForRestraintsLockState(Actor victimRef,Form item,bool equipped = false,bool checkRestraints = false)

returns true if this item is relevant for the lock state of any restraints. For example a dagger or lock-pick or a chastity belt.

function UpdateRestraintsLockState(Actor victimRef)

Updates the restraints lock state based on the current victims inventory.

If the victim wears armbinders or a yoke everything will be locked.

If the victim has a dagger or a sword all slice-able restraints will be unlocked

If the victim has a lock-pick and his lock-picking skill is at least 20 all lockable restraints will be unlocked

If the victim has an item with the keyword zbfxRestraintsUnlockKeyword all lockable restraints will be unlocked

If the victim wears a chastity belt all plugs will be locked.

If the victim doesn't wear a chastity belt all plugs will be unlocked.

function RemoveListedRestraints(Actor victimRef,string itemList, ObjectReference destinationContainer = none)

Removes all restraints that are stored in the itemList (see EquipRestraints). The itemList vector is removed after that.

Form[] function GetRestraints(Actor victimRef)

Returns a vector containing all restraints

Form function GetWornWristCuffs(Actor victimRef) - returns the victims wrist cuffs

Form function GetWornAnkleCuffs(Actor victimRef) - returns the victims ankle cuffs

function ResetPose(Actor victimRef) - resets any victims pose - even offset poses are reset

ObjectReference function FindWhippingDevice(ObjectReference center = none,int radius = 3000)

Searches for a whipping device (expensive call). If center is none the Player is used as center

ObjectReference function FindExecutionDevice(ObjectReference center = none,int radius = 3000)

Searches for an execution device (expensive call)

ObjectReference function FindCageDoor(ObjectReference center = none,int radius = 3000)

Searches for a cage door (expensive call)

ObjectReference function FindBed(ObjectReference center = none,int radius = 1000,bool ignoreUsed = true)

Searches for a bed - in opposite to SexLab.FindBed this function returns only beds that are not owned by anyone. (expensive call)

Armor function SelectBlindfold(Keyword shallHave = none,keyword shallNotHave = none,bool random = false)

Armor function SelectGag(Keyword shallHave = none,keyword shallNotHave = none,bool random = false)

Armor function SelectCollar(Keyword shallHave = none,keyword shallNotHave = none,bool random = false)

Armor function SelectLegBinding(Keyword shallHave = none,keyword shallNotHave = none,bool random = false)

Armor function SelectArmBinding(Keyword shallHave = none,keyword shallNotHave = none,bool random = false)

Allows selecting of BDSM armor with optional keyword filters. Other mods can register their restraints with RegisterRestraints().

If random is false zbfx opens an UIExtension menu for manual selection. If UIExtension is not installed a random restraint is choosen.

Example : zbfx.SelectGag(zbfxSliceable,zbfxPreventOral) - this would select a ring gag that can be removed with a dagger or a sword

function PrepareNPCRestraintsForFurniture(Actor npc,ObjectReference furn) - prepares actor for furniture (remove cuffs, collars in case that the furniture has cuff / collar animation objects)

function RestoreNPCRestraintsFromFurniture(Actor npc) - re-equips restraints that are removed by PrepareNPCForFurniture

ObjectReference function PreparePunishmentMarker(ObjectReference furnOrActor) - place furniture punishment marker - returns reference to marker (do not delete the marker, it is re-used)

function RemoveHeelsEffect(Actor npc) - disables and high heels effect, usably for furnitures

function RestoreHeelsEffect(Actor npc) - restores any high heels effect that was removed by RemoveHeelsEffect()

bool function IsBDSMFurniture(ObjectReference furn)

bool function IsFurnitureDeadly(ObjectReference furn)

bool function IsFurnitureWicked(ObjectReference furn)

bool function IsFurniturePainfull(ObjectReference furn)

function EnableBDSMMechanics(Actor victim) - enables complex mechanics: handles heels in furnitures, restraints in furnitures, punishment marker in furnitures and furniture types (deadly, painfull,wicked), whipping effects

function DisableBDSMMechanics(Actor victim) - disables complex mechanics

bool function RegisterRestraints(string modName,int version,Armor[] restraints)

bool function RegisterRestraintsFromForms(string modName,int version,Form[] restraints)

Stores this list of armor addons - used by the SelectXXX functions. The items are stored permanently in

SKSE\Plugins\StorageUtilData\Restraints\modName.json

so you have to register it only once. zbfx checks the version and if it differs from an already registered armor package the registration is refreshed.

function RegisterLocation(ObjectReference locationMarker,Actor operator = none) - registers a special location (eg. brothel) and it's main operator

Form[] function GetLocations(keyword locationType) - returns all registered locations filtered by location type

Actor function GetOperator(ObjectReference locationMarker) - returns the main operator for the registered location

Form[] function GetOperators(Faction fac) - returns all registered operators of a special faction (eg. zbfxFactionPimp)