diff --git a/BondageClub/Assets/Female3DCG/Female3DCG.csv b/BondageClub/Assets/Female3DCG/Female3DCG.csv index 57afff53934bf02e7720739948e90b55ede8c710..dbf4ae85232e54e967a32d7892494620ac83b238 100644 --- a/BondageClub/Assets/Female3DCG/Female3DCG.csv +++ b/BondageClub/Assets/Female3DCG/Female3DCG.csv @@ -1349,7 +1349,7 @@ ItemMouth3,PaciGag,Pacifier Gag ItemMouth3,Tentacles,Tentacle ItemMouth3,PonyGag,Bridle Gag ItemMouth3,Slime,Slime -ItemMouth3,Stitches,Stitches +ItemMouth3,Stitches,Stitches ItemMouth3,FurScarf,Fur Scarf ItemHead,,Eyes ItemHead,ClothBlindfold,Cloth Blindfold @@ -1383,7 +1383,7 @@ ItemHead,MedicalPatch,Medical Patches ItemHead,DroneMask,Smooth Latex Mask ItemHead,Slime,Slime ItemHead,FurScarf,Fur Scarf -ItemHead,Stitches,Stitches +ItemHead,Stitches,Stitches ItemNose,,Nose ItemNose,NoseHook,Nose Hook ItemNose,PigNose,Pig Nose @@ -1428,6 +1428,7 @@ ItemHood,Slime,Slime ItemHood,KittyHood,Kitty Hood ItemHood,LatexDogHood,Latex Dog Hood ItemHood,OpenMouthPlugHood,Latex Open Mouth Plug Hood +ItemHood,DroneMask,Smooth Latex Mask ItemEars,,Ears ItemEars,LightDutyEarPlugs,Light Duty Ear Plugs ItemEars,HeavyDutyEarPlugs,Heavy Duty Ear Plugs diff --git a/BondageClub/Assets/Female3DCG/Female3DCG.js b/BondageClub/Assets/Female3DCG/Female3DCG.js index 5c5f2b41d73e70c403d11782790215bd0d62c360..d5ab1b1322cb0c2c132ef6b69ad15b19edb93851 100644 --- a/BondageClub/Assets/Female3DCG/Female3DCG.js +++ b/BondageClub/Assets/Female3DCG/Female3DCG.js @@ -5895,6 +5895,7 @@ var AssetFemale3DCG = [ }, { Name: "DroneMask", Category: ["SciFi"], Fetish: ["Latex"], Value: 90, Difficulty: 5, DefaultColor: ["#222222", "#CCCCCC", "#7F7F7F", "#00F4FD", "#E700CA", ], Time: 10, AllowLock: true, DrawLocks: false, Extended: true, DynamicAfterDraw: true, + BuyGroup: "DroneMask", Block:["ItemMouth", "ItemMouth2", "ItemMouth3", "ItemNose"], Hide: ["Glasses", "ItemMouth", "ItemMouth2", "ItemMouth3", "Blush"], HideItem: ["HatFacePaint", "MaskFacePaint", "ClothAccessoryFacePaint"], @@ -6314,6 +6315,65 @@ var AssetFemale3DCG = [ ] }, + { + Name: "DroneMask", Category: ["SciFi"], Fetish: ["Latex"], Value: -1, Difficulty: 5, DefaultColor: ["#222222", "#CCCCCC", "#7F7F7F", "#00F4FD", "#E700CA", ], Time: 10, AllowLock: true, DrawLocks: false, Extended: true, DynamicAfterDraw: true, + DynamicGroupName: "ItemHead", + BuyGroup: "DroneMask", + Block:["ItemMouth", "ItemMouth2", "ItemMouth3", "ItemNose"], + Hide: ["Glasses", "ItemMouth", "ItemMouth2", "ItemMouth3", "Blush", "Mask"], + HideItem: ["HatFacePaint", "MaskFacePaint", "ClothAccessoryFacePaint"], + Layer: [ // Colors layer references: Base, Shine, EyeRegular, MouthOnahole, Barcode + { Name: "Base", HasType: false, AllowModuleTypes: ["h0"] }, + { Name: "Shine", HasType: false, AllowModuleTypes: ["h0"] }, + { Name: "BaseHelm", HasType: false, AllowModuleTypes: ["h1","h2"], CopyLayerColor: "Base", Alpha: [{ Masks: [[0, 0, 500, 200]], Group: ["Head"] }], }, + { Name: "ShineHelm", HasType: false, AllowModuleTypes: ["h1","h2"], CopyLayerColor: "Shine" }, + + // All Non-part-reliant Patterns + { Name: "Barcode", HasType: false, AllowModuleTypes: ["p1"]}, + { Name: "Scarab", HasType: false, AllowModuleTypes: ["p2"], CopyLayerColor: "Barcode"}, + { Name: "Hexagon", HasType: false, AllowModuleTypes: ["p3"], CopyLayerColor: "Barcode"}, + { Name: "TwoLines", HasType: false, AllowModuleTypes: ["p4"], CopyLayerColor: "Barcode"}, + { Name: "Text", HasImage: false, CopyLayerColor: "Barcode"}, + + // All Eyes + { Name: "EyeRegularShine", HasType: false, AllowModuleTypes: ["e1"], CopyLayerColor: "Shine" }, + { Name: "EyeRegular", HasType: false, AllowModuleTypes: ["e1"], }, + { Name: "EyeRegularGlow", HasType: false, AllowModuleTypes: ["e1g1"], CopyLayerColor: "EyeRegular" }, + + { Name: "EyeSpiralShine", HasType: false, AllowModuleTypes: ["e2"], CopyLayerColor: "Shine" }, + { Name: "EyeSpiral", HasType: false, AllowModuleTypes: ["e2"], CopyLayerColor: "EyeRegular" }, + { Name: "EyeSpiralGlow", HasType: false, AllowModuleTypes: ["e2g1"], CopyLayerColor: "EyeRegular" }, + + { Name: "EyeSmileShine", HasType: false, AllowModuleTypes: ["e3"], CopyLayerColor: "Shine" }, + { Name: "EyeSmile", HasType: false, AllowModuleTypes: ["e3"], CopyLayerColor: "EyeRegular" }, + { Name: "EyeSmileGlow", HasType: false, AllowModuleTypes: ["e3g1"], CopyLayerColor: "EyeRegular" }, + + { Name: "EyeHolesShine", HasType: false, AllowModuleTypes: ["e4"], CopyLayerColor: "Shine" }, + { Name: "EyeHoles", HasType: false, AllowModuleTypes: ["e4"], CopyLayerColor: "EyeRegular" }, + + { Name: "EyeSculpted", HasType: false, AllowModuleTypes: ["e5"], CopyLayerColor: "EyeRegular" }, + { Name: "EyeSculptedShine", HasType: false, AllowModuleTypes: ["e5"], CopyLayerColor: "Shine" }, + { Name: "EyeSculptedGlow", HasType: false, AllowModuleTypes: ["e5g1"], CopyLayerColor: "EyeRegular" }, + + { Name: "EyeConcave", HasType: false, AllowModuleTypes: ["e6"], CopyLayerColor: "Base"}, + { Name: "EyeConcaveShine", HasType: false, AllowModuleTypes: ["e6"], CopyLayerColor: "Shine"}, + + // All Mouths + { Name: "MouthOnahole", HasType: false, AllowModuleTypes: ["m1"]}, + + { Name: "MouthFleshlightShine", HasType: false, AllowModuleTypes: ["m2"], CopyLayerColor: "Shine" }, + { Name: "MouthFleshlight", HasType: false, AllowModuleTypes: ["m2"], CopyLayerColor: "MouthOnahole" }, + + { Name: "MouthSmileShine", HasType: false, AllowModuleTypes: ["m3"], CopyLayerColor: "Shine" }, + { Name: "MouthSmile", HasType: false, AllowModuleTypes: ["m3"], CopyLayerColor: "MouthOnahole" }, + { Name: "MouthSmileGlow", HasType: false, AllowModuleTypes: ["m3g1"], CopyLayerColor: "MouthOnahole" }, + + { Name: "MouthHolesShine", HasType: false, AllowModuleTypes: ["m4"], CopyLayerColor: "Shine" }, + { Name: "MouthHoles", HasType: false, AllowModuleTypes: ["m4"], CopyLayerColor: "MouthOnahole" }, + + { Name: "MouthSculpted", HasType: false, AllowModuleTypes: ["m5"], CopyLayerColor: "MouthOnahole" }, + ], + }, AssetSpankingToys ], Color: ["Default", "#202020", "#808080", "#bbbbbb", "#aa8080", "#80aa80", "#8080aa", "#aaaa80", "#80aaaa", "#aa80aa", "#cc3333", "#33cc33", "#3333cc", "#cccc33", "#33cccc", "#cc33cc"] diff --git a/BondageClub/Assets/Female3DCG/Female3DCGExtended.js b/BondageClub/Assets/Female3DCG/Female3DCGExtended.js index 392ecc40b64701cdef7bdef1221aad6e90884ddf..9d7d0301fa0e9b4f6d728d3079bdd78f712cdc90 100644 --- a/BondageClub/Assets/Female3DCG/Female3DCGExtended.js +++ b/BondageClub/Assets/Female3DCG/Female3DCGExtended.js @@ -2663,7 +2663,11 @@ var AssetFemale3DCGExtended = { } ] } - } + }, + DroneMask: { + Archetype: ExtendedArchetype.MODULAR, + CopyConfig: { GroupName: "ItemHead", AssetName: "DroneMask" }, + }, // DroneMask }, // ItemHood ItemDevices: { FuturisticCrate: { diff --git a/BondageClub/Screens/Character/Player/Dialog_Player.csv b/BondageClub/Screens/Character/Player/Dialog_Player.csv index b579e0584e10eba04f1a18565d1df79c2e9c0e55..6de2bf8f0f12ed429460e0a6323979d65dfa1528 100644 --- a/BondageClub/Screens/Character/Player/Dialog_Player.csv +++ b/BondageClub/Screens/Character/Player/Dialog_Player.csv @@ -3089,6 +3089,53 @@ ItemHoodHeadboxSeethroughSeethrough,,,Lights On,, ItemHoodHeadboxSeethroughOpaque,,,Lights Off,, ItemHoodHeadboxSeethroughSetOpaque,,,SourceCharacter turns off the lights of DestinationCharacter headbox.,, ItemHoodHeadboxSeethroughSetSeethrough,,,SourceCharacter turns on the lights of DestinationCharacter headbox.,, +ItemHoodDroneMaskSelectBase,,,Select Mask Details,, +ItemHoodDroneMaskSelectEyes,,,Select Eye Shape,, +ItemHoodDroneMaskModuleEyes,,,Eyes,, +ItemHoodDroneMaskOptione0,,,Smooth,, +ItemHoodDroneMaskOptione1,,,Open,, +ItemHoodDroneMaskOptione2,,,Spirals,, +ItemHoodDroneMaskOptione3,,,Smile,, +ItemHoodDroneMaskOptione4,,,Holes,, +ItemHoodDroneMaskOptione5,,,Sculpted,, +ItemHoodDroneMaskOptione6,,,Concave,, +ItemHoodDroneMaskSetEyes,,,SourceCharacter changes the eyes on DestinationCharacter smooth latex mask.,, +ItemHoodDroneMaskSelectMouth,,,Select Mouth Shape,, +ItemHoodDroneMaskModuleMouth,,,Mouth,, +ItemHoodDroneMaskOptionm0,,,Smooth,, +ItemHoodDroneMaskOptionm1,,,Onahole,, +ItemHoodDroneMaskOptionm2,,,Pussy,, +ItemHoodDroneMaskOptionm3,,,Smile,, +ItemHoodDroneMaskOptionm4,,,Holes,, +ItemHoodDroneMaskOptionm5,,,Sculpted,, +ItemHoodDroneMaskSetMouth,,,SourceCharacter changes the mouth on DestinationCharacter smooth latex mask.,, +ItemHoodDroneMaskSelectGlow,,,Switch Glow Function,, +ItemHoodDroneMaskModuleGlow,,,Glow,, +ItemHoodDroneMaskOptiong0,,,Off,, +ItemHoodDroneMaskOptiong1,,,On,, +ItemHoodDroneMaskSetGlow,,,SourceCharacter flicks the glow switch on DestinationCharacter smooth latex mask.,, +ItemHoodDroneMaskSelectPattern,,,Select Mask Pattern,, +ItemHoodDroneMaskModulePattern,,,Pattern,, +ItemHoodDroneMaskOptionp0,,,None,, +ItemHoodDroneMaskOptionp1,,,Barcode,, +ItemHoodDroneMaskOptionp2,,,Scarab,, +ItemHoodDroneMaskOptionp3,,,Hexagon,, +ItemHoodDroneMaskOptionp4,,,Lines,, +ItemHoodDroneMaskOptionp5,,,Text,, +ItemHoodDroneMaskTextRemove,,,SourceCharacter removes the text from DestinationCharacterName smooth latex mask.,, +ItemHoodDroneMaskTextChange,,,SourceCharacter changes the text on DestinationCharacterName smooth latex mask to read 'NewText'.,, +ItemHoodDroneMaskSetPattern,,,SourceCharacter changes the pattern on DestinationCharacter smooth latex mask.,, +ItemHoodDroneMaskSelectSight,,,Select Lens Quality,, +ItemHoodDroneMaskModuleSight,,,Lenses,, +ItemHoodDroneMaskOptions0,,,Opaque,, +ItemHoodDroneMaskOptions1,,,One-Way,, +ItemHoodDroneMaskSetSight,,,SourceCharacter changes the inner lining of DestinationCharacter smooth latex mask.,, +ItemHoodDroneMaskSelectHelmet,,,Select Coverage,, +ItemHoodDroneMaskModuleHelmet,,,Coverage,, +ItemHoodDroneMaskOptionh0,,,Mask,, +ItemHoodDroneMaskOptionh1,,,Hood,, +ItemHoodDroneMaskOptionh2,,,Total Hood,, +ItemHoodDroneMaskSetHelmet,,,SourceCharacter changes the coverage of DestinationCharacter smooth latex mask.,, ItemMouthPonyGagSelectBase,,,Select bridle Gag Accessories,, ItemMouthPonyGagSelectGag,,,Select Gag Accessory,, ItemMouthPonyGagModuleGag,,,Gag,, diff --git a/BondageClub/Screens/Inventory/ItemHead/DroneMask/DroneMask.js b/BondageClub/Screens/Inventory/ItemHead/DroneMask/DroneMask.js index c095bba1564c336e33ede1ff3ae78b177d1b21f4..8bfc629247f7334399742f14b3295904dc558d21 100644 --- a/BondageClub/Screens/Inventory/ItemHead/DroneMask/DroneMask.js +++ b/BondageClub/Screens/Inventory/ItemHead/DroneMask/DroneMask.js @@ -10,10 +10,13 @@ var InventoryItemHeadDroneMaskYOffset = 89; // For testing text position for tho // Load item extension properties function InventoryItemHeadDroneMaskPattern5Load() { + InventoryItemHeadDroneMaskOriginalText = DialogFocusItem.Property.Text; + InventoryItemHeadDroneMaskPattern5LoadBase(); +} - const C = CharacterGetCurrent(); +function InventoryItemHeadDroneMaskPattern5LoadBase() { - InventoryItemHeadDroneMaskOriginalText = DialogFocusItem.Property.Text; + const C = CharacterGetCurrent(); // Dynamically displayed input const input = ElementCreateInput( @@ -39,11 +42,13 @@ function InventoryItemHeadDroneMaskPattern5Draw() { // Click function function InventoryItemHeadDroneMaskPattern5Click() { if (MouseIn(1330, 731, 340, 64)) { - InventoryItemHeadDroneMaskPattern5SaveAndExit(); + InventoryItemHeadDroneMaskPattern5SaveAndExit(InventoryItemHeadDroneMaskOriginalText); + InventoryItemHeadDroneMaskPattern5ExitSubscreen(); } // Exits screen else if (MouseIn(1885, 25, 90, 90)) { - InventoryItemHeadDroneMaskPattern5Exit(); + InventoryItemHeadDroneMaskPattern5Exit(InventoryItemHeadDroneMaskOriginalText); + InventoryItemHeadDroneMaskPattern5ExitSubscreen(); } } @@ -55,7 +60,7 @@ function InventoryItemHeadDroneMaskPattern5ExitSubscreen() { } // Save text changes and exit subscreen -function InventoryItemHeadDroneMaskPattern5SaveAndExit() { +function InventoryItemHeadDroneMaskPattern5SaveAndExit(OriginalText) { const C = CharacterGetCurrent(); const item = DialogFocusItem; @@ -63,7 +68,7 @@ function InventoryItemHeadDroneMaskPattern5SaveAndExit() { if (InventoryItemHeadDroneMaskAllowedChars.test(text)) { item.Property.Text = text; } - if (CurrentScreen === "ChatRoom" && text !== InventoryItemHeadDroneMaskOriginalText) { + if (CurrentScreen === "ChatRoom" && text !== OriginalText) { const dictionary = [ { Tag: "SourceCharacter", Text: CharacterNickname(Player), MemberNumber: Player.MemberNumber }, { Tag: "DestinationCharacterName", Text: CharacterNickname(C), MemberNumber: C.MemberNumber }, @@ -75,14 +80,12 @@ function InventoryItemHeadDroneMaskPattern5SaveAndExit() { } CharacterRefresh(C); ChatRoomCharacterItemUpdate(C, item.Asset.Group.Name); - InventoryItemHeadDroneMaskPattern5ExitSubscreen(); } // Revert text changes and exit subscreen -function InventoryItemHeadDroneMaskPattern5Exit() { - DialogFocusItem.Property.Text = InventoryItemHeadDroneMaskOriginalText; +function InventoryItemHeadDroneMaskPattern5Exit(OriginalText) { + DialogFocusItem.Property.Text = OriginalText; CharacterLoadCanvas(CharacterGetCurrent()); - InventoryItemHeadDroneMaskPattern5ExitSubscreen(); } // Exit the item's extended screen @@ -104,6 +107,15 @@ const InventoryItemHeadDroneMaskTextChange = CommonLimitFunction((C, item, text) // Drawing function for tag text function AssetsItemHeadDroneMaskAfterDraw({ C, A, X, Y, Property, drawCanvas, drawCanvasBlink, AlphaMasks, L, Color +}) { + const YOffset = InventoryItemHeadDroneMaskYOffset; + AssetsItemHeadDroneMaskAfterDrawBase({ + C, A, X, Y, Property, drawCanvas, drawCanvasBlink, AlphaMasks, L, Color, YOffset, + }) +} + +function AssetsItemHeadDroneMaskAfterDrawBase({ + C, A, X, Y, Property, drawCanvas, drawCanvasBlink, AlphaMasks, L, Color, YOffset, }) { if (L === "_Text"){ const Properties = Property || {}; @@ -133,7 +145,7 @@ function AssetsItemHeadDroneMaskAfterDraw({ DynamicDrawText(text, ctx, Width/2, Height/ (isAlone? 2: 2.5), drawOptions); //And print the canvas onto the character based on the above positions - drawCanvas(TempCanvas, X+ XOffset, Y + InventoryItemHeadDroneMaskYOffset, AlphaMasks); - drawCanvasBlink(TempCanvas, X + XOffset, Y + InventoryItemHeadDroneMaskYOffset, AlphaMasks); + drawCanvas(TempCanvas, X+ XOffset, Y + YOffset, AlphaMasks); + drawCanvasBlink(TempCanvas, X + XOffset, Y + YOffset, AlphaMasks); } } diff --git a/BondageClub/Screens/Inventory/ItemHood/DroneMask/DroneMask.js b/BondageClub/Screens/Inventory/ItemHood/DroneMask/DroneMask.js new file mode 100644 index 0000000000000000000000000000000000000000..20437190d483350b0766fd585ad71b461e66e5b3 --- /dev/null +++ b/BondageClub/Screens/Inventory/ItemHood/DroneMask/DroneMask.js @@ -0,0 +1,51 @@ +// Wrap around the itemHead/DroneMask/DroneMask.js code as much as possible + +"use strict"; +let InventoryItemHoodDroneMaskOriginalText = ""; +var InventoryItemHoodDroneMaskYOffset = 89; // For testing text position for those with longer hair + +// Load item extension properties +function InventoryItemHoodDroneMaskPattern5Load() { + InventoryItemHoodDroneMaskOriginalText = DialogFocusItem.Property.Text; + InventoryItemHeadDroneMaskPattern5LoadBase(); +} + +// Draw extension screen image +function InventoryItemHoodDroneMaskPattern5Draw() { + InventoryItemHeadDroneMaskPattern5Draw(); +} + +// Click function +function InventoryItemHoodDroneMaskPattern5Click() { + if (MouseIn(1330, 731, 340, 64)) { + InventoryItemHeadDroneMaskPattern5SaveAndExit(InventoryItemHoodDroneMaskOriginalText); + InventoryItemHoodDroneMaskPattern5ExitSubscreen(); + } + // Exits screen + else if (MouseIn(1885, 25, 90, 90)) { + InventoryItemHeadDroneMaskPattern5Exit(InventoryItemHoodDroneMaskOriginalText); + InventoryItemHoodDroneMaskPattern5ExitSubscreen(); + } +} + +// Exit the subscreen +function InventoryItemHoodDroneMaskPattern5ExitSubscreen() { + ElementRemove(InventoryItemHeadDroneMaskInputId); + InventoryItemHoodDroneMaskOriginalText = ""; + ExtendedItemSubscreen = null; +} + +// Exit the item's extended screen +function InventoryItemHoodDroneMaskExit() { + InventoryItemHeadDroneMaskExit(); +} + +// Drawing function for tag text +function AssetsItemHoodDroneMaskAfterDraw({ + C, A, X, Y, Property, drawCanvas, drawCanvasBlink, AlphaMasks, L, Color, +}) { + let YOffset = InventoryItemHoodDroneMaskYOffset; + AssetsItemHeadDroneMaskAfterDrawBase({ + C, A, X, Y, Property, drawCanvas, drawCanvasBlink, AlphaMasks, L, Color, YOffset, + }) +} diff --git a/BondageClub/index.html b/BondageClub/index.html index 8497475cc62c050d528ce20041147fa1470b9986..e08f0793b58f4cefb679119b62cf64caaca070c7 100644 --- a/BondageClub/index.html +++ b/BondageClub/index.html @@ -301,6 +301,7 @@ <script src="Screens/Inventory/Wings/SteampunkWings/SteampunkWings.js"></script> <script src="Screens/Inventory/ItemNeck/TechnoCollar/TechnoCollar.js"></script> <script src="Screens/Inventory/ItemHead/DroneMask/DroneMask.js"></script> +<script src="Screens/Inventory/ItemHood/DroneMask/DroneMask.js"></script> <script src="Screens/Inventory/ItemNipples/LactationPump/LactationPump.js"></script> <script>