Merge branch 'cumshots' into 'master'

New Splatters asset by Raven

See merge request 
This commit is contained in:
BondageProjects 2025-03-12 02:09:55 +00:00
commit 3ae41592c4
98 changed files with 447 additions and 53 deletions
BondageClub
Assets/Female3DCG
AssetStrings.csv
BodyMarkings
AllFours
Hogtied
OverTheHead
Preview
Splatters_Chest1.pngSplatters_Chest2.pngSplatters_Chest3.pngSplatters_Chest4.pngSplatters_Face1.pngSplatters_Face2.pngSplatters_Face3.pngSplatters_FlatMedium_NippleDrip.pngSplatters_FlatSmall_NippleDrip.pngSplatters_Forehead1.pngSplatters_Forehead2.pngSplatters_Forehead3.pngSplatters_Internal1.pngSplatters_Internal2.pngSplatters_Internal3.pngSplatters_Large_NippleDrip.pngSplatters_Normal_NippleDrip.pngSplatters_Small_NippleDrip.pngSplatters_Tummy1.pngSplatters_Tummy2.pngSplatters_Tummy3.pngSplatters_Tummy4.pngSplatters_XLarge_NippleDrip.png
Female3DCG.csvFemale3DCG.jsFemale3DCGExtended.jsLayerNames.csv
Screens
Character/Login
Inventory/ItemMouth/HorrorMuzzle
Scripts

View file

@ -300,6 +300,79 @@ BodyMarkingsFacePaintsSelect6,Apply
BodyMarkingsFacePaintsSelect7,Apply
BodyMarkingsFacePaintsSelect8,Apply
BodyMarkingsFacePaintsSelect9,Apply
BodyMarkingsSplattersModuleForehead1,Forehead 1
BodyMarkingsSplattersModuleForehead2,Forehead 2
BodyMarkingsSplattersModuleForehead3,Forehead 3
BodyMarkingsSplattersModuleFace1,Face 1
BodyMarkingsSplattersModuleFace2,Face 2
BodyMarkingsSplattersModuleFace3,Face 3
BodyMarkingsSplattersModuleChest1,Chest 1
BodyMarkingsSplattersModuleChest2,Chest 2
BodyMarkingsSplattersModuleChest3,Chest 3
BodyMarkingsSplattersModuleChest4,Chest 4
BodyMarkingsSplattersModuleTummy1,Tummy 1
BodyMarkingsSplattersModuleTummy2,Tummy 2
BodyMarkingsSplattersModuleTummy3,Tummy 3
BodyMarkingsSplattersModuleTummy4,Tummy 4
BodyMarkingsSplattersModuleInternal1,Internal Mouth
BodyMarkingsSplattersModuleInternal2,Internal Front
BodyMarkingsSplattersModuleInternal3,Internal Back
BodyMarkingsSplattersModuleNippleDrip,Nipple Drip
BodyMarkingsSplattersOptiona0,No
BodyMarkingsSplattersOptiona1,Yes
BodyMarkingsSplattersOptionb0,No
BodyMarkingsSplattersOptionb1,Yes
BodyMarkingsSplattersOptionc0,No
BodyMarkingsSplattersOptionc1,Yes
BodyMarkingsSplattersOptiond0,No
BodyMarkingsSplattersOptiond1,Yes
BodyMarkingsSplattersOptione0,No
BodyMarkingsSplattersOptione1,Yes
BodyMarkingsSplattersOptionf0,No
BodyMarkingsSplattersOptionf1,Yes
BodyMarkingsSplattersOptiong0,No
BodyMarkingsSplattersOptiong1,Yes
BodyMarkingsSplattersOptionh0,No
BodyMarkingsSplattersOptionh1,Yes
BodyMarkingsSplattersOptioni0,No
BodyMarkingsSplattersOptioni1,Yes
BodyMarkingsSplattersOptionj0,No
BodyMarkingsSplattersOptionj1,Yes
BodyMarkingsSplattersOptionk0,No
BodyMarkingsSplattersOptionk1,Yes
BodyMarkingsSplattersOptionl0,No
BodyMarkingsSplattersOptionl1,Yes
BodyMarkingsSplattersOptionm0,No
BodyMarkingsSplattersOptionm1,Yes
BodyMarkingsSplattersOptionn0,No
BodyMarkingsSplattersOptionn1,Yes
BodyMarkingsSplattersOptiono0,No
BodyMarkingsSplattersOptiono1,Yes
BodyMarkingsSplattersOptionp0,No
BodyMarkingsSplattersOptionp1,Yes
BodyMarkingsSplattersOptionq0,No
BodyMarkingsSplattersOptionq1,Yes
BodyMarkingsSplattersOptionr0,No
BodyMarkingsSplattersOptionr1,Yes
BodyMarkingsSplattersSelectBase,Select Mark
BodyMarkingsSplattersSelectForehead1,Apply
BodyMarkingsSplattersSelectForehead2,Apply
BodyMarkingsSplattersSelectForehead3,Apply
BodyMarkingsSplattersSelectFace1,Apply
BodyMarkingsSplattersSelectFace2,Apply
BodyMarkingsSplattersSelectFace3,Apply
BodyMarkingsSplattersSelectChest1,Apply
BodyMarkingsSplattersSelectChest2,Apply
BodyMarkingsSplattersSelectChest3,Apply
BodyMarkingsSplattersSelectChest4,Apply
BodyMarkingsSplattersSelectTummy1,Apply
BodyMarkingsSplattersSelectTummy2,Apply
BodyMarkingsSplattersSelectTummy3,Apply
BodyMarkingsSplattersSelectTummy4,Apply
BodyMarkingsSplattersSelectInternal1,Apply
BodyMarkingsSplattersSelectInternal2,Apply
BodyMarkingsSplattersSelectInternal3,Apply
BodyMarkingsSplattersSelectNippleDrip,Apply
BodyUpperFlatMediumDefault,Default
BodyUpperFlatMediumSelect,Select body overlay.
BodyUpperFlatSmallDefault,Default
@ -6377,7 +6450,7 @@ ItemHoodCreepyIronMaskSelectMode,Mask menu:
ItemHoodCreepyIronMaskOptionm0,Just mask
ItemHoodCreepyIronMaskOptionm1,Full hood
ItemHoodCreepyIronMaskModuleBlindfold,Blindfold
ItemHoodCreepyIronMaskSelectMode,Metal blindfold option:
ItemHoodCreepyIronMaskSelectBlindfold,Metal blindfold option:
ItemHoodCreepyIronMaskOptionb0,None
ItemHoodCreepyIronMaskOptionb1,Perforated
ItemHoodCreepyIronMaskOptionb2,Full
@ -6386,7 +6459,7 @@ ItemHoodCreepyIronMaskSelectSpike,Collar spikes option:
ItemHoodCreepyIronMaskOptions0,None
ItemHoodCreepyIronMaskOptions1,Equip spikes
ItemHoodCreepyIronMaskModuleNose,Nose guard
ItemHoodCreepyIronMaskSelectMode,Nose guard option:
ItemHoodCreepyIronMaskSelectNose,Nose guard option:
ItemHoodCreepyIronMaskOptionn0,None
ItemHoodCreepyIronMaskOptionn1,Add nose guard
ItemHoodCreepyIronMaskSetm0,SourceCharacter puts the Creepy Iron Mask on DestinationCharacterName head.
@ -6415,4 +6488,4 @@ ItemMouth3HorrorMuzzleSetNone,SourceCharacter puts on DestinationCharacter mouth
ItemMouth3HorrorMuzzleSetRivets,SourceCharacter puts on DestinationCharacter mouth a Horror Muzzle with rivets.
GlassesRoundSunglassesSelect,Select a style:
GlassesRoundSunglassesNormal,Behind hair
GlassesRoundSunglassesOver,Over hair
GlassesRoundSunglassesOver,Over hair

Can't render this file because it contains an unexpected character in line 6406 and column 135.

Binary file not shown.

After

(image error) Size: 22 KiB

Binary file not shown.

After

(image error) Size: 26 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 18 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 18 KiB

Binary file not shown.

After

(image error) Size: 22 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 10 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

Binary file not shown.

After

(image error) Size: 24 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 24 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 22 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 26 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 18 KiB

Binary file not shown.

After

(image error) Size: 24 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 14 KiB

Binary file not shown.

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 58 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 25 KiB

Binary file not shown.

After

(image error) Size: 17 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 18 KiB

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 18 KiB

Binary file not shown.

After

(image error) Size: 21 KiB

Binary file not shown.

After

(image error) Size: 11 KiB

Binary file not shown.

After

(image error) Size: 9.9 KiB

Binary file not shown.

After

(image error) Size: 8.6 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 14 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

Binary file not shown.

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 19 KiB

Binary file not shown.

After

(image error) Size: 23 KiB

Binary file not shown.

After

(image error) Size: 22 KiB

Binary file not shown.

After

(image error) Size: 16 KiB

View file

@ -24,6 +24,7 @@ BodyMarkings,WombTattoos,Womb Tattoos
BodyMarkings,BodyWritings,Body Writings
BodyMarkings,FaceScars,Face Scars
BodyMarkings,FacePaints,Face paints
BodyMarkings,Splatters,Splatters
BodyUpper,,Upper Body
BodyUpper,FlatMedium,Bulky Flat Chest
BodyUpper,FlatSmall,Flat Chest

1 AnkletLeft Anklet (Left)
24 BodyMarkings BodyWritings Body Writings
25 BodyMarkings FaceScars Face Scars
26 BodyMarkings FacePaints Face paints
27 BodyMarkings Splatters Splatters
28 BodyUpper Upper Body
29 BodyUpper FlatMedium Bulky Flat Chest
30 BodyUpper FlatSmall Flat Chest

View file

@ -5484,7 +5484,7 @@ var AssetFemale3DCG = [
Name: "Waspie1",
InventoryID: 206,
Fetish: ["Leather"],
Hide: ["Pussy",],
Hide: ["Pussy"],
Value: 60,
PoseMapping: {
...AssetPoseMapping.ClothLower,
@ -5508,7 +5508,7 @@ var AssetFemale3DCG = [
Name: "Waspie2",
InventoryID: 207,
Fetish: ["Leather"],
Hide: ["Pussy",],
Hide: ["Pussy"],
Value: 80,
PoseMapping: {
...AssetPoseMapping.ClothLower,
@ -5534,7 +5534,7 @@ var AssetFemale3DCG = [
...AssetPoseMapping.ClothLower,
KneelingSpread: PoseType.HIDE,
},
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: [
"ItemDevicesStrapOnSmooth",
"ItemDevicesStrapOnStuds",
@ -5552,7 +5552,7 @@ var AssetFemale3DCG = [
Fetish: ["Latex"],
Priority: 21,
Value: 60,
Hide: ["ItemVulvaPiercings", "Garters", "Pussy",],
Hide: ["ItemVulvaPiercings", "Garters", "Pussy"],
HideItem: [
"ItemButtAnalBeads2",
"SocksSocksFur",
@ -5583,7 +5583,7 @@ var AssetFemale3DCG = [
Alpha: [
{ Group: ["Panties", "ItemPelvis"], Masks: [[0, 0, 500, 540]] },
],
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: ["ItemDevicesStrapOnSmooth", "ItemDevicesStrapOnStuds"],
Expose: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Attribute: ["Skirt"],
@ -5596,7 +5596,7 @@ var AssetFemale3DCG = [
Alpha: [
{ Group: ["Panties", "ItemPelvis"], Masks: [[0, 0, 500, 580]] },
],
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: ["ItemDevicesStrapOnSmooth", "ItemDevicesStrapOnStuds"],
Expose: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Attribute: ["Skirt"],
@ -5654,7 +5654,7 @@ var AssetFemale3DCG = [
Alpha: [
{ Group: ["Panties", "ItemPelvis"], Masks: [[0, 0, 500, 580]] },
],
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: ["ItemDevicesStrapOnSmooth", "ItemDevicesStrapOnStuds"],
Expose: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Attribute: ["Skirt"],
@ -6367,7 +6367,7 @@ var AssetFemale3DCG = [
InventoryID: 239,
Fetish: ["Leather"],
Value: 32,
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: ["ItemDevicesStrapOnSmooth", "ItemDevicesStrapOnStuds"],
Attribute: ["Skirt"],
},
@ -6408,7 +6408,7 @@ var AssetFemale3DCG = [
[PoseType.DEFAULT]: 0,
KneelingSpread: 90,
},
Hide: ["ItemVulvaPiercings", "Panties", "Pussy",],
Hide: ["ItemVulvaPiercings", "Panties", "Pussy"],
HideItem: [
"ItemButtAnalBeads2",
"SocksSocksFur",
@ -6442,7 +6442,7 @@ var AssetFemale3DCG = [
LegsClosed: PoseType.DEFAULT,
Spread: PoseType.DEFAULT,
},
Hide: ["Pussy",],
Hide: ["Pussy"],
HideItem: ["ItemDevicesStrapOnSmooth", "ItemDevicesStrapOnStuds"],
CreateLayerTypes: ["typed"],
Attribute: ["Skirt"],
@ -8875,7 +8875,7 @@ var AssetFemale3DCG = [
ParentItem: "ItemPelvisFemPelvisHarness",
Block: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Audio: "Buckle",
DefaultColor: ["#454545","#909090"],
DefaultColor: ["#454545", "#909090"],
Layer: [
{
Name: "Main",
@ -10519,7 +10519,7 @@ var AssetFemale3DCG = [
ParentItem: "ItemPelvisFemPelvisHarness",
Block: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Audio: "Buckle",
DefaultColor: ["#454545","#909090"],
DefaultColor: ["#454545", "#909090"],
Layer: [
{
Name: "Main",
@ -17203,6 +17203,15 @@ var AssetFemale3DCG = [
BuyGroup: true,
},
},
{
Name: "Splatters",
DynamicGroupName: "BodyMarkings",
CopyConfig: {
GroupName: "BodyMarkings",
AssetName: "Splatters",
BuyGroup: true,
},
},
{
Name: "AnimalNoses",
InventoryID: 1169,
@ -18096,6 +18105,186 @@ var AssetFemale3DCG = [
},
],
},
{
Name: "Splatters",
Priority: 60,
Value: 0,
Top: 0,
Left: 0,
DefaultColor: "#888888",
BuyGroup: "Splatters",
InheritPoseMappingFields: true,
PoseMapping: {
...AssetPoseMapping.Cloth,
BackBoxTie: PoseType.DEFAULT,
BackCuffs: PoseType.DEFAULT,
BackElbowTouch: PoseType.DEFAULT,
OverTheHead: PoseType.DEFAULT,
TapedHands: PoseType.DEFAULT,
Yoked: PoseType.DEFAULT,
AllFours: PoseType.DEFAULT,
Hogtied: PoseType.DEFAULT,
},
Opacity: 0.7,
MinOpacity: 0,
Extended: true,
Layer: [
{
Name: "Forehead1",
Top: 5,
AllowTypes: { a: 1 },
},
{
Name: "Forehead2",
AllowTypes: { b: 1 },
},
{
Name: "Forehead3",
AllowTypes: { c: 1 },
},
{
Name: "Face1",
AllowTypes: { d: 1 },
},
{
Name: "Face2",
AllowTypes: { e: 1 },
},
{
Name: "Face3",
AllowTypes: { f: 1 },
},
{
Name: "Chest1",
ParentGroup: {
[PoseType.DEFAULT]: PoseType.DEFAULT,
AllFours: "BodyUpper",
Hogtied: "BodyUpper",
},
PoseMapping: {
AllFours: "AllFours",
Hogtied: "Hogtied",
OverTheHead: "OverTheHead",
},
AllowTypes: { g: 1 },
},
{
Name: "Chest2",
ParentGroup: {
[PoseType.DEFAULT]: PoseType.DEFAULT,
AllFours: "BodyUpper",
Hogtied: "BodyUpper",
},
PoseMapping: {
AllFours: "AllFours",
Hogtied: "Hogtied",
OverTheHead: "OverTheHead",
},
AllowTypes: { h: 1 },
},
{
Name: "Chest3",
ParentGroup: {
[PoseType.DEFAULT]: PoseType.DEFAULT,
AllFours: "BodyUpper",
Hogtied: "BodyUpper",
},
PoseMapping: {
AllFours: "AllFours",
Hogtied: "Hogtied",
OverTheHead: "OverTheHead",
},
AllowTypes: { i: 1 },
},
{
Name: "Chest4",
ParentGroup: {
[PoseType.DEFAULT]: PoseType.DEFAULT,
AllFours: "BodyUpper",
Hogtied: "BodyUpper",
},
PoseMapping: {
AllFours: "AllFours",
Hogtied: "Hogtied",
OverTheHead: "OverTheHead",
},
AllowTypes: { j: 1 },
},
{
Name: "Tummy1",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 10,
AllowTypes: { k: 1 },
},
{
Name: "Tummy2",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 10,
AllowTypes: { l: 1 },
},
{
Name: "Tummy3",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 10,
AllowTypes: { m: 1 },
},
{
Name: "Tummy4",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 10,
AllowTypes: { n: 1 },
},
{
Name: "Internal1",
Priority: 30,
AllowTypes: { o: 1 },
},
{
Name: "Internal2",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 30,
AllowTypes: { p: 1 },
},
{
Name: "Internal3",
PoseMapping: {
AllFours: PoseType.HIDE,
Hogtied: PoseType.HIDE,
},
Priority: 9,
AllowTypes: { q: 1 },
},
{
Name: "NippleDrip",
Priority: 30,
ParentGroup: {
[PoseType.DEFAULT]: "BodyUpper",
AllFours: "BodyUpper",
OverTheHead: "BodyUpper",
},
PoseMapping: {
OverTheHead: "OverTheHead",
AllFours: "AllFours",
},
AllowTypes: { r: 1 },
},
],
},
{
Name: "FacePaints",
Value: 10,
@ -18225,6 +18414,15 @@ var AssetFemale3DCG = [
BuyGroup: true,
},
},
{
Name: "Splatters",
DynamicGroupName: "BodyMarkings",
CopyConfig: {
GroupName: "BodyMarkings",
AssetName: "Splatters",
BuyGroup: true,
},
},
{
Name: "AnimalNoses",
DynamicGroupName: "Mask",
@ -26641,7 +26839,7 @@ var AssetFemale3DCG = [
AllowTighten: true,
Block: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
Audio: "Buckle",
DefaultColor: ["#454545","#909090","Default"],
DefaultColor: ["#454545", "#909090", "Default"],
Layer: [
{
Name: "Main",
@ -27531,7 +27729,7 @@ var AssetFemale3DCG = [
DrawLocks: false,
AllowTighten: true,
Block: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
DefaultColor: ["#454545","#909090","Default"],
DefaultColor: ["#454545", "#909090", "Default"],
Audio: "Buckle",
Layer: [
{
@ -28595,7 +28793,7 @@ var AssetFemale3DCG = [
DrawLocks: false,
AllowTighten: true,
Block: ["ItemVulva", "ItemVulvaPiercings", "ItemButt"],
DefaultColor: ["#454545","#909090","Default"],
DefaultColor: ["#454545", "#909090", "Default"],
Audio: "Buckle",
Layer: [
{
@ -46764,7 +46962,7 @@ var AssetFemale3DCG = [
RemoveTime: 10,
AllowTighten: true,
Attribute: ["NoseRing"],
DefaultColor: ["#9B9685","#909090","#D62F2F"],
DefaultColor: ["#9B9685", "#909090", "#D62F2F"],
ExpressionTrigger: [
{ Name: "Soft", Group: "Eyebrows", Timer: 15 },
{ Name: "Surprised", Group: "Eyes", Timer: 15 },
@ -50431,17 +50629,8 @@ var AssetFemale3DCG = [
AllowLock: true,
DrawLocks: false,
Extended: true,
DefaultColor: [
"#808D90",
"#819F9F",
"#8E8D89",
"#808D90",
"#877C66",
],
Hide: [
"Glasses",
"Jewelry",
],
DefaultColor: ["#808D90", "#819F9F", "#8E8D89", "#808D90", "#877C66"],
Hide: ["Glasses", "Jewelry"],
Block: [
"ItemMouth",
"ItemMouth2",
@ -50488,7 +50677,7 @@ var AssetFemale3DCG = [
Name: "Blindfold",
Priority: 51,
CreateLayerTypes: ["b"],
AllowTypes: { b: [ 1, 2 ] },
AllowTypes: { b: [1, 2] },
AllowColorize: true,
},
{
@ -50509,7 +50698,7 @@ var AssetFemale3DCG = [
Priority: 51,
LockLayer: true,
CreateLayerTypes: ["b"],
AllowTypes: { b: [ 1, 2 ] },
AllowTypes: { b: [1, 2] },
CopyLayerColor: "Lock",
},
],
@ -54566,9 +54755,11 @@ var AssetFemale3DCG = [
Effect: [E.Freeze, E.MapImmobile],
RemoveAtLogin: true,
FixedPosition: true,
Layer: [{ Name: "Throne", Top: -300, Left: 0 },
Layer: [
{ Name: "Throne", Top: -300, Left: 0 },
{ Name: "Seat", Top: -300, Left: 0 },
{ Name: "Deco", Top: -300, Left: 0 },]
{ Name: "Deco", Top: -300, Left: 0 },
],
},
{
Name: "ExclusiveWaitress",

View file

@ -1091,6 +1091,110 @@ var AssetFemale3DCGExtended = {
},
],
},
Splatters: {
Archetype: ExtendedArchetype.MODULAR,
ChatSetting: ModularItemChatSetting.PER_MODULE,
DrawImages: false,
Modules: [
{
Name: "Forehead1",
Key: "a",
Options: [{}, {}], // n,y
},
{
Name: "Forehead2",
Key: "b",
Options: [{}, {}], // n,y
},
{
Name: "Forehead3",
Key: "c",
Options: [{}, {}], // n,y
},
{
Name: "Face1",
Key: "d",
Options: [{}, {}], // n,y
},
{
Name: "Face2",
Key: "e",
Options: [{}, {}], // n,y
},
{
Name: "Face3",
Key: "f",
Options: [{}, {}], // n,y
},
{
Name: "Chest1",
Key: "g",
Options: [{}, {}], // n,y
},
{
Name: "Chest2",
Key: "h",
Options: [{}, {}], // n,y
},
{
Name: "Chest3",
Key: "i",
Options: [{}, {}], // n,y
},
{
Name: "Chest4",
Key: "j",
Options: [{}, {}], // n,y
},
{
Name: "Tummy1",
Key: "k",
Options: [{}, {}], // n,y
},
{
Name: "Tummy2",
Key: "l",
Options: [{}, {}], // n,y
},
{
Name: "Tummy3",
Key: "m",
Options: [{}, {}], // n,y
},
{
Name: "Tummy4",
Key: "n",
Options: [{}, {}], // n,y
},
{
Name: "Internal1",
Key: "o",
Options: [{}, {}], // n,y
},
{
Name: "Internal2",
Key: "p",
Options: [{}, {}], // n,y
},
{
Name: "Internal3",
Key: "q",
Options: [{}, {}], // n,y
},
{
Name: "NippleDrip",
Key: "r",
Options: [{}, {}], // n,y
},
],
DialogPrefix: {
Header: "BodyMarkingsSplattersSelect",
Module: "BodyMarkingsSplattersModule",
Option: "BodyMarkingsSplattersOption",
Chat: "BodyMarkingsSplattersSet",
},
},
FacePaints: {
Archetype: ExtendedArchetype.MODULAR,
ChatSetting: ModularItemChatSetting.PER_MODULE,
@ -1211,6 +1315,10 @@ var AssetFemale3DCGExtended = {
DrawImages: false,
CopyConfig: { GroupName: "BodyMarkings", AssetName: "FaceScars" },
}, // FaceScars
Splatters: {
Archetype: ExtendedArchetype.MODULAR,
CopyConfig: { GroupName: "BodyMarkings", AssetName: "Splatters" },
}, // Splatters
AnimalNoses: {
Archetype: ExtendedArchetype.TYPED,
DrawImages: false,
@ -8945,11 +9053,7 @@ var AssetFemale3DCGExtended = {
// Hood
Property: {
Effect: [E.BlockMouth],
Hide: [
"HairFront",
"HairBack",
"HairAccessory1",
],
Hide: ["HairFront", "HairBack", "HairAccessory1"],
},
},
],
@ -9002,7 +9106,7 @@ var AssetFemale3DCGExtended = {
// NoseGuard
Property: {
Effect: [],
Block:["ItemNose"],
Block: ["ItemNose"],
Hide: ["ItemNose"],
},
},
@ -14978,6 +15082,10 @@ var AssetFemale3DCGExtended = {
},
],
}, // Eldritch Mask
Splatters: {
Archetype: ExtendedArchetype.MODULAR,
CopyConfig: { GroupName: "BodyMarkings", AssetName: "Splatters" },
}, // Splatters
}, // Mask
ItemLegs: {
DuctTape: {

View file

@ -2,6 +2,24 @@ BodyUpperLarge,Body
BodyUpperNormal,Body
BodyUpperSmall,Body
BodyUpperXLarge,Body
BodyMarkingsSplattersForehead1,Forehead 1
BodyMarkingsSplattersForehead2,Forehead 2
BodyMarkingsSplattersForehead3,Forehead 3
BodyMarkingsSplattersFace1,Face 1
BodyMarkingsSplattersFace2,Face 2
BodyMarkingsSplattersFace3,Face 3
BodyMarkingsSplattersChest1,Chest 1
BodyMarkingsSplattersChest2,Chest 2
BodyMarkingsSplattersChest3,Chest 3
BodyMarkingsSplattersChest4,Chest 4
BodyMarkingsSplattersTummy1,Tummy 1
BodyMarkingsSplattersTummy2,Tummy 2
BodyMarkingsSplattersTummy3,Tummy 3
BodyMarkingsSplattersTummy4,Tummy 4
BodyMarkingsSplattersInternal1,Internal Mouth
BodyMarkingsSplattersInternal2,Internal Front
BodyMarkingsSplattersInternal3,Internal Back
BodyMarkingsSplattersNippleDrip,Nipple Drip
BraceletLaceBandsBands,Bands
BraceletLaceBandsLace,Lace
BraceletSpikeBandsBands,Bands
@ -2126,6 +2144,7 @@ ItemPelvisBulkyDiaperTape,Tape
ItemPelvisBulkyDiaperWaistBand,Waist Band
ItemPelvisFemPelvisHarnessMain,Main
ItemPelvisFemPelvisHarnessMetal,Metal
ItemPelvisFemPelvisHarnessLock,Lock
ItemPelvisForbiddenChastityBeltBelt,Belt
ItemPelvisForbiddenChastityBeltDetail,Detail
ItemPelvisForbiddenChastityBeltMetal,Metal

1 BodyUpperLarge Body
2 BodyUpperNormal Body
3 BodyUpperSmall Body
4 BodyUpperXLarge Body
5 BodyMarkingsSplattersForehead1 Forehead 1
6 BodyMarkingsSplattersForehead2 Forehead 2
7 BodyMarkingsSplattersForehead3 Forehead 3
8 BodyMarkingsSplattersFace1 Face 1
9 BodyMarkingsSplattersFace2 Face 2
10 BodyMarkingsSplattersFace3 Face 3
11 BodyMarkingsSplattersChest1 Chest 1
12 BodyMarkingsSplattersChest2 Chest 2
13 BodyMarkingsSplattersChest3 Chest 3
14 BodyMarkingsSplattersChest4 Chest 4
15 BodyMarkingsSplattersTummy1 Tummy 1
16 BodyMarkingsSplattersTummy2 Tummy 2
17 BodyMarkingsSplattersTummy3 Tummy 3
18 BodyMarkingsSplattersTummy4 Tummy 4
19 BodyMarkingsSplattersInternal1 Internal Mouth
20 BodyMarkingsSplattersInternal2 Internal Front
21 BodyMarkingsSplattersInternal3 Internal Back
22 BodyMarkingsSplattersNippleDrip Nipple Drip
23 BraceletLaceBandsBands Bands
24 BraceletLaceBandsLace Lace
25 BraceletSpikeBandsBands Bands
2144 ItemPelvisBulkyDiaperWaistBand Waist Band
2145 ItemPelvisFemPelvisHarnessMain Main
2146 ItemPelvisFemPelvisHarnessMetal Metal
2147 ItemPelvisFemPelvisHarnessLock Lock
2148 ItemPelvisForbiddenChastityBeltBelt Belt
2149 ItemPelvisForbiddenChastityBeltDetail Detail
2150 ItemPelvisForbiddenChastityBeltMetal Metal

View file

@ -209,8 +209,8 @@ function LoginResize(load) {
ElementPosition("InputPassword", 1000, 410, 500);
ElementPosition("InputName", 1000, 260, 500);
ElementPosition("LanguageDropdown", 1145, 530, 255, 60);
const langSelect = document.getElementById("LanguageDropdown");
ElementPosition(langSelect, 1145, 530, 255, 60);
langSelect?.style.setProperty("font-family", `"Twemoji Country Flags", ${langSelect.style.fontFamily}`);
}

View file

@ -173,6 +173,11 @@ function AssetAdd(Group, AssetDef, ExtendedConfig) {
const allowLock = typeof AssetDef.AllowLock === "boolean" ? AssetDef.AllowLock : false;
const difficulty = AssetDef.Difficulty ?? 0;
const editOpacity = (typeof AssetDef.EditOpacity === "boolean") ? AssetDef.EditOpacity : (typeof Group.EditOpacity === "boolean") ? Group.EditOpacity : false;
let minOpacity = editOpacity ? AssetParseOpacity(typeof AssetDef.MinOpacity === "number" ? AssetDef.MinOpacity : Group.MinOpacity) : 1;
let maxOpacity = editOpacity ? AssetParseOpacity(typeof AssetDef.MaxOpacity === "number" ? AssetDef.MaxOpacity : Group.MaxOpacity) : 1;
const opacity = editOpacity ? AssetParseOpacity(AssetDef.Opacity, minOpacity, maxOpacity) : 1;
/** @type {Mutable<Asset>} */
var A = {
Name: AssetDef.Name,
@ -240,10 +245,10 @@ function AssetAdd(Group, AssetDef, ExtendedConfig) {
AllowHide: AssetDef.AllowHide,
AllowHideItem: AssetDef.AllowHideItem,
DefaultColor: [],
Opacity: AssetParseOpacity(AssetDef.Opacity),
EditOpacity: (typeof AssetDef.EditOpacity === "boolean") ? AssetDef.EditOpacity : (typeof Group.EditOpacity === "boolean") ? Group.EditOpacity : false,
MinOpacity: (typeof AssetDef.MinOpacity === "number") ? AssetParseOpacity(AssetDef.MinOpacity) : (typeof Group.MinOpacity === "number") ? Group.MinOpacity : 1,
MaxOpacity: (typeof AssetDef.MaxOpacity === "number") ? AssetParseOpacity(AssetDef.MaxOpacity) : (typeof Group.MaxOpacity === "number") ? Group.MaxOpacity : 1,
EditOpacity: editOpacity,
Opacity: opacity,
MinOpacity: minOpacity,
MaxOpacity: maxOpacity,
Audio: AssetDef.Audio,
Category: AssetDef.Category,
Fetish: AssetDef.Fetish,
@ -295,10 +300,6 @@ function AssetAdd(Group, AssetDef, ExtendedConfig) {
Object.assign(A, AssetParsePosePrerequisite(A));
}
// Ensure opacity value is valid
if (A.MinOpacity > A.Opacity) A.MinOpacity = A.Opacity;
if (A.MaxOpacity < A.Opacity) A.MaxOpacity = A.Opacity;
const layers = AssetDef.Layer ? [...AssetDef.Layer] : [{}];
if (A.DrawLocks) {
layers.push({ Name: "Lock", LockLayer: true, AllowColorize: false, ParentGroup: {} });
@ -630,9 +631,10 @@ function AssetFindExtendedConfig(ExtendedConfig, GroupName, AssetName) {
* @return {AssetLayer} - A Layer object representing the drawable properties of the given layer
*/
function AssetMapLayer(Layer, A, I) {
const minOpacity = AssetParseOpacity(typeof Layer.MinOpacity === "number" ? Layer.MinOpacity : A.MinOpacity, 0, 1);
const maxOpacity = AssetParseOpacity(typeof Layer.MaxOpacity === "number" ? Layer.MaxOpacity : A.MaxOpacity, 0, 1);
const opacity = typeof Layer.Opacity === "number" ? AssetParseOpacity(Layer.Opacity, minOpacity, maxOpacity) : 1;
const editOpacity = A.EditOpacity;
const minOpacity = editOpacity ? AssetParseOpacity(Layer.MinOpacity ?? A.MinOpacity, 0, 1) : 1;
const maxOpacity = editOpacity ? AssetParseOpacity(Layer.MaxOpacity ?? A.MaxOpacity, 0, 1) : 1;
const opacity = AssetParseOpacity(Layer.Opacity ?? A.Opacity, minOpacity, maxOpacity);
/** @type {AssetLayer} */
const L = {
@ -760,7 +762,7 @@ function AssetParseParentGroup(parentGroup, superParentGroup) {
* @returns {number}
*/
function AssetParseOpacity(opacity, min=0, max=1) {
if (typeof opacity === "number" && !isNaN(opacity)) {
if (CommonIsNumeric(opacity)) {
return CommonClamp(opacity, min, max);
}
return max;