Jump to content

8 Screenshots

About This File

This is an addition and extension of the Zaz Animation Pack and taraUltimateFurniturePack

 

The tara version of ZEP does no longer contain any furniture - they all become part of the taraUltimateFurniturePack (TUFP)
One major benefit of ZEP is to unify keywords and mechanics for ZAP and TUFP.
A modder can work with both resource packages with a single set of keywords.

 

This is a modders resource - a player will not have any benefit from ZEP because it provides nothing without a mod that uses ZEP.

 

########################################
Adaption to existing Zaz and Heretical items


All restraints that can be removed with a dagger or a sword have the keyword zbfxSliceable
All restraints that can be removed with a lock pick or by a blacksmith have the keyword zbfxLockable
All restraints have the keyword SexlabNoStrip
All restraints that prevents anal sex have the keyword zbfExtPreventAnal
All restraints that prevents vaginal sex have the keyword zbfExtPreventVaginal
All restraints that prevents oral sex have the keyword zbfExtPreventOral
All restraints that prevents boob sex have the keyword zbfExtPreventBreast
All HDT chains makes noise now (chain rattling) - (Based on the noisy work of theFirstHeretic - http://www.loverslab.com/topic/64543-heretical-resources-25-10-2016/?hl=heretic)
All furnitures that allows whipping have the keyword zbfExtWhippingDevice
All furnitures that allows whipping from front have the keyword zbfExtWhippingFromFront
All furnitures that allows whipping from back have the keyword zbfExtWhippingFromBack (front / back doesn't mean belly / butt - it means front or back of the furniture - a hint for placing a whip marker)
All blindfolds have the blindfold effect (can be changed in Zaz MCM)

 

With the help of those new keywords you can
1. determine who is able to remove restraints - a leather / rope binding shall be removable by anybody who has a dagger, a iron / steel binding shall be removeable by blacksmiths.
2. Use the prevent keywords to avoid scenes where a restraint would break immersion (eg. Anal Sex scene while a chastity belt is equipped)

 

 

########################################
New armor


Pony Harness - if you wear this harness you are walking like an animal
Strangulation Collar - the name says it all - deadly
Pony boots - if you have the assets of Devious Expansion installed (esp can be disabled)
Painful nipple clamps - lets feel some pain there
Arousal plug
Harness - alias for Devious Devices Harness
Harness Collar - alias for Devious Devices Harness Collar

 

 

########################################
New enchantments


Crawling - forces animal like movements
Strangulation - prevents breathing, leads to dead after a while (chocking noise, reduced FOV)
Blindfold - no blinking like Zaz Blindfold but removing effect while being in 3rd person mode
Arousal - periodical arousal attacks (acoustical and pose)
Tears - add tears and fear expression to the victims face

 

 

########################################
New spells


Tears - add tears and fear expression to the victims face for 30 seconds
Whipping Spell - ability spell (no cast but add to inventory) handles whipping with default effects (crying, camera shaking). 5 points health damage per hit, limited to <magnitude> (default 30). Casts tears spell when dispelled. Add this spell to the victim in a whipping package entry and remove it at package exit. This effect has the keyword zbfxWhippingEffectKeyword.
zbfxBDSMMechanicsSpell - enables complex BDSM game mechanics for whipping and furnitures - may cause papyrus stress, so don't add this spell to anyone

 

 

########################################
New misc items


zbfxRestraintsKey - an actor having this key in his inventory can unlock zbfxLockable restraints

 

 

########################################
Gallows for modders


Usually the Gallows furniture works automatically but the Gallows script provides several properties to adapt the functionality:
ManualControlled : if this is true the modder can switch from stage to stage by calling Continue() with a timer.
KillVictim : if this is true the victim gets killed after the last stage has finished
VictimState : conditional read only (GetVMScriptVariable) - see zbfxGallowsObject VictimState enums for possible values. Additionally a mod event "zbfxGallowsVictimDead" is send with victim as sender

 

Do not change the properties of the Gallows furniture - change the properties only at an instance:
(gallowsRef as zbfxGallowsObject).KillVictim = true
Or change it at the reference in the Creation Kit cell editor

 

 

########################################
New formlists


zbfxListWhippingFurniture - list of all furnitures where the victim can be whipped - better use zbfxWhippingDevice for filling alias
zbfxListExecutionFurniture - list of all furnitures where the victim can be executed - better use zbfFurnitureTypeDeadly for filling alias
zbfxListCageDoors - list of all cage doors

 

 

########################################
New keywords


zbfxEffectKeywordBDSM - for all magic effects that are related to BDSM (Bondage, Blindfold)
zbfxEffectKeywordArousal - actor is affected by a arousal armor or furniture
zbfxEffectKeywordBlindness - actor is affected by blindness effect
zbfxEffectKeywordBreathless - actor is affected by breathless effect
zbfxEffectKeywordCrawling - actor is crawling like an animal
zbfxEffectKeywordHogtied - actor is hogtied
zbfxEffectKeywordMilking - actor is in milker
zbfxEffectKeywordTears - actor has tears in his face
zbfxEffectKeywordNipplePain - actor feels pain in his nipples

 

zbfxBed - ZEP beds
zbfxFurniture - ZEP furnitures
zbfxFurnitureXZY - specific ZEP furniture
zbfxFurnitureWhipping - furnitures where the victim can be whipped
zbfxFurnitureWhippingFromBack - furnitures where victim can be whipped and the whipping actor has to stand behind the furniture
zbfxFurnitureWhippingFromFront - furnitures where victim can be whipped and the whipping actor has to stand in front of the furniture
zbfxFurnitureHasWristCuffs - this furniture has cuff animation objects, so existing cuffs shall be unequipped while using the furniture
zbfxFurnitureHasAnkleCuffs - this furniture has cuff animation objects, so existing cuffs shall be unequipped while using the furniture
zbfxFurnitureHasCollar - this furniture has collar animation objects, so existing collar shall be unequipped while using the furniture
zbfxFurnitureExposePussy - this furniture exposes the NPCs pussy / penis
zbfxFurnitureExposeAnus - this furniture exposes the NPCs anus
zbfxWornPainfull - armor that causes pain to the wearer
zbfxWornPreventAnal - armor that prevents anal sex
zbfxWornPreventOral - armor that prevents oral sex
zbfxWornPreventVaginal - armor that prevents vaginal sex
zbfxWornPreventBreast - armor that prevents boob jobs
zbfxWornSliceable - armor that is potentially destroyable by daggers and swords
zbfxWornAnalPlug - anal plug armor
zbfxWornVaginalPlug - vaginal plug armor
zbfxWornPlug - any plug
zbfxWornNoisy - armor that makes noise if the actor is moving (usually bells)
zbfxWornSlipperyPlug - a plug that usually gets lost when not fixed by a belt
zbfxWornLockPlugs - armor that locks slippery plugs so they remain in place
zbfxWornDeadly - Armor that kills the wearer after a certain amount of time
zbfxWornNippleClamps - Nipple clamps armor
zbfxWornArousal - armor that increase arousal of the wearer by time
zbfxWornLockable - armor that contains a lock that can be unlocked with a lock pick or a key
zbfxWornForged - armor that are forged at the actor - so only a blacksmith is able to remove it
zbfxWornScrewed - armor that are screwed at the actor - so only a blacksmith and people with tools are able to remove it
zbfxWornManualRemovable - armor that can be removed without any tools (when the removing actor has hands free)
zbfxRestraintsUnlockKeyword - if an actor that removes restraints has one item with this keyword in his inventory he can remove zbfxWornLockable restraints
zbfxRestraintsRemovingTool - a tool that can be used to unscrew screwed restraints (default is DBTortureTools)

 

zbfxJailDoorKeyword - used for linked references (eg. cage activators).

 

Location types
zbfxLocTypeBrothel - location is a brothel - the Location RefType Boss shall be the pimp (zbfxFactionPimp)
zbfxLocTypeTortureChamber - location is a torture chamber
zbfxLocTypeSlaveAuction - location is for slave auctions
zbfxLocTypeSlaveTrader - location is a slave trading shop
zbfxLocTypeSlaveTraining - location is a slave training zone
zbfxLocTypeWhoringZone - at this location whoring is allowed (brothels, harbors)
zbfxLocTypeExecution - location is for executions (search for keywords isExecutioner and isExecutionerGuard)

 

The keywords have no effect - but modders can use them for better control.
With the help of those new keywords you can
- determine who is able to remove restraints - a slice-able armor shall be removable by anybody who has a dagger, all other armor shall be removable by blacksmiths and key owners.
- Use the prevent keywords to avoid scenes where a restraint would break immersion (eg. Anal Sex scene while a butt plug is equipped)

 

 

########################################
New Location Ref Types


zbfxPlayerSlaveMarker - this is a marker where the player slave is teleported (usually a place in a cage or a jail) - alternative for CaptiveMarker that is used in vanilla jails
zbfxPlayerSlaveJailDoor - this is a jail door for the player slave jail
zbfxActionMarker# - location for special actions

 

 

########################################
New GlobalVariables


zbfxPlayerInCage - is 1 when player entered an zbfxEnterCageTrigger object or 0 when he entered a zbfxLeaveCageTrigger object
zbfxNPCInCage - is 1 when a NPC entered an zbfxEnterCageTrigger object or 0 when he entered a zbfxLeaveCageTrigger object
zbfxDebug - en- or disables debug mode (more traces etc.)

 

 

########################################
New Activators


zbfxEnterCageTrigger - send a zbfxEventCageEntered event and sets the zbfxPlayerInCage or zbfxNPCInCage to 1. If a door is linked with keyword zbfxJailDoorKeyword it is closed and locked. Door can also be set as property
zbfxLeaveCageTrigger - send a zbfxEventCageLeft event and sets the zbfxPlayerInCage or zbfxNPCInCage to 0. If a door is linked with keyword zbfxJailDoorKeyword it is closed and locked. Door can also be set as property

 

 

########################################
New Mod Events


zbfxEventCageEntered - sender has entered a zbfxEnterCageTrigger
zbfxEventCageLeft - sender has entered zbfxLeaveCageTrigger

 

 

########################################
New factions


zbfxFactionDancer - dancer (usually strip club dancers)
zbfxFactionPimp - pimps
zbfxFactionPimpHelper - assistant for pimps (usually in brothels)
zbfxFactionSlaveTransporter - member of a slave caravan
zbfxFactionWhore - a whore
zbfxFactionSlaveTrainer - trainer for slaves
zbfxFactionSlaveGuard - guards for slaves

 

 

########################################
Virtual faction member


zbfxSpecialActorRef - is ally to every faction member that shall be excluded by brothel mechanics - can be used in GetFactionRelation() to separate between guests and other actors. Eg. fill alias with GetFactionRelation(zbfxSpecialActorRef) != 3 to capture a guest (exclude pimps, slavers, slaves etc.)

 

 

########################################
Modders API

 

 

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)

 

 

 

 

########################################
Q & A


Why are you doing this?
1. Because the Zaz team seems to be retired
2. Some keywords are missing to support more immersion (ArmorMaterial , Sex hints)
3. I want to split the resources that I use in MariaEden away from MariaEden so that anybody can use it
4. I want to have a complete BDSM resource pack and don't want to adapt my own mods to different BDSM frameworks

 

Why are you duplicating some Devious Assets?
1. Because of missing keywords
2. I don't want to influence existing mods so I decided to copy instead of overwrite
3. Because of avoiding DDI or SLA dependencies if you plan to create a Zaz only mod
4. Because DDA mod dependency will be removed soon - then you can disable this mod and keep only its assets

 

Why no DDI / SLA Dependency
No DDI because it interferes the handling of restraints pretty much. Not sufficient for all kinds of mods. And there are missing parts like dealing with Armor Material (why shall a leather binding not be removable by someone with a dagger?)
No SLA because it stresses the Papyrus engine for a very small benefit. In most cases it is used to acquire a rapist or sex candidate - this exceptional use case can be covered with Papyrus StoryManager (eg. Hello Events) and a little bit brain without stressing the engine.
ZEP provides several mechanics - similar to DDI - but in contrast to DDI all mechanics are optional and have to be applied by the modder. Where a mechanics makes pretty much sense it is added but there are also the same items without effect.
DDI covers a different view: it removes control from modders and adds all mechanics to all items. This is nice for players and comfortable for modders - for the price of modding restrictions. DDI is like Playmobil and ZEP like Lego...

 

Future plans?
1. Fixing some ZaZ bugs
2. More devices
3. More restraints
4. Making some MariaEden Game mechanics available for all modders without MariaEden dependencies - for example the posing system, locked door system, whipping.
5. Removing DDA dependency completely

 

Skyrim SE?
Not possible until SKSE has been ported - same with Fallout 4.

 

 

########################################
Credits


The ZaZ Animation Pack Team
The Devious Devices Team
Ashal (Sexlab)
darkevilhum@loverslab (New animations)
theFirstHeretic@loverslab for his great new toys
11linda (freesound.org) for sound effects

 

 

########################################
The artists that has spend their knowledge or content or both - all credits belongs to them


d jans@loverslab
darkevilhum@loverslab
nosdregamon@loverslab
t.ara@loverslab
Tepi@loverslab

 


What's New in Version 1.08

Released

  • there is a 1.8 version for the new Zap 7 release and taraFurniturePack - it does not support all the new furnitures yet but at least it does not crash


×
×
  • Create New...