Skip to content
Snippets Groups Projects
itemAvailability.js 10.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • Pregmodder's avatar
    Pregmodder committed
    /* intended to condense the clothing/toy/etc availability checks into something less asinine */
    
    Skriv's avatar
    Skriv committed
    
    /**
     * Checks whether item is accessible
    
    Skriv's avatar
    Skriv committed
     * @param {string} string Name of wearable item
    
    Skriv's avatar
    Skriv committed
     * @returns {boolean}
     */
    
    brickode's avatar
    brickode committed
    window.isItemAccessible = function(string) {
    
    Skriv's avatar
    Skriv committed
    	if (V.cheatMode === 1) {
    
    Pregmodder's avatar
    Pregmodder committed
    		return true;
    
    Skriv's avatar
    Skriv committed
    	}
    
    brickode's avatar
    brickode committed
    	switch (string) {
    		/* no breaks needed because we always return */
    
    Skriv's avatar
    Skriv committed
    		case "attractive lingerie for a pregnant woman":
    			return (V.arcologies[0].FSRepopulationFocus > 0 || V.clothesBoughtMaternityLingerie === 1);
    		case "a bunny outfit":
    			return (V.arcologies[0].FSGenderFundamentalist > 0 || V.clothesBoughtBunny === 1);
    		case "body oil":
    			return (V.arcologies[0].FSPhysicalIdealist > 0 || V.clothesBoughtOil === 1);
    		case "chains":
    			return (V.arcologies[0].FSDegradationist > 0 || V.clothesBoughtChains === 1);
    		case "a chattel habit":
    			return (V.arcologies[0].FSChattelReligionist > 0 || V.clothesBoughtHabit === 1);
    		case "conservative clothing":
    			return (V.arcologies[0].FSPaternalist > 0 || V.clothesBoughtConservative === 1);
    		case "harem gauze":
    			return (V.arcologies[0].FSArabianRevivalist > 0 || V.clothesBoughtHarem === 1);
    		case "a huipil":
    			return (V.arcologies[0].FSAztecRevivalist > 0 || V.clothesBoughtHuipil === 1);
    		case "a kimono":
    			return (V.arcologies[0].FSEdoRevivalist > 0 || V.clothesBoughtKimono === 1 || V.continent === "Japan");
    		case "a maternity dress":
    			return (V.arcologies[0].FSRepopulationFocus > 0 || V.clothesBoughtMaternityDress === 1);
    		case "a slutty qipao":
    			return (V.arcologies[0].FSChineseRevivalist > 0 || V.clothesBoughtQipao === 1);
    		case "a long qipao":
    			return (V.arcologies[0].FSChineseRevivalist > 0 || V.clothesBoughtCultural === 1);
    		case "stretch pants and a crop-top":
    			return (V.arcologies[0].FSHedonisticDecadence > 0 || V.clothesBoughtLazyClothes === 1);
    		case "a toga":
    			return (V.arcologies[0].FSRomanRevivalist > 0 || V.clothesBoughtToga === 1);
    		case "Western clothing":
    			return (V.arcologies[0].FSPastoralist > 0 || V.clothesBoughtWestern === 1);
    
    Pregmodder's avatar
    Pregmodder committed
    		case "a courtesan dress":
    			return (V.arcologies[0].FSSlaveProfessionalism > 0 || V.clothesBoughtCourtesan === 1);
    		case "a bimbo outfit":
    			return (V.arcologies[0].FSIntellectualDependency > 0 || V.clothesBoughtBimbo === 1);
    		case "petite admi outfit":
    			return (V.arcologies[0].FSPetiteAdmiration > 0 || V.clothesBoughtPetite === 1);
    
    Skriv's avatar
    Skriv committed
    		case "battlearmor":
    		case "a military uniform":
    		case "a red army uniform":
    		case "battledress":
    			return (V.clothesBoughtMilitary === 1);
    		case "a biyelgee costume":
    		case "a dirndl":
    		case "lederhosen":
    		case "a mounty outfit":
    		case "a hanbok":
    			return (V.clothesBoughtCultural === 1);
    		case "a burqa":
    		case "a niqab and abaya":
    			return (V.clothesBoughtMiddleEastern === 1 || V.continent === "the Middle East");
    		case "a hijab and blouse":
    			return (V.clothesBoughtMiddleEastern === 1 || V.clothesBoughtConservative === 1 || V.continent === "the Middle East");
    		case "a burkini":
    			return (V.clothesBoughtMiddleEastern === 1 && V.clothesBoughtSwimwear === 1 || V.continent === "the Middle East");
    		case "a Santa dress":
    			return (V.clothesBoughtCostume === 1);
    		case "a klan robe":
    		case "a slutty klan robe":
    		case "a schutzstaffel uniform":
    		case "a slutty schutzstaffel uniform":
    			return (V.clothesBoughtPol === 1);
    		case "nice business attire":
    		case "a nice nurse outfit":
    		case "a police uniform":
    			return (V.clothesBoughtCareer === 1);
    		case "a nice maid outfit":
    			return (V.clothesBoughtCareer === 1 || V.PC.career === "servant");
    		case "a ball gown":
    		case "a gothic lolita dress":
    			return (V.clothesBoughtDresses === 1);
    		case "a cybersuit":
    		case "a latex catsuit":
    			return (V.clothesBoughtBodysuits === 1);
    		case "a button-up shirt and panties":
    		case "a button-up shirt":
    		case "cutoffs":
    		case "jeans":
    		case "leather pants and a tube top":
    		case "leather pants":
    		case "an oversized t-shirt":
    		case "a sweater and cutoffs":
    		case "a sweater and panties":
    		case "a sweater":
    		case "a t-shirt and jeans":
    		case "a t-shirt and panties":
    		case "a t-shirt":
    		case "a tank-top and panties":
    		case "a tank-top":
    		case "a tube top":
    			return (V.clothesBoughtCasual === 1);
    		case "boyshorts":
    		case "a bra":
    		case "kitty lingerie":
    		case "panties and pasties":
    		case "a skimpy loincloth":
    		case "a thong":
    
    Pregmodder's avatar
    Pregmodder committed
    		case "pasties":
    
    Skriv's avatar
    Skriv committed
    			return (V.clothesBoughtUnderwear === 1);
    		case "leather pants and pasties":
    		case "a t-shirt and thong":
    		case "a tube top and thong":
    		case "an oversized t-shirt and boyshorts":
    			return (V.clothesBoughtUnderwear === 1 && V.clothesBoughtCasual === 1);
    		case "sport shorts and a sports bra":
    		case "sport shorts":
    		case "a sports bra":
    			return (V.clothesBoughtSports === 1);
    		case "sport shorts and a t-shirt":
    			return (V.clothesBoughtSports === 1 && V.clothesBoughtCasual === 1);
    		case "a nice pony outfit":
    		case "a slutty pony outfit":
    			return (V.clothesBoughtPony === 1);
    		case "a monokini":
    		case "a one-piece swimsuit":
    			return (V.clothesBoughtSwimwear === 1);
    		case "a striped bra":
    		case "striped panties":
    		case "striped underwear":
    			return (V.clothesBoughtPantsu === 1 || V.continent === "Japan");
    
    Pregmodder's avatar
    Pregmodder committed
    		case "platform shoes":
    		case "platform heels":
    		case "extreme platform heels":
    
    Pregmodder's avatar
    Pregmodder committed
    			return (V.arcologies[0].FSStatuesqueGlorification > 0 || V.shoesBoughtHeels === 1);
    
    Skriv's avatar
    Skriv committed
    		case "bowtie":
    			return (V.arcologies[0].FSGenderFundamentalist > 0 || V.clothesBoughtBunny === 1);
    		case "ancient Egyptian":
    			return (V.arcologies[0].FSEgyptianRevivalist > 0 || V.clothesBoughtEgypt === 1);
    		case "massive dildo gag":
    			return (V.toysBoughtGags === 1);
    		case "a small empathy belly":
    		case "a medium empathy belly":
    		case "a large empathy belly":
    		case "a huge empathy belly":
    			return (V.arcologies[0].FSRepopulationFocus > 0 || V.clothesBoughtBelly === 1);
    		case "bullet vibrator":
    		case "smart bullet vibrator":
    		case "long dildo":
    		case "long, large dildo":
    		case "long, huge dildo":
    			return (V.toysBoughtDildos === 1);
    		case "vibrator":
    			return (V.toysBoughtVaginalAttachments === 1);
    		case "long plug":
    		case "long, large plug":
    		case "long, huge plug":
    			return (V.toysBoughtButtPlugs === 1);
    		case "tail":
    
    cowboydan's avatar
    cowboydan committed
    		case "cow tail":
    
    Skriv's avatar
    Skriv committed
    		case "cat tail":
    		case "fox tail":
    			return (V.toysBoughtButtPlugTails === 1);
    
    		// "Normal" things:
    		case "an apron":
    		case "slutty jewelry":
    		case "clubslut netting":
    		case "cutoffs and a t-shirt":
    		case "a comfortable bodysuit":
    		case "a cheerleader outfit":
    		case "a fallen nuns habit":
    		case "a hijab and abaya":
    		case "a leotard":
    		case "a slutty maid outfit":
    		case "a mini dress":
    		case "attractive lingerie":
    		case "a slutty nurse outfit":
    		case "overalls":
    		case "panties":
    		case "a scalemail bikini":
    		case "a schoolgirl outfit":
    		case "a slutty outfit":
    		case "spats and a tank top":
    		case "a string bikini":
    		case "a succubus outfit":
    		case "slutty business attire":
    		case "no clothing":
    		case "a penitent nuns habit":
    		case "restrictive latex":
    		case "shibari ropes":
    		case "uncomfortable straps":
    		case "choosing her own clothes":
    		case "a halter top dress":
    		case "a slave gown":
    			return true;
    
    Skriv's avatar
    Skriv committed
    		default:
    
    			console.log(`${string} not found`);
    
    Skriv's avatar
    Skriv committed
    			return true;
    
    Pregmodder's avatar
    Pregmodder committed
    	}
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    };
    
    window.isClothingAccessible = function(string) {
    	if (V.cheatMode === 1) {
    		return true;
    	}
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	let success = 0;
    
    	setup.clothes.forEach(item => {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		if (item.value === string) {
    			if (!(item.hasOwnProperty("unlock")) && !(item.hasOwnProperty("fs"))) {
    				console.log(`${string} is free for everyone!`);
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    				success = 1;
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    				return true;
    			}
    			if (item.hasOwnProperty("fs")) {
    				if (V.arcologies[0][item.fs] > 0) {
    					console.log(`${string} is in FS!`);
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    					success = 1;
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    					return true;
    				}
    			}
    			if (item.hasOwnProperty("unlock")) {
    				let keys = Object.keys(item.unlock);
    				for (let key in keys) {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    					if (keys[key] === "continent" && V.continent === item.unlock[keys[key]]) {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    						console.log(`${string} is in continent!`);
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    						success = 1;
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    						return true;
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    					} else if (V[keys[key]] > 0 ) {
    						console.log(`${string} because ${keys[key]} is true for us!`);
    						success = 1;
    						return true;
    					}
    				}
    				// special case where they must both be true
    				if (item.unlock.clothesBoughtSports && item.unlock.clothesBoughtCasual) {
    					if (V.clothesBoughtSports && V.clothesBoughtCasual) {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    						success = 1;
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    						return true;
    					}
    				}
    			}
    			console.log("this sucks, we couldn't get: ");
    			console.log(item);
    		}
    		return false;
    	});
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	if (success === 1) {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		return true;
    	}
    };
    
    Arkerthan's avatar
    Arkerthan committed
    /**
    
    Arkerthan's avatar
    Arkerthan committed
     * @param {App.Entity.SlaveState} slave
     * @param {string} prosthetic
     * @returns {boolean}
     */
    
    window.isProstheticAvailable = function(slave, prosthetic) {
    	return slave.readyProsthetics.findIndex(function(p) { return p.id === prosthetic; }) !== -1;
    };
    
    Arkerthan's avatar
    Arkerthan committed
    
    /**
     * @param {App.Entity.SlaveState} slave
     * @param {string} prosthetic
     */
    window.addProsthetic = function(slave, prosthetic) {
    	if (!isProstheticAvailable(slave, prosthetic)) {
    
    		let limb = prostheticToLimb(prosthetic);
    		if (limb > 0) {
    			let p = {
    				id: prosthetic,
    				arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()},
    				leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}
    			};
    			p.arm.left.type = limb;
    			p.arm.right.type = limb;
    			p.leg.left.type = limb;
    			p.leg.right.type = limb;
    			slave.readyProsthetics.push(p);
    		} else {
    			slave.readyProsthetics.push({id: prosthetic});
    		}
    
    Arkerthan's avatar
    Arkerthan committed
    	}
    };
    
    Arkerthan's avatar
    Arkerthan committed
    /**
     * @param {App.Entity.SlaveState} slave
     * @param {string} prosthetic
     * @returns {{}}
     */
    window.findProsthetic = function(slave, prosthetic) {
    	return slave.readyProsthetics.find(p => p.id === prosthetic);
    };
    
    
    /**
     * @param {string} prosthetic
     * @returns {number}
     */
    window.prostheticToLimb = function(prosthetic) {
    	switch (prosthetic) {
    		case "basicL":
    			return 2;
    		case "sexL":
    			return 3;
    		case "beautyL":
    			return 4;
    		case "combatL":
    			return 5;
    		case "cyberneticL":
    			return 6;
    		default:
    			return 0;
    	}
    };
    
    /**
     *
     * @param {number} limb
     * @returns {string}
     */
    window.limbToProsthetic = function(limb) {
    	switch (limb) {
    		case 2:
    			return "basicL";
    		case 3:
    			return "sexL";
    		case 4:
    			return "beautyL";
    		case 5:
    			return "combatL";
    		case 6:
    			return "cyberneticL";
    		default:
    			return "";
    	}
    };