diff --git a/src/facilities/farmyard/animals/animals.js b/src/facilities/farmyard/animals/animals.js index b796a31ef0e0d19122d63725babc4f4a2c691759..f9218518571a1d4881acabe232d8554bfd85a5dc 100644 --- a/src/facilities/farmyard/animals/animals.js +++ b/src/facilities/farmyard/animals/animals.js @@ -206,6 +206,8 @@ App.Data.animals = { domestic: [ { name: "beagle", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.beagle; }, @@ -216,6 +218,8 @@ App.Data.animals = { }, { name: "bulldog", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.bulldog; }, @@ -226,6 +230,8 @@ App.Data.animals = { }, { name: "French bulldog", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.frenchBulldog; }, @@ -236,6 +242,8 @@ App.Data.animals = { }, { name: "German shepherd", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.germanShepherd; }, @@ -246,6 +254,8 @@ App.Data.animals = { }, { name: "golden retriever", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.goldenRetriever; }, @@ -256,6 +266,8 @@ App.Data.animals = { }, { name: "labrador retriever", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.labradorRetriever; }, @@ -266,6 +278,8 @@ App.Data.animals = { }, { name: "poodle", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.poodle; }, @@ -276,6 +290,8 @@ App.Data.animals = { }, { name: "rottweiler", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.rottweiler; }, @@ -286,6 +302,8 @@ App.Data.animals = { }, { name: "Siberian husky", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.siberianHusky; }, @@ -296,6 +314,8 @@ App.Data.animals = { }, { name: "Yorkshire terrier", + species: "dog", + get purchased() { return V.animalsBought.canine.domestic.yorkshireTerrier; }, @@ -308,6 +328,8 @@ App.Data.animals = { exotic: [ { name: "dingo", + species: "dingo", + get purchased() { return V.animalsBought.canine.exotic.dingo; }, @@ -318,6 +340,8 @@ App.Data.animals = { }, { name: "fox", + species: "fox", + get purchased() { return V.animalsBought.canine.exotic.fox; }, @@ -328,6 +352,8 @@ App.Data.animals = { }, { name: "jackal", + species: "jackal", + get purchased() { return V.animalsBought.canine.exotic.jackal; }, @@ -338,6 +364,8 @@ App.Data.animals = { }, { name: "wolf", + species: "wolf", + get purchased() { return V.animalsBought.canine.exotic.wolf; }, @@ -352,6 +380,8 @@ App.Data.animals = { domestic: [ { name: "bull", + species: "bull", + get purchased() { return V.animalsBought.hooved.domestic.bull; }, @@ -362,6 +392,8 @@ App.Data.animals = { }, { name: "horse", + species: "horse", + get purchased() { return V.animalsBought.hooved.domestic.horse; }, @@ -372,6 +404,8 @@ App.Data.animals = { }, { name: "pig", + species: "pig", + get purchased() { return V.animalsBought.hooved.domestic.pig; }, @@ -384,6 +418,8 @@ App.Data.animals = { exotic: [ { name: "zebra", + species: "zebra", + get purchased() { return V.animalsBought.hooved.exotic.zebra; }, @@ -394,6 +430,8 @@ App.Data.animals = { }, { name: "elephant", + species: "elephant", + get purchased() { return V.animalsBought.hooved.exotic.elephant; }, @@ -408,6 +446,8 @@ App.Data.animals = { domestic: [ { name: "Abbysinian", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.abbysinian; }, @@ -418,6 +458,8 @@ App.Data.animals = { }, { name: "Bengal", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.bengal; }, @@ -428,6 +470,8 @@ App.Data.animals = { }, { name: "Birman", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.birman; }, @@ -438,6 +482,8 @@ App.Data.animals = { }, { name: "Maine coon", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.maineCoon; }, @@ -448,6 +494,8 @@ App.Data.animals = { }, { name: "Oriental shorthair", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.orientalShorthair; }, @@ -458,6 +506,8 @@ App.Data.animals = { }, { name: "Persian", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.persian; }, @@ -468,6 +518,8 @@ App.Data.animals = { }, { name: "Ragdoll", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.ragdoll; }, @@ -478,6 +530,8 @@ App.Data.animals = { }, { name: "Russian blue", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.russianBlue; }, @@ -488,6 +542,8 @@ App.Data.animals = { }, { name: "Siamese", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.siamese; }, @@ -498,6 +554,8 @@ App.Data.animals = { }, { name: "Sphynx", + species: "cat", + get purchased() { return V.animalsBought.feline.domestic.sphynx; }, @@ -510,6 +568,8 @@ App.Data.animals = { exotic: [ { name: "cougar", + species: "cougar", + get purchased() { return V.animalsBought.feline.exotic.cougar; }, @@ -520,6 +580,8 @@ App.Data.animals = { }, { name: "jaguar", + species: "jaguar", + get purchased() { return V.animalsBought.feline.exotic.jaguar; }, @@ -530,6 +592,8 @@ App.Data.animals = { }, { name: "leopard", + species: "leopard", + get purchased() { return V.animalsBought.feline.exotic.leopard; }, @@ -540,6 +604,8 @@ App.Data.animals = { }, { name: "lion", + species: "lion", + get purchased() { return V.animalsBought.feline.exotic.lion; }, @@ -550,6 +616,8 @@ App.Data.animals = { }, { name: "lynx", + species: "lynx", + get purchased() { return V.animalsBought.feline.exotic.lynx; }, @@ -560,6 +628,8 @@ App.Data.animals = { }, { name: "puma", + species: "puma", + get purchased() { return V.animalsBought.feline.exotic.puma; }, @@ -570,6 +640,8 @@ App.Data.animals = { }, { name: "tiger", + species: "tiger", + get purchased() { return V.animalsBought.feline.exotic.tiger; }, diff --git a/src/npc/interaction/fAnimal.js b/src/npc/interaction/fAnimal.js index 2428df349dee32da89a7ece86fdb835c9ea9740f..44d06174846debad9b5eebf96422fe992982fefa 100644 --- a/src/npc/interaction/fAnimal.js +++ b/src/npc/interaction/fAnimal.js @@ -531,24 +531,28 @@ App.Interact.fAnimal = function(slave, type) { switch (animal) { case V.activeCanine: completionCanine(); - return; + break; case V.activeHooved: + completionHooved(); + break; case V.activeFeline: + completionFeline(); + break; default: throw new Error(`Unexpected animal type '${type}' in completion()`); } + if (act !== oral && canGetPregnant(slave) && canBreed(slave, animal)) { + knockMeUp(slave, 5, hole, -8); + } + function completionCanine() { - r.push(`The ${type === "canine" ? `hound` : animal} wastes no time in beginning to hammer away at ${his} ${orifice[0]}, causing ${slave.slaveName} to moan uncontrollably as its thick, veiny member probes the depths of ${his} ${orifice[1]}. A few short minutes later, ${he} gives a loud groan ${slaveApproves() ? `and shakes in orgasm ` : ``}as the ${animal.name}'s knot begins to swell and its dick begins to erupt a thick stream of jizz ${act === oral ? `down ${his} throat` : `into ${his} ${orifice[0]}`}. Soon enough, the ${animal.name} finally finishes cumming and its knot is sufficiently small enough to slip out of ${slave.slaveName}'s ${act === oral ? - `mouth` : - act === vaginal && slave.vagina < 3 || act === anal && slave.anus < 2 ? + if (act === oral) { + r.push(`The ${animal.species === "dog" ? `hound` : animal.name} wastes no time in beginning to hammer away at ${his} ${orifice[0]}, causing ${slave.slaveName} to moan uncontrollably as its thick, veiny member probes the depths of ${his} ${orifice[1]}. A few short minutes later, ${he} gives a loud groan ${slaveApproves() ? `and shakes in orgasm ` : ``}as the ${animal.name}'s knot begins to swell and its dick begins to erupt a thick stream of jizz down ${his} abused throat. Soon enough, the ${animal.name} finally finishes cumming and its knot is sufficiently small enough to slip out of ${slave.slaveName}'s mouth, causing ${him} to immediately begin coughing and retching uncontrollably. Having finished its business, the ${animal.name} runs off, presumably in search of food.`); + } else { + r.push(`The ${animal.species === "dog" ? `hound` : animal.name} wastes no time in beginning to hammer away at ${his} ${orifice[0]}, causing ${slave.slaveName} to moan uncontrollably as its thick, veiny member probes the depths of ${his} ${orifice[1]}. A few short minutes later, ${he} gives a loud groan ${slaveApproves() ? `and shakes in orgasm ` : ``}as the ${animal.name}'s knot begins to swell and its dick begins to erupt a thick stream of jizz into ${his} ${orifice[0]}. Soon enough, the ${animal.name} finally finishes cumming and its knot is sufficiently small enough to slip out of ${slave.slaveName}'s ${act === vaginal && slave.vagina < 3 || act === anal && slave.anus < 2 ? `now-gaping ${orifice[0]}` : - orifice[0]}, causing ${act === oral ? - `${him} to immediately begin coughing and retching uncontrollably` : - `a thick stream of cum to slide out of it`}. Having finished its business, the ${animal.name} runs off, presumably in search of food.`); - - if (act !== oral && canGetPregnant(slave) && canBreed(slave, animal)) { - knockMeUp(slave, 5, hole, -8); + orifice[0]}, causing a thick stream of cum to slide out of it. Having finished its business, the ${animal.name} runs off, presumably in search of food.`); } switch (act) { @@ -556,15 +560,65 @@ App.Interact.fAnimal = function(slave, type) { slave.counter.oral++; return; case vaginal: - slave.vagina = slave.vagina < 3 ? 3 : slave.vagina; slave.counter.vaginal++; + slave.vagina = slave.vagina < 3 ? 3 : slave.vagina; return; case anal: + slave.counter.anal++; slave.anus = slave.anus < 2 ? 2 : slave.anus; + return; + default: + throw new Error(`Unexpected act type '${act} in completionCanine()`); + } + } + + function completionHooved() { + if (act === oral) { + r.push(`The ${animal.species === "horse" ? `stallion` : animal.name} begins to thrust faster and faster, causing ${him} to moan and groan past the huge ${animal.species} cock stretching ${his} poor throat to its limits. Before too long, the ${animal.name}'s movements begin to slow, and you can see its large testicles contract as its begins to erupt and pour its thick semen down ${his} throat and into ${his} stomach, filling it to the brim. After what seems like an impossibly long time, the ${animal.name}'s dick finally begins to soften and pull out, causing ${slave.slaveName} to begin coughing and retching uncontrollably. You have another slave lead the ${animal.name} away, with a fresh apple as a treat for its good performance.`); + } else { + r.push(`The ${animal.species === "horse" ? `stallion` : animal.name} begins to thrust faster and faster, causing ${him} to moan and groan as the huge ${animal.species} cock ${act === vaginal ? `batters ${his} cervix` : `fills ${him} completely`}. Before too long, the ${animal.name}'s movements begin to slow, and you can see its large testicles contract as its begins to erupt and fill ${his} ${orifice[1]} with its thick baby batter. After what seems like an impossibly long time, the ${animal.name}'s dick finally begins to soften and pull out, leaving ${slave.slaveName} panting and covered in sweat. You have another slave lead the ${animal.name} away, with a fresh apple as a treat for its good performance.`); + } + + switch (act) { + case oral: + slave.counter.oral++; + return; + case vaginal: + slave.counter.vaginal++; + slave.vagina = slave.vagina < 4 ? 4 : slave.vagina; + return; + case anal: + slave.counter.anal++; + slave.anus = slave.anus < 3 ? 3 : slave.anus; + return; + default: + throw new Error(`Unexpected act type '${act} in completionHooved()`); + } + } + + function completionFeline() { + if (act === oral) { + r.push(`The ${animal.name} begins to move, thrusting faster and faster. The ${girl} underneath it can't stop a groan of pain from escaping ${his} lips as the ${animal.species}'s barbed dick rubs the inside of ${his} mouth and throat raw. After a few minutes of painful coupling, the ${animal.species}'s thrusts finally slow, then stop completely as its ${animal.species !== "cat" ? `large` : ``} cock erupts down ${slave.slaveName}'s throat. With a ${animal.species !== "cat" ? `deep bellow` : `loud meow`}, he finally dismounts, gives you a long look, then stalks off.`); + } else { + r.push(`The ${animal.name} begins to move, thrusting faster and faster. The ${girl} underneath it can't stop a groan of pain from escaping ${his} lips as the ${animal.species}'s barbed dick rubs the inside of ${his} ${orifice[0]} raw. After a few minutes of painful coupling, the ${animal.species}'s thrusts finally slow, then stop completely as its ${animal.species !== "cat" ? `large` : ``} cock erupts, filling ${slave.slaveName} with its sperm. With a ${animal.species !== "cat" ? `deep bellow` : `loud meow`}, he finally dismounts, gives you a long look, then stalks off.`); + } + + healthDamage(slave, 1); + + switch (act) { + case oral: + slave.counter.oral++; + return; + case vaginal: + slave.counter.vaginal++; + slave.vagina = slave.vagina < 2 ? 2 : slave.vagina; + return; + case anal: slave.counter.anal++; + slave.anus = slave.anus < 1 ? 1 : slave.anus; return; default: - throw new Error(`Unexpected act type '${act} in completion()`); + throw new Error(`Unexpected act type '${act} in completionFeline()`); } } }