diff --git a/src/npc/interaction/fAnimal.js b/src/npc/interaction/fAnimal.js index cfeb3f78f58ec2e5f033c67c778e007c2647b989..0df0539565d728129130e82e22194c9fca130066 100644 --- a/src/npc/interaction/fAnimal.js +++ b/src/npc/interaction/fAnimal.js @@ -108,19 +108,7 @@ App.Interact.fAnimal = function(slave, type) { const mainDiv = App.UI.DOM.appendNewElement("div", frag); - mainDiv.append(intro()); - - if (slave.devotion > 50) { - mainDiv.append(consummationDevoted()); - } else if (slave.devotion > 20) { - mainDiv.append(consummationNondevoted()); - } else if (slave.devotion > -20) { - mainDiv.append(consummationNonresistant()); - } else { - mainDiv.append(consummationResistant()); - } - - mainDiv.append(completion(), sexEffects()); + mainDiv.append(intro(), consummation(), completion(), sexEffects()); if (V.postSexCleanUp) { mainDiv.append(cleanUp()); @@ -270,329 +258,341 @@ App.Interact.fAnimal = function(slave, type) { // MARK: Consummation Functions - function consummationDevoted() { - const - mainSpan = document.createElement("span"), - r = []; - - if (act === oral) { - r.push(`You have ${him} kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock and begins to give it a few tentative licks before finally putting it in ${his} mouth. `); + function consummation() { + if (slave.devotion > 50) { + return consummationDevoted(); + } else if (slave.devotion > 20) { + return consummationNondevoted(); + } else if (slave.devotion > -20) { + return consummationNonresistant(); } else { - r.push(`You have ${him} ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); - } - - switch (animal) { - case V.activeCanine: - consummationDevotedCanine(act); - break; - case V.activeHooved: - consummationDevotedHooved(act); - break; - case V.activeFeline: - consummationDevotedFeline(act); - break; - default: - throw new Error(`Unexpected animal type '${animal}' in consummationDevoted()`); + return consummationResistant(); } - if (act !== oral) { - mainSpan.append(virginityCheck(act)); - } + function consummationDevoted() { + const + mainSpan = document.createElement("span"), + r = []; - function consummationDevotedCanine(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave seems to quickly get over the fact that the dick currently in ${his} mouth belongs to a canine as ${his} more carnal desires kick in. `); - } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, filling ${his} throat. `); - } + if (act === oral) { + r.push(`You have ${him} kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock and begins to give it a few tentative licks before finally putting it in ${his} mouth. `); } else { - if (canWalk(slave)) { - r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + r.push(`You have ${him} ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); + } + + switch (animal) { + case V.activeCanine: + consummationDevotedCanine(act); + break; + case V.activeHooved: + consummationDevotedHooved(act); + break; + case V.activeFeline: + consummationDevotedFeline(act); + break; + default: + throw new Error(`Unexpected animal type '${animal}' in consummationDevoted()`); + } + + if (act !== oral) { + mainSpan.append(virginityCheck(act)); + } + + function consummationDevotedCanine(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave seems to quickly get over the fact that the dick currently in ${his} mouth belongs to a canine as ${his} more carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, filling ${his} throat. `); + } } else { - r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); - } + if (canWalk(slave)) { + r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + } else { + r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); + } - r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + } } - } - function consummationDevotedHooved(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave seems to quickly get over the fact that dick currently in ${his} mouth is not a human one as ${his} more carnal desires kick in. `); + function consummationDevotedHooved(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave seems to quickly get over the fact that dick currently in ${his} mouth is not a human one as ${his} more carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, stretching ${his} poor throat to the limit. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, stretching ${his} poor throat to the limit. `); + r.push(`${slave.slaveName} gives a long, drawn-out moan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } else { - r.push(`${slave.slaveName} gives a long, drawn-out moan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } - function consummationDevotedFeline(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave seems to quickly get over the fact that dick currently in ${his} mouth belongs to ${a} ${animal.name} as ${his} more carnal desires kick in. `); + function consummationDevotedFeline(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave seems to quickly get over the fact that dick currently in ${his} mouth belongs to ${a} ${animal.name} as ${his} more carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, the barbs on its cock rubbing the inside of ${his} mouth raw. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, then gives a groan as the beast thrusts, the barbs on its cock rubbing the inside of ${his} mouth raw. `); + r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } else { - r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } - mainSpan.append(r.join(' ')); + mainSpan.append(r.join(' ')); - return mainSpan; - } + return mainSpan; + } - function consummationNondevoted() { - const - mainSpan = document.createElement("span"), - r = []; + function consummationNondevoted() { + const + mainSpan = document.createElement("span"), + r = []; - if (act === oral) { - r.push(`You tell ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave hesitantly reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock, and, after taking a moment to steel ${his} resolve, begins to give it a few reluctant licks before putting it in ${his} mouth. `); - } else { - r.push(`You tell ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few seconds for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); - } + if (act === oral) { + r.push(`You tell ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave hesitantly reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock, and, after taking a moment to steel ${his} resolve, begins to give it a few reluctant licks before putting it in ${his} mouth. `); + } else { + r.push(`You tell ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few seconds for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); + } - switch (animal) { - case V.activeCanine: - consummationNondevotedCanine(act); - break; - case V.activeHooved: - consummationNondevotedHooved(act); - break; - case V.activeFeline: - consummationNondevotedFeline(act); - break; - default: - throw new Error(`Unexpected animal type '${animal}' in consummationDevoted()`); - } + switch (animal) { + case V.activeCanine: + consummationNondevotedCanine(act); + break; + case V.activeHooved: + consummationNondevotedHooved(act); + break; + case V.activeFeline: + consummationNondevotedFeline(act); + break; + default: + throw new Error(`Unexpected animal type '${animal}' in consummationDevoted()`); + } - if (act !== oral) { - mainSpan.append(virginityCheck(act)); - } + if (act !== oral) { + mainSpan.append(virginityCheck(act)); + } - function consummationNondevotedCanine(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to ${a} ${animal.name} soon enough, once ${his} carnal desires kick in. `); - } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); - } - } else { - if (canWalk(slave)) { - r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + function consummationNondevotedCanine(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to ${a} ${animal.name} soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); - } + if (canWalk(slave)) { + r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + } else { + r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); + } - r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + } } - } - function consummationNondevotedHooved(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off ${a} ${animal.name}, ${he} seems to forget that the cock in ${his} mouth isn't human soon enough, once ${his} carnal desires kick in. `); + function consummationNondevotedHooved(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off ${a} ${animal.name}, ${he} seems to forget that the cock in ${his} mouth isn't human soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + r.push(`${slave.slaveName} gives a long, drawn-out groan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } else { - r.push(`${slave.slaveName} gives a long, drawn-out groan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } - function consummationNondevotedFeline(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to a feline soon enough, once ${his} carnal desires kick in. `); + function consummationNondevotedFeline(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to a feline soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } else { - r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } - mainSpan.append(r.join(' ')); + mainSpan.append(r.join(' ')); - return mainSpan; - } + return mainSpan; + } - function consummationNonresistant() { - const - mainSpan = document.createElement("span"), - r = []; + function consummationNonresistant() { + const + mainSpan = document.createElement("span"), + r = []; - if (act === oral) { - r.push(`You force ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave reluctantly reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock and begins to give it a few tentative licks before finally putting it in ${his} mouth. `); - } else { - r.push(`You force ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); - } + if (act === oral) { + r.push(`You force ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} waits, showing little concern when the slave reluctantly reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, ${slave.slaveName} takes its cock and begins to give it a few tentative licks before finally putting it in ${his} mouth. `); + } else { + r.push(`You force ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``}get on the floor, ass in the air, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); + } - switch (animal) { - case V.activeCanine: - consummationNonresistantCanine(act); - break; - case V.activeHooved: - consummationNonresistantHooved(act); - break; - case V.activeFeline: - consummationNonresistantFeline(act); - break; - default: - throw new Error(`Unexpected animal type '${animal}' in consummationNonresistant()`); - } + switch (animal) { + case V.activeCanine: + consummationNonresistantCanine(act); + break; + case V.activeHooved: + consummationNonresistantHooved(act); + break; + case V.activeFeline: + consummationNonresistantFeline(act); + break; + default: + throw new Error(`Unexpected animal type '${animal}' in consummationNonresistant()`); + } - if (act !== oral) { - mainSpan.append(virginityCheck(act)); - } + if (act !== oral) { + mainSpan.append(virginityCheck(act)); + } - function consummationNonresistantCanine(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to ${a} ${animal.name} soon enough, once ${his} carnal desires kick in. `); - } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); - } - } else { - if (canWalk(slave)) { - r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + function consummationNonresistantCanine(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to ${a} ${animal.name} soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); - } + if (canWalk(slave)) { + r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + } else { + r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); + } - r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + } } - } - function consummationNonresistantHooved(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off ${a} ${animal.name}, ${he} seems to forget that the cock in ${his} mouth isn't human soon enough, once ${his} carnal desires kick in. `); + function consummationNonresistantHooved(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off ${a} ${animal.name}, ${he} seems to forget that the cock in ${his} mouth isn't human soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + r.push(`${slave.slaveName} gives a long, drawn-out groan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } else { - r.push(`${slave.slaveName} gives a long, drawn-out groan as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } - function consummationNonresistantFeline(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to a feline soon enough, once ${his} carnal desires kick in. `); + function consummationNonresistantFeline(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`Though the slave still seems to have some reservations about sucking off an animal, ${he} seems to forget that the cock in ${his} mouth belongs to a feline soon enough, once ${his} carnal desires kick in. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} is beginning to reevaluate just how much ${he} wants to avoid punishment. `); + r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } else { - r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } - mainSpan.append(r.join(' ')); + mainSpan.append(r.join(' ')); - return mainSpan; - } + return mainSpan; + } - function consummationResistant() { - const - mainSpan = document.createElement("span"), - r = []; + function consummationResistant() { + const + mainSpan = document.createElement("span"), + r = []; - if (act === oral) { - r.push(`You have to physically force ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} is restrained, showing little concern when another slave reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, the slave takes its cock and lines it up with ${slave.slaveName}'s mouth. The animal needs no prompting, and thrusts itself into ${his} ring-gagged mouth. `); - } else { - r.push(`You have to physically force ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``} get on the floor, ass in the air and restraints around ${his} wrists and ankles, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); - } + if (act === oral) { + r.push(`You have to physically force ${him} to kneel on the floor before calling in the ${animal.name}. The beast slowly saunters up to the slave where ${he} is restrained, showing little concern when another slave reaches out and begins masturbating it to begin the process of getting the animal hard. Once the ${animal.name} is hard enough, the slave takes its cock and lines it up with ${slave.slaveName}'s mouth. The animal needs no prompting, and thrusts itself into ${his} ring-gagged mouth. `); + } else { + r.push(`You have to physically force ${him} to ${slave.clothes !== "no clothing" ? `take off ${his} clothes and ` : ``} get on the floor, ass in the air and restraints around ${his} wrists and ankles, before calling in the ${animal.name}. The beast slowly saunters up to the slave, where it takes only a few short moments for its animal brain to realize that what it is standing behind is a warm hole that needs to be filled with seed. `); + } - switch (animal) { - case V.activeCanine: - consummationResistantCanine(act); - break; - case V.activeHooved: - consummationResistantHooved(act); - break; - case V.activeFeline: - consummationResistantFeline(act); - break; - default: - throw new Error(`Unexpected animal type '${animal}' in consummationResistant()`); - } + switch (animal) { + case V.activeCanine: + consummationResistantCanine(act); + break; + case V.activeHooved: + consummationResistantHooved(act); + break; + case V.activeFeline: + consummationResistantFeline(act); + break; + default: + throw new Error(`Unexpected animal type '${animal}' in consummationResistant()`); + } - if (act !== oral) { - mainSpan.append(virginityCheck(act)); - } + if (act !== oral) { + mainSpan.append(virginityCheck(act)); + } - function consummationResistantCanine(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave glares daggers at you as ${he} takes the full length of the canine's cock in ${his} mouth, but ${slave.dick ? - canAchieveErection(slave) ? - `${his} fully-erect dick` : - `the precum leaking from ${his} dick` : - slave.vagina > -1 ? - `a slight sheen on ${his} pussylips` : - `a slight blush to ${his} cheeks`} - tells you that ${he}'s enjoying this, at least a little. `); - } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment. `); - } - } else { - if (canWalk(slave)) { - r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + function consummationResistantCanine(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave glares daggers at you as ${he} takes the full length of the canine's cock in ${his} mouth, but ${slave.dick ? + canAchieveErection(slave) ? + `${his} fully-erect dick` : + `the precum leaking from ${his} dick` : + slave.vagina > -1 ? + `a slight sheen on ${his} pussylips` : + `a slight blush to ${his} cheeks`} + tells you that ${he}'s enjoying this, at least a little. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment. `); + } } else { - r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); - } + if (canWalk(slave)) { + r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh. `); + } else { + r.push(`The canine takes a few curious sniffs, then lines up its large cock with ${slave.slaveName}'s ${act === vaginal ? `pussy` : `asshole`}. `); + } - r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + r.push(`It takes a few tries, but the ${animal.name} finally manages to sink its cock into ${his} ${slaveApproves() && act === vaginal ? `wet ` : ``}${act === vaginal ? `cunt` : `asshole`} and begin to hammer away in the way that only canines can. `); + } } - } - function consummationResistantHooved(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave glares daggers at you as ${he} takes the full length of the ${animal.name}'s cock in ${his} mouth, but ${slave.dick ? - canAchieveErection(slave) ? - `${his} fully-erect dick` : - `the precum leaking from ${his} dick` : - slave.vagina > -1 ? - `a slight sheen on ${his} pussylips` : - `a slight blush to ${his} cheeks`} - tells you that ${he}'s enjoying this, at least a little. `); + function consummationResistantHooved(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave glares daggers at you as ${he} takes the full length of the ${animal.name}'s cock in ${his} mouth, but ${slave.dick ? + canAchieveErection(slave) ? + `${his} fully-erect dick` : + `the precum leaking from ${his} dick` : + slave.vagina > -1 ? + `a slight sheen on ${his} pussylips` : + `a slight blush to ${his} cheeks`} + tells you that ${he}'s enjoying this, at least a little. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment. `); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s cock fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment. `); + r.push(`${slave.slaveName} lets out a blood-curdling scream as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } else { - r.push(`${slave.slaveName} lets out a blood-curdling scream as the huge phallus fills ${his} ${act === vaginal ? `pussy` : `asshole`} nearly to its breaking point. `); } - } - function consummationResistantFeline(type) { - if (type === oral) { - if (slaveApproves()) { - r.push(`The slave glares daggers at you as ${he} takes the full length of the feline's cock in ${his} mouth, but ${slave.dick ? - canAchieveErection(slave) ? - `${his} fully-erect dick` : - `the precum leaking from ${his} dick` : - slave.vagina > -1 ? - `a slight sheen on ${his} pussylips` : - `a slight blush to ${his} cheeks`} - tells you that ${he}'s enjoying this, at least a little. `); + function consummationResistantFeline(type) { + if (type === oral) { + if (slaveApproves()) { + r.push(`The slave glares daggers at you as ${he} takes the full length of the feline's cock in ${his} mouth, but ${slave.dick ? + canAchieveErection(slave) ? + `${his} fully-erect dick` : + `the precum leaking from ${his} dick` : + slave.vagina > -1 ? + `a slight sheen on ${his} pussylips` : + `a slight blush to ${his} cheeks`} + tells you that ${he}'s enjoying this, at least a little. `); + } else { + r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment .`); + } } else { - r.push(`The slave visibly gags as the unfamiliar texture of ${a} ${animal.name}'s barbed dick fills it, and you get the feeling ${he} would have run away a long time ago if ${he} wasn't a little tied up at the moment .`); + r.push(`${slave.slaveName} lets out a blood-curdling scream as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } else { - r.push(`${slave.slaveName} lets out a blood-curdling scream as the barbed cock makes its way into ${his} ${act === vaginal ? `pussy` : `asshole`}. `); } - } - mainSpan.append(r.join(' ')); + mainSpan.append(r.join(' ')); - return mainSpan; + return mainSpan; + } }