diff --git a/src/js/porn.js b/src/js/porn.js index 7a4cf1597aead1fd4ddd50a55f51c58f08f116a8..6a48d23fd9d9d41394e1e13638e8afcfa6b442ca 100644 --- a/src/js/porn.js +++ b/src/js/porn.js @@ -404,6 +404,58 @@ App.Porn.Genre.stud = { uiName: function() { return capFirstChar(this.fameName); } }; +App.Porn.Genre.muscle = { + fameVar: "muscle", + fameName: "muscle", + focusName: "muscle", + type: App.Porn.GenreType.general, + prestigeDesc1: "Thousands have enjoyed the sight of $his hard muscles", + prestigeDesc2: "$His many fans relish the sight of $his hard muscles", + prestigeDesc3: "Millions are intimately familiar with the sight of $his hard muscles", + hitText: function(slave) { return `${getPronouns(slave).His} powerful muscles and bodybuilder physique attracts a dedicated audience.`; }, + trinketShotDesc: function(slave) { return `showing ${getPronouns(slave).him} holding ${getPronouns(slave).his} partner in the air during sex`; }, + valid: function(slave) { return slave.muscles > 80; }, + uiName: function() { return capFirstChar(this.fameName); } +}; + +App.Porn.Genre.incest = { + fameVar: "incest", + fameName: "taboo", + focusName: "incest", + type: App.Porn.GenreType.general, + prestigeDesc1: "Thousands have enjoyed seeing the love $he shares with $his family members", + prestigeDesc2: "$His many fans relish the sight of $him loving $his family members", + prestigeDesc3: "Millions are intimately familiar with the sight of $him loving $his family members", + hitText: function(slave) { + if (App.Utils.hasPartnerSex(slave) && areRelated(slave, getSlave(slave.relationshipTarget))) { + const partner = getSlave(slave.relationshipTarget); + return `${getPronouns(slave).His} sexual escapades with ${getPronouns(slave).his} ${relativeTerm(slave, partner)} ${partner.slaveName} excite viewers attracted to incestuous relationships.`; + } else if (App.Utils.hasFamilySex(slave)) { + return `${getPronouns(slave).His} sexual escapades with ${getPronouns(slave).his} close family members excite viewers attracted to incest.`; + } else { + return `${getPronouns(slave).His} sexual escapades with you, ${getPronouns(slave).his} own ${relativeTerm(slave, V.PC)}, excite viewers attracted to incestuous relationships.`; + } + }, + trinketShotDesc: function(slave) { + if (App.Utils.hasPartnerSex(slave) && areRelated(slave, getSlave(slave.relationshipTarget))) { + const partner = getSlave(slave.relationshipTarget); + return `showing ${getPronouns(slave).him} having fun with ${getPronouns(slave).his} ${relativeTerm(slave, partner)} ${partner.slaveName}`; + } else if (App.Utils.hasFamilySex(slave)) { + return `showing ${getPronouns(slave).him} having incestuous fun with ${getPronouns(slave).his} family`; + } else { + return `showing ${getPronouns(slave).him} having incestuous fun with you`; + } + }, + valid: function(slave) { + return (V.seeIncest !== 0) && ( + (App.Utils.hasFamilySex(slave)) // has sex with family + || (App.Utils.hasPartnerSex(slave) && areRelated(slave, getSlave(slave.relationshipTarget))) // or with her partner, who is related to her + || (App.Utils.sexAllowed(slave, V.PC) && areRelated(slave, V.PC)) // or with you, and is related to you + ); + }, + uiName: function() { return capFirstChar(this.fameName); } +}; + /* quirk genres */ App.Porn.Genre.deepThroat = {