Newer
Older
/* intended to condense the clothing/toy/etc availability checks into something less asinine */
switch (string) {
/* no breaks needed because we always return */
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);
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);
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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":
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");
case "platform shoes":
case "platform heels":
case "extreme platform heels":
return (V.arcologies[0].FSStatuesqueGlorification > 0 || V.shoesBoughtHeels === 1);
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":
case "cat tail":
case "fox tail":
return (V.toysBoughtButtPlugTails === 1);
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
// "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;
window.isClothingAccessible = (function() {
return {
array: array,
entry: entry,
};
/**
* Checks whether clothing is accessible
* @param {string} string Name of wearable item
* @param {string} category that item is in clothing, collar, etc
* @param {App.Entity.SlaveState} slave
* @returns {boolean|string} Returns true if it is accessible, and if it is not either false or a string explaining why
function entry(string, category="clothing", slave) {
let niceDB = [];
let harshDB = [];
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
switch (category) {
case "clothing":
case "clothes":
niceDB = App.Data.misc.niceClothes;
harshDB = App.Data.misc.harshClothes;
break;
case "collar":
niceDB = App.Data.misc.niceCollars;
harshDB = App.Data.misc.harshCollars;
break;
case "bellyAccessory":
niceDB = App.Data.misc.bellyAccessories;
break;
case "buttplug":
niceDB = App.Data.misc.buttplugs;
break;
case "buttplugAttachment":
niceDB = App.Data.misc.buttplugAttachments;
break;
case "vaginalAccessory":
niceDB = App.Data.misc.vaginalAccessories;
break;
case "vaginalAttachment":
niceDB = App.Data.misc.vaginalAttachments;
break;
case "dickAccessory":
niceDB = App.Data.misc.vaginalAccessories;
break;
case "shoes":
niceDB = App.Data.misc.shoes;
break;
// niceDB = App.Data.misc.vaginalAccessories; //this is going to be weird, they aren't in App.Data.Misc
// break;
default:
console.log(`made a category for ${category} automatically, may need to define this by hand`);
niceDB = App.Data.misc[category];
break;
}
let item = niceDB.find((i) => i.value === string);
if (!item && (typeof harshDB !== 'undefined')) {
console.log(`${string} is not a registered piece of clothing! Check App.Data.Misc.${category}`);
return isAvailable(item, slave);
* Returns array of wearable clothing in format [name, value], basically player facing / game data.
* @param {string} db Name of array to look in (such as "App.Data.misc.niceClothes")
* @returns {Array}
*/
function array(db) {
const array = [];
db.forEach((i) => {
if (V.cheatMode || isAvailable(i)) {
function isAvailable(item, slave) {
if (!(item.hasOwnProperty("unlock")) && !(item.hasOwnProperty("fs")) && !(item.hasOwnProperty("rs"))) {
if (item.hasOwnProperty("fs")) {
if (V.arcologies[0][item.fs] > 0) {
* @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;
};
/**
* @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});
}
/**
* @param {App.Entity.SlaveState} slave
* @param {string} prosthetic
* @returns {{}}
*/
window.findProsthetic = function(slave, prosthetic) {
return slave.readyProsthetics.find(p => p.id === prosthetic);
};
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
/**
* @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 "";
}
};