diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index 9e6c1ba024684453ee3faf7f4bf18347abaf2a26..09f3c7ff7c881736a9bb67fd03c8428a5637be6d 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -3,6 +3,7 @@ Pregmod 0.10.7.1-2.2.x 0 + -overhauled chastity -overhauled reputation tracking -reputation is now harder to build the higher it gets -ear shaping surgeries @@ -14,6 +15,7 @@ Pregmod -added abortion tracking tattoos -added bulk incubator retrieval -added "albinism", "pFace" and "uFace" genetic traits + -added sexy Santa outfit -fixes 0.10.7.1-2.1.x diff --git a/src/SecExp/weaponsManufacturing.tw b/src/SecExp/weaponsManufacturing.tw index 787e3cb9511cce3546c47bdb4f81714bed9057ae..02c30b35092600b008ae03520e6354443fe0b96b 100644 --- a/src/SecExp/weaponsManufacturing.tw +++ b/src/SecExp/weaponsManufacturing.tw @@ -29,7 +29,7 @@ many small old world nations as the advanced technology that free cities have av There's a large lab attached to the complex. The complement of equipment and personnel makes it a great beacon of military science in an otherwise ignorant world. <</if>> <br> -<<if $weapMenials> 0>>Assigned here are $weapMenials slaves working to produce as much equipment as possible<<else>>There are no assigned menial slaves here. The spaces is manned exclusively by low rank citizens.<</if>> +<<if $weapMenials> 0>>Assigned here are $weapMenials slaves working to produce as much equipment as possible.<<else>>There are no assigned menial slaves here. The spaces is manned exclusively by low rank citizens.<</if>> You own <<print commaNum($menials)>> free menial slaves. This manufacturing complex can house 500 at most, with <<print 500 - $weapMenials>> free slots. <br> <<silently>><<= MenialPopCap()>><</silently>> diff --git a/src/art/artJS.js b/src/art/artJS.js index be8e73e416c900259354b8bee3af2fba5063c498..e350ea6bd265583464586d301e74266d9167d684 100644 --- a/src/art/artJS.js +++ b/src/art/artJS.js @@ -1,3 +1,28 @@ +/* +Call as <<= SlaveArt(...)>> or <<print SlaveArt(...)>> +Displays slave images. Currently passage-based. +artSlave: Slave. +artSize: Image size/center. + 3: Large, right. Example: long slave description. + 2: Medium, right. Example: random events. + 1: Small, left. Example: lists. + 0: Tiny, left. Example: facilities +UIDisplay (optional, only used by legacy art): icon UI Display for vector art, 1 for on. +*/ +window.SlaveArt = function(artSlave, artSize, UIDisplay) { + const imageChoice = State.variables.imageChoice; + if (artSlave.customImage !== 0) + return CustomArt(artSlave, artSize); + else if (imageChoice === 1) /* VECTOR ART BY NOX/DEEPMURK */ + return VectorArt(artSlave, artSize); + else if (imageChoice === 2) /* VECTOR ART BY NOX - Pregmod Legacy Version */ + return LegacyVectorArt(artSlave, UIDisplay); + else if (imageChoice === 3) /* VECTOR ART REVAMP*/ + return RevampedVectorArt(artSlave); + else /* RENDERED IMAGES BY SHOKUSHU */ + return ArtControlRendered(artSlave, artSize); +}; + window.ArtControlRendered = function ArtControlRendered(slave, sizePlacement) { const V = State.variables; let fileName = "'resources/renders/"; diff --git a/src/art/artWidgets.tw b/src/art/artWidgets.tw index 1f707f3d21dd8ac271773e3630be495813e43fd4..5c7529bfef3b141d4977db18f21ec21c8046bff9 100644 --- a/src/art/artWidgets.tw +++ b/src/art/artWidgets.tw @@ -13,464 +13,7 @@ $args[2]: icon UI Display for vector art, 1 for on. %/ <<widget "SlaveArt">> -<<if $args[0].customImage != 0>> - -<<= CustomArt($args[0], $args[1])>> - -<<elseif $imageChoice == 1>> /* VECTOR ART BY NOX*/ - -<<= VectorArt($args[0], $args[1])>> - -<<elseif $imageChoice == 2>> /* VECTOR ART BY NOX - Pregmod Legacy Version */ -<<SVGFilters>> - -/* 000-250-006 */ -/* <div class="imageRef"> */ -/* 000-250-006 */ - -<<set _folderLoc = "'resources/vector">> - -<<if $args[2] == 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/test ui.svg'" + "/>">> -<</if>> - -/% Set skin color %/ -<<set _skinFilter = "filter: url(#skin-" + _.kebabCase($args[0].skin) + ");">> -/% Set hair color %/ -<<set _hairFilter = "filter: url(#hair-" + _.kebabCase($args[0].hColor) + ");">> -<<set _underArmFilter = "filter: url(#hair-" + _.kebabCase($args[0].underArmHColor) + ");">> -<<set _pubesFilter = "filter: url(#hair-" + _.kebabCase($args[0].pubicHColor) + ");">> -<<set _axillaryFilter = "filter: url(#hair-" + _.kebabCase($args[0].underArmHColor) + ");">> -<<if $args[0].customHairVector>> - <<set _hairStyle = $args[0].customHairVector>> -<<else>> - <<set _hairStyle = ["afro", "braided", "bun", "buzzcut", "dreadlocks", "eary", "luxurious", "messy", "neat", "ponytail", "strip", "tails", "trimmed", "up"].includes($args[0].hStyle) ? $args[0].hStyle : "neat">> -<</if>> -<<set _underArmHStyle = $args[0].underArmHStyle>> - -<<set _imgSkinLoc = _folderLoc + "/body/white">> - -/% Shoulder width and arm or no arm %/ -<<if $args[0].amp != 1>> - <<if $args[0].devotion > 50>> - <<set _leftArmType = "high">> - <<set _rightArmType = "high">> - <<elseif $args[0].trust >= -20>> - <<if $args[0].devotion < -20>> - <<set _leftArmType = "rebel">> - <<set _rightArmType = "low">> - <<elseif $args[0].devotion <= 20>> - <<set _leftArmType = "low">> - <<set _rightArmType = "low">> - <<else>> - <<set _leftArmType = "mid">> - <<set _rightArmType = "high">> - <</if>> - <<else>> - <<set _leftArmType = "mid">> - <<set _rightArmType = "mid">> - <</if>> - - <<if $args[0].fuckdoll == 0 && $args[0].clothes != "restrictive latex" && $args[0].clothes != "a latex catsuit">> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/arm right " + _rightArmType + ".svg'" + " style='"+ _skinFilter + "'>">> - <<if $args[0].underArmHStyle == "bushy">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/underArm " + _underArmHStyle + " right.svg'" + " style='" + _underArmFilter + "'/>">> - <</if>> - <<else>> - <<if $args[0].fuckdoll != 0>> - <<set _rightArmType = "mid">> - <</if>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/arm right " + _rightArmType + " latex.svg'" + "/>">> - <</if>> - -<<else>> - <<if $args[0].fuckdoll == 0 && $args[0].clothes != "restrictive latex" && $args[0].clothes != "a latex catsuit" && $args[0].underArmHStyle == "bushy">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/underArm " + _underArmHStyle + " right.svg'" + " style='" + _underArmFilter + "'/>">> - <</if>> -<</if>> - -/% Hair Aft %/ -<<if $args[0].hStyle != "shaved" && $args[0].fuckdoll == 0>> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/" + _hairStyle + " back.svg'" + " style='" + _hairFilter + "'/>">> -<</if>> - -/% Tailed Plug %/ -<<if $args[0].buttplugAttachment == "tail">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/outfit/tail plug.svg'" + " style='" + _hairFilter + "'/>">> -<</if>> - -/% Butt %/ -<<if $args[0].amp != 1>> -<<if $args[0].butt > 6>> - <<set _buttSize = 3>> -<<elseif $args[0].butt > 4>> - <<set _buttSize = 2>> -<<elseif $args[0].butt > 2>> - <<set _buttSize = 1>> -<<else>> - <<set _buttSize = 0>> -<</if>> -<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<set _buttSize = _buttSize + " latex">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/butt " + _buttSize + ".svg'" + " style='"+ _skinFilter + "'>">> -<<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/butt " + _buttSize + ".svg'" + " style='"+ _skinFilter + "'>">> -<</if>> -<</if>> - -/% Leg + 1 size up when chubby or fat%/ -<<if $args[0].hips < 0>> - <<if $args[0].weight > 95>>/%Chubby%/ - <<set _legSize = "normal">> - <<else>> - <<set _legSize = "narrow">> - <</if>> -<<elseif $args[0].hips == 0>> - <<if $args[0].weight > 95>>/%Chubby%/ - <<set _legSize = "wide">> - <<else>> - <<set _legSize = "normal">> - <</if>> -<<elseif $args[0].hips > 0>> - <<set _legSize = "wide">> -<</if>> -<<if $args[0].amp == 1>> - <<set _legSize = "stump " + _legSize>> -<</if>> -<<if ($args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit") && $args[0].amp != 1>> - <<set _legSize = _legSize + " latex">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/leg " + _legSize + ".svg'" + "/>">> -<<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/leg " + _legSize + ".svg'" + " style='"+ _skinFilter + "'>">> -<</if>> - -/% Feet %/ -<<if $args[0].amp != 1>> -<<if $args[0].shoes == "heels">> - <<set _shoesType = "heel">> -<<elseif $args[0].shoes == "extreme heels">> - <<if $args[0].weight > 95>>/%Chubby%/ - <<set _shoesType = "extreme heel wide">> - <<else>> - <<set _shoesType = "extreme heel">> - <</if>> -<<elseif $args[0].shoes == "boots">> - <<if $args[0].weight > 95>>/%Chubby%/ - <<set _shoesType = "boot wide">> - <<else>> - <<set _shoesType = "boot">> - <</if>> -<<elseif $args[0].shoes == "flats">> - <<set _shoesType = "flat">> -<<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/feet.svg'" + " style='"+ _skinFilter + "'>">> -<</if>> -<<if $args[0].shoes == "extreme heels" || $args[0].shoes == "boots">> - <<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<set _shoesType = _shoesType + " latex">> - <</if>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/" + _shoesType + ".svg'" + "/>">> -<</if>> -<<if $args[0].shoes == "heels" || $args[0].shoes == "flats">> - <<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<set _shoesType = _shoesType + " latex">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/" + _shoesType + ".svg'" + "/>">> - <<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/" + _shoesType + ".svg'" + " style='"+ _skinFilter + "'>">> - <</if>> -<</if>> -<</if>> - -/% Torso %/ -<<if $args[0].waist < -40>> - <<if $args[0].weight > 30>> - <<set _torsoSize = "Hourglass">> - <<else>> - <<set _torsoSize = "Unnatural">> - <</if>> -<<elseif $args[0].waist <= 10>> - <<if $args[0].weight > 30>> - <<set _torsoSize = "Normal">> - <<else>> - <<set _torsoSize = "Hourglass">> - <</if>> -<<else>> - <<set _torsoSize = "Normal">> -<</if>> -<<print "<img class='paperdoll' src=" + _imgSkinLoc + "/torso " + _torsoSize + ".svg'" + " style='"+ _skinFilter + "'>">> -<<set _torsoOutfit = false>> -<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<set _torsoOutfit = " latex">> -<<elseif $args[0].clothes == "uncomfortable straps">> - <<set _torsoOutfit = " straps">> -<</if>> -<<if _torsoOutfit>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/torso " + _torsoSize + _torsoOutfit + ".svg'" + "/>">> -<</if>> - -<<if $args[0].amp != 1>> - <<if $args[0].fuckdoll == 0 && $args[0].clothes != "restrictive latex" && $args[0].clothes != "a latex catsuit">> - <<if _leftArmType == "high">> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/arm left " + _leftArmType + ".svg'" + " style='"+ _skinFilter + "'>">> - <<if $args[0].underArmHStyle == "bushy">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/underArm " + _underArmHStyle + " left.svg'" + " style='" + _underArmFilter + "'/>">> - <</if>> - <<else>> - <<if $args[0].underArmHStyle == "bushy">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/underArm " + _underArmHStyle + " left.svg'" + " style='" + _underArmFilter + "'/>">> - <</if>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/arm left " + _leftArmType + ".svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/arm left " + _leftArmType + ".svg'" + " style='"+ _skinFilter + "'>">> - <<else>> - <<if $args[0].fuckdoll != 0>> - <<set _leftArmType = "mid">> - <</if>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/arm left " + _leftArmType + " latex.svg'" + "/>">> - <</if>> -<<else>> - <<if $args[0].fuckdoll == 0 && $args[0].clothes != "restrictive latex" && $args[0].clothes != "a latex catsuit" && $args[0].underArmHStyle == "bushy">> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/underArm " + _underArmHStyle + " left.svg'" + " style='" + _underArmFilter + "'/>">> - <</if>> -<</if>> - -/% Vagina %/ -<<if $args[0].vagina >= 0>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/vagina.svg'" + " style='"+ _skinFilter + "'>">> - <<if $args[0].clitPiercing == 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/clit piercing.svg'" + "/>">> - <<elseif $args[0].clitPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/clit piercing heavy.svg'" + "/>">> - <<elseif $args[0].clitPiercing == 3>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/clit piercing smart.svg'" + "/>">> - <</if>> - <<if $args[0].vaginaPiercing == 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/pussy piercing.svg'" + "/>">> - <<elseif $args[0].vaginaPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/pussy piercing heavy.svg'" + "/>">> - <</if>> -<</if>> - -/% Collar %/ -<<switch $args[0].collar>> -<<case "bowtie">> -<<case "ancient Egyptian">> -<<case "nice retirement counter" "cruel retirement counter" "leather with cowbell" "pretty jewelry" "heavy gold" "satin choker" "stylish leather" "neck corset" "shock punishment" "tight steel" "uncomfortable leather" "dildo gag">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/" + $args[0].collar + ".svg'" + "/>">> -<</switch>> - -/% Head base image %/ -<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/head latex.svg'" + "/>">> -<<else>> - <<print "<img class='paperdoll' src=" +_imgSkinLoc + "/head.svg'" + " style='"+ _skinFilter + "'>">> -<</if>> - -/% Glasses %/ -<<if $args[0].eyewear == "corrective glasses" || $args[0].eyewear == "glasses" || $args[0].eyewear == "blurring glasses">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/glasses.svg'" + "/>">> -<</if>> - -/% Chastity belt or Pubic hair %/ -<<if ($args[0].chastityPenis == 1) || ($args[0].chastityVagina == 1) || ($args[0].chastityAnus == 1)>> - <<if ($args[0].chastityPenis == 1)>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/chastity male aft.svg'" + "/>">> - <</if>> - <<if ($args[0].chastityVagina == 1)>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/chastity female.svg'" + "/>">> - <</if>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/chastity base.svg'" + "/>">> -<<else>> - <<if $args[0].pubicHStyle != "waxed">> - <<set _pubicHStyle = ($args[0].pubicHStyle == "in a strip" ? "strip" : $args[0].pubicHStyle)>> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/pubes " + _pubicHStyle + ".svg' style='" + _pubesFilter + "'/>">> - <</if>> -<</if>> - -/%if pregnant or has a belly%/ -<<if $args[0].belly >= 5000>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/preg belly 5000.svg'" + " style='"+ _skinFilter + "'>">> - <<if $args[0].navelPiercing >= 1>>/*Navel Piercing*/ - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/preg navel piercing.svg'" + "/>">> - <</if>> - <<if $args[0].navelPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/preg navel piercing heavy.svg'" + "/>">> - <</if>> -<<elseif $args[0].belly <= -100>> /* condition is currently reversed until the vector can be fixed */ - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/preg belly 100.svg'" + " style='"+ _skinFilter + "'>">> - /* - <<if $args[0].navelPiercing >= 1>>/Navel Piercing/ - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/preg navel piercing.svg'" + "/>">> - <</if>> - <<if $args[0].navelPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/preg navel piercing heavy.svg'" + "/>">> - <</if>> - */ -<<else>> - /*Navel Piercing*/ - <<if $args[0].navelPiercing >= 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/navel piercing.svg'" + "/>">> - <</if>> - <<if $args[0].navelPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/navel piercing heavy.svg'" + "/>">> - <</if>> -<</if>> - -/% Boob %/ -<<if $args[0].boobs < 300>> - <<set _boobSize = 0>> -<<elseif $args[0].boobs < 500>> - <<set _boobSize = 1>> -<<elseif $args[0].boobs < 800>> - <<set _boobSize = 2>> -<<elseif $args[0].boobs < 1600>> - <<set _boobSize = 3>> -<<elseif $args[0].boobs < 3200>> - <<set _boobSize = 4>> -<<elseif $args[0].boobs < 6400>> - <<set _boobSize = 5>> -<<elseif $args[0].boobs < 12000>> - <<set _boobSize = 6>> -<<else>> - <<set _boobSize = 7>> -<</if>> - -/% Scrotum %/ -<<if $args[0].scrotum > 0>> - <<if $args[0].scrotum >= 6>> - <<set _ballSize = 4>> - <<elseif $args[0].scrotum >= 4>> - <<set _ballSize = 3>> - <<elseif $args[0].scrotum >= 3>> - <<set _ballSize = 2>> - <<elseif $args[0].scrotum >= 2>> - <<set _ballSize = 1>> - <<else>> - <<set _ballSize = 0>> - <</if>> -<</if>> - -/% Penis %/ -<<if $args[0].dick > 0>> - <<if $args[0].dick >= 8>> - <<set _penisSize = 6>> - <<elseif $args[0].dick >= 7>> - <<set _penisSize = 5>> - <<elseif $args[0].dick >= 6>> - <<set _penisSize = 4>> - <<elseif $args[0].dick >= 5>> - <<set _penisSize = 3>> - <<elseif $args[0].dick >= 4>> - <<set _penisSize = 2>> - <<elseif $args[0].dick >= 2>> - <<set _penisSize = 1>> - <<else>> - <<set _penisSize = 0>> - <</if>> -<</if>> - -/% Boob %/ -<<set _needBoobs = 1>> -<<if $args[0].dick > 0>> -<<if canAchieveErection($args[0])>> -<<if _boobSize < 6>> - <<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - /* normal case: outfit hides boobs */ - <<set _boobOutfit = " latex" >> - <</if>> - <<if _boobOutfit >> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/boob " +_boobSize + _boobOutfit + ".svg'" + "/>">> - <<if $args[0].lactation > 0>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize + " areola.svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - <<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize +".svg'" + " style='"+ _skinFilter + "'>">> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize + " areola.svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - /* special case: straps are actually dawn over the boobs */ - <<if $args[0].clothes == "uncomfortable straps">> - <<set _boobOutfit = " straps" >> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/boob " +_boobSize + _boobOutfit + ".svg'" + "/>">> - <</if>> - <<set _needBoobs = 0>> -<</if>> -<</if>> -<</if>> -<<if $args[0].vagina > 0>> - <<if $args[0].dick > 0>> - <div class="highPenis"> - <<if $args[0].scrotum > 0>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/ball " + _ballSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - <<if canAchieveErection($args[0])>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/penis " + _penisSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/flaccid " + _penisSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <<if ($args[0].chastityPenis == 1)>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/chastity male fore " + _penisSize + ".svg'" + "/>">> - <</if>> - <</if>> - </div> - <</if>> -<<else>> - <<if $args[0].dick > 0>> - <div class="lowPenis"> - <<if $args[0].scrotum > 0>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/ball " + _ballSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - <<if canAchieveErection($args[0])>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/penis " + _penisSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/flaccid " + _penisSize + ".svg'" + " style='"+ _skinFilter + "'>">> - <<if ($args[0].chastityPenis == 1)>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/chastity male fore " + _penisSize + ".svg'" + "/>">> - <</if>> - <</if>> - </div> - <</if>> -<</if>> -<<if _needBoobs>> - <<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/boob " +_boobSize +" latex.svg'" + "/>">> - <<if $args[0].lactation > 0>><<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize + " areola.svg'" + " style='"+ _skinFilter + "'>">><</if>> - <<else>> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize +".svg'" + " style='"+ _skinFilter + "'>">> - <<print "<img class='paperdoll' src=" + _imgSkinLoc + "/boob " +_boobSize + " areola.svg'" + " style='"+ _skinFilter + "'>">> - <</if>> - /* special case: straps are actually dawn over the boobs */ - <<if $args[0].clothes == "uncomfortable straps">> - <<set _boobOutfit = " straps" >> - <<print "<img class='paperdoll' src=" + _folderLoc + "/outfit/boob " +_boobSize + _boobOutfit + ".svg'" + "/>">> - <</if>> -<</if>> - -/% piercings %/ -<<if $args[0].nipplesPiercing == 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/boob " +_boobSize +" piercing.svg'" + "/>">> -<<elseif $args[0].nipplesPiercing == 2>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/boob " +_boobSize +" piercing heavy.svg'" + "/>">> -<</if>> -<<if $args[0].areolaePiercing == 1>> - <<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/boob " +_boobSize +" areola piercing.svg'" + "/>">> -<</if>> - -/% clavicle %/ -<<print "<img class='paperdoll' src=" + _folderLoc + "/body/addon/clavicle.svg'" + "/>">> - -/% Hair Foreground %/ -<<if $args[0].hStyle != "shaved" && $args[0].fuckdoll == 0>> - <<= "<img class='paperdoll' src=" + _folderLoc + "/hair/" + _hairStyle + " front.svg'" + " style='" + _hairFilter + "'/>">> -<</if>> - -<<elseif $imageChoice == 3>> /* VECTOR ART REVAMP*/ - -<<= RevampedVectorArt($args[0])>> - -<<else>> /* RENDERED IMAGES BY SHOKUSHU */ - - <<= ArtControlRendered($args[0], $args[1])>> - -<</if>> /* CLOSES IMAGE CHOICE */ +<<= SlaveArt($args[0], $args[1], $args[2])>> <</widget>> diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js index 55013b9c6246ee0807f9ce8f9dba58ffcc0c8adf..fe6ebc59ad2dcb011fd928d0e7c145bc2838ce6b 100644 --- a/src/art/vector/VectorArtJS.js +++ b/src/art/vector/VectorArtJS.js @@ -2,7 +2,7 @@ window.VectorArt = (function () { "use strict"; let V, T, slave; let r; - let leftArmType, rightArmType, legSize, torsoSize, buttSize, penisSize, hairLength; + let leftArmType, rightArmType, legSize, torsoSize, buttSize, penisSize, hairLength, wearingLatex; let bellyScaleFactor, artBoobScaleFactor, heightScaleFactor; let artTranslationX, artTranslationY; let penisDrawtime, penisArtString; @@ -12,6 +12,7 @@ window.VectorArt = (function () { V = State.variables; T = State.temporary; slave = artSlave; + wearingLatex = slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit"; /* reset/initialize some variables */ T.artTransformBelly = ""; T.artTransformBoob = ""; @@ -37,7 +38,8 @@ window.VectorArt = (function () { ArtVectorAnalAccessories(); ArtVectorButt(); ArtVectorLeg(); - ArtVectorFeet(); /* includes shoes and leg outfits*/ + if (slave.amp !== 1) + ArtVectorFeet(); /* includes shoes and leg outfits*/ ArtVectorTorso(); ArtVectorPussy(); ArtVectorPubicHair(); @@ -512,7 +514,7 @@ window.VectorArt = (function () { } /* shiny clothing */ if (V.seeVectorArtHighlights === 1) { - if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit" || slave.clothes === "body oil") { + if (wearingLatex === true || slave.clothes === "body oil") { /* only some arm positions have art (feel free to add more) */ if (leftArmType === "High") r += jsInclude("Art_Vector_Arm_Outfit_Shine_Left_High"); @@ -704,7 +706,7 @@ window.VectorArt = (function () { } /* shiny clothing */ if (V.seeVectorArtHighlights === 1) { - if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit" || slave.clothes === "body oil") { + if (wearingLatex === true || slave.clothes === "body oil") { r += jsInclude("Art_Vector_Belly_Outfit_Shine"); } } @@ -1046,7 +1048,7 @@ window.VectorArt = (function () { function setOutfitColor() { /* TODO: rewrite all textual descriptions not to explicitly mention the latex being of black color. */ - if (slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit" || slave.clothes === "a cybersuit") + if (wearingLatex === true || slave.clothes === "a cybersuit") outfitBaseColour = slave.clothingBaseColor || "#515351"; /* use custom color, or use default latex color */ else if (slave.clothes == "a comfortable bodysuit") outfitBaseColour = slave.clothingBaseColor || "#464646"; /* use custom color, or use default bodysuit color */ @@ -1735,7 +1737,7 @@ window.VectorArt = (function () { r += jsInclude("Art_Vector_Head"); /* shiny clothing */ if (V.seeVectorArtHighlights === 1) { - if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit") + if (wearingLatex === true) r += jsInclude("Art_Vector_Head_Outfit_Shine"); } if (slave.clothes !== "restrictive latex") { @@ -2385,7 +2387,7 @@ window.VectorArt = (function () { r += jsInclude(`Art_Vector_Torso_Outfit_${clothing2artSuffix(slave.clothes)}_${torsoSize}`); } if (V.seeVectorArtHighlights === 1) { - if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit") { + if (wearingLatex === true) { if (slave.amp !== 0) r += jsInclude("Art_Vector_Torso_Outfit_Shine_Shoulder"); if (slave.preg <= 0) @@ -2396,3 +2398,401 @@ window.VectorArt = (function () { return VectorArt; })(); + +window.LegacyVectorArt = function(slave, artSize) { + const filePath = "'resources/vector"; + const skinFilePath = filePath + "/body/white"; + const wearingLatex = slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit"; + let hairStyle, underArmHStyle, leftArmType, rightArmType, buttSize, legSize, shoesType, torsoSize, boobSize, ballSize, penisSize; + let needBoobs = true; + let r = jsInclude("SVG filters"); + + /* Set skin color */ + let skinFilter = `filter: url(#skin-${_.kebabCase(slave.skin)});`; + /* Set hair color */ + let hairFilter = `filter: url(#hair-${_.kebabCase(slave.hColor)});`; + let underArmFilter = `filter: url(#hair-${_.kebabCase(slave.underArmHColor)});`; + let pubesFilter = `filter: url(#hair-${_.kebabCase(slave.pubicHColor)});`; + + if (artSize === 1) + r += `<img class='paperdoll' src=${filePath}/test ui.svg'/`; + + if (slave.customHairVector) + hairStyle = slave.customHairVector; + else + hairStyle = (["afro", "braided", "bun", "buzzcut", "dreadlocks", "eary", "luxurious", "messy", "neat", "ponytail", "strip", "tails", "trimmed", "up"].includes(slave.hStyle) ? slave.hStyle : "neat"); + + underArmHStyle = slave.underArmHStyle; + + /* Shoulder width and arm or no arm */ + if (slave.amp !== 1) { + if (slave.devotion > 50) { + leftArmType = "high"; + rightArmType = "high"; + } else if (slave.trust >= -20) { + if (slave.devotion < -20) { + leftArmType = "rebel"; + rightArmType = "low"; + } else if (slave.devotion <= 20) { + leftArmType = "low"; + rightArmType = "low"; + } else { + leftArmType = "mid"; + rightArmType = "high"; + } + } else { + leftArmType = "mid"; + rightArmType = "mid"; + } + + if (wearingLatex === false) { + r += `<img class='paperdoll' src=${skinFilePath}/arm right ${rightArmType}.svg' style='${skinFilter}'>`; + if (slave.underArmHStyle === "bushy") + r += `<img class='paperdoll' src=${filePath}/hair/underArm ${underArmHStyle} right.svg' style='{underArmFilter}'/>`; + } else { + if (slave.fuckdoll !== 0) + rightArmType = "mid"; + r += `<img class='paperdoll' src=${filePath}/outfit/arm right ${rightArmType} latex.svg'/>`; + } + } else if (wearingLatex === false && slave.underArmHStyle === "bushy") { + r += `<img class='paperdoll' src=${filePath}/hair/underArm ${underArmHStyle} right.svg' style='{underArmFilter}'/>`; + } + + /* Hair Aft */ + if (slave.fuckdoll === 0) { + switch (slave.hStyle) { + case "eary": + case "luxurious": + case "messy": + case "neat": + case "tails": + case "trimmed": + r += `<img class='paperdoll' src=${filePath}/hair/${hairStyle} back.svg' style='${hairFilter}'/>`; + } + } + + /* Tailed Plug */ + if (slave.buttplugAttachment === "tail") + r += `<img class='paperdoll' src=${filePath}/outfit/tail plug.svg' style='${hairFilter}'/>`; + + /* Butt */ + if (slave.amp !== 1) { + if (slave.butt > 6) + buttSize = 3; + else if (slave.butt > 4) + buttSize = 2; + else if (slave.butt > 2) + buttSize = 1; + else + buttSize = 0; + + if (wearingLatex === true) + r += `<img class='paperdoll' src=${filePath}/outfit/butt ${buttSize} latex.svg' style='${skinFilter}'>`; + else + r += `<img class='paperdoll' src=${skinFilePath}/butt ${buttSize}.svg' style='${skinFilter}'>`; + } + + /* Leg + 1 size up when chubby or fat */ + if (slave.hips < 0) { + if (slave.weight > 95) /* Chubby */ + legSize = "normal"; + else + legSize = "narrow"; + } else if (slave.hips === 0) { + if (slave.weight > 95) /* Chubby */ + legSize = "wide"; + else + legSize = "normal"; + } else { + legSize = "wide"; + } + if (slave.amp === 1) + legSize = "stump " + legSize; + + if (wearingLatex === true && slave.amp !== 1) + r += `<img class='paperdoll' src=${filePath}/outfit/leg ${legSize} latex.svg'/>`; + else + r += `<img class='paperdoll' src=${skinFilePath}/leg ${legSize}.svg' style='${skinFilter}'>`; + + /* Feet */ + if (slave.amp !== 1) { + if (slave.shoes === "heels") { + shoesType = "heel"; + } else if (slave.shoes === "extreme heels") { + if (slave.weight > 95 ) /* Chubby */ + shoesType = "extreme heel wide"; + else + shoesType = "extreme heel"; + } else if (slave.shoes === "boots") { + if (slave.weight > 95) /* Chubby */ + shoesType = "boot wide"; + else + shoesType = "boot"; + } else if (slave.shoes === "flats") { + shoesType = "flat"; + } else { + r += `<img class='paperdoll' src=${skinFilePath}/feet.svg' style='${skinFilter}'>`; + } + if (slave.shoes === "extreme heels" || slave.shoes === "boots") { + if (wearingLatex === true) + r += `<img class='paperdoll' src=${filePath}/outfit/${shoesType} latex.svg'/>`; + else + r += `<img class='paperdoll' src=${filePath}/outfit/${shoesType}.svg'/>`; + } else if (slave.shoes === "heels" || slave.shoes === "flats") { + if (wearingLatex === true) + r += `<img class='paperdoll' src=${filePath}/outfit/${shoesType} latex.svg'/>`; + else + r += `<img class='paperdoll' src=${skinFilePath}/${shoesType}.svg' style='${skinFilter}'>`; + } + } + + /* Torso */ + if (slave.waist < -40) { + if (slave.weight > 30) + torsoSize = "Hourglass"; + else + torsoSize = "Unnatural"; + } else if (slave.waist <= 10) { + if (slave.weight > 30) + torsoSize = "Normal"; + else + torsoSize = "Hourglass"; + } else { + torsoSize = "Normal"; + } + r += `<img class='paperdoll' src=${skinFilePath}/torso ${torsoSize}.svg' style='${skinFilter}'>`; + if (wearingLatex === true) + r += `<img class='paperdoll' src=${filePath}/outfit/torso ${torsoSize} latex.svg'/>`; + else if (slave.clothes === "uncomfortable straps") + r += `<img class='paperdoll' src=${filePath}/outfit/torso ${torsoSize} straps.svg'/>`; + + if (slave.amp !== 1) { + if (wearingLatex === false) { + if (leftArmType === "high") { + r += `<img class='paperdoll' src=${skinFilePath}/arm left ${leftArmType}.svg' style='${skinFilter}'>`; + if (slave.underArmHStyle === "bushy") + r += `<img class='paperdoll' src=${filePath}/hair/underArm ${underArmHStyle} left.svg' style='${underArmFilter}'/>`; + } else { + if (slave.underArmHStyle === "bushy") + r += `<img class='paperdoll' src=${filePath}/hair/underArm ${underArmHStyle} left.svg' style='${underArmFilter}'/>`; + r += `<img class='paperdoll' src=${skinFilePath}/arm left ${leftArmType}.svg' style='${skinFilter}'>`; + } + r += `<img class='paperdoll' src=${skinFilePath}/arm left ${leftArmType}.svg' style='${skinFilter}'>`; + } else { + if (slave.fuckdoll !== 0) + leftArmType = "mid"; + r += `<img class='paperdoll' src=${filePath}/outfit/arm left ${leftArmType} latex.svg'/>`; + } + } else if (wearingLatex === false && slave.underArmHStyle === "bushy") { + r += `<img class='paperdoll' src=${filePath}/hair/underArm ${underArmHStyle} left.svg' style='${underArmFilter}'/>`; + } + + /* Vagina */ + if (slave.vagina >= 0) { + r += `<img class='paperdoll' src=${skinFilePath}/vagina.svg' style='${skinFilter}'>`; + if (slave.clitPiercing === 1) + r += `<img class='paperdoll' src=${filePath}/body/addon/clit piercing.svg'/>`; + else if (slave.clitPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/clit piercing heavy.svg'/>`; + else if (slave.clitPiercing === 3) + r += `<img class='paperdoll' src=${filePath}/body/addon/clit piercing smart.svg'/>`; + + if (slave.vaginaPiercing === 1) + r += `<img class='paperdoll' src=${filePath}/body/addon/pussy piercing.svg'/>`; + else if (slave.vaginaPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/pussy piercing heavy.svg'/>`; + } + + /* Collar */ + switch (slave.collar) { + case "nice retirement counter": + case "cruel retirement counter": + case "leather with cowbell": + case "pretty jewelry": + case "heavy gold": + case "satin choker": + case "stylish leather": + case "neck corset": + case "shock punishment": + case "tight steel": + case "uncomfortable leather": + case "dildo gag": + r += `<img class='paperdoll' src=${filePath}/outfit/${slave.collar}.svg'/>`; + } + + /* Head base image */ + if (wearingLatex === true) + r += `<img class='paperdoll' src=${filePath}/outfit/head latex.svg'/>`; + else + r += `<img class='paperdoll' src=${skinFilePath}/head.svg' style='${skinFilter}'>`; + + /* Glasses */ + if (slave.eyewear === "corrective glasses" || slave.eyewear === "glasses" || slave.eyewear === "blurring glasses") + r += `<img class='paperdoll' src=${filePath}/outfit/glasses.svg'/>`; + + /* Chastity belt or Pubic hair */ + if (slave.chastityPenis === 1 || slave.chastityVagina === 1 || slave.chastityAnus === 1) { + if (slave.chastityPenis === 1) + r += `<img class='paperdoll' src=${filePath}/outfit/chastity male aft.svg'/>`; + if (slave.chastityVagina === 1) + r += `<img class='paperdoll' src=${filePath}/outfit/chastity female.svg'/>`; + r += `<img class='paperdoll' src=${filePath}/outfit/chastity base.svg'/>`; + } else if (slave.pubicHStyle !== "waxed" && slave.pubicHStyle !== "bald" && slave.pubicHStyle !== "hairless") { + let pubicHStyle = (slave.pubicHStyle == "in a strip" ? "strip" : slave.pubicHStyle); + r += `<img class='paperdoll' src=${filePath}/hair/pubes ${pubicHStyle}.svg' style='${pubesFilter}'/>`; + } + + /* if pregnant or has a belly */ + if (slave.belly >= 5000) { + r += `<img class='paperdoll' src=${skinFilePath}/preg belly 5000.svg' style='${skinFilter}'>`; + if (slave.navelPiercing >= 1) /*Navel Piercing*/ + r += `<img class='paperdoll' src=${filePath}/body/addon/preg navel piercing.svg'/>`; + if (slave.navelPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/preg navel piercing heavy.svg'/>`; + } else if (slave.belly <= -100) { /* condition is currently reversed until the vector can be fixed */ + r += `<img class='paperdoll' src=${skinFilePath}/preg belly 100.svg' style='${skinFilter}'>`; + /* + if (slave.navelPiercing >= 1)/Navel Piercing/ + r += `<img class='paperdoll' src=${filePath}/body/addon/preg navel piercing.svg'/>`; + if (slave.navelPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/preg navel piercing heavy.svg'/>`; + */ + } else { + if (slave.navelPiercing >= 1) /*Navel Piercing*/ + r += `<img class='paperdoll' src=${filePath}/body/addon/navel piercing.svg'/>`; + if (slave.navelPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/navel piercing heavy.svg'/>`; + } + + /* Boob */ + if (slave.boobs < 300) + boobSize = 0; + else if (slave.boobs < 500) + boobSize = 1; + else if (slave.boobs < 800) + boobSize = 2; + else if (slave.boobs < 1600) + boobSize = 3; + else if (slave.boobs < 3200) + boobSize = 4; + else if (slave.boobs < 6400) + boobSize = 5; + else if (slave.boobs < 12000) + boobSize = 6; + else + boobSize = 7; + + /* Scrotum */ + if (slave.scrotum > 0) { + if (slave.scrotum >= 6) + ballSize = 4; + else if (slave.scrotum >= 4) + ballSize = 3; + else if (slave.scrotum >= 3) + ballSize = 2; + else if (slave.scrotum >= 2) + ballSize = 1; + else + ballSize = 0; + } + + /* Penis */ + if (slave.dick > 0) { + if (slave.dick >= 8) + penisSize = 6; + else if (slave.dick >= 7) + penisSize = 5; + else if (slave.dick >= 6) + penisSize = 4; + else if (slave.dick >= 5) + penisSize = 3; + else if (slave.dick >= 4) + penisSize = 2; + else if (slave.dick >= 2) + penisSize = 1; + else + penisSize = 0; + } + + /* Boob */ + if (slave.dick > 0) { + if (canAchieveErection(slave)) { + if (boobSize < 6) { + if (wearingLatex === true) { + /* normal case: outfit hides boobs */ + r += `<img class='paperdoll' src=${filePath}/outfit/boob ${boobSize} latex.svg'/>`; + if (slave.lactation > 0) + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize} areola.svg' style='${skinFilter}'>`; + } else { + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize}.svg' style='${skinFilter}'>`; + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize} areola.svg' style='${skinFilter}'>`; + } + /* special case: straps are actually dawn over the boobs */ + if (slave.clothes === "uncomfortable straps") + r += `<img class='paperdoll' src=${filePath}/outfit/boob ${boobSize} straps.svg'/>`; + + needBoobs = false; + } + } + } + if (slave.vagina > 0) { + if (slave.dick > 0) { + r += '<div class="highPenis">'; + if (slave.scrotum > 0) + r += `<img class='paperdoll' src=${skinFilePath}/ball ${ballSize}.svg' style='${skinFilter}'>`; + if (canAchieveErection(slave)) { + r += `<img class='paperdoll' src=${skinFilePath}/penis ${penisSize}.svg' style='${skinFilter}'>`; + } else { + r += `<img class='paperdoll' src=${skinFilePath}/flaccid ${penisSize}.svg' style='${skinFilter}'>`; + if (slave.chastityPenis === 1) + r += `<img class='paperdoll' src=${filePath}/outfit/chastity male fore ${penisSize}.svg'/>`; + } + r += '</div>'; + } + } else { + if (slave.dick > 0) { + r += '<div class="lowPenis">'; + if (slave.scrotum > 0) + r += `<img class='paperdoll' src=${skinFilePath}/ball ${ballSize}.svg' style='${skinFilter}'>`; + if (canAchieveErection(slave)) { + r += `<img class='paperdoll' src=${skinFilePath}/penis ${penisSize}.svg' style='${skinFilter}'>`; + } else { + r += `<img class='paperdoll' src=${skinFilePath}/flaccid ${penisSize}.svg' style='${skinFilter}'>`; + if (slave.chastityPenis === 1) + r += `<img class='paperdoll' src=${filePath}/outfit/chastity male fore ${penisSize}.svg'/>`; + } + r += '</div>'; + } + } + if (needBoobs === true) { + if (wearingLatex === true) { + r += `<img class='paperdoll' src=${filePath}/outfit/boob ${boobSize} latex.svg'/>`; + if (slave.lactation > 0) + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize} areola.svg' style='${skinFilter}'>`; + } else { + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize}.svg' style='${skinFilter}'>`; + r += `<img class='paperdoll' src=${skinFilePath}/boob ${boobSize} areola.svg' style='${skinFilter}'>`; + } + /* special case: straps are actually dawn over the boobs */ + if (slave.clothes === "uncomfortable straps") + r += `<img class='paperdoll' src=${filePath}/outfit/boob ${boobSize} straps.svg'/>`; + } + + /* piercings */ + if (slave.nipplesPiercing === 1) + r += `<img class='paperdoll' src=${filePath}/body/addon/boob ${boobSize} piercing.svg'/>`; + else if (slave.nipplesPiercing === 2) + r += `<img class='paperdoll' src=${filePath}/body/addon/boob ${boobSize} piercing heavy.svg'/>`; + + if (slave.areolaePiercing === 1) + r += `<img class='paperdoll' src=${filePath}/body/addon/boob ${boobSize} areola piercing.svg'/>`; + + /* clavicle */ + r += `<img class='paperdoll' src=${filePath}/body/addon/clavicle.svg'/>`; + + /* Hair Foreground */ + if (slave.hStyle !== "shaved" && slave.fuckdoll === 0) + r += `<img class='paperdoll' src=${filePath}/hair/${hairStyle} front.svg' style='${hairFilter}'/>`; + + return r; +}; diff --git a/src/gui/svgFilters.tw b/src/gui/svgFilters.tw index c6700a29224dfa3783dc0cbae9cd2f124a9355e4..42e0b12951599b547d7562aeff5ca1a93c23ba12 100644 --- a/src/gui/svgFilters.tw +++ b/src/gui/svgFilters.tw @@ -1,5 +1,5 @@ -:: SVG filters [widget] -<<widget "SVGFilters">> +:: SVG filters + <html> <svg class="defs-only" style="width: 0; height: 0; position: absolute;"> <filter id="skin-black" color-interpolation-filters="sRGB"> @@ -214,4 +214,3 @@ </filter> </svg> </html> -<</widget>> \ No newline at end of file diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index beb5c34920ca91dff7363e8ab887b39159430892..28e29af6d747d17c13245c9e5ba9cc86c0467994 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -601,7 +601,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() { if (typeof slave.customTitleLisp !== "string") { slave.customTitleLisp = ""; } - if (typeof slave.customImage !== "string") { + if (typeof slave.customImage !== "string" || slave.customImage === "") { slave.customImage = 0; } } diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 87fc308ecc7c2c1821f0aac1a4e39f3ba27cb306..2997056c24cd1faaa8dce4c845c819729d29578d 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -18779,6 +18779,32 @@ You tell $him kindly that you understand, and that $he'll be trained to address <</if>> $He loves being on top, even if $he's the one who's getting fucked. $He rides you happily, <<set _fucked = 1>> + <<case "sadist">> + turns around and hesitantly sits on <<if $PC.dick == 1>>your cock<<else>>the phallus<</if>>, letting + <<if canDoVaginal($activeSlave) && ($activeSlave.vagina > 0)>> + it slide into $his cunt. + <<= VaginalVCheck()>> + <<elseif canDoAnal($activeSlave) && ($activeSlave.anus > 0)>> + it slide up $his butt. + <<= AnalVCheck()>> + <<else>> + it slide between $his thighs. + <</if>> + $He prefers to be rough, but settles for just directing how $he gets used. $He rides you cautiously, + <<set _fucked = 1>> + <<case "masochist">> + turns around and carefully perches $himself on <<if $PC.dick == 1>>your cock<<else>>the phallus<</if>>, + <<if canDoVaginal($activeSlave) && ($activeSlave.vagina > 0)>> + letting $his weight slide it inside $his wet pussy at an uncomfortable angle. + <<= VaginalVCheck()>> + <<elseif canDoAnal($activeSlave) && ($activeSlave.anus > 0)>> + letting $his weight push it up $his asshole at an uncomfortable angle. + <<= AnalVCheck()>> + <<else>> + putting it between $his thighs at an uncomfortable angle. + <</if>> + $He does $his best to please you while making sex as unpleasant as $he can for $himself. $He pays close attention to your comfort versus $his own, + <<set _fucked = 1>> <</switch>> <</if>> <<if _fucked == 1>> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index beef4bed5b85befbdaf91a7207cba441195e1940..579e73cd46e8ed961fdb47b7f56ab3158bbfe944 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -5719,6 +5719,13 @@ $His <<else>> is made to be easily liftable for access to $his anus. <</if>> + <<case "a nice maid outfit">> + As conservative as $his dress is, + <<if ($activeSlave.chastityAnus)>> + $his anal chastity accessory still hides under it. + <<else>> + $his anus is still bare beneath it. + <</if>> <<case "a kimono">> As demure as the kimono is, <<if ($activeSlave.chastityAnus)>>