r.push(canWalk(slave)?`You call ${him} over and `:`You order another slave to bring ${slave.slaveName} over. Once ${he} is situated, you`,`tell ${him} you want to watch ${him}${act!==oral?`get fucked by`:`suck off`}${a}${animal}.`);
r.push(canWalk(slave)?`You call ${him} over and `:`You order another slave to bring ${slave.slaveName} over. Once ${he} is situated, you`,`tell ${him} you want to watch ${him}${act===oral?
r.push(`You have ${him} kneel on the floor before calling in the ${animal}. 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} is hard enough, ${slave.slaveName} takes its cock and begins to give a few tentative licks before finally putting it in ${his} mouth.`);
r.push(`You have ${him} kneel on the floor before calling in the ${animal}. 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} is hard enough, ${slave.slaveName} takes its cock and begins to give it a few tentative licks before finally putting it in ${his} mouth.`);
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}'s cock fills it.`);
}
}else{
}else{
r.push(`You have ${slave.clothes!=="no clothing"?`take off ${his} clothes and `:``} get on the floor, ass in the air, before calling in the ${animal}. 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.`);
r.push(`You have ${slave.clothes!=="no clothing"?`take off ${his} clothes and `:``} get on the floor, ass in the air, before calling in the ${animal}. 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){
switch (animal){
caseV.activeCanine:
caseV.activeCanine:
consummationDevotedCanine();
consummationDevotedCanine(act);
break;
break;
caseV.activeHooved:
caseV.activeHooved:
consummationDevotedHooved();
consummationDevotedHooved(act);
break;
break;
caseV.activeFeline:
caseV.activeFeline:
consummationDevotedFeline();
consummationDevotedFeline(act);
break;
break;
default:
default:
thrownewError(`Unexpected animal type '${type}' in consummationDevoted()`);
thrownewError(`Unexpected animal type '${type}' in consummationDevoted()`);
}
}
if (act!==oral){
virginityCheck(act);
virginityCheck(act);
virginityEffects(act);
}
}
functionconsummationDevotedCanine(){
functionconsummationDevotedCanine(type){
if (canWalk(slave)){
if (type===oral){
r.push(`The canine clambers up to mount ${slave.slaveName}, eliciting a squeal from the ${girl} as its claws dig into ${his} flesh.`);
// TODO: write more
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}'s cock fills it, then gives a groan as the beast thrusts, stretching ${his} throat to the limit.`);
}
}else{
}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} 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} 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.`);
}
}
}
functionconsummationDevotedHooved(){
functionconsummationDevotedHooved(type){
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.`);
if (type===oral){
// TODO: write more
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}'s cock fills it, then gives a groan as the beast thrusts, stretching ${his} throat to the limit.`);
}
}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.`);
}
}
}
functionconsummationDevotedFeline(){
functionconsummationDevotedFeline(type){
r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his}${act===vaginal?`pussy`:`asshole`}.`);
if (type===oral){
// TODO: write more
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}'s cock fills it, then gives a groan as the beast thrusts, stretching ${his} throat to the limit.`);
}
}else{
r.push(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his}${act===vaginal?`pussy`:`asshole`}.`);
}
}
}
}
}
functionconsummationNondevoted(){
functionconsummationNondevoted(){
if (act===oral){
if (act===oral){
r.push(`You tell ${him} to kneel on the floor before calling in the ${animal}. 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.`);
r.push(`You tell ${him} to kneel on the floor before calling in the ${animal}. 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} 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.`);
// TODO: finish writing this
}else{
}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}. 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. Another slave lines its cock up with ${slave.slaveName}'s ${act===vaginal?`pussy`:`ass`}, then with a thrust, the ${animal} begins to fuck ${him}.`);
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}. 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.`);
// TODO: finish writing this
}
switch (animal){
caseV.activeCanine:
consummationNondevotedCanine(act);
break;
caseV.activeHooved:
consummationNondevotedHooved(act);
break;
caseV.activeFeline:
consummationNondevotedFeline(act);
break;
default:
thrownewError(`Unexpected animal type '${type}' in consummationDevoted()`);
}
if (act!==oral){
virginityCheck(act);
}
functionconsummationNondevotedCanine(type){
if (type===oral){
// TODO: write more
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 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}'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.`);
}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} 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.`);
}
}
functionconsummationNondevotedHooved(type){
if (type===oral){
// TODO: write more
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 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}'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(`${slave.slaveName} gives a long, drawn-out groan as the huge phallus fills ${his}${act===vaginal?`pussy`:`asshole`} nearly to its breaking point.`);
}
}
functionconsummationNondevotedFeline(type){
if (type===oral){
// TODO: write more
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 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}'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(`${slave.slaveName} gives a squeal of pain as the barbed cock makes its way into ${his}${act===vaginal?`pussy`:`asshole`}.`);
r.push(`The slave gives a loud ${slave.devotion>20?`moan`:`groan`} as ${his} virginity is taken from ${him}${slave.devotion<-20?` by force`:``}.`);
r.push(`The slave gives a loud ${slave.devotion>20?`moan`:`groan`} as ${his} virginity is taken from ${him}${slave.devotion<-20?` by force`:``}.`);
virginityEffects(type);
}
}
return;
break;
caseanal:
caseanal:
if (act===anal&&slave.anus===0){
if (act===anal&&slave.anus===0){
r.push(`The slave gives a loud ${slave.devotion>20?`moan`:`groan`} as ${his} anal virginity is taken from ${him}${slave.devotion<-20?` by force`:``}.`);
r.push(`The slave gives a loud ${slave.devotion>20?`moan`:`groan`} as ${his} anal virginity is taken from ${him}${slave.devotion<-20?` by force`:``}.`);
virginityEffects(type);
}
}
return;
break;
default:
default:
thrownewError(`Unexpected type value '${type}' in virginityCheck()`);
thrownewError(`Unexpected type value '${type}' in virginityCheck()`);