Skip to content
Snippets Groups Projects
fAnimal.js 3.84 KiB
Newer Older
  • Learn to ignore specific revisions
  • brickode's avatar
    brickode committed
    /**
     * @param {App.Entity.SlaveState} slave
     */
    App.Interact.fAnimal = function(slave, type) {
    	const
    		frag = new DocumentFragment(),
    		r = [],
    
    		{he, him, his} = getPronouns(slave);
    
    	let
    		animal,
    		fetishDesc,
    		act;
    
    	switch (type) {
    		case "canine":
    			animal = V.activeCanine;
    			break;
    		case "hooved":
    			animal = V.activeHooved;
    			break;
    		case "feline":
    			animal = V.activeFeline;
    			break;
    	}
    
    	if (slave.assignment === Job.FUCKTOY) {
    		if (slave.toyHole === "pussy") {
    			act = "vaginal";
    		} else if (slave.toyHole === "ass") {
    			act = "anal";
    
    brickode's avatar
    brickode committed
    		} else if (slave.toyHole === "mouth") {
    
    brickode's avatar
    brickode committed
    			act = "oral";
    
    brickode's avatar
    brickode committed
    		} else {
    			if (canDoVaginal(slave)) {
    				act = "vaginal";
    			} else if (canDoAnal(slave)) {
    				act = "anal";
    			} else {
    				act = "oral";
    			}
    
    brickode's avatar
    brickode committed
    		}
    	} else if (canDoVaginal(slave)) {
    		act = "vaginal";
    	} else if (canDoAnal(slave)) {
    		act = "anal";
    	} else {
    		act = "oral";
    	}
    
    	const
    
    brickode's avatar
    brickode committed
    		isVowel = e => /[aeiou]/.test(e),
    		a = isVowel(animal.charAt(0).toLowerCase()) ? `an` : `a`,
    
    brickode's avatar
    brickode committed
    		slaveApproves = () => slave.fetish.includes("masochist" || "humiliation") ||
    			slave.fetish === "buttslut" && act === "anal" ||
    			slave.fetish === "cumslut" && act === "oral" ||
    			slave.sexualQuirk.includes("perverted") ||
    			slave.sexualQuirk === "gagfuck queen" && act === "oral" ||
    			slave.behavioralQuirk.includes("sinful");
    
    	if (slave.fetish === "cumslut" && act === "oral") {
    		fetishDesc = `getting to drink more cum`;
    	} else if (slave.fetish === "humiliation") {
    		fetishDesc = `committing such a humiliating act`;
    	} else if (slave.fetish === "buttslut" && act === "anal") {
    		fetishDesc = `getting to take a cock up ${his} ass`;
    	} else if (slave.fetish === "masochist") {
    		fetishDesc = `committing such a painful act`;
    	} else if (slave.sexualQuirk === "perverted") {
    		fetishDesc = `committing such a perverted act`;
    	} else if (slave.sexualQuirk === "gagfuck queen" && act === "oral") {
    		fetishDesc = `getting to suck more dick`;
    	} else if (slave.behavioralQuirk === "sinful") {
    		fetishDesc = `committing such a sinful act`;
    	}
    
    	const mainDiv = App.UI.DOM.appendNewElement("div", frag);
    
    	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}.`);
    
    	if (slave.fetish !== "mindbroken") {
    		if (slave.devotion > 50) {
    
    brickode's avatar
    brickode committed
    			devotedIntro();
    		}
    	} else {
    		r.push(`${slave.slaveName} nods ${his} head dumbly, ${his} eyes vacant${!canSee(slave) ? ` as always` : ``}.`);
    	}
    
    	mainDiv.append(r.join(' '));
    
    	return frag;
    
    
    
    	// MARK: Intro Function
    
    	function devotedIntro() {
    		if (act === "oral") {
    			if (slaveApproves()) {
    				r.push(`${slave.slaveName}'s face visibly brightens at the prospect of ${fetishDesc}, even if it's ${a} ${animal}'s cum.`);
    			} else {
    				r.push(`${slave.slaveName} visibly blanches at the thought of having to suck down ${a} ${animal}'s cum, but ${he} is so devoted to you that ${he} reluctantly agrees.`);
    			}
    		} else {
    			if ((act === "vaginal" && slave.vagina > 0) || (act === "anal" && slave.anus > 0)) {
    
    brickode's avatar
    brickode committed
    				if (slaveApproves()) {
    
    brickode's avatar
    brickode committed
    					r.push(`${slave.slaveName}'s face visibly brightens at the thought of ${fetishDesc}, even if the dick is ${a} ${animal}'s.`);
    
    brickode's avatar
    brickode committed
    				} else {
    
    brickode's avatar
    brickode committed
    					r.push(`${slave.slaveName} looks visibly disturbed, but is so attentive to your will that ${he} agrees.`);
    
    brickode's avatar
    brickode committed
    				}
    			} else {
    
    brickode's avatar
    brickode committed
    				if (slaveApproves()) {
    					r.push(`${slave.slaveName}'s face visibly brightens at the thought of ${fetishDesc}, although ${he} seems a bit hesitant at the thought of giving ${his} virginity to an animal.`);
    				} else {
    					r.push(`${slave.slaveName} looks visibly shaken at the thought of having ${his} precious ${!canDoVaginal(slave) ? `anal ` : ``}virginity taken by an animal, but is so attentive to your will that ${he} ultimately agrees.`);